diff --git a/src/workbench/extensions/manager/composables/nodePack/useWorkflowPacks.ts b/src/workbench/extensions/manager/composables/nodePack/useWorkflowPacks.ts index b7ff5b38d..b83508ddd 100644 --- a/src/workbench/extensions/manager/composables/nodePack/useWorkflowPacks.ts +++ b/src/workbench/extensions/manager/composables/nodePack/useWorkflowPacks.ts @@ -114,7 +114,10 @@ export const useWorkflowPacks = (options: UseNodePacksOptions = {}) => { const getWorkflowPacks = async () => { if (!app.graph) return [] const allNodes = collectAllNodes(app.graph) - if (!allNodes.length) return [] + if (!allNodes.length) { + workflowPacks.value = [] + return [] + } const packs = await Promise.all(allNodes.map(workflowNodeToPack)) workflowPacks.value = packs.filter((pack) => pack !== undefined) } diff --git a/tests-ui/tests/composables/useMissingNodes.test.ts b/tests-ui/tests/composables/useMissingNodes.test.ts index 9dbfa8a56..41bd098bb 100644 --- a/tests-ui/tests/composables/useMissingNodes.test.ts +++ b/tests-ui/tests/composables/useMissingNodes.test.ts @@ -277,6 +277,32 @@ describe('useMissingNodes', () => { // Should update missing packs (2 missing since pack-3 is installed) expect(missingNodePacks.value).toHaveLength(2) }) + + it('clears missing nodes when switching to empty workflow', async () => { + const workflowPacksRef = ref(mockWorkflowPacks) + mockUseWorkflowPacks.mockReturnValue({ + workflowPacks: workflowPacksRef, + isLoading: ref(false), + error: ref(null), + startFetchWorkflowPacks: mockStartFetchWorkflowPacks, + isReady: ref(true), + filterWorkflowPack: vi.fn() + }) + + const { hasMissingNodes, missingNodePacks } = useMissingNodes() + + // Should have missing nodes initially (2 missing since pack-3 is installed) + expect(missingNodePacks.value).toHaveLength(2) + expect(hasMissingNodes.value).toBe(true) + + // Switch to empty workflow (simulates creating a new empty workflow) + workflowPacksRef.value = [] + await nextTick() + + // Should clear missing nodes + expect(missingNodePacks.value).toHaveLength(0) + expect(hasMissingNodes.value).toBe(false) + }) }) describe('missing core nodes detection', () => {