[backport 1.28] fix(execution): reset progress state after runs to unfreeze tab title/favicon (main) (#6027)

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 <benceruleanlu@proton.me>
This commit is contained in:
Comfy Org PR Bot
2025-10-12 11:25:12 +09:00
committed by GitHub
parent b00aca1af0
commit 644ef01d22

View File

@@ -239,6 +239,7 @@ export const useExecutionStore = defineStore('execution', () => {
api.addEventListener('execution_start', handleExecutionStart) api.addEventListener('execution_start', handleExecutionStart)
api.addEventListener('execution_cached', handleExecutionCached) api.addEventListener('execution_cached', handleExecutionCached)
api.addEventListener('execution_interrupted', handleExecutionInterrupted) api.addEventListener('execution_interrupted', handleExecutionInterrupted)
api.addEventListener('execution_success', handleExecutionSuccess)
api.addEventListener('executed', handleExecuted) api.addEventListener('executed', handleExecuted)
api.addEventListener('executing', handleExecuting) api.addEventListener('executing', handleExecuting)
api.addEventListener('progress', handleProgress) api.addEventListener('progress', handleProgress)
@@ -253,6 +254,7 @@ export const useExecutionStore = defineStore('execution', () => {
api.removeEventListener('execution_start', handleExecutionStart) api.removeEventListener('execution_start', handleExecutionStart)
api.removeEventListener('execution_cached', handleExecutionCached) api.removeEventListener('execution_cached', handleExecutionCached)
api.removeEventListener('execution_interrupted', handleExecutionInterrupted) api.removeEventListener('execution_interrupted', handleExecutionInterrupted)
api.removeEventListener('execution_success', handleExecutionSuccess)
api.removeEventListener('executed', handleExecuted) api.removeEventListener('executed', handleExecuted)
api.removeEventListener('executing', handleExecuting) api.removeEventListener('executing', handleExecuting)
api.removeEventListener('progress', handleProgress) api.removeEventListener('progress', handleProgress)
@@ -277,7 +279,7 @@ export const useExecutionStore = defineStore('execution', () => {
} }
function handleExecutionInterrupted() { function handleExecutionInterrupted() {
nodeProgressStates.value = {} resetExecutionState()
} }
function handleExecuted(e: CustomEvent<ExecutedWsMessage>) { function handleExecuted(e: CustomEvent<ExecutedWsMessage>) {
@@ -285,6 +287,10 @@ export const useExecutionStore = defineStore('execution', () => {
activePrompt.value.nodes[e.detail.node] = true activePrompt.value.nodes[e.detail.node] = true
} }
function handleExecutionSuccess() {
resetExecutionState()
}
function handleExecuting(e: CustomEvent<NodeId | null>): void { function handleExecuting(e: CustomEvent<NodeId | null>): void {
// Clear the current node progress when a new node starts executing // Clear the current node progress when a new node starts executing
_executingNodeProgress.value = null _executingNodeProgress.value = null
@@ -346,6 +352,19 @@ export const useExecutionStore = defineStore('execution', () => {
function handleExecutionError(e: CustomEvent<ExecutionErrorWsMessage>) { function handleExecutionError(e: CustomEvent<ExecutionErrorWsMessage>) {
lastExecutionError.value = e.detail 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) { function getNodeIdIfExecuting(nodeId: string | number) {