Repository navigation
fix(ci): repair terminal link handling and E2E recovery fixtures - #23677
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (8)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review. 📝 WalkthroughWalkthroughThe changes update three cancellation settlement expectations with structured rejection data. They also add a guard and test for disabled plain-click link actions. The end-to-end test fixtures now create and clean up a profile store, and the restart-survival test retries the recovered-tab checks and verifies the row count after rendering. Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to No actionable merge-blocking risk remains. The changes are mergeable after normal checks. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
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 |
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — the branch's net diff against main (the generated diff also carried two tests/e2e/fixtures/daemon-generation-* entries that are absent from the branch head; those are a stale-base artifact, not part of this PR).
- Disabled plain-click gate —
requestTerminalLinkActionnow requirescontext.plainClickBehavior !== 'none'for a plain-click activation, so a disabled plain click returnsfalsebeforeclaimPtyMouse,preventDefault, orrequestinstead of opening the action popover. Middle-click behavior stays independently gated;isTerminalLinkActionActivationis button-0 only, so the added clause cannot suppress middle click, and production always supplies a resolved behavior (terminal-pane-mount-preparation.ts:134) withundefinedstill meaning "ask". - Regression unit test — pins disabled plain click + enabled middle click returning
falsewith no PTY claim, nopreventDefault, no request, and no primary run; it fails against the pre-fix handler. - Restart-survival E2E retry — the survivor-presence, single-row count, original identity, and client placement checks are now one
toPassblock, and the row count is re-checked after the recovered guest renders. Permanent duplicate/replay detection is preserved (a create-URL replay keeps the count at 2 and still fails). - Claude queued-send expectations — the
rejection: { kind: 'cancelled' }assertions come from #23675, which shares this head branch (nwparker/fix-ci-09-28); production emits that field, so the expectations are correct. Merge order: land #23675 first as the PR body notes.
Existing coverage is genuine: terminal-link-click-ownership.spec.ts:134 exercises the disabled-plain/middle-open combination end to end and asserts the child still receives PTY mouse reports, and native-chat-web-link-actions.ts:65 already honored none, so no parallel fix was needed there.
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — incremental review of the delta since my prior review at 08e697b8: commit 167d3e5e gives the daemon-generation legacy-close fixture a real profile store.
- New fixture store —
tests/e2e/fixtures/daemon-generation-profile-store.tsbuilds aStorefrom the productioncreateProfileStateStorefactory (synchronous SQLite authority, afterinstallOrcadHostAdapters()), anddaemon-generation-legacy-close-client.tspasses it toOrcaRuntimeServiceand closes it withstore?.freezeWritesAsync()infinally. - Verified the load-bearing pieces:
RuntimeStoreis the structural subset ofStorethe runtime constructor accepts, so the uncast argument typechecks;freezeWritesAsyncdrains pending writes and closes the profile-state authority (profile-state-maintenance.ts:41), matching every other test fixture; and the DB/JSON files land underconfig.cwd = runtime.rootDir, which the harness asserts is a disposable temp root, so nothing pollutes the worktree. The siblingdaemon-generation-reconnect-client.tsstill constructs without a store, but itslistMobileSessionTabspath resolves throughgetKnownWorktreeIds(empty set, nofolder_workspace_not_foundthrow), so it correctly needs no change.
No inline comments — the previously reviewed terminal-link and restart-survival changes are unchanged in this delta.
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏

ELI5
Fix three failures from today's E2E runs: a disabled terminal link menu still opened, the browser restart test could inspect a temporary empty state during recovery, and the daemon-close fixture lacked the profile store now required for workspace lookup.
What Changed
Plain clicks now honor the disabled setting even when middle-click actions remain enabled. The shared link handler rejects the click before claiming terminal mouse input; the existing E2E checks that the child receives it. A focused unit test covers that combination.
The restart test now waits for the whole recovery condition: exactly one tab with its original identity and client placement. It still checks the rendered destination and checks the count again afterward.
The daemon-close test client now uses the existing SQLite profile-store factory and closes that store during cleanup. Its close-intent and process-survival assertions are unchanged.
Why
The terminal regression came from keeping a link-action context alive for middle clicks without checking the plain-click setting. Fixing the handler preserves both preferences independently.
The restart trace shows a successful presence read followed by an empty read; its failure screenshot already shows the recovered tab at the right destination. Waiting for the complete contract preserves the assertions while avoiding a race between separate observations.
The prerequisite unit-test fix #23675 is now merged.
Linked Issue
Observed failures: https://github.com/stablyai/orca/actions/runs/36461449615 and https://github.com/stablyai/orca/actions/runs/36467205524.
Visual Proof
Disabled link action, before:
After the same click with the fix:
Testing
folder_workspace_not_foundbefore and passes with the fixture store.Review
Exact restart identity/count checks remain, and disabled clicks do not claim or cancel child terminal input.
Agent skill upstream boundary
Notes
No wire, Git provider, filesystem-path, or SSH execution changes. The shared renderer handler applies to local and remote terminals and folder workspaces.
Checklist