From 3aa03b3348bc04441a384edcbf338a8cee362162 Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Sun, 31 May 2026 05:37:48 -0700 Subject: [PATCH] fix: persist default tab session patch marker (#4135) --- .../src/lib/workspace-session-patch.test.ts | 21 +++++++++++++++++++ .../src/lib/workspace-session-patch.ts | 7 +++++++ 2 files changed, 28 insertions(+) diff --git a/src/renderer/src/lib/workspace-session-patch.test.ts b/src/renderer/src/lib/workspace-session-patch.test.ts index 6cd341916ce..15ce28d72ad 100644 --- a/src/renderer/src/lib/workspace-session-patch.test.ts +++ b/src/renderer/src/lib/workspace-session-patch.test.ts @@ -156,4 +156,25 @@ describe('buildWorkspaceSessionPatch', () => { expect(Object.hasOwn(patch, 'activeConnectionIdsAtShutdown')).toBe(true) expect(patch.activeConnectionIdsAtShutdown).toBeUndefined() }) + + it('persists default terminal tab idempotency marker changes', () => { + const patch = buildWorkspaceSessionPatch( + createSnapshot({ defaultTerminalTabsAppliedByWorktreeId: { 'wt-1': true } }), + ['defaultTerminalTabsAppliedByWorktreeId'] + ) + + expect(patch).toEqual({ + defaultTerminalTabsAppliedByWorktreeId: { 'wt-1': true } + }) + }) + + it('keeps default terminal tab marker clearing keys in patches', () => { + const patch = buildWorkspaceSessionPatch( + createSnapshot({ defaultTerminalTabsAppliedByWorktreeId: {} }), + ['defaultTerminalTabsAppliedByWorktreeId'] + ) + + expect(Object.hasOwn(patch, 'defaultTerminalTabsAppliedByWorktreeId')).toBe(true) + expect(patch.defaultTerminalTabsAppliedByWorktreeId).toBeUndefined() + }) }) diff --git a/src/renderer/src/lib/workspace-session-patch.ts b/src/renderer/src/lib/workspace-session-patch.ts index 8e0d9ab8460..ade50fe4f6f 100644 --- a/src/renderer/src/lib/workspace-session-patch.ts +++ b/src/renderer/src/lib/workspace-session-patch.ts @@ -122,6 +122,13 @@ export function buildWorkspaceSessionPatch( if (changed.has('lastVisitedAtByWorktreeId')) { patch.lastVisitedAtByWorktreeId = buildLastVisitedAtByWorktreeId(snapshot) } + if (changed.has('defaultTerminalTabsAppliedByWorktreeId')) { + patch.defaultTerminalTabsAppliedByWorktreeId = + snapshot.defaultTerminalTabsAppliedByWorktreeId && + Object.keys(snapshot.defaultTerminalTabsAppliedByWorktreeId).length > 0 + ? snapshot.defaultTerminalTabsAppliedByWorktreeId + : undefined + } return patch }