Repository navigation
Run automated workspace setup in a dedicated Setup tab - #29819
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Priority: ➖ Normal Merge Risk: ⚪ Minimal · up to
|
Main now always runs Setup in its own tab (#29819) and lets background agent creates leave the first surface to the caller (#29810). Keep both: the creation owner still suppresses the starter shell, and background attribution-only creates follow main's narrower rule. With no split Setup mode left, owned navigation queues Setup directly and the "Setup could not run" fallback is gone.
250 commits landed on main between 5db05e8 and 6fcc183, and the fr catalog and en-runtime-required.json conflicted. All six catalogs are taken from main and the prune is recomputed in one pass: 1,504 keys. 24 keys joined the set and none left: twenty labels and search keywords of the Setup Script Location terminal setting that stablyai#29819 removed, three Space page labels dropped by stablyai#29857, and the tab close-button tooltip removed by stablyai#29851. en.json goes from 16,241 entries to 14,737; en-runtime-required.json keeps 568 of them.
…tup split Upstream dropped the watcher type re-exports from parcel-watcher-process.ts (stablyai#30369) and the setupScriptLaunchMode setting (stablyai#29819: setup always gets its own tab), so the language-server watcher imports the owning modules and the fork's background-terminal launcher no longer splits setup into a pane.
…2-frame wait (#30442) * fix(terminal): start an agent's terminal at its first real size instead of after a 12-frame wait The startup grid settle waited for the grid to change and then hold for 2 frames; a grid that was right from the start always paid the 12-frame maximum (~90 ms at 120 Hz, ~200 ms at 60 Hz, seconds when frames are throttled, since it also cleared the 250 ms fallback timer). Its only case, the setup split, was retired in #29819. Command panes now connect like plain panes: on the first frame with a real measurement, or the 250 ms fallback timer. * fix(terminal): bound startup by completed fit and deadline * test(terminal): brace startup contract control flow * fix(terminal): release pending startup when window hides
ELI5
New workspace setup always gets its own Setup tab, leaving the requested chat or terminal separate.
What Changed
Why
A split setup needed an extra primary shell and mount coordination, including beside native chat. The existing tab path makes setup independent of that anchor; changing only the default would leave saved split preferences active. This does not include the separate publication/reattachment fixes or claim to establish the original frozen-terminal cause.
Linked Issue
Follow-up to #29810; rebased onto its merged commit
7f9b51cf5cc1.Visual Proof
Automated Setup before and after
Real macOS hidden Electron host + paired client, with the old vertical-split preference: before one tab/two panes, after separate Terminal 1 and Setup tabs. Both verified setup output, background selection and manual splitting. A separate post-rebase hidden probe rendered actual native-chat creation (no prompt submitted) and a terminal-agent fixture beside Setup; all native windows stayed hidden/unfocused. Images live in an attachment ref, outside this diff.
Testing
Agent-driven validation: Final post-rebase 34 Node suites, 1,816 passing tests (two retained conditional expected failures, two skips); post-rebase runtime/composed-route checks, 1,443 passing tests (one skip); node/web typechecks; changed-code-quality gate; rebuilt e2e-mode hidden Playwright/CDP proofs before/after and again after rebase. Independent Astra review found no unresolved P0/P1, including the PR 1 overlap. After CI identified two test helpers as production routing readers, conventional fixture-only renames passed 23 affected suites (187 tests and two retained expected failures), both routing/layout ratchets, repeated node/web types and the changed-code gate; no guard allowances changed. The runtime English catalog was regenerated with the existing command after removing settings callsites; localization catalog/extraction/coverage and remaining static preflight guards passed. Twenty obsolete English values remain under the catalog generator’s conservative contract, with no restored UI/search entries. A unit-shard failure in the listener-savings model was reproduced and corrected for the removed stable action; all four focused Bun tests pass, preserving the live 15-listener limit and scaling controls.
Executed on macOS. Windows/WSL runner construction is covered by unit tests; live Linux/Windows/WSL/SSH was not run. Extra e2e-project typecheck remains at the same 261 baseline diagnostics by file/error code, with none added; required node/web checks pass. The default Bun wrapper hit a
node:sqlitesuite-loader issue, so the complete selected suites were validated withpnpm test:node.Review
Committed design and independent Astra report:
docs/automated-setup-tab-design.mdanddocs/automated-setup-tab-astra-review.md. Independent Astra high design rounds and final diff review; no unresolved P0/P1. Automatic side-by-side setup placement is intentionally removed; older execution hosts may still return split layouts until upgraded.Agent skill upstream boundary
Notes
The full required PR workflow passed after one authorized same-commit retry of an unchanged palette timing benchmark, with its 180 ms limit preserved. The separate Headless Node server Windows ARM persistence job hit
EBUSYremoving temporary test profiles; its blank-serve/direct-daemon requests bypass setup placement, and the cleanup paths are unchanged. At merge, one authorized retry was still running; the final completion snapshot is IN_PROGRESS in run38961057857, separate from the successful full PR gate. No Windows ARM persistence pass is claimed unless that run succeeds; any remaining cleanup investigation belongs separate follow-up.Execution-host authority and existing saved layouts remain in place. No new wire field, retry machinery, ownership store or layout migration.
Checklist
cf1dc36a9290d20104904ce31675676ba5fd3fd2: run 38961058079, attempt 2,verify/ PR checks passed job 117194232531