From 94b97c49303ca5ca5f5166d1a601c51a4a346e98 Mon Sep 17 00:00:00 2001 From: 777genius Date: Tue, 21 Apr 2026 22:47:19 +0300 Subject: [PATCH] fix(team): preserve worktree isolation in edit snapshots --- .../team/dialogs/editTeamRuntimeChanges.ts | 1 + .../dialogs/editTeamRuntimeChanges.test.ts | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/renderer/components/team/dialogs/editTeamRuntimeChanges.ts b/src/renderer/components/team/dialogs/editTeamRuntimeChanges.ts index 668e93a0..c9e2921f 100644 --- a/src/renderer/components/team/dialogs/editTeamRuntimeChanges.ts +++ b/src/renderer/components/team/dialogs/editTeamRuntimeChanges.ts @@ -138,6 +138,7 @@ function normalizeEditableMemberSnapshot(member: { providerId?: TeamProviderId; model?: string; effort?: EffortLevel; + isolation?: 'worktree'; } | null { if (member.removedAt) { return null; diff --git a/test/renderer/components/team/dialogs/editTeamRuntimeChanges.test.ts b/test/renderer/components/team/dialogs/editTeamRuntimeChanges.test.ts index cf9f8790..f55edf4b 100644 --- a/test/renderer/components/team/dialogs/editTeamRuntimeChanges.test.ts +++ b/test/renderer/components/team/dialogs/editTeamRuntimeChanges.test.ts @@ -208,4 +208,36 @@ describe('getMembersRequiringRuntimeRestart', () => { expect(refreshed).toBe(base); }); + + it('keeps worktree isolation in the edit source snapshot', () => { + const sharedWorkspace = buildEditTeamSourceSnapshot({ + name: 'Team A', + description: 'desc', + color: 'blue', + members: [ + { + name: 'alice', + role: 'Reviewer', + } as any, + ], + }); + + const isolatedWorkspace = buildEditTeamSourceSnapshot({ + name: 'Team A', + description: 'desc', + color: 'blue', + members: [ + { + name: 'alice', + role: 'Reviewer', + isolation: 'worktree', + } as any, + ], + }); + + expect(isolatedWorkspace).not.toBe(sharedWorkspace); + expect(JSON.parse(isolatedWorkspace).members[0]).toMatchObject({ + isolation: 'worktree', + }); + }); });