From cf36c3b13febec25d3fd56e49668300fac4d0a79 Mon Sep 17 00:00:00 2001 From: Marquis Boyd Date: Tue, 17 Feb 2026 12:56:16 -0500 Subject: [PATCH] fix: save-as behavior and project path handling --- src/components/Header.tsx | 45 +++++++++++++ src/components/ProjectSetupModal.tsx | 2 +- src/components/__tests__/Header.test.tsx | 40 +++++++++++ .../__tests__/ProjectSetupModal.test.tsx | 67 +++++++++++++++++-- src/store/workflowStore.ts | 23 +++++++ 5 files changed, 171 insertions(+), 6 deletions(-) diff --git a/src/components/Header.tsx b/src/components/Header.tsx index aeb28f80..3e03b062 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -67,6 +67,7 @@ export function Header() { isSaving, setWorkflowMetadata, saveToFile, + saveAsFile, loadWorkflow, previousWorkflowSnapshot, revertToSnapshot, @@ -162,6 +163,32 @@ export function Header() { } }; + const handleSaveAs = async () => { + if (!workflowName || !saveDirectoryPath) { + handleOpenSettings(); + return; + } + + const value = window.prompt("Save project as", workflowName); + if (value === null) return; + + const newName = value.trim(); + if (!newName) { + alert("Project name cannot be empty."); + return; + } + + try { + const success = await saveAsFile(newName); + if (!success) { + alert("Save As failed. Please try again."); + } + } catch (error) { + console.error("Failed to save project as:", error); + alert("Save As failed. Please try again."); + } + }; + const handleRevertAIChanges = useCallback(() => { const confirmed = window.confirm( "Are you sure? This will restore your previous workflow." @@ -254,6 +281,24 @@ export function Header() { )} + {canSave && ( + + )} {saveDirectoryPath && (