Skip to content

fix(terminal): match Windows workspace runtime across launch paths - #31980

Open
brennanb2025 wants to merge 34 commits into
mainfrom
brennanb2025/conv-13b-runtime-resolution
Open

brennanb2025 wants to merge 34 commits into
mainfrom
brennanb2025/conv-13b-runtime-resolution

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 31 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​1864 $\color{#cf222e}{\Huge{\mathbf{−}}}$​264 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​1600
Prod 69 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​1124 $\color{#cf222e}{\Huge{\mathbf{−}}}$​351 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​773

On Windows, a terminal opened from the CLI or phone could choose a different runtime from one opened in the window for the same workspace. Saved shell descriptions could also disagree with the process the host actually started, affecting input, paste, shell icons and dashboard previews.

The execution host now resolves the workspace runtime for both launch paths. Existing renderer behavior uses the owning process's shell and Windows/WSL facts, with the established fallback for older owners. Folder borrowing, canonical host-qualified project selection, ordinary WSL share paths, planned agents, typed aliases, setup actions, Floating terminals and saved host-shell choices keep their established contracts. Descriptive failures do not block a successful terminal action.

Optional process facts extend existing response/listing shapes. No new request, wire operation, persisted setting or minimum server version is introduced. Older servers keep their launch adapters; newer hosts still accept older client payloads. Intended differences from the common pattern support Windows/WSL preferences, several hosts and independently updated clients/servers. Retired process identities stay in memory for the renderer lifetime; this is not a bounded-memory claim.

This uses the full review path because it changes cross-process runtime selection, process observation and restart behavior. The retained review, reference comparison and scoped QA carry across main merge 7ab0b2a. Its narrow composition review passed, all 20 required named test files (280 distinct tests) passed, and the prescribed merge hook passed. The subsequent behavior-preserving snapshot projection extraction is c649abb; the same reviewer agreed, all six unchanged daemon suites (151 tests) passed, and its normal pre-commit hook passed. Both local and frozen CI compositions pass file limits. The subsequent import-only main composition is 2e7a60e; the same reviewer agreed, five unchanged targeted suites passed 34 tests, and the required main-merge hook passed. The test-only follow-up 0919d28 adapts two imports/their renamed call and the neutral mocked-store map to incoming main. The same retained reviewer agreed; all 54 assertions remain, WSL14 plus process-facts1 tests pass, and the normal hook passed. No production bytes changed. The subsequent main merge bb9cbba incorporates main’s landed fixes #34202 and #34214, is conflict-free, and passed the required direct merge hook without changing the automatic composition. The test-only dashboard fixture follow-up is 36e0382. It follows main’s endpoint-catalog contract while preserving every assertion and the real metadata/cache path. Both named suites passed all 25 tests; the same reviewer agreed on the combined main merge and fixture, and the normal hook passed without changing the reviewed tree. Production remains 1,299 raw / 988 non-moved lines against the merged main, and all 99 code-file limits pass. The later test-only commit 711192e adapts the Windows image test to the already-supported PowerShell executable family: both resolved powershell.exe and pwsh.exe paths retain the same icon. The same reviewer agreed, every image/WebGL/Kitty assertion and exact WSL expectation remains, production bytes are unchanged, and the normal hook passed. The repaired Windows job passed all nine WSL launch/paste executions and all 12 image executions. A newer-main-only 301-line lint failure was then repaired upstream in #34256. The authorized conflict-free main merge 1a49612 incorporates that fix; the same reviewer agreed, every own-PR source blob stayed unchanged, and the required direct merge hook passed without changing the reviewed tree. Exact-head compiler, ratchets and full CI passed (45 successful checks; 23 skipped by the workflow). One unit shard initially stopped on a Vitest source-map EISDIR error; its failed-job rerun passed all 2,633 files, including the previously incomplete WSL stop-settle test, with no unhandled error. Exact-head Windows CI passed all nine WSL executions and all 12 image executions.

Real QA was completed on bb62ec5 at the scopes recorded in the review report: native Claude/Codex dashboard input and quiet popouts, native clipboard paste, host refusal/allowed creation, the current Windows CLI, stock Windows/WSL builds, and old-build state through graceful restart, upgrade and final restart with genuine replies under the original provider identities. The dark plain server also produced actual WSL output, refused a conflicting native shell without creating a terminal, recovered an existing saved shell and stopped gracefully. The current owned test copies are stopped; historical cleanup limits remain in the evidence report.

Legacy forceHostRuntime is an intended saved-data compatibility contract. The published baseline schema strips that field, while the branch preserves it. The existing Windows shell-selection test covers a seeded legacy row through JSON save/parse/load, actual CMD spawn and omitted/malformed WSL controls; no live legacy import pass is claimed. Shared agent branches use recorded output contracts where applicable. Qoder discovery returned unavailable in the isolated QA home; the exact negative discovery and its test contract are retained, with no live Qoder chat pass.

Evidence limits remain explicit: WSL public foreground classification was unavailable; cross-account OS image queries returned null, so installed launch records establish the executable path. Hidden captures used software rendering and give no GPU credit. The native paste check overwrote and then cleared the shared clipboard without reading or restoring its earlier contents. A prohibited task-local git stash was disclosed and its exact owned entry 1adad67e8fbdc725e9ac424785cc7dfb423ccfbc removed under a one-time coordinator exception; its original evidence is retained. No known product defect was waived.

Tracked in #29101 and #30747. Author: @BrennanKB5

@brennanb2025
brennanb2025 marked this pull request as ready for review October 22, 2026 15:36
@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
Walkthrough

The changes revise local PTY runtime selection using workspace, project, and tab information. They add process identity, shell-path, and WSL metadata to daemon and provider results, then adopt and retire that metadata in renderer state. Terminal views use the observed facts to resolve shell labels, platform capabilities, and paste runtime. PTY data dispatch moves to a separate module, with additional cleanup for dispatcher setup and preconnect input handling.

Priority: Normal

Merge Risk: Moderate · previous review 21642

This change makes Windows terminals use the same workspace runtime resolution across launch paths. One test fixture still fails the type check, which blocks the build and CI. Give the fixture an explicit return type before merging; no production behavior defect is established here.

Pre-merge checks: Passed 3 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Description check Warning The description provides extensive context, rationale, linked issues, and test evidence, but it does not follow the required template structure. It omits the required section headings and does not pro… Rewrite the description using all required template sections. Add ELI5, What Changed, Why, Linked Issue with actual issue links, Visual Proof with before/after evidence or exactly N/A plus a reason, Testing with platform coverage and chec…
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title clearly identifies the main change: aligning Windows workspace runtime selection across terminal launch paths.
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 provides extensive context, rationale, linked issues, and test evidence, but it does not follow the required template structure. It omits the required section headings and does not provide Visual Proof or explicitly state N/A. The Testing, Review, Notes, Agent skill boundary, and Checklist requirements are also not clearly completed.

Resolution

Rewrite the description using all required template sections. Add ELI5, What Changed, Why, Linked Issue with actual issue links, Visual Proof with before/after evidence or exactly N/A plus a reason, Testing with platform coverage and checked items, AI Disclosure if applicable, Review, Agent skill upstream boundary, Notes, and Checklist. Preserve the existing detailed validation evidence within the appropriate sections.

✨ Finishing Touches: 💡 2
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
  • 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6


ℹ️ 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: 8498b875-f935-4aa9-be35-5a2e0f52a591
📥 Commits

Reviewing files that changed from the base of the PR and between 48660ae and 19c9e03.

📒 Files selected for processing: 63
  • src/main/daemon/daemon-create-or-attach-result.ts
  • src/main/daemon/daemon-pty-session-inventory.ts
  • src/main/daemon/daemon-pty-spawn-result.ts
  • src/main/daemon/daemon-terminal-admission.ts
  • src/main/daemon/session.ts
  • src/main/daemon/terminal-host-session-listing.ts
  • src/main/daemon/terminal-host-wsl-context.test.ts
  • src/main/daemon/types.ts
  • src/main/ipc/pty-launch-parity.test-fixture.ts
  • src/main/ipc/pty-launch-parity.test.ts
  • src/main/ipc/pty-workspace-runtime-parity.spec.ts
  • src/main/ipc/pty/ipc/inspect.ts
  • src/main/ipc/pty/ipc/spawn-preflight.ts
  • src/main/ipc/pty/runtime/spawn-preflight.ts
  • src/main/ipc/pty/spawn-startup-target.ts
  • src/main/local-project-runtime-resolution.ts
  • src/main/persistence/loading-store/pty-binding-placement-inertness.test.ts
  • src/main/providers/local-pty-session-activation.ts
  • src/main/providers/local-pty-session-operations.ts
  • src/main/providers/pty-process-info.ts
  • src/main/providers/pty-process-list-admission.ts
  • src/main/providers/pty-spawn-result.ts
  • src/main/runtime/runtime-agent-terminal-startup.test.ts
  • src/main/runtime/runtime-agent-terminal-startup.ts
  • src/main/runtime/terminal/launch/mobile-terminal-shell-refusal.test.ts
  • src/main/runtime/terminal/launch/mobile-terminal-shell-refusal.ts
  • src/preload/api/pty-api.ts
  • src/renderer/src/components/dashboard/build-dashboard-snapshot.rows-cache.test.ts
  • src/renderer/src/components/dashboard/dashboard-card-terminal-input.ts
  • src/renderer/src/components/dashboard/useDashboardPopoutBridge.ts
  • src/renderer/src/components/tab-bar/SortableTab.tsx
  • src/renderer/src/components/tab-bar/shell-icons.tsx
  • src/renderer/src/components/tab-bar/use-terminal-tab-shell.ts
  • src/renderer/src/components/terminal-pane/ipc-pty-connect-result.ts
  • src/renderer/src/components/terminal-pane/ipc-pty-connect.ts
  • src/renderer/src/components/terminal-pane/ipc-pty-process-description.ts
  • src/renderer/src/components/terminal-pane/ipc-pty-session-handlers.ts
  • src/renderer/src/components/terminal-pane/pty-connection/pane-agent-identity.ts
  • src/renderer/src/components/terminal-pane/pty-connection/pane-host-capability-flags.ts
  • src/renderer/src/components/terminal-pane/pty-connection/pty-input-recovery.ts
  • src/renderer/src/components/terminal-pane/pty-connection/transport-output-callbacks.ts
  • src/renderer/src/components/terminal-pane/pty-dispatcher.ts
  • src/renderer/src/components/terminal-pane/pty-process-observation.ts
  • src/renderer/src/components/terminal-pane/pty-transport-process-metadata.test.ts
  • src/renderer/src/components/terminal-pane/pty-transport-recycled-pty-incarnation.test.ts
  • src/renderer/src/components/terminal-pane/pty-transport-types.ts
  • src/renderer/src/components/terminal-pane/pty-transport.ts
  • src/renderer/src/components/terminal-pane/terminal-capability-replies.ts
  • src/renderer/src/components/terminal-pane/terminal-ctrl-arrow-conpty.ts
  • src/renderer/src/components/terminal-pane/terminal-input-host-platform.ts
  • src/renderer/src/components/terminal-pane/terminal-paste-runtime.ts
  • src/renderer/src/lib/launch-agent-background-session.test.ts
  • src/renderer/src/lib/launch-agent-background-session.ts
  • src/renderer/src/lib/local-project-runtime-workspace.ts
  • src/renderer/src/lib/pane-manager/windows-pty-compatibility.ts
  • src/renderer/src/lib/worktree-activation-pty-inventory.ts
  • src/renderer/src/store/index.ts
  • src/renderer/src/store/slices/terminals.ts
  • src/renderer/src/store/terminals/terminal-process-metadata.ts
  • src/renderer/src/store/terminals/terminal-pty-bindings.ts
  • src/renderer/src/store/terminals/terminal-state.ts
  • src/shared/folder-workspace-execution-host.ts
  • src/shared/pty-listed-session.ts

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ 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: 6ffcbe1f-bb58-4c29-aad3-d1a84a14ceb6
📥 Commits

Reviewing files that changed from the base of the PR and between cfe6b7f and 91c4624.

📒 Files selected for processing: 24
  • src/main/daemon/daemon-pty-session-inventory.ts
  • src/main/daemon/daemon-shutdown-if-idle-result.ts
  • src/main/daemon/session.test.ts
  • src/main/daemon/session.ts
  • src/main/daemon/terminal-host-session-listing.ts
  • src/main/daemon/terminal-host.ts
  • src/main/daemon/types.ts
  • src/main/ipc/pty-activation-inventory-scope.test.ts
  • src/main/ipc/pty-hidden-at-spawn-mark.test.ts
  • src/main/ipc/pty-spawn-cwd-fallback.test.ts
  • src/main/ipc/pty-windows-shell-selection.test.ts
  • src/main/ipc/pty/ipc/session-listing.ts
  • src/main/ipc/qoder-desktop-execution-host.test.ts
  • src/main/providers/pty-process-info.ts
  • src/main/providers/pty-process-list-admission.ts
  • src/preload/api/pty-api.ts
  • src/renderer/src/components/terminal-pane/pty-connection-hook-completion-side-effects.spec.ts
  • src/renderer/src/components/terminal-pane/pty-connection-notification-settings-gating.spec.ts
  • src/renderer/src/components/terminal-pane/pty-dispatcher-subscriptions.ts
  • src/renderer/src/components/terminal-pane/pty-dispatcher.ts
  • src/renderer/src/components/terminal-pane/pty-preconnect-input-buffer.ts
  • src/renderer/src/components/terminal-pane/pty-transport-input-write.test.ts
  • src/renderer/src/components/terminal-pane/pty-transport.ts
  • src/shared/pty-listed-session.ts
💤 Files with no reviewable changes: 1
  • src/main/daemon/session.ts

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ 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: a9feaf92-e08c-4fc5-b8af-4ef304f8dfd6
📥 Commits

Reviewing files that changed from the base of the PR and between 0a529eb and 216425f.

📒 Files selected for processing: 7
  • src/main/ipc/pty-daemon-spawn-wsl-runtime.test.ts
  • src/main/ipc/pty-ipc-daemon-provider-fixtures.ts
  • src/main/ipc/pty-spawn-cwd-fallback.test.ts
  • src/main/ipc/pty-windows-shell-selection.test.ts
  • src/main/ipc/qoder-desktop-execution-host.test.ts
  • src/renderer/src/components/terminal-pane/pty-connection-hook-completion-side-effects.spec.ts
  • src/renderer/src/components/terminal-pane/pty-connection-test-deps.ts

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

@brennanb2025

brennanb2025 commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor Author

Current pushed head is 974835d. Exact-head CI is green: 52 successful checks and 23 skipped, including static analysis/typechecking and packaged Windows D7. D7 initially failed its first desktop-terminal heartbeat check; later activity and survival checks passed. The same retained reviewer found no actionable source defect and accepted one failed-only retry of that suspected timing-sensitive check. That retry passed; the original failure’s cause remains unproven. The prior compiler and static-guard failures were repaired in test-only commits ef16791 and 974835d without changing production or assertions; the same reviewer accepted both and normal hooks passed. The metadata suite passed all 14 tests after the typed-getter repair, with the earlier five-suite 61-test evidence retained. Main merge 2872965 and the subsequent bounded performance repair e9a94fc were accepted by the same retained reviewer. The performance repair uses tests and CI under the coordinator ruling and is not claimed to fix the PowerShell history failure. Prior real-run evidence stays on 3d7a629. Official v1.4.243 comparison attempts 3056 and 3205 stopped before renderer reload and remain inconclusive. The corrected comparison on ticket 3218 reached initial project and native-terminal creation, then stopped because the driver passed an unsupported locator argument to the Enter CLI command. The PowerShell command was filled but never submitted; no screenshot, WSL creation or renderer reload followed. The app stopped gracefully, all 12 recorded process identities were absent and reserved ports were free. The coordinator then authorized the remaining one fresh-profile restart to correct this CLI invocation, with the original plans and command payloads unchanged. That attempt submitted the original PowerShell command and recorded its real BEFORE marker in a 44-row buffer with nine nonempty lines. It selected WSL/orca-qa in Settings and opened a terminal through the WSL menu, then stopped because the plan required shellPath and wslDistro fields that the published baseline session-listing API does not expose. No alternate-screen command, AFTER check or renderer reload ran. The app stopped gracefully, all 25 recorded identities were absent and reserved ports were free; ticket 3218 was released. This is an incompatible evidence check, with no pre-existing-versus-regression conclusion. The coordinator-authorized B4-corrected comparison on ticket 3315 then reached the original PowerShell BEFORE marker and the app-created WSL terminal’s rendered prompt. Its lead-owned exact-PID query returned wsl.exe with a creation time, but CommandLine was null, so the required orca-qa distro argument could not be verified. The driver read the bound negative receipt after 39 seconds and stopped before the WSL commands or reload. One app and one BEFORE driver ran; no fresh restart, AFTER driver or renderer reload occurred. The installed launcher closed the app gracefully; all 30 recorded process identities were absent and checked ports were free. Ticket 3315 was released. The full driver log, negative identity receipt, screenshot, cleanup and preservation records were independently validated. This remains an observability blocker, with no baseline history result or pre-existing-versus-regression classification. The coordinator subsequently authorized one final comparison using the exact terminal PID and creation time, its parent chain to the launched app, the saved orca-qa preference and rendered prompt; unreadable CommandLine is recorded without blocking that revised check. The lane owns the new queue and same retained lead. No result is claimed for this final attempt; another blocker must return to the coordinator without requeueing. Final main composition remains held until the comparison disposition. No final review marker, CLEAN merge-state claim or readiness verdict is made.

The targeted Windows/WSL renderer-reload check on preserved build 3d7a629 completed with a failure: PowerShell history was blank after one reload. Saved xterm buffers remain empty after settling and explicitly selecting the original tab, confirming this is more than a screenshot artifact. WSL alternate-screen content and title restored; both original terminal identities survived and both accepted fresh command output. The app stopped gracefully and all 19 recorded processes were absent in final cleanup records. The same retained reviewer confirmed the failure but found no attributable code defect; changes to shell metadata prevent a source-only attribution. The official v1.4.243 baseline was inconclusive: after its one reload, a stopped QA distro prevented workspace scanning, so no terminal mounted and the buffer was unavailable, rather than zero lines. The coordinator authorized a comparable baseline with that distro started first. It stopped before launch because no documented installed path could execute the required no-op as the QA account; no app, driver or second-baseline reload ran. Both attempts' evidence is retained and their admission is released. The coordinator subsequently authorized the original WSL-plus-PowerShell scenario unchanged on official v1.4.243; its in-app WSL terminal uses the path that started the distro during the failing run. On ticket 3056, the driver used a different WSL launch route and alternate-screen command, so the lead stopped it before reload. On ticket 3205, the PowerShell BEFORE marker was present in the actual buffer, but the hidden-window screenshot timed out; the one same-app driver restart then encountered the first driver’s existing state and stopped. WSL creation and AFTER did not run, and both attempts performed zero renderer reloads. Recorded owned processes were absent and reserved ports free after cleanup; both admissions were released. These are execution blockers, with no pre-existing-versus-regression conclusion. The corrected ticket 3218 attempt also stopped before reload on the driver Enter CLI syntax error described above. Its authorized fresh-profile restart reached the original PowerShell BEFORE output and app-created WSL route, then stopped on the baseline API field mismatch described above. Across both ticket 3218 attempts, one fresh restart was used and zero renderer reloads or AFTER checks ran. Both were cleaned up; the admission is released. No baseline history result or attribution is claimed. The real .claude.json hash changed during the first baseline; only hashes were read and the change is recorded without investigating its contents. No readiness verdict or final marker is claimed. Exact-head CI on 42d57b5 passed: 46 successful checks, 23 skipped.

Windows terminals opened through the CLI or phone could choose a different workspace runtime from terminals opened in the window. Saved shell descriptions could also disagree with the process actually running, affecting input, paste, shell icons and quiet dashboard previews. The host now resolves both launch paths consistently, and existing terminal views use the owning process's shell/Windows/WSL facts while retaining older-host fallbacks.

The retained three-round review, whole-mechanism reference comparison, performance assessment and accepted fixes carry. The authorized main merge is 7ab0b2a. The same reviewer checked its composed runtime startup, guarded launch-result and metadata callbacks, output-gap handling, Windows owner backend and mechanical test adaptations. All 20 required named files passed, covering 280 distinct tests, and the prescribed merge hook passed. The subsequent file-limit fix is c649abb, which moves the existing reattach snapshot projection into a sibling module without changing its expressions, fields or order. The same reviewer agreed, six unchanged named daemon suites passed all 151 tests, and its normal pre-commit hook passed. The coordinator subsequently required a targeted real reattach run for this shipped projection move; source equivalence and tests do not substitute for that pending run. A later import-only main conflict was composed in 2e7a60e; the same reviewer agreed, five unchanged targeted suites passed 34 tests, and the required main-merge hook passed without changing the reviewed tree. The test-only follow-up 0919d28 updates two imports/their renamed call and the missing neutral mocked-store map to incoming main. The same retained reviewer agreed, all 54 assertions remain, 15 unique affected tests pass, and the normal hook passed without changing the reviewed tree. All production bytes are unchanged. The subsequent main merge bb9cbba incorporates main’s landed fixes #34202 and #34214, is conflict-free, and passed the required direct merge hook without changing the automatic composition. The test-only dashboard fixture follow-up is 36e0382. It follows main’s endpoint-catalog contract while preserving every assertion and the real metadata/cache path. Both named suites passed all 25 tests; the same reviewer agreed on the combined main merge and fixture, and the normal hook passed without changing the reviewed tree. Production remains 1,299 raw / 988 non-moved lines against the merged main, and all 99 code-file limits pass. The later test-only commit 711192e adapts the Windows image test to the already-supported PowerShell executable family: both resolved powershell.exe and pwsh.exe paths retain the same icon. The same reviewer agreed, every image/WebGL/Kitty assertion and exact WSL expectation remains, production bytes are unchanged, and the normal hook passed. The repaired Windows job passed all nine WSL launch/paste executions and all 12 image executions. A newer-main-only 301-line lint failure was then repaired upstream in #34256. The authorized conflict-free main merge 1a49612 incorporates that fix; the same reviewer agreed, every own-PR source blob stayed unchanged, and the required direct merge hook passed without changing the reviewed tree. Exact-head compiler, ratchets and full CI passed (45 successful checks; 23 skipped by the workflow). One unit shard initially stopped on a Vitest source-map EISDIR error; its failed-job rerun passed all 2,633 files, including the previously incomplete WSL stop-settle test, with no unhandled error. Exact-head Windows CI passed all nine WSL executions and all 12 image executions.

The latest main merge is 07f8543. Its test conflicts adopt main’s grouped IPC fixtures and repair their consumers without manually changing production; the same reviewer agreed, 17 named files passed 328 tests, and the required direct merge hook passed with the reviewed tree unchanged. Separate tests-only commit 3d7a629 removes redundant internal assertions and instrumentation without removing a case or table row. Three named files passed 41 tests, normal hooks passed, and the same reviewer verified retained outcomes and the remaining file-by-file test value. These two test runs overlap and are not summed. Production remains 1,299 raw / 988 non-moved; tests are 2,052 raw / 1,760 non-moved after the bounded pass, with the remaining main-path, real-bug and compatibility coverage retained. All 99 file limits pass. Fresh full CI passed on the pushed head, including static analysis/typecheck, all five unit shards and real WSL terminal CI; no targeted current-head reattach pass or final readiness is claimed.

The subsequent authorized main merge is 7dea522. The same reviewer checked both conflict resolutions and all 24 overlapping paths, finding two test-contract adaptations and no proven shipped-flow regression. Test-only commit bd72787 imports the relocated shared response constant and supplies the current neutral project-catalog fixture. Both named files passed all 16 tests through the intact gate, the normal hook passed, and the same reviewer agreed that every assertion and all 40,713 other tree entries are unchanged. The hook unexpectedly synchronized dependencies; its generated lock metadata was preserved separately and the committed incoming-main lock remains unchanged. The tests ran before that synchronization. The previous static and Windows packaged D7 jobs stopped on the test compile defects; D7 runtime was not reached. Fresh CI on the later merged head 42d57b5 confirmed these repairs, including compiler, ratchets and the packaged Windows D7 job. The main merge and tests-only commit preserve the earlier QA evidence; the remaining targeted reload run still uses the preserved 3d7 build.

The latest authorized main sync is 42d57b5, incorporating the existing upstream lint and instructions-file formatting fixes. It merged without conflicts. The same reviewer checked both automatic dashboard overlaps and confirmed the accepted process-facts paths and both test repairs remain intact, with zero findings. The required direct merge hook passed; exact invocation and exit are the lane’s recorded attestation, while the available log records completed tasks. Full CI on this merged head passed with 46 successful checks and 23 skipped. The targeted real renderer-reload check subsequently failed on PowerShell history as described above. Its initial attempt stopped before terminal creation because the fresh QA home lacked Git author identity; that attempt was cleaned up gracefully. The same admitted lead retried with a synthetic Git identity passed only in the documented launch environment, and project creation now succeeds. The retry performed exactly one renderer reload; the WSL and live-input checks passed, while PowerShell history restoration failed. No new install, build or accepted QA replay is required for this main merge.

Real QA on bb62ec5 completed the original scoped native Claude/Codex board input and quiet popouts, native paste, allowed/refused host creation and current Windows CLI, stock Windows/WSL, baseline graceful restart, upgrade and final restart with genuine new replies under the original provider identities. The dark plain server produced actual WSL output, refused a conflicting native shell before creation with unchanged scoped rows, recovered an existing saved shell with fresh output, and stopped gracefully. Dark-server claims come from runtime records, with no UI or screenshot credit. All owned current test copies/controllers/servers were stopped and the admission released; historical cleanup limits remain recorded.

Legacy forceHostRuntime is an intended saved-data compatibility contract: the published baseline schema strips that field, while this branch preserves it. The existing Windows shell-selection test exercises a seeded legacy row through JSON save/parse/load and actual CMD spawn, with omitted/malformed WSL controls. No live legacy positive/persistence/control pass is claimed. Qoder discovery was unavailable in the isolated QA home; exact negative discovery and recorded-output contracts are retained, with no live Qoder chat pass. No product defect or flow was waived.

Limits: hidden captures use software rendering and do not prove GPU or OS focus behavior. Public WSL foreground classification was unavailable. Cross-account OS image queries returned null; installed launch records establish executable identity. The paste check overwrote and then cleared the shared clipboard without reading or restoring previous contents. A prohibited task-local git stash was disclosed and its exact owned entry 1adad67e8fbdc725e9ac424785cc7dfb423ccfbc removed under a one-time coordinator exception; the original evidence remains retained. Intended differences from the common pattern preserve existing multi-host, SSH, phone, folder, Windows/WSL and independent-version behavior.

The retained performance finding about per-row immutable map replacement is fixed in e9a94fc. Unchanged known process facts retain the same state; one inventory uses at most one lazy metadata-map copy and store update. Production-trigger tests at 100 and 1,000 rows count actual copies, property work and notifications independently, including zero copies/notifications for unchanged inventories. Renderer-lifetime retired identities remain preserved; no large-scale latency, heap or bounded-memory pass is claimed.

For Brennan's review, the screenshots below corroborate displayed results; provider identity, genuine reply freshness, process incarnation, graceful durability and cleanup are established by the joined raw records, rather than inferred from pixels.

Native board replies

Claude

Codex

Quiet popout replies

Claude

Codex

Native paste, child cwd and CLI displayed result

Paste and native result

Child cwd and CLI read

Published baseline: two genuine replies

Claude

Codex

Graceful baseline restart: fresh recalls

Claude

Codex

Upgrade: fresh recalls under original provider identities

Claude

Codex

Final graceful restart: fresh recalls

Claude

Codex

Retained supplementary observations

Native final checkpoint

Fresh Codex Idle card

Carried native CMD icon/hover and future preference

Dashboard setup presentation only

Human-judgment spots: host runtime selection, process identity and retirement, and Windows backend/native-only distinction.

Targeted reload: PowerShell before reload

PowerShell before reload

The after-reload blank-pane, restored WSL and fresh-output screenshots are preserved with the raw buffer records locally. Their public uploads failed at GitHub’s upload-token step; no public after-image evidence is claimed.

@greptile-apps

greptile-apps Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge, with no new actionable findings.

Summary

The PR makes the execution host choose the Windows workspace runtime across desktop, CLI and phone launches. The renderer uses the owning process's shell and WSL facts for input, paste, icons and dashboard previews.

  • Ordinary terminal launches use the runtime chosen for their workspace.
  • Terminal views follow facts reported by the running process.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Desktop[Desktop launch] --> Host[Host resolves workspace runtime]
  CLI[CLI or phone launch] --> Host
  Host --> Process[PTY owner starts or attaches process]
  Process --> Facts[Shell and WSL facts]
  Facts --> Renderer[Input, paste, icons and dashboard]
Loading

Reviews (6) · Last reviewed commit: "Mark unused terminal metadata fixture pa..." · Reviewed by Greptile

This branch has not been deployed

No deployments
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