diff --git a/packages/ui/src/sync/session-ui-store.test.js b/packages/ui/src/sync/session-ui-store.test.js index ff144d10..276385a0 100644 --- a/packages/ui/src/sync/session-ui-store.test.js +++ b/packages/ui/src/sync/session-ui-store.test.js @@ -255,6 +255,17 @@ describe('openNewSessionDraft project binding', () => { expect(draft.directoryOverride).toBe(projectB.path); }); + test('does not attach active project when current directory is unmatched', () => { + useDirectoryStore.getState().setDirectory('/external/worktree', { showOverlay: false }); + + useSessionUIStore.getState().openNewSessionDraft(); + const draft = useSessionUIStore.getState().newSessionDraft; + + expect(draft.open).toBe(true); + expect(draft.selectedProjectId).toBeNull(); + expect(draft.directoryOverride).toBe('/external/worktree'); + }); + test('respects explicit directoryOverride over active project', () => { useSessionUIStore.getState().openNewSessionDraft({ directoryOverride: '/projects/beta/src' }); const draft = useSessionUIStore.getState().newSessionDraft; diff --git a/packages/ui/src/sync/session-ui-store.ts b/packages/ui/src/sync/session-ui-store.ts index e2f3a248..3026ec7b 100644 --- a/packages/ui/src/sync/session-ui-store.ts +++ b/packages/ui/src/sync/session-ui-store.ts @@ -623,10 +623,9 @@ export const useSessionUIStore = create()((set, get) => ({ const currentDirProject = resolveDraftProjectForDirectory(projects, availableWorktreesByProject, currentDirectory) const selectedProject = (() => { - if (explicitProject || explicitDirectory !== null) { - return explicitProject ?? inferredProjectFromDir ?? fallbackProject - } - if (currentDirectory) return currentDirProject ?? fallbackProject + if (explicitProject) return explicitProject + if (explicitDirectory !== null) return inferredProjectFromDir + if (currentDirectory) return currentDirProject return persistedProjectByDir ?? persistedProjectById ?? fallbackProject })()