diff --git a/apps/desktop/src/app/chat/session-tile-owner-route.test.ts b/apps/desktop/src/app/chat/session-tile-owner-route.test.ts new file mode 100644 index 0000000000..31058c578d --- /dev/null +++ b/apps/desktop/src/app/chat/session-tile-owner-route.test.ts @@ -0,0 +1,13 @@ +import { readFileSync } from 'node:fs' +import { resolve } from 'node:path' + +import { describe, expect, it } from 'vitest' + +const source = readFileSync(resolve(process.cwd(), 'src/app/chat/session-tile.tsx'), 'utf8') + +describe('SessionTilePane owner-scoped listing', () => { + it('resolves a newly active tile on its persisted owner route', () => { + expect(source).toContain('void resolveStoredSession(storedSessionId, ownerRoute)') + expect(source).not.toMatch(/void resolveStoredSession\(storedSessionId\)\s*\n/) + }) +}) diff --git a/apps/desktop/src/app/chat/session-tile.tsx b/apps/desktop/src/app/chat/session-tile.tsx index 4a234022df..f0479448c1 100644 --- a/apps/desktop/src/app/chat/session-tile.tsx +++ b/apps/desktop/src/app/chat/session-tile.tsx @@ -256,6 +256,7 @@ function TileChat({ export function SessionTilePane({ storedSessionId }: { storedSessionId: string }) { const tiles = useStore($sessionTiles) const tile = tiles.find(t => t.storedSessionId === storedSessionId) + const ownerRoute = tile?.ownerRoute const runtimeId = tile?.runtimeId ?? null const gatewayOpen = useStore($gatewayState) === 'open' const delegateRevision = useStore($sessionTileDelegateRevision) @@ -287,7 +288,7 @@ export function SessionTilePane({ storedSessionId }: { storedSessionId: string } return } - void resolveStoredSession(storedSessionId) + void resolveStoredSession(storedSessionId, ownerRoute) .then(resolved => { if (cancelled || resolved || remaining <= 0) { return @@ -307,7 +308,7 @@ export function SessionTilePane({ storedSessionId }: { storedSessionId: string } window.clearTimeout(timer) } } - }, [hasMessages, runtimeId, storedSessionId]) + }, [hasMessages, ownerRoute, runtimeId, storedSessionId]) // Same gating as the primary's route resume (use-route-resume): never fire // session.resume before the gateway is OPEN. Persisted tiles mount at boot