From 47dab54c3f0b4ce72403313cfe4a9b0bd991aab8 Mon Sep 17 00:00:00 2001 From: Yourz Date: Tue, 20 Jan 2026 19:16:37 +0800 Subject: [PATCH] fix: persist unsaved changes for saved workflows --- .../workflow/core/services/workflowService.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/platform/workflow/core/services/workflowService.ts b/src/platform/workflow/core/services/workflowService.ts index bfec1ded3e..cf61616474 100644 --- a/src/platform/workflow/core/services/workflowService.ts +++ b/src/platform/workflow/core/services/workflowService.ts @@ -6,6 +6,7 @@ import { LGraph, LGraphCanvas } from '@/lib/litegraph/src/litegraph' import type { Point, SerialisableGraph } from '@/lib/litegraph/src/litegraph' import { useSettingStore } from '@/platform/settings/settingStore' import { useToastStore } from '@/platform/updates/common/toastStore' +import { useWorkflowDraftStore } from '@/platform/workflow/persistence/stores/workflowDraftStore' import { ComfyWorkflow, useWorkflowStore @@ -28,6 +29,7 @@ export const useWorkflowService = () => { const dialogService = useDialogService() const workflowThumbnail = useWorkflowThumbnail() const domWidgetStore = useDomWidgetStore() + const workflowDraftStore = useWorkflowDraftStore() async function getFilename(defaultName: string): Promise { if (settingStore.get('Comfy.PromptFilename')) { @@ -291,6 +293,18 @@ export const useWorkflowService = () => { const activeWorkflow = workflowStore.activeWorkflow if (activeWorkflow) { activeWorkflow.changeTracker.store() + if (settingStore.get('Comfy.Workflow.Persist') && activeWorkflow.path) { + const activeState = activeWorkflow.activeState + if (activeState) { + const workflowJson = JSON.stringify(activeState) + workflowDraftStore.saveDraft(activeWorkflow.path, { + data: workflowJson, + updatedAt: Date.now(), + name: activeWorkflow.key, + isTemporary: activeWorkflow.isTemporary + }) + } + } // Capture thumbnail before loading new graph void workflowThumbnail.storeThumbnail(activeWorkflow) domWidgetStore.clear()