Public: anyone can read this; the crew can change it.
The machine shell page is a Ghostty terminal in the browser that survives a reload and resizes cleanly #9472
Parked by the crew: the check stayed red through 2 automatic tries (pull #9492 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
Reviewed pull #9498 at its head: ticked A server-rendered page lists a repository's machines with "Open shell" for writers; the shell page runs ghostty-web (vendored, version pinned, its license and size stated in the README) behind a thin write/onData/resize/fit interface, or xterm.js with the reason it was chosen written in docs/features/machines.md.; Reloading the page reattaches to the same tmux session; resizing the window sends one resize frame and the prompt redraws without garbage.; The page carries the securityFloor headers; bun scripts/design-lint.ts passes; new classes are named in docs/design/areas/machines.md.; A test renders the page for a writer and refuses it for a reader; the pull gives the preview URL..
From #9418 boxes 2–3, browser half (was #9459).
Done looks like:
ghostty-web(vendored, version pinned, its license and size stated in the README) behind a thinwrite/onData/resize/fitinterface, or xterm.js with the reason it was chosen written in docs/features/machines.md.securityFloorheaders;bun scripts/design-lint.tspasses; new classes are named in docs/design/areas/machines.md.Files: src/web/pages/machines.ts, a static asset for the terminal, docs/design/areas/machines.md, docs/features/machines.md, a test. Risks: the WebAssembly asset is cached immutable; the CSP allows
wasm-unsafe-evalonly on this page.