fix: avoid stale project binding for new sessions
Keeps implicit new sessions tied to the current directory Prevents unmatched directories from inheriting the active project Adds regression coverage for draft project selection
This commit is contained in:
@@ -255,6 +255,17 @@ describe('openNewSessionDraft project binding', () => {
|
|||||||
expect(draft.directoryOverride).toBe(projectB.path);
|
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', () => {
|
test('respects explicit directoryOverride over active project', () => {
|
||||||
useSessionUIStore.getState().openNewSessionDraft({ directoryOverride: '/projects/beta/src' });
|
useSessionUIStore.getState().openNewSessionDraft({ directoryOverride: '/projects/beta/src' });
|
||||||
const draft = useSessionUIStore.getState().newSessionDraft;
|
const draft = useSessionUIStore.getState().newSessionDraft;
|
||||||
|
|||||||
@@ -623,10 +623,9 @@ export const useSessionUIStore = create<SessionUIState>()((set, get) => ({
|
|||||||
const currentDirProject = resolveDraftProjectForDirectory(projects, availableWorktreesByProject, currentDirectory)
|
const currentDirProject = resolveDraftProjectForDirectory(projects, availableWorktreesByProject, currentDirectory)
|
||||||
|
|
||||||
const selectedProject = (() => {
|
const selectedProject = (() => {
|
||||||
if (explicitProject || explicitDirectory !== null) {
|
if (explicitProject) return explicitProject
|
||||||
return explicitProject ?? inferredProjectFromDir ?? fallbackProject
|
if (explicitDirectory !== null) return inferredProjectFromDir
|
||||||
}
|
if (currentDirectory) return currentDirProject
|
||||||
if (currentDirectory) return currentDirProject ?? fallbackProject
|
|
||||||
return persistedProjectByDir ?? persistedProjectById ?? fallbackProject
|
return persistedProjectByDir ?? persistedProjectById ?? fallbackProject
|
||||||
})()
|
})()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user