From be29ebb2912e722f452386c7dbd64c3706b0b195 Mon Sep 17 00:00:00 2001 From: shrimbly Date: Thu, 26 Feb 2026 20:42:35 +1300 Subject: [PATCH] fix(44): skip dimmed source nodes in getConnectedInputs When paths reconverge downstream of a Switch, dimmed nodes (from disabled outputs) still held stale data from previous runs. getConnectedInputs now accepts dimmedNodeIds and skips any source node in the dimmed set, preventing disabled Switch paths from leaking data into downstream nodes. Co-Authored-By: Claude Opus 4.6 --- src/store/utils/connectedInputs.ts | 10 +++++++--- src/store/workflowStore.ts | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/store/utils/connectedInputs.ts b/src/store/utils/connectedInputs.ts index e4824603..b222edf0 100644 --- a/src/store/utils/connectedInputs.ts +++ b/src/store/utils/connectedInputs.ts @@ -125,7 +125,8 @@ export function getConnectedInputsPure( nodeId: string, nodes: WorkflowNode[], edges: WorkflowEdge[], - visited?: Set + visited?: Set, + dimmedNodeIds?: Set ): ConnectedInputs { const _visited = visited || new Set(); if (_visited.has(nodeId)) return { images: [], videos: [], audio: [], model3d: null, text: null, dynamicInputs: {}, easeCurve: null }; @@ -169,9 +170,12 @@ export function getConnectedInputsPure( const sourceNode = nodes.find((n) => n.id === edge.source); if (!sourceNode) return; + // Skip dimmed source nodes — their data should not flow downstream + if (dimmedNodeIds && dimmedNodeIds.has(sourceNode.id)) return; + // Router passthrough — traverse upstream to find actual data source if (sourceNode.type === "router") { - const routerInputs = getConnectedInputsPure(sourceNode.id, nodes, edges, _visited); + const routerInputs = getConnectedInputsPure(sourceNode.id, nodes, edges, _visited, dimmedNodeIds); // Determine which type this edge carries based on the source handle const edgeType = edge.sourceHandle; // Will be "image", "text", "video", "audio", "3d", or "easeCurve" @@ -204,7 +208,7 @@ export function getConnectedInputsPure( } // Enabled switch: recursively get upstream data (same pattern as router) - const switchInputs = getConnectedInputsPure(sourceNode.id, nodes, edges, _visited); + const switchInputs = getConnectedInputsPure(sourceNode.id, nodes, edges, _visited, dimmedNodeIds); const edgeType = switchData.inputType; if (edgeType === "image") { diff --git a/src/store/workflowStore.ts b/src/store/workflowStore.ts index 994529d3..6ac6080b 100644 --- a/src/store/workflowStore.ts +++ b/src/store/workflowStore.ts @@ -848,8 +848,8 @@ const workflowStoreImpl: StateCreator = (set, get) => ({ }, getConnectedInputs: (nodeId: string) => { - const { edges, nodes } = get(); - return getConnectedInputsPure(nodeId, nodes, edges); + const { edges, nodes, dimmedNodeIds } = get(); + return getConnectedInputsPure(nodeId, nodes, edges, undefined, dimmedNodeIds); }, validateWorkflow: () => {