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', + }); + }); });