diff --git a/packages/ui/src/components/chat/MobileSessionStatusBar.tsx b/packages/ui/src/components/chat/MobileSessionStatusBar.tsx index 801e82ea..a5dea54b 100644 --- a/packages/ui/src/components/chat/MobileSessionStatusBar.tsx +++ b/packages/ui/src/components/chat/MobileSessionStatusBar.tsx @@ -1436,6 +1436,7 @@ export const MobileSessionStatusBar: React.FC = ({ const projects = useProjectsStore((state) => state.projects); const activeProjectId = useProjectsStore((state) => state.activeProjectId); const setActiveProject = useProjectsStore((state) => state.setActiveProject); + const setActiveProjectIdOnly = useProjectsStore((state) => state.setActiveProjectIdOnly); const removeProject = useProjectsStore((state) => state.removeProject); const getActiveProject = useProjectsStore((state) => state.getActiveProject); @@ -1498,9 +1499,29 @@ export const MobileSessionStatusBar: React.FC = ({ }; const handleProjectSwitch = (projectId: string) => { - if (projectId !== activeProjectId) { - setActiveProject(projectId); + if (projectId === activeProjectId) { + return; } + const draft = useSessionUIStore.getState().newSessionDraft; + if (draft?.open) { + if ( + draft.pendingWorktreeRequestId || + draft.bootstrapPendingDirectory || + draft.preserveDirectoryOverride + ) { + return; + } + const project = projects.find((p) => p.id === projectId); + if (project) { + setActiveProjectIdOnly(projectId); + useSessionUIStore.getState().setNewSessionDraftTarget({ + projectId, + directoryOverride: project.path, + }); + } + return; + } + setActiveProject(projectId); }; const handleAddProject = () => {