diff --git a/src/renderer/src/runtime/web-runtime-wake-terminal-respawn.test.ts b/src/renderer/src/runtime/web-runtime-wake-terminal-respawn.test.ts index cfdf35a7501..6e55e47e66b 100644 --- a/src/renderer/src/runtime/web-runtime-wake-terminal-respawn.test.ts +++ b/src/renderer/src/runtime/web-runtime-wake-terminal-respawn.test.ts @@ -12,14 +12,13 @@ describe('web-runtime-wake-terminal-respawn', () => { resetWebRuntimeWakeTerminalRespawnForTests() }) - it('dedupes wake respawn requests for the same worktree', () => { + it('dedupes concurrent wake respawn requests for the same worktree', () => { expect(beginWebRuntimeWakeTerminalRespawn('wt-1')).toBe(true) expect(shouldSkipWebRuntimeWakeTerminalRespawn('wt-1')).toBe(true) expect(beginWebRuntimeWakeTerminalRespawn('wt-1')).toBe(false) endWebRuntimeWakeTerminalRespawn('wt-1') - // Why: beginWebRuntimeWakeTerminalRespawn is one request per worktree; - // endWebRuntimeWakeTerminalRespawn only clears the in-flight bit. - expect(shouldSkipWebRuntimeWakeTerminalRespawn('wt-1')).toBe(true) + expect(shouldSkipWebRuntimeWakeTerminalRespawn('wt-1')).toBe(false) + expect(beginWebRuntimeWakeTerminalRespawn('wt-1')).toBe(true) }) it('clears wake respawn tracking for a removed worktree', () => { diff --git a/src/renderer/src/runtime/web-runtime-wake-terminal-respawn.ts b/src/renderer/src/runtime/web-runtime-wake-terminal-respawn.ts index 9b039cd34f4..7e1dcc51020 100644 --- a/src/renderer/src/runtime/web-runtime-wake-terminal-respawn.ts +++ b/src/renderer/src/runtime/web-runtime-wake-terminal-respawn.ts @@ -1,18 +1,13 @@ -const wakeTerminalRespawnRequestedByWorktree = new Set() const wakeTerminalRespawnInFlightByWorktree = new Set() export function shouldSkipWebRuntimeWakeTerminalRespawn(worktreeId: string): boolean { - return ( - wakeTerminalRespawnRequestedByWorktree.has(worktreeId) || - wakeTerminalRespawnInFlightByWorktree.has(worktreeId) - ) + return wakeTerminalRespawnInFlightByWorktree.has(worktreeId) } export function beginWebRuntimeWakeTerminalRespawn(worktreeId: string): boolean { - if (shouldSkipWebRuntimeWakeTerminalRespawn(worktreeId)) { + if (wakeTerminalRespawnInFlightByWorktree.has(worktreeId)) { return false } - wakeTerminalRespawnRequestedByWorktree.add(worktreeId) wakeTerminalRespawnInFlightByWorktree.add(worktreeId) return true } @@ -22,12 +17,10 @@ export function endWebRuntimeWakeTerminalRespawn(worktreeId: string): void { } export function clearWebRuntimeWakeTerminalRespawnForWorktree(worktreeId: string): void { - wakeTerminalRespawnRequestedByWorktree.delete(worktreeId) wakeTerminalRespawnInFlightByWorktree.delete(worktreeId) } export function clearAllWebRuntimeWakeTerminalRespawn(): void { - wakeTerminalRespawnRequestedByWorktree.clear() wakeTerminalRespawnInFlightByWorktree.clear() }