Skip to content

H-6456: Update hCore (2026-05) - #134

Draft
judeallred wants to merge 163 commits into
mainfrom
modernization
Draft

judeallred wants to merge 163 commits into
mainfrom
modernization

Conversation

@judeallred

Copy link
Copy Markdown
Collaborator

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.

Comment thread .github/workflows/e2e.yml Fixed
Comment thread .github/workflows/frontend.yml Fixed
Comment thread apps/sim-core/packages/core/src/util/yieldToBrowser.ts Fixed
@vercel

vercel Bot commented May 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
petrinaut-gaios Error Error Sep 9, 2026 4:01am UTC
petrinaut-hazel Ready Ready Preview Sep 9, 2026 4:01am UTC

Request Review

judeallred and others added 25 commits May 1, 2026 13:23
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
@vilkinsons vilkinsons changed the title Modernization H-6456: Update hCore (2026-05) May 1, 2026
- 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>
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

Dependency Review Summary

The 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.

View full job summary

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants