H-6456: Update hCore (2026-05) - #134
Draft
judeallred wants to merge 163 commits into
Draft
judeallred wants to merge 163 commits into
judeallred wants to merge 163 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
Co-authored-by: David @ HASH <6226576+nonparibus@users.noreply.github.com>
- This is so that environments with an empty 'localstorage' don't get a blank page. - Also hide the 'my projects' link to the /user page
- limits top-level folders to our approved list of src, data, views, dependencies - omits hidden "." files from the import - omits files of unsupported types (as enforced by the preexisting file parsing code) - strips empty top-level folders from the import
- The resource browser in the left panel - The 'cloud' options in the experiment dialog
- Add contents:read permissions to frontend workflow (match e2e.yml) - Use [\s\S] in git conflict marker regex to avoid polynomial ReDoS - Use crypto.getRandomValues for yieldToBrowser correlation token - Restrict ProcessChart postMessage to the plugin iframe origin Co-authored-by: Cursor <cursoragent@cursor.com>
Conflict policy: all paths under apps/sim-core/ resolved with git checkout --ours (modernization). Non-sim-core paths had no remaining conflicts after staging sim-core; other merges are Git’s automatic combination, which matches main for files only changed on main (e.g. Renovate, Rust CI pins). If specific dependency or non-functional upgrades from main are needed inside sim-core, cherry-pick or follow-up merges can apply them file-by-file. Co-authored-by: Cursor <cursoragent@cursor.com>
- Restore Redux/MUI/Recoil dependencies removed while legacy code still imports them; pin recoil to 0.4.1 for atom typing with autoAtom helpers. - Re-export GraphQL-shaped types in util/api/types.ts, export trackTourProgress and add no-op promoteToLive for local-first; fix prepareRemoteProject call sites and projectHistory import. - Restore localStorageMiddleware; drop obsolete monaco subscribe from Redux subscribe; replace hookrouter navigate with util/navigation; export IconDiscord, ProjectAccess alias, displayToast, and extended ToastKind values. - Adapt CLI scripts for Prettier 3 async format and yargs parseSync; exclude scripts/deploy.ts from tsc. - Fix engine-web strict TS (web-runner queue typing, parseAndThrowProper return), ESLint id-length/unused issues, and Modal release thunk unwrapping. Verified: yarn build:core (NODE_OPTIONS=--max-old-space-size=8192), npx jest (unit), npx eslint --quiet on src, yarn ws:core test:e2e:smoke. Co-authored-by: Cursor <cursoragent@cursor.com>
Cast fork.sourceProject to ProjectFiles and partial project payload to UnpreparedPartialSimulationProject so strict tsc accepts manual API types. Co-authored-by: Cursor <cursoragent@cursor.com>
Dependency Review SummaryThe full dependency review summary was too large to display here (1231KB, limit is 1024KB). Please download the artifact named "dependency-review-summary" to view the complete report. |
Reproduced the "Lint, Test & Build" CI job locally (npx eslint / tsc --noEmit / jest / yarn build) against apps/sim-core/packages/core and fixed every real compile error, most stemming from library upgrades that were part of this modernization work but never fully adapted at their call sites: - react-three-fiber/drei ref and prop typing (AgentScene, AgentMesh, Controls) - react-plotly.js Plot ref typing (OutputPlot, OutputPlotCollated) - react-shepherd and react-mapbox-gl children typing under React 18 - Monaco API surface changes (bracketPairColorization, tokenization) - acorn's now-required ecmaVersion option - SimulationProject missing an `access` field several components already read defensively - ToastManager never wiring up three existing toast kinds (ReadOnlyRelease, ReleaseSuccess, ReleaseBehaviorSuccess) - project/slice.ts still calling the old Redux-selector-based scopes API after scopes.ts moved to plain booleans - several stale/unused @ts-expect-error directives - useDispatch() missing the AppDispatch generic in ModalReleaseUpdate.tsx Also fixed WebExperimentRunner's constructor to accept `string | URL` for its worker file name (matching WebWorkerRunner), needed by provider.ts.
frontend.yml installs dependencies with --ignore-scripts, which skips the postinstall step that normally builds these two workspace packages from source (engine-web is a Rust/WASM package, not checked into git). On a genuinely clean checkout this made every downstream step -- ESLint, TypeScript, tests, and the production build -- fail with unresolved-module errors, unrelated to any application code. Added explicit steps to install a stable Rust toolchain + wasm-pack and build both packages (utils before engine-web, since engine-web imports from it) before the existing lint/test/build steps. Verified end-to-end from a fully clean state (no dist/lib/target directories, no cargo cache). Also gave the production build step a larger Node heap: the bundle (Monaco + Three.js + Plotly + FluentUI, etc.) is large enough to OOM on defaults.
Every run of Frontend and E2E has been failing at "Set up job" the whole time: the org's branch protection rejects any workflow using an action that isn't pinned to a full commit SHA, and both workflows used actions/checkout@v4, actions/setup-node@v4 (and E2E also actions/upload-artifact@v4) unpinned. Pinned all three to the SHAs already used elsewhere in the repo (checkout, matching rust.yml/housekeeping.yml) or resolved fresh via the GitHub API (setup-node, upload-artifact), kept on the same major version the workflow already targeted. E2E's own "Build" step has the identical --ignore-scripts gap fixed in frontend.yml in the previous commit, so it gets the same Rust toolchain/wasm-pack setup and @hashintel/utils + @hashintel/engine-web build steps, plus the larger Node heap for the production build.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Creating a draft PR based on my fork from https://github.com/judeallred/hashintel-labs.
I expect to have to do a fair bit of iteration to resolve the merge conflicts.