Skip to content

build(runtime): use Node 24 for the server, preserve older host compatibility - #34177

Merged
OrcaWin merged 1 commit into
mainfrom
OrcaWin/node24-core-host-compat
Oct 27, 2026
Merged

OrcaWin merged 1 commit into
mainfrom
OrcaWin/node24-core-host-compat

Conversation

@OrcaWin

@OrcaWin OrcaWin commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator
Files Added Deleted Net
Test 3 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​34 $\color{#cf222e}{\Huge{\mathbf{−}}}$​31 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​3
Prod 5 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​19 $\color{#cf222e}{\Huge{\mathbf{−}}}$​8 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​11

ELI5

orcad is Orca's server daemon, including the one Orca automatically installs on an SSH host. That installer already supplies a private Node 24 runtime and launches orcad with it. The remote machine can keep its own Node 18, 20 or 22 for projects.

This change builds the server for the Node 24 runtime it already uses. The launcher, CLI and WSL guest programs retain their older-host compatibility. Normal desktop, SSH-installed orcad, orca serve and WSL users do not acquire a new Node upgrade requirement.

User impact

User setup Impact / action required
Installed desktop app on macOS, Linux or Windows No Node upgrade required. The app already supplies its runtime.
SSH-installed orcad or packaged headless server No Node upgrade required. These installations already select Orca's bundled Node 24. An existing service started with host Node 18/20/22 can still hand off through the compatibility launcher.
WSL agent hooks, browser relay and other guest programs Existing Node 18+ support is retained. Their build target and host discovery minimum are unchanged.
Host CLI Existing Node 18+ build target is retained. The packaged CLI status command was exercised on real Node 18, 20 and 22.
Projects using Node 18, 20 or 22 No change to project Node selection.
Manually running the new server JavaScript without its bundled runtime on Node 18/20/22 Breaking change: use Node 24+ or the packaged installation with its bundled runtime. The compatibility launcher reports the requirement before parsing the server.

The SSH installer ensures Orca's matching Node runtime is present before installing or reusing a server slot. Startup selects that private executable. This installation and launch behavior is unchanged by this PR. A missing or refused packaged runtime continues to fail through the existing installation checks.

The manual-script row is a hypothetical custom deployment inferred from the old version guard. No actual users of that setup have been identified; it is separate from Orca's SSH-installed orcad workflow.

Release recommendation

SSH-installed orcad users do not need to upgrade their system Node. The PR has been rebased onto current main; the runtime changes are unchanged and the documentation conflict retains both sections. Fresh checks for the rebased commit must pass before merge/release. The previous commit d30174643d8 passed the complete selected CI below.

This is not a promise of compatibility for custom, unpackaged servers running on Node 18/20/22. If those deployments must remain supported, defer this change or communicate the Node 24 requirement before releasing to those users.

Local validation was Linux x64. CI passed macOS Intel/ARM, Windows x64/ARM, Linux x64/ARM, glibc floor/2.17 compatibility and musl lanes, package and Windows package jobs, managed-orcad SSH Docker journeys, WSL2 journeys on Ubuntu/Debian/Fedora, and the packaged Windows Electron/orcad serve switch. These automated journeys do not establish usage of the hypothetical manual-script setup.

What Changed

  • Separate the Node 24 server build target from the Node 18 compatibility target.
  • Apply the server target to the server, forked workers, packaged watcher wrapper and lazy Linear SDK bundle.
  • Require Node 24+ for server execution while preserving handoff before loading server code.
  • Update runtime admission and launcher tests and document the boundary for contributors.

Why

Allows server code to use Node 24 without raising the host requirement for the compatibility paths. This is narrower than #26824, which also raised SSH host discovery and WSL requirements.

Linked Issue

Maintainer-requested follow-up to #26824; no new issue.

Visual Proof

N/A — runtime/build policy only; no visual or interaction changes.

Testing

  • Manually exercised the CLI locally in isolated temporary profiles.
  • Updated automated runtime admission and launcher coverage.
  • 82 focused tests passed on this branch: 68 build/runtime/integration tests with real Node 18 as the compatibility launcher, plus seven launcher tests each with real Node 20 and 22.
  • Real Node 18.20.8, 20.20.2 and 22.23.4 handed off to pinned Node 24.22.1 before parsing a server fixture containing Node 24 syntax. Arguments, server integrity checks and the unsupported unpackaged-runtime error were verified.
  • Built the packaged CLI and successfully ran agent hooks status --json under all three older Node versions.
  • pnpm check:changed --maxWorkers=2: all 19 checks passed on this isolated branch, based on current main.
  • CI: aggregate PR checks passed is green. Headless server platform lanes, package/Windows package, managed-orcad SSH, WSL2 and packaged Windows serve checks passed. See the checks.

Review

Self-reviewed the bootstrap boundary and managed local/remote runtime selection. The runtime pin, native ABI baseline, wire protocol, persistence formats and workspace handling are unchanged. Existing managed installations use the pinned runtime; host Node remains a bootstrap dependency where applicable.

Agent skill upstream boundary

  • Not applicable; no upstream skill source or instructions copied.

Checklist

  • Focused change; user impact and the unpackaged-server exception are explicit.
  • Cross-platform, SSH/remote, mobile and folder workspace impact considered.
  • No UI proof required; explained above.
  • Selected cross-platform PR and packaging checks passed, including the aggregate PR gate and Headless Node server qualification.

@coderabbitai

coderabbitai Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 814ab636-67c3-47b1-adff-0993494f83c7
Commits

Reviewing files that changed from the base of the PR and between d301746 and a18e60e.

Files selected for processing: 1
  • .github/CONTRIBUTING.md

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 6 remain after this review.

Walkthrough

Server bundles and related build outputs now target Node 24. The CLI and launcher retain Node 18 compatibility targets. The server runtime guard rejects Node versions below 24, and the updated tests check runtime acceptance, rejection, and launcher behavior. Contribution guidance now distinguishes server requirements from compatibility-path requirements.

Priority: Low

Merge Risk: Minimal · up to a18e6

The reviewed runtime-target changes show no established merge-blocking risk.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 37.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within surv… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly and concisely summarizes the primary change: using Node 24 for the server while preserving compatibility with older host runtimes.
Description check Passed The description is detailed and mostly follows the required template. It explains the user impact, implementation, rationale, linked issue context, testing, review considerations, visual-proof excepti…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description is detailed and mostly follows the required template. It explains the user impact, implementation, rationale, linked issue context, testing, review considerations, visual-proof exception, and checklist status. The separate Notes section and explicit AI Disclosure section are omitted, but these are non-critical given the surrounding coverage.

Full details: Docstring Coverage

Explanation

Docstring coverage is 37.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 8 functions across 7 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@OrcaWin
OrcaWin force-pushed the OrcaWin/node24-core-host-compat branch from d301746 to a18e60e Compare October 27, 2026 21:25
@OrcaWin
OrcaWin merged commit 7b8ca17 into main Oct 27, 2026
52 of 55 checks passed
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