diff --git a/src/platform/workflow/management/stores/workflowStore.ts b/src/platform/workflow/management/stores/workflowStore.ts index 2c31c2436..1a8b4e96d 100644 --- a/src/platform/workflow/management/stores/workflowStore.ts +++ b/src/platform/workflow/management/stores/workflowStore.ts @@ -87,13 +87,6 @@ export class ComfyWorkflow extends UserFile { override async load({ force = false }: { force?: boolean } = {}): Promise< this & LoadedComfyWorkflow > { - await super.load({ force }) - if (!force && this.isLoaded) return this as this & LoadedComfyWorkflow - - if (!this.originalContent) { - throw new Error('[ASSERT] Workflow content should be loaded') - } - const draftStore = useWorkflowDraftStore() let draft = !force ? draftStore.getDraft(this.path) : undefined let draftState: ComfyWorkflowJSON | null = null @@ -116,13 +109,15 @@ export class ComfyWorkflow extends UserFile { } } - // Note: originalContent is populated by super.load() - this.changeTracker = markRaw( - new ChangeTracker( - this, - /* initialState= */ JSON.parse(this.originalContent) - ) - ) + await super.load({ force }) + if (!force && this.isLoaded) return this as this & LoadedComfyWorkflow + + if (!this.originalContent) { + throw new Error('[ASSERT] Workflow content should be loaded') + } + + const initialState = JSON.parse(this.originalContent) + this.changeTracker = markRaw(new ChangeTracker(this, initialState)) if (draftState && draftContent) { this.changeTracker.activeState = draftState this.content = draftContent diff --git a/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts b/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts index 83cd47a0e..cdceb4736 100644 --- a/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts +++ b/src/platform/workflow/persistence/composables/useWorkflowPersistence.ts @@ -29,7 +29,6 @@ export function useWorkflowPersistence() { const TEMPLATE_NAMESPACE = PRESERVED_QUERY_NAMESPACES.TEMPLATE const workflowDraftStore = useWorkflowDraftStore() - const ensureTemplateQueryFromIntent = async () => { hydratePreservedQuery(TEMPLATE_NAMESPACE) const mergedQuery = mergePreservedQueryIntoQuery( @@ -52,13 +51,13 @@ export function useWorkflowPersistence() { if (!workflowPersistenceEnabled.value) return const activeWorkflow = workflowStore.activeWorkflow if (!activeWorkflow) return - - const workflow = JSON.stringify(comfyApp.rootGraph.serialize()) + const graphData = comfyApp.rootGraph.serialize() + const workflowJson = JSON.stringify(graphData) try { - localStorage.setItem('workflow', workflow) + localStorage.setItem('workflow', workflowJson) if (api.clientId) { - sessionStorage.setItem(`workflow:${api.clientId}`, workflow) + sessionStorage.setItem(`workflow:${api.clientId}`, workflowJson) } } catch (error) { // Only log our own keys and aggregate stats @@ -66,7 +65,7 @@ export function useWorkflowPersistence() { (key) => key.startsWith('workflow:') || key === 'workflow' ) console.error('QuotaExceededError details:', { - workflowSizeKB: Math.round(workflow.length / 1024), + workflowSizeKB: Math.round(workflowJson.length / 1024), totalStorageItems: Object.keys(sessionStorage).length, ourWorkflowKeys: ourKeys.length, ourWorkflowSizes: ourKeys.map((key) => ({ @@ -84,7 +83,7 @@ export function useWorkflowPersistence() { } workflowDraftStore.saveDraft(activeWorkflow.path, { - data: workflow, + data: workflowJson, updatedAt: Date.now(), name: activeWorkflow.key, isTemporary: activeWorkflow.isTemporary