From 951fbb2cb2e8af144e37ab92fb30dacdfb43bcae Mon Sep 17 00:00:00 2001 From: wuyang6 Date: Thu, 14 May 2026 22:02:36 +0800 Subject: [PATCH] Scope active session to browser tab --- frontend/app/components/assistant-ui/thread.tsx | 5 ++--- .../app/components/assistant-ui/threadlist-sidebar.tsx | 4 +--- frontend/app/lib/claw-active-session.ts | 7 +++---- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/frontend/app/components/assistant-ui/thread.tsx b/frontend/app/components/assistant-ui/thread.tsx index ca3573f..e308f51 100644 --- a/frontend/app/components/assistant-ui/thread.tsx +++ b/frontend/app/components/assistant-ui/thread.tsx @@ -1320,10 +1320,9 @@ function useComposerContextStatus() { const activeSessionId = normalizeSessionId(readActiveSessionId()); const latestMessageSessionId = normalizeSessionId(latestSessionId); let sessionId = normalizeSessionId( - (isRunning + isRunning ? activeSessionId || latestMessageSessionId - : latestMessageSessionId || activeSessionId) || - normalizeSessionId(statePayload.active_session_id), + : latestMessageSessionId || activeSessionId, ); if (sessionId) writeActiveSessionId(sessionId); let sessionPayload: ClawStoredSession | null = null; diff --git a/frontend/app/components/assistant-ui/threadlist-sidebar.tsx b/frontend/app/components/assistant-ui/threadlist-sidebar.tsx index 98f2661..2020920 100644 --- a/frontend/app/components/assistant-ui/threadlist-sidebar.tsx +++ b/frontend/app/components/assistant-ui/threadlist-sidebar.tsx @@ -492,9 +492,7 @@ function AccountMenu({ : []; setState(nextState); setSessions(nextSessions); - const activeSessionId = normalizeSessionId( - readActiveSessionId() ?? nextState?.active_session_id, - ); + const activeSessionId = normalizeSessionId(readActiveSessionId()); if (!activeSessionId) { setActiveSession(null); return; diff --git a/frontend/app/lib/claw-active-session.ts b/frontend/app/lib/claw-active-session.ts index bcbcecf..98e3220 100644 --- a/frontend/app/lib/claw-active-session.ts +++ b/frontend/app/lib/claw-active-session.ts @@ -13,9 +13,8 @@ declare global { export function readActiveSessionId() { if (typeof window === "undefined") return null; - return ( - normalizeSessionId(window.sessionStorage.getItem(ACTIVE_SESSION_ID_KEY)) ?? - normalizeSessionId(window.localStorage.getItem(ACTIVE_SESSION_ID_KEY)) + return normalizeSessionId( + window.sessionStorage.getItem(ACTIVE_SESSION_ID_KEY), ); } @@ -27,7 +26,7 @@ export function writeActiveSessionId(sessionId: string | null | undefined) { return; } window.sessionStorage.setItem(ACTIVE_SESSION_ID_KEY, normalized); - window.localStorage.setItem(ACTIVE_SESSION_ID_KEY, normalized); + window.localStorage.removeItem(ACTIVE_SESSION_ID_KEY); const pendingSessionId = readPendingWorkspaceSessionId(); if (pendingSessionId && pendingSessionId !== normalized) { clearPendingWorkspaceSessionId();