Repository navigation
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review. 📝 WalkthroughWalkthroughLaunch paths now report created tab IDs. Workspace palette activation can activate structured agent-session tabs. Continuation feedback distinguishes draft-loaded prompts from sent prompts and can include an action to open the created session. English strings were added or updated for these messages and for several runtime-required failure and retry messages. Priority: ⬇️ Low Merge Risk: 🔵 Low · up to In some multi-host workspaces, Open session may fail to reveal the session it just created when worktree IDs repeat. The session delivery is unaffected, so the merge risk is bounded. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 44.44% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 11 files. (2 skipped: 2 unsupported.)
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 ✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
|
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
30e298a7-8720-48ab-81d5-62bff9dfd9e8
📒 Files selected for processing (12)
src/renderer/src/i18n/locales/en.jsonsrc/renderer/src/lib/launch-agent-in-new-tab-structured-route.test.tssrc/renderer/src/lib/launch-agent-in-new-tab-structured-route.tssrc/renderer/src/lib/launch-agent-in-new-tab.tssrc/renderer/src/lib/launch-agent-session-continuation.test.tssrc/renderer/src/lib/launch-agent-session-continuation.tssrc/renderer/src/lib/launch-agent-web-host-tab.tssrc/renderer/src/lib/workspace-tab-palette-activation.test.tssrc/renderer/src/lib/workspace-tab-palette-activation.tssrc/renderer/src/runtime/web-runtime-session-terminal-host-authority.test.tssrc/renderer/src/runtime/web-runtime-session-types.tssrc/renderer/src/runtime/web-runtime-terminal-creation.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 1 remain after this review.
| ...tab, | ||
| tabId: tab.id, | ||
| contentType: tab.contentType, | ||
| executionHostId |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🔎 Supported by static analysis
🏁 Script executed:
sed -n '68,180p' src/renderer/src/lib/launch-agent-session-continuation.ts
sed -n '30,155p' src/renderer/src/lib/workspace-tab-palette-activation.ts
rg -n 'getKnownWorktreeById|executionHostId' src/renderer/src/store/slices/worktrees/listing/detected-worktree-meta.ts src/renderer/src/lib/launch-agent-session-continuation.test.tsRepository: stablyai/orca
Length of output: 10846
🏁 Script executed:
rg -n -F -- 'function launchAgentInNewTab' src/renderer/src
rg -n -F -- 'getKnownWorktreeById:' src/renderer/src
rg -n -F -- 'getKnownWorktreeById = ' src/renderer/src
rg -n -F -- 'isUnifiedTabOwnedByWorktree' src/renderer/src
rg -n -F -- 'executionHostId' src/renderer/src/lib/launch-agent-in-new-tab.ts src/renderer/src/lib/launch-agent-session-continuation.ts src/renderer/src/store/slices/worktrees/listing/detected-worktree-meta.ts
rg --files src/renderer/src | rg 'launch-agent-in-new-tab|unified-tab|worktree.*listing|tab.*type'Repository: stablyai/orca
Length of output: 19171
🏁 Script executed:
sed -n '100,220p' src/renderer/src/lib/launch-agent-in-new-tab.ts
sed -n '320,385p' src/renderer/src/lib/launch-agent-in-new-tab.ts
sed -n '330,380p' src/renderer/src/store/slices/worktree-helpers.ts
sed -n '1,115p' src/renderer/src/lib/unified-tab-host-ownership.ts
sed -n '1,190p' src/renderer/src/lib/launch-agent-in-new-tab-host-resolution.test.ts
rg -n 'interface UnifiedTab|type UnifiedTab|executionHostId.*UnifiedTab|executionHostId\\??:' src/renderer/src/lib src/renderer/src/store | head -100
rg -n 'findAmbiguousWorktreeIds|getPaletteOwnershipWorktreeIds' src/renderer/src/lib/workspace-tab-palette-activation.ts src/renderer/src/lib/unified-tab-host-ownership.ts src/renderer/src/libRepository: stablyai/orca
Length of output: 33637
🏁 Script executed:
rg -n -F -- 'createGetKnownWorktreeById' src/renderer/src/store
sed -n '380,455p' src/renderer/src/store/slices/worktree-helpers.ts
sed -n '190,325p' src/renderer/src/lib/launch-agent-in-new-tab.ts
sed -n '1,230p' src/renderer/src/lib/launch-agent-in-new-tab-structured.ts
sed -n '1,115p' src/renderer/src/lib/launch-agent-in-new-tab-structured-route.ts
rg -n 'export (interface|type) Tab|executionHostId' src/shared/tab-types.ts src/shared/tab-types
rg -n 'function resolveAgentLaunchExecutionContext|resolveAgentLaunchExecutionContext' src/renderer/src/libRepository: stablyai/orca
Length of output: 13275
🏁 Script executed:
sed -n '115,185p' src/renderer/src/store/slices/worktrees/session/worktree-slice-lookups.ts
rg -n 'createTab:' src/renderer/src/store
rg -n 'createTab\\s*\\(' src/renderer/src/store/slices src/renderer/src/store | head -80
rg -n 'beginStructuredAgentSessionProvisionalLaunch|executionHostId:' src/renderer/src/lib/structured-agent-session-provisional-tab.ts src/renderer/src/lib/structured-agent-session-provisional-tab*
sed -n '1,250p' src/renderer/src/lib/structured-agent-session-provisional-tab.ts
sed -n '1,95p' src/shared/tab-types.ts
sed -n '1,110p' src/renderer/src/lib/launch-agent-execution-context.ts
rg -n 'createTab' src/renderer/src/store/slices/worktrees src/renderer/src/store/slices/terminals src/renderer/src/store/slices/editorRepository: stablyai/orca
Length of output: 17334
🏁 Script executed:
rg -n -F -- 'function findKnownWorktreeById' src/renderer/src
rg -n -F -- 'findKnownWorktreeById(' src/renderer/src/store
sed -n '1,145p' src/renderer/src/store/terminals/terminal-tab-creation.ts
sed -n '1,120p' src/renderer/src/store/terminals/terminal-actions.ts
rg -n 'executionHostId|activeWorkspaceExecutionHostId|createTab' src/renderer/src/store/terminals/terminal-tab-creation.ts src/renderer/src/store/terminals/terminal-actions.ts src/renderer/src/store/slices/worktrees/session/worktree-slice-lookups.tsRepository: stablyai/orca
Length of output: 14902
🏁 Script executed:
sed -n '75,155p' src/renderer/src/store/slices/worktrees/listing/detected-worktree-meta.ts
sed -n '125,235p' src/renderer/src/store/terminals/terminal-tab-creation.ts
rg -n 'unifiedTabsByWorktree' src/renderer/src/store | head -80
rg -n 'getUnifiedTabPaletteExecutionHostId|executionHostId:.*hostId|executionHostId.*tab' src/renderer/src
rg -n 'ambiguous|executionHostId|Open session' src/renderer/src/lib/launch-agent-session-continuation.test.ts src/renderer/src/lib/workspace-tab-palette-activation.test.tsRepository: stablyai/orca
Length of output: 33497
🏁 Script executed:
rg -n 'function planAgentSessionLaunch|export function planAgentSessionLaunch|executionHostId' src/renderer/src/lib/agent-session-launch-plan.ts
sed -n '1,180p' src/renderer/src/lib/agent-session-launch-plan.ts
sed -n '1,110p' src/renderer/src/lib/worktree-palette-runtime-owner-identity.test.ts
sed -n '1,115p' src/renderer/src/lib/worktree-execution-host-alias.ts
nl -ba src/renderer/src/lib/launch-agent-session-continuation.ts | sed -n '84,160p'
nl -ba src/renderer/src/lib/workspace-tab-palette-activation.ts | sed -n '54,89p'
nl -ba src/renderer/src/lib/unified-tab-host-ownership.ts | sed -n '30,75p'Repository: stablyai/orca
Length of output: 19051
🏁 Script executed:
sed -n '1,220p' src/renderer/src/lib/agent-launch-route-input.ts
sed -n '165,195p' src/renderer/src/lib/agent-session-launch-plan.ts
rg -n 'activeWorkspaceExecutionHostId|executionHostId' src/renderer/src/lib/agent-launch-route-input.ts src/renderer/src/lib/agent-launch-routing.tsRepository: stablyai/orca
Length of output: 10620
🏁 Script executed:
sed -n '1,120p' src/renderer/src/runtime/structured-agent-session-owner.ts
sed -n '1,130p' src/renderer/src/lib/worktree-runtime-owner.ts
rg -n 'resolveStructuredAgentSessionOwner|getActiveExecutionHostIdForWorktree' src/renderer/src/runtime src/renderer/src/lib/worktree-runtime-owner.ts src/renderer/src/lib/agent-launch-route-input.tsRepository: stablyai/orca
Length of output: 9020
🏁 Script executed:
rg -n 'export function getExecutionHostIdForWorktree|function getExecutionHostIdForWorktree' src/renderer/src/lib/worktree-runtime-owner.ts
sed -n '285,385p' src/renderer/src/lib/worktree-runtime-owner.ts
rg -n 'function resolveActiveWorkspaceRoute|export function resolveActiveWorkspaceRoute' src/renderer/src/lib/worktree-operation-route.ts
sed -n '1,105p' src/renderer/src/lib/worktree-operation-route.tsRepository: stablyai/orca
Length of output: 4271
🏁 Script executed:
sed -n '215,265p' src/renderer/src/lib/worktree-runtime-owner.ts
rg -n 'function resolveSelectedHostRoute|resolveSelectedHostRoute' src/renderer/src/lib/worktree-operation-route.ts
sed -n '105,175p' src/renderer/src/lib/worktree-operation-route.tsRepository: stablyai/orca
Length of output: 4475
🏁 Script executed:
rg -n 'getKnownExecutionHostIdForWorktree' src/renderer/src/lib/worktree-runtime-owner.ts
sed -n '155,235p' src/renderer/src/lib/worktree-runtime-owner.tsRepository: stablyai/orca
Length of output: 3726
🏁 Script executed:
rg -n -F -- 'launchAgentSessionContinuation(' src/renderer/src
rg -n -F -- 'launchAgentSessionContinuation' src/renderer/src --glob '!**/launch-agent-session-continuation.ts' --glob '!**/launch-agent-session-continuation.test.ts'Repository: stablyai/orca
Length of output: 5588
🏁 Script executed:
sed -n '85,155p' src/renderer/src/components/agent-session-continuation/AgentSessionContinuationDialog.tsx
rg -n 'AgentSessionContinuationDialog' src/renderer/srcRepository: stablyai/orca
Length of output: 3883
🏁 Script executed:
sed -n '275,315p' src/renderer/src/components/terminal-pane/TerminalPaneSurface.tsx
sed -n '390,430p' src/renderer/src/components/right-sidebar/AiVaultPanel.tsxRepository: stablyai/orca
Length of output: 2606
Use the created structured tab’s execution host for Open session.
When a continuation launches a structured session on an active host that differs from the first row for a duplicate worktree ID, the unqualified lookup can capture that row’s hostId. Open session passes that host to palette validation, which can reject the tab’s recorded owner. Pass the tab’s execution host instead:
Suggested fix
- executionHostId
+ executionHostId: tab.executionHostId ?? executionHostId📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| executionHostId | |
| executionHostId: tab.executionHostId ?? executionHostId |
c1a84e4 to
2a1220e
Compare
Co-authored-by: kana001-bit <288527232+kana001-bit@users.noreply.github.com>
6494f79 to
1a5da2a
Compare
ELI5
Continuing a Claude session loads a draft for you to review. The message now says it still needs Enter, and an Open session button takes you straight to the session that was created.
What Changed
Before, confirmed Claude continuations said their context had been sent even though it remained a draft, and the message gave no way to return to that new session. The success toast now follows the launcher's delivery mode and offers Open session. Other agents retain the sent wording.
The button captures the exact new tab and execution host, then validates its current workspace and group before revealing it through existing navigation. Paired terminal launches pass their host-returned identity through an optional renderer callback; paired structured launches resolve the admitted session's tab. This adds no wire fields. Closed or missing targets cannot select an unrelated tab. Older hosts that supply no identity omit the button. Failed and unconfirmed deliveries retain their Copy prompt action.
Why
Reusing delivery mode and existing host-aware navigation keeps wording accurate and avoids a parallel navigation path. Choosing the active or newest tab could open a different session after another launch or workspace switch. This replaces #21966 on current main; kana001-bit remains credited as co-author.
Linked Issue
Follows up #21896; supersedes #21966.
Visual Proof
Before and after were captured from a freshly built hidden Electron app using the actual continuation launcher and Claude prefilled draft. For the button check, another tab was selected before clicking Open session; the click restored the exact newly created tab.
Before:

After:

Testing
pnpm run verify:localization-catalogsandpnpm run verify:localization-runtime-catalogpass. The catalog update adds only those two English values; existing values are unchanged. Refreshed onto current main to include the upstream fix(test): drop the duplicate resolveLaunchArgs that breaks main's lint #25997 correction for the unrelated duplicate test property that failed the earlier CI merge.Review
Independent review caught a structured-navigation gap during implementation; the final code reuses the existing session activation helper, including active surface selection and paired-host activation. Exact workspace, execution host, group and tab ownership are checked by existing navigation before revealing a target.
Agent skill upstream boundary
Notes
Merge risk: low. Physical Windows/Linux and paired SSH acceptance were not rerun; the shared renderer paths and paired authority behavior have focused automated coverage. New text uses the existing English fallback policy until translated. Structured drafts retain their existing delivery behavior; this change does not invent a new delivery event.
Checklist