Skip to content

chore(desktop): upgrade bundled Node to 24.20.0 LTS - #679

Open
pascalandr wants to merge 7 commits into
devfrom
chore/bundled-node-24-lts
Open

chore(desktop): upgrade bundled Node to 24.20.0 LTS#679
pascalandr wants to merge 7 commits into
devfrom
chore/bundled-node-24-lts

Conversation

@pascalandr

Copy link
Copy Markdown
Contributor

Summary

  • Upgrade the standalone Node executable bundled with both Tauri and Electron from 22.22.2 to 24.20.0 LTS (Krypton).
  • Add a single exact .node-version pin consumed by the runtime preparation script and all Node CI setup steps, replacing the previous Node 20/22 build/test split. Official archive SHA-256 verification and executable-only packaging are preserved.
  • Set macOS 13.5 minimum explicitly in both desktop bundle manifests and update the build documentation. This compatibility change was explicitly accepted by the requester.
  • Strengthen packaged-resource smoke checks: verify the bundled Node matches the pin, reject stale runtimes, and exercise ESM imports including the native OpenCode V2 client from the packaged server directory.
  • Add regression coverage for the shared runtime/CI pin and macOS minimum-version parity.

Scope and compatibility

This updates the Node process running the CodeNomad backend. It does not upgrade Electron 39 or its internal Node/Chromium, WebView2, the user's Node installation, or the independently managed OpenCode daemon. No application dependencies or lockfile versions are changed.

Node 24's official macOS binaries require 13.5 rather than Node 22's 11.0. Windows x64/ARM64 and Linux glibc x64/ARM64 keep their existing Node platform floors. No additional platform or musl support is introduced.

The Windows x64 Node executable increases from approximately 83.04 MiB to 89.06 MiB uncompressed. Final installer/archive size changes have not been measured. This is a runtime maintenance update, not the deferred packaging-size optimization.

Validation

Performed in an isolated worktree on Windows with the official, checksum-verified Node 24.20.0 / npm 11.19.0 distribution:

  • Clean npm ci; lockfile unchanged.
  • UI, Electron, and server TypeScript checks.
  • Server suite: 391 passed, 2 platform-skipped, 0 failed.
  • Electron Node-level native-logic suite: 192 passed.
  • Packaging/runtime regression tests: 6 passed.
  • npm run bundle:server --workspace @codenomad/tauri-app: rebuild UI/server resources, stage production dependencies, download/check/extract Node 24, and run packaged startup/import/loading-asset checks.
  • Negative smoke: the previous release's packaged Node 22.22.2 is rejected with a version mismatch.
  • Desktop manifest schema checks (Tauri numeric-format annotations ignored by the standalone JSON schema validator).
  • git diff --check.

The preliminary compatibility study also loaded all 14 direct server dependencies and the packaged msgpackr-extract N-API binary under Node 24, with a successful serialization roundtrip.

Remaining release gates / existing warnings

  • Cross-platform CI builds and tests on the final head.
  • Native GUI launch, restore, OpenCode streaming, shutdown, and restart verification for the rebuilt desktop applications. Resource smoke tests and Node-level Electron tests are not a complete native-release approval.

npm ci still reports the existing 49 dependency advisories; this PR does not run an unrelated dependency upgrade. npm 11.19 also warns about existing install scripts awaiting allowScripts coverage. actionlint reports only the pre-existing constant-false condition in build-and-upload.yml (now line 816).

The touched build-and-upload.yml remains approximately 913 lines; no unrelated workflow refactor is included.

Use one exact .node-version pin for the standalone server runtime shipped by both desktop hosts and all Node CI setup steps. Preserve official archive checksum verification and binary-only packaging; Electron's internal runtime, the system Node installation, and OpenCode remain unchanged.

Require macOS 13.5 in both bundle manifests to match the Node 24 binaries and document the compatibility change. Strengthen packaged-resource smoke checks to reject stale Node versions and import the ESM-only V2 client from the packaged dependency tree.

Add regression tests for the shared runtime/CI pin and macOS host parity. On Windows with Node 24.20.0 and npm 11.19.0: clean npm ci, all typechecks, 391 server tests (2 skipped), 192 Electron tests, and 6 packaging tests pass. Rebuilt Tauri server/UI resources pass packaged startup/import/version smoke checks; an old Node 22 package is rejected. Native GUI and non-Windows validation remain for CI/release review.
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/34120189285

Artifacts expire in 7 days.
Artifacts:

  • pr-679-fdeafc2931d35c9957aa0f2466a0aa6858126e1c-tauri-macos
  • pr-679-fdeafc2931d35c9957aa0f2466a0aa6858126e1c-tauri-windows
  • pr-679-fdeafc2931d35c9957aa0f2466a0aa6858126e1c-electron-macos
  • pr-679-fdeafc2931d35c9957aa0f2466a0aa6858126e1c-tauri-linux
  • pr-679-fdeafc2931d35c9957aa0f2466a0aa6858126e1c-tauri-macos-arm64
  • pr-679-fdeafc2931d35c9957aa0f2466a0aa6858126e1c-electron-linux
  • pr-679-fdeafc2931d35c9957aa0f2466a0aa6858126e1c-electron-windows

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/34150205504

Artifacts expire in 7 days.
Artifacts:

  • pr-679-2162cfdcfeee1f674dc9c18f0290539ae954c374-tauri-macos
  • pr-679-2162cfdcfeee1f674dc9c18f0290539ae954c374-tauri-windows
  • pr-679-2162cfdcfeee1f674dc9c18f0290539ae954c374-tauri-macos-arm64
  • pr-679-2162cfdcfeee1f674dc9c18f0290539ae954c374-electron-macos
  • pr-679-2162cfdcfeee1f674dc9c18f0290539ae954c374-electron-linux
  • pr-679-2162cfdcfeee1f674dc9c18f0290539ae954c374-tauri-linux
  • pr-679-2162cfdcfeee1f674dc9c18f0290539ae954c374-electron-windows

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/34160953653

Artifacts expire in 7 days.
Artifacts:

  • pr-679-e12932800ec5fbd1f10fb71119de3b1b1eb89ff1-tauri-macos
  • pr-679-e12932800ec5fbd1f10fb71119de3b1b1eb89ff1-tauri-windows
  • pr-679-e12932800ec5fbd1f10fb71119de3b1b1eb89ff1-electron-macos
  • pr-679-e12932800ec5fbd1f10fb71119de3b1b1eb89ff1-tauri-linux
  • pr-679-e12932800ec5fbd1f10fb71119de3b1b1eb89ff1-tauri-macos-arm64
  • pr-679-e12932800ec5fbd1f10fb71119de3b1b1eb89ff1-electron-windows
  • pr-679-e12932800ec5fbd1f10fb71119de3b1b1eb89ff1-electron-linux

Integrate dev@ea37f97b after the global-session, nested-scroll, and selective-pruning fixes while preserving the bundled Node 24 runtime update. The merge is conflict-free and keeps the PR history intact for exact-head CI validation.
The latest dev merge added a native pruning job with a literal Node 22 setup step. Point that job at the checked-out .node-version so the bundled Node 24 branch keeps every workflow on one reviewed runtime source.

This also satisfies the branch invariant that rejects setup-node steps which bypass the repository pin. Validated with both desktop packaging and managed-runtime test suites.
Node 24 exposed GitHub Windows runners where Get-CimInstance exceeded both bounded lookup attempts, leaving the Node election participant without an owner identity and making the cross-host Tauri tests report two secondaries.

Use Get-Process.StartTime in both Electron's synchronous/asynchronous lookups and the Rust host so they still compare the same UTC tick value without paying the WMI startup cost.

Validated with the Electron typecheck, 42 focused process/election tests, all 160 Tauri tests in CI order, and the 7 bundled-runtime and packaging invariants.
@github-actions

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/34490346837

Artifacts expire in 7 days.
Artifacts:

  • pr-679-30800523df17caab573b7117bdb1efa24a48a303-tauri-macos
  • pr-679-30800523df17caab573b7117bdb1efa24a48a303-tauri-windows
  • pr-679-30800523df17caab573b7117bdb1efa24a48a303-electron-macos
  • pr-679-30800523df17caab573b7117bdb1efa24a48a303-tauri-macos-arm64
  • pr-679-30800523df17caab573b7117bdb1efa24a48a303-tauri-linux
  • pr-679-30800523df17caab573b7117bdb1efa24a48a303-electron-linux
  • pr-679-30800523df17caab573b7117bdb1efa24a48a303-electron-windows
  • session-pruning-plugin-ubuntu-latest
  • session-pruning-plugin-macos-latest
  • session-pruning-plugin-windows-latest

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.

1 participant