Prevent stale session during active runs

This commit is contained in:
wuyang6
2026-05-14 21:04:42 +08:00
parent d427086aa7
commit 182e72680d
@@ -402,10 +402,12 @@ function useCurrentThreadSessionId({
clearPendingWorkspaceSessionId();
}
}, [currentRun.sessionId, pendingSessionId]);
const replayRunSessionId = currentRun.active ? currentRun.sessionId : null;
return (
currentRun.sessionId ??
replayRunSessionId ??
(includePending ? pendingSessionId : null) ??
(includeActive ? activeSessionId : null)
(includeActive ? activeSessionId : null) ??
currentRun.sessionId
);
}
@@ -1286,13 +1288,13 @@ function useComposerContextStatus() {
useEffect(() => {
const cleanLatestSessionId = normalizeSessionId(latestSessionId);
if (cleanLatestSessionId) {
if (cleanLatestSessionId && !isRunning) {
writeActiveSessionId(cleanLatestSessionId);
window.setTimeout(() => {
window.dispatchEvent(new Event("claw-sessions-changed"));
}, 0);
}
}, [latestSessionId]);
}, [isRunning, latestSessionId]);
useEffect(() => {
if (wasRunningRef.current && !isRunning) {
@@ -1315,9 +1317,12 @@ function useComposerContextStatus() {
const statePayload = stateResponse.ok
? ((await stateResponse.json()) as ClawState)
: {};
const activeSessionId = normalizeSessionId(readActiveSessionId());
const latestMessageSessionId = normalizeSessionId(latestSessionId);
let sessionId = normalizeSessionId(
normalizeSessionId(latestSessionId) ||
normalizeSessionId(readActiveSessionId()) ||
(isRunning
? activeSessionId || latestMessageSessionId
: latestMessageSessionId || activeSessionId) ||
normalizeSessionId(statePayload.active_session_id),
);
if (sessionId) writeActiveSessionId(sessionId);