Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
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. Comment |
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.
VC-639 — use the released libuv fix by updating Node
The missing
bye-8is a Linux PTY premature-EOF bug below node-pty, not an exit-ordering defect in our supervisor. The repository pinned Node 24.15.0 / libuv 1.51.0 for the plain-Node host/CI lane. libuv's fix 2e2114ed / #4997 for #4992 shipped in libuv 1.52.0; Node 24.16.0+ includes libuv 1.52.1 (nodejs/node#61829). Electron 44 already includes this fix.Changes
.nvmrcand the host image to 24.21.0, the newest 24.x release in Node's release index. Update the image's tag and verified multi-arch digest together:sha256:0e0ff40c39bc087845bfb27465a0df4ea419520094bc35842ff83dd8cbe6f9b6.^24.16.0, retaining the repository's caret/24.x convention. Keep engineStrict, development diagnostics, README, contributing/build docs, and host packaging docs consistent. Workflows already use.nvmrcor the root manifest; no explicit workflow version needs changing. hostd packages that exact Node binary.bye-8assertion unchanged.Why not carry a patch?
The earlier before-EOF drain patch was independently verified as correct, but it overrode
tty.ReadStreaminternals to work around a failure already fixed in a released runtime. Updating the lagging Node pin is smaller, upstream-owned and removes that maintenance burden. Waiting above node-pty was disproven and is not shipped either.Before / after evidence
The independent review (
.scratch/vc639-verify/review.mdin the supervising checkout) measured pristine node-pty on native Linux arm64:Our additional original-assertion stress on Linux x64 emulation, Node 24.21.0 / libuv 1.52.1 with pristine node-pty: 500/500 passed, zero failures. Two 250-case test files, 2-CPU ceiling, configured maxWorkers=
$VOLLI_CONCURRENCY_HINT(4 during this run). The harness asserted there was no installedlinuxPtyEof.js, rebuilt node-pty from source under Node 24.21.0 (ABI 137), probed it, and successfully loaded/queried better-sqlite3 (SELECT 1). Scratch commands/results:.scratch/vc639/linux-x64/run.sh,container.sh,generate.mjs,logs/native-node21-normal-results.json; command:ITERATIONS=250 CPUS=2 bash .scratch/vc639/linux-x64/run.sh native-node21-normal.Checks for this final approach
vp check— pass.vp run --filter @volli/host-core typecheck— pass.(cd packages/host-core && vp test run src/pty src/db-open-failure.test.ts --maxWorkers=$VOLLI_CONCURRENCY_HINT)— 116 passed (102 PTY + 14 diagnostics).(cd apps/desktop && vp test run src/main/pty.test.ts --maxWorkers=$VOLLI_CONCURRENCY_HINT)— 224 passed.vp run --filter @volli/docs check— 0 errors/warnings/hints.git diff --check— pass. Local macOS checks used supported Node 24.18.0; new exact runtime/native-artifact verification is Linux stress and CI.Final-head CI green on
009fe77948b1c2af5c20a5283f92bbabf20653d3: run 37276292647.gh pr checks 751 --watch --fail-fastexited 0; CI gate, Test (packages), all desktop shards/coverage and gating smoke lanes, Check + Build, and Build (host container) passed. Host-core in Linux CI: 4,181 passed, 4 platform-specific skipped; protected statements/branches/functions/lines 100%. The host image/deploy built pristine node-pty from source; native installation completed for better-sqlite3 (bundled N-API prebuild). Both pre-archive and shipped-artifact probes returned{"ok":true,"node":"24.21.0","better-sqlite3":"3.53.4","node-pty":"spawned /bin/sh",...}, and the artifact boot passed. The prior patch-head result is not used as verification of this revision.Residual upstream case
libuv#5165 fixes a rarer remaining PTY EOF case in libuv 1.53.0. No released Node currently includes it; nodejs/node#66282 is open. It did not reproduce in the independent 25,000-run Node 24.21 sample. Revisit the runtime pin once a Node release ships libuv ≥1.53.0; this PR does not claim to fix that residual case or add a defensive patch for it.
Owner reviews/merges; no auto-merge.