From d954a30597dccb2d6edf47dd95f1cb232b260f08 Mon Sep 17 00:00:00 2001 From: orca-bug-scan-bot Date: Sat, 11 Jul 2026 20:25:20 -0700 Subject: [PATCH] fix: address pr-bug-scan validated finding from #8267 Added isRuntimeScopedRepo guard to Step 3 browser-ingest loop in mergeSnapshotAndSessions.ts, mirroring Steps 1/2; runtime repos no longer get a Resource Manager row. --- .../mergeSnapshotAndSessions.test.ts | 32 +++++++++++++++++++ .../status-bar/mergeSnapshotAndSessions.ts | 5 +++ 2 files changed, 37 insertions(+) diff --git a/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.test.ts b/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.test.ts index 831d4ad90e3..2896ea5e516 100644 --- a/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.test.ts +++ b/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.test.ts @@ -107,6 +107,38 @@ describe('mergeSnapshotAndSessions', () => { }) }) + it('excludes runtime-scoped browser-only workspaces', () => { + const worktree = { + id: 'runtime-repo::/runtime/browser-only', + repoId: 'runtime-repo', + displayName: 'browser-only' + } as Worktree + const browser = { + id: 'browser-1', + worktreeId: worktree.id, + title: 'Orca docs', + url: 'https://docs.orca.dev', + loading: false, + faviconUrl: null, + canGoBack: false, + canGoForward: false, + loadError: null, + createdAt: 1 + } as BrowserWorkspace + const out = mergeSnapshotAndSessions( + null, + [], + baseCtx({ + repoDisplayNameById: new Map([['runtime-repo', 'RUNTIME']]), + repoRuntimeScopedById: new Map([['runtime-repo', true]]), + worktreeById: new Map([[worktree.id, worktree]]), + browserTabsByWorktree: { [worktree.id]: [browser] } + }) + ) + + expect(out).toEqual([]) + }) + it('passes through snapshot worktrees with numeric metrics and hasLocalSamples', () => { const wt: WorktreeMemory = { worktreeId: 'orca::/Users/me/Triton', diff --git a/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.ts b/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.ts index 7c7f5499f71..b25e4ff9bb9 100644 --- a/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.ts +++ b/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.ts @@ -302,6 +302,11 @@ export function mergeSnapshotAndSessions( if (!worktree || browsers.length === 0) { continue } + // Why: runtime-hosted repos are excluded from Steps 1 and 2; a mirrored + // browser must not re-expose one as a local repo/worktree row here. + if (isRuntimeScopedRepo(worktree.repoId)) { + continue + } const repoName = ctx.repoDisplayNameById.get(worktree.repoId) || worktree.repoId const repo = ensureRepo(worktree.repoId, repoName) let row = findWorktreeRow(repo, worktreeId)