Repository navigation
feat(runtime): run the web-only fork on Bun - #15
Merged
Merged
Conversation
Bun rejects a pending Node HTTP WebSocket handshake after Browser attachment yields to child-process I/O. Acquire the existing scoped socket before attaching the viewer, after authentication and parameter validation. An actual Bun HTTP fixture reproduces the delayed-upgrade failure and verifies the host setup close frame.
Igloczek
marked this pull request as ready for review
October 7, 2026 16:27
Inlining npm ws bypassed Bun HTTP upgrade ownership, allowing an HTTP 200 response onto the WebSocket channel after the close frame. Keep ws as a Bun built-in without staging another package. Verify the complete raw close handshake through source and production pack/compile paths, with Node and npm absent from the compiled process PATH.
Thread transfer impact
This comment will update automatically after the next completed run. |
Resolve CI and release conflicts around the fork’s single lightweight Check job. Preserve manual Bun archive tooling, include the new plugin manifests in its smoke fixture, and require Bun 1.4.2 locally and on SSH Device hosts.
This was referenced Oct 8, 2026
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.
Summary
The web-only fork still required Node for its server and helpers, and default installation/update paths could select upstream releases. Bun 1.4.2 now runs the environment server and first-party helpers on macOS arm64, Linux x64, and Linux arm64. Vite+/pnpm remain contributor tooling.
CLI bundles leave
wsto Bun so upgraded Browser channels receive only WebSocket frames. Keep working Node-compatible APIs. Replace the demonstrated PTY incompatibility at its adapter, normalize SQLite boolean binds, retain a coherent Effect graph in executable builds, and preserve the Device, Browser, provider, and service boundaries.Closes #12.
Evidence
590bd5f21e, including the native Bun migration documentation; the PR is conflict-free.19e7c38cdcand retained only main’s single Linux x64 CI job. Source and rebuilt archive each pass all 9 real-client flows, authenticated transport/persistence and native/helper smoke checks. 32 helper/SSH/service tests pass, plus all 6 service cases using the actual rebuilt archive. Scoped typechecks, the web/server build, manual release smoke, and fork-pruning checks pass. The release smoke fixture now includes main’s four plugin packages; SSH and helper runtime checks reject Bun 1.4.0/1.4.1.node:sea; the inherited PTY package started but delivered no I/O. After: actual Bun source and extracted archive pass authenticated HTTP/OAuth/MCP/WebSocket/persistence checks and native PTY, search, keyring, ACP self-launch, and Antigravity helper smoke checks. Archive core startup runs outside the repository with no system Node/npm/Bun on PATH; helpers use its packaged interpreter.Before:
After:
Merge Danger
Door: two-way
Persisted formats and wire contracts remain compatible. Application startup requires Bun on supported hosts; an installed archive supplies its own helper interpreter. Reverting the runtime changes does not require a data migration.
Blast Radius: runtime
Server startup, transports, PTYs, Device bootstrap, Browser streams, installation, and service updates. Runtime execution evidence is local macOS arm64. Current main’s lightweight CI is preserved: one standard Linux x64 Check job; additional runtime suites and release packaging run manually. Paid provider OAuth and physical simulator/device operations remain credential/SDK-dependent and are not claimed by controlled fixtures. Chromium, Git, provider prerequisites, and SDKs remain independent dependencies. Scoped web, server, and scripts typechecks pass after incorporating main’s declaration-portability fix.
Implemented with GPT-6.1-Sol through the Codex harness in T3 Code.