diff --git a/src/components/ProjectSetupModal.tsx b/src/components/ProjectSetupModal.tsx index 0d4de0a0..7bf3bc59 100644 --- a/src/components/ProjectSetupModal.tsx +++ b/src/components/ProjectSetupModal.tsx @@ -5,7 +5,7 @@ import { generateWorkflowId, useWorkflowStore } from "@/store/workflowStore"; import { ProviderType, ProviderSettings, NodeDefaultsConfig, LLMProvider, LLMModelType } from "@/types"; import { CanvasNavigationSettings, PanMode, ZoomMode, SelectionMode } from "@/types/canvas"; import { EnvStatusResponse } from "@/app/api/env-status/route"; -import { loadNodeDefaults, saveNodeDefaults } from "@/store/utils/localStorage"; +import { loadNodeDefaults, saveNodeDefaults, getLastProjectBaseDir, setLastProjectBaseDir } from "@/store/utils/localStorage"; import { ProviderModel } from "@/lib/providers/types"; import { ModelSearchDialog } from "@/components/modals/ModelSearchDialog"; import { useInlineParameters } from "@/hooks/useInlineParameters"; @@ -199,7 +199,7 @@ export function ProjectSetupModal({ setExternalStorage(useExternalImageStorage); } else if (mode === "new") { setName(""); - setDirectoryPath(""); + setDirectoryPath(getLastProjectBaseDir() || ""); setExternalStorage(true); } @@ -300,6 +300,8 @@ export function ProjectSetupModal({ const id = mode === "new" ? generateWorkflowId() : useWorkflowStore.getState().workflowId || generateWorkflowId(); // Update external storage setting setUseExternalImageStorage(externalStorage); + // Remember the base directory for next time + setLastProjectBaseDir(directoryPath); onSave(id, name.trim(), fullProjectPath); setIsValidating(false); } catch (err) { diff --git a/src/store/utils/localStorage.ts b/src/store/utils/localStorage.ts index fb5ed9b9..b2dc42ca 100644 --- a/src/store/utils/localStorage.ts +++ b/src/store/utils/localStorage.ts @@ -19,6 +19,7 @@ export const PROVIDER_SETTINGS_KEY = "node-banana-provider-settings"; export const RECENT_MODELS_KEY = "node-banana-recent-models"; export const NODE_DEFAULTS_KEY = "node-banana-node-defaults"; export const CANVAS_NAVIGATION_KEY = "node-banana-canvas-navigation"; +export const LAST_PROJECT_BASE_DIR_KEY = "node-banana-last-project-dir"; // Maximum recent models to store (show 4 in UI, keep 8 for persistence) export const MAX_RECENT_MODELS = 8; @@ -216,6 +217,17 @@ export const saveCanvasNavigationSettings = (settings: CanvasNavigationSettings) localStorage.setItem(CANVAS_NAVIGATION_KEY, JSON.stringify(settings)); }; +// Last project base directory helpers +export const getLastProjectBaseDir = (): string | null => { + if (typeof window === "undefined") return null; + return localStorage.getItem(LAST_PROJECT_BASE_DIR_KEY); +}; + +export const setLastProjectBaseDir = (dir: string): void => { + if (typeof window === "undefined") return; + localStorage.setItem(LAST_PROJECT_BASE_DIR_KEY, dir); +}; + // Workflow ID generator export const generateWorkflowId = (): string => `wf_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;