From 644ef01d22573d0629b02017aa1b33c313e45b6b Mon Sep 17 00:00:00 2001 From: Comfy Org PR Bot Date: Sun, 12 Oct 2025 11:25:12 +0900 Subject: [PATCH] [backport 1.28] fix(execution): reset progress state after runs to unfreeze tab title/favicon (main) (#6027) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backport of #6026 to `core/1.28` Automatically created by backport workflow. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6027-backport-1-28-fix-execution-reset-progress-state-after-runs-to-unfreeze-tab-title-fav-28a6d73d3650815d866efa9f3190f88c) by [Unito](https://www.unito.io) Co-authored-by: Benjamin Lu --- src/stores/executionStore.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/stores/executionStore.ts b/src/stores/executionStore.ts index af482cc8a..51e182640 100644 --- a/src/stores/executionStore.ts +++ b/src/stores/executionStore.ts @@ -239,6 +239,7 @@ export const useExecutionStore = defineStore('execution', () => { api.addEventListener('execution_start', handleExecutionStart) api.addEventListener('execution_cached', handleExecutionCached) api.addEventListener('execution_interrupted', handleExecutionInterrupted) + api.addEventListener('execution_success', handleExecutionSuccess) api.addEventListener('executed', handleExecuted) api.addEventListener('executing', handleExecuting) api.addEventListener('progress', handleProgress) @@ -253,6 +254,7 @@ export const useExecutionStore = defineStore('execution', () => { api.removeEventListener('execution_start', handleExecutionStart) api.removeEventListener('execution_cached', handleExecutionCached) api.removeEventListener('execution_interrupted', handleExecutionInterrupted) + api.removeEventListener('execution_success', handleExecutionSuccess) api.removeEventListener('executed', handleExecuted) api.removeEventListener('executing', handleExecuting) api.removeEventListener('progress', handleProgress) @@ -277,7 +279,7 @@ export const useExecutionStore = defineStore('execution', () => { } function handleExecutionInterrupted() { - nodeProgressStates.value = {} + resetExecutionState() } function handleExecuted(e: CustomEvent) { @@ -285,6 +287,10 @@ export const useExecutionStore = defineStore('execution', () => { activePrompt.value.nodes[e.detail.node] = true } + function handleExecutionSuccess() { + resetExecutionState() + } + function handleExecuting(e: CustomEvent): void { // Clear the current node progress when a new node starts executing _executingNodeProgress.value = null @@ -346,6 +352,19 @@ export const useExecutionStore = defineStore('execution', () => { function handleExecutionError(e: CustomEvent) { lastExecutionError.value = e.detail + resetExecutionState() + } + + /** + * Reset execution-related state after a run completes or is stopped. + */ + function resetExecutionState() { + nodeProgressStates.value = {} + if (activePromptId.value) { + delete queuedPrompts.value[activePromptId.value] + } + activePromptId.value = null + _executingNodeProgress.value = null } function getNodeIdIfExecuting(nodeId: string | number) {