diff --git a/src/composables/useWorkflowPersistence.ts b/src/composables/useWorkflowPersistence.ts index 6a19c58110..a2583a66fe 100644 --- a/src/composables/useWorkflowPersistence.ts +++ b/src/composables/useWorkflowPersistence.ts @@ -12,7 +12,12 @@ export function useWorkflowPersistence() { const workflowStore = useWorkflowStore() const settingStore = useSettingStore() + const workflowPersistenceEnabled = computed(() => + settingStore.get('Comfy.Workflow.Persist') + ) + const persistCurrentWorkflow = () => { + if (!workflowPersistenceEnabled.value) return const workflow = JSON.stringify(comfyApp.serializeGraph()) localStorage.setItem('workflow', workflow) if (api.clientId) { @@ -58,6 +63,7 @@ export function useWorkflowPersistence() { } const restorePreviousWorkflow = async () => { + if (!workflowPersistenceEnabled.value) return try { const restored = await loadPreviousWorkflowFromStorage() if (!restored) { @@ -109,12 +115,16 @@ export function useWorkflowPersistence() { const storedActiveIndex = JSON.parse( getStorageValue('Comfy.ActiveWorkflowIndex') || '-1' ) + watch(restoreState, ({ paths, activeIndex }) => { - setStorageValue('Comfy.OpenWorkflowsPaths', JSON.stringify(paths)) - setStorageValue('Comfy.ActiveWorkflowIndex', JSON.stringify(activeIndex)) + if (workflowPersistenceEnabled.value) { + setStorageValue('Comfy.OpenWorkflowsPaths', JSON.stringify(paths)) + setStorageValue('Comfy.ActiveWorkflowIndex', JSON.stringify(activeIndex)) + } }) const restoreWorkflowTabsState = () => { + if (!workflowPersistenceEnabled.value) return const isRestorable = storedWorkflows?.length > 0 && storedActiveIndex >= 0 if (isRestorable) { workflowStore.openWorkflowsInBackground({ diff --git a/src/constants/coreSettings.ts b/src/constants/coreSettings.ts index 28a02de1a8..87bbaa9bac 100644 --- a/src/constants/coreSettings.ts +++ b/src/constants/coreSettings.ts @@ -787,5 +787,12 @@ export const CORE_SETTINGS: SettingParams[] = [ options: ['off', 'after delay'], // Room for other options like on focus change, tab change, window change defaultValue: 'off', // Popular requst by users (https://github.com/Comfy-Org/ComfyUI_frontend/issues/1584#issuecomment-2536610154) versionAdded: '1.16.0' + }, + { + id: 'Comfy.Workflow.Persist', + name: 'Persist workflow state and restore on page (re)load', + type: 'boolean', + defaultValue: true, + versionAdded: '1.16.1' } ] diff --git a/src/locales/en/settings.json b/src/locales/en/settings.json index 727df2778d..3ba830e881 100644 --- a/src/locales/en/settings.json +++ b/src/locales/en/settings.json @@ -310,6 +310,9 @@ "Comfy_Workflow_ConfirmDelete": { "name": "Show confirmation when deleting workflows" }, + "Comfy_Workflow_Persist": { + "name": "Persist workflow state and restore on page (re)load" + }, "Comfy_Workflow_ShowMissingModelsWarning": { "name": "Show missing models warning" }, diff --git a/src/locales/es/settings.json b/src/locales/es/settings.json index fcd4fbfc74..225a750af6 100644 --- a/src/locales/es/settings.json +++ b/src/locales/es/settings.json @@ -310,6 +310,9 @@ "Comfy_Workflow_ConfirmDelete": { "name": "Mostrar confirmación al eliminar flujos de trabajo" }, + "Comfy_Workflow_Persist": { + "name": "Persistir el estado del flujo de trabajo y restaurar en la (re)carga de la página" + }, "Comfy_Workflow_ShowMissingModelsWarning": { "name": "Mostrar advertencia de modelos faltantes" }, diff --git a/src/locales/fr/settings.json b/src/locales/fr/settings.json index e95083af0a..78302a11c4 100644 --- a/src/locales/fr/settings.json +++ b/src/locales/fr/settings.json @@ -310,6 +310,9 @@ "Comfy_Workflow_ConfirmDelete": { "name": "Afficher une confirmation lors de la suppression des flux de travail" }, + "Comfy_Workflow_Persist": { + "name": "Persiste l'état du flux de travail et restaure lors du (re)chargement de la page" + }, "Comfy_Workflow_ShowMissingModelsWarning": { "name": "Afficher l'avertissement des modèles manquants" }, diff --git a/src/locales/ja/settings.json b/src/locales/ja/settings.json index b8b9a06eeb..524d01287b 100644 --- a/src/locales/ja/settings.json +++ b/src/locales/ja/settings.json @@ -310,6 +310,9 @@ "Comfy_Workflow_ConfirmDelete": { "name": "ワークフローを削除する際に確認を表示" }, + "Comfy_Workflow_Persist": { + "name": "ページ(再)ロード時にワークフローの状態を保持し、復元します" + }, "Comfy_Workflow_ShowMissingModelsWarning": { "name": "欠落しているモデルの警告を表示" }, diff --git a/src/locales/ko/settings.json b/src/locales/ko/settings.json index d2d35c3210..2543ecc0cb 100644 --- a/src/locales/ko/settings.json +++ b/src/locales/ko/settings.json @@ -310,6 +310,9 @@ "Comfy_Workflow_ConfirmDelete": { "name": "워크플로 삭제 시 확인 표시" }, + "Comfy_Workflow_Persist": { + "name": "페이지 (재)로드시 워크플로우 상태를 유지하고 복원" + }, "Comfy_Workflow_ShowMissingModelsWarning": { "name": "누락된 모델 경고 표시" }, diff --git a/src/locales/ru/settings.json b/src/locales/ru/settings.json index 226af9f40e..ad7a598c52 100644 --- a/src/locales/ru/settings.json +++ b/src/locales/ru/settings.json @@ -310,6 +310,9 @@ "Comfy_Workflow_ConfirmDelete": { "name": "Показать подтверждение при удалении рабочих процессов" }, + "Comfy_Workflow_Persist": { + "name": "Сохранить состояние рабочего процесса и восстановить при (пере)загрузке страницы" + }, "Comfy_Workflow_ShowMissingModelsWarning": { "name": "Показать предупреждение об отсутствующих моделях" }, diff --git a/src/locales/zh/settings.json b/src/locales/zh/settings.json index f7b9e097c6..c73bc2f450 100644 --- a/src/locales/zh/settings.json +++ b/src/locales/zh/settings.json @@ -310,6 +310,9 @@ "Comfy_Workflow_ConfirmDelete": { "name": "删除工作流时显示确认" }, + "Comfy_Workflow_Persist": { + "name": "持久化工作流状态并在页面(重新)加载时恢复" + }, "Comfy_Workflow_ShowMissingModelsWarning": { "name": "显示缺失模型警告" },