From 068ed9ee59dcc42587c3606b56ecab6d02794bd7 Mon Sep 17 00:00:00 2001 From: diodiogod Date: Thu, 15 Jan 2026 09:40:33 -0300 Subject: [PATCH] Skip sending canvas data for bypassed nodes Fix critical issue where LayerForge was trying to send canvas data even when the node was bypassed (mode === 4). This caused unnecessary errors and blocked workflow execution. Now properly checks node.mode before attempting to send data via WebSocket, skipping bypassed nodes entirely. --- js/CanvasView.js | 17 ++++++++++++----- src/CanvasView.ts | 19 +++++++++++++++---- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/js/CanvasView.js b/js/CanvasView.js index 0a3659d..a785f91 100644 --- a/js/CanvasView.js +++ b/js/CanvasView.js @@ -1044,13 +1044,20 @@ app.registerExtension({ log.info(`Found ${canvasNodeInstances.size} CanvasNode(s). Sending data via WebSocket...`); const sendPromises = []; for (const [nodeId, canvasWidget] of canvasNodeInstances.entries()) { - if (app.graph.getNodeById(nodeId) && canvasWidget.canvas && canvasWidget.canvas.canvasIO) { - log.debug(`Sending data for canvas node ${nodeId}`); - sendPromises.push(canvasWidget.canvas.canvasIO.sendDataViaWebSocket(nodeId)); - } - else { + const node = app.graph.getNodeById(nodeId); + if (!node) { log.warn(`Node ${nodeId} not found in graph, removing from instances map.`); canvasNodeInstances.delete(nodeId); + continue; + } + // Skip bypassed nodes + if (node.mode === 4) { + log.debug(`Node ${nodeId} is bypassed, skipping data send.`); + continue; + } + if (canvasWidget.canvas && canvasWidget.canvas.canvasIO) { + log.debug(`Sending data for canvas node ${nodeId}`); + sendPromises.push(canvasWidget.canvas.canvasIO.sendDataViaWebSocket(nodeId)); } } try { diff --git a/src/CanvasView.ts b/src/CanvasView.ts index d487910..13e16c6 100644 --- a/src/CanvasView.ts +++ b/src/CanvasView.ts @@ -1202,12 +1202,23 @@ app.registerExtension({ const sendPromises: Promise[] = []; for (const [nodeId, canvasWidget] of canvasNodeInstances.entries()) { - if (app.graph.getNodeById(nodeId) && canvasWidget.canvas && canvasWidget.canvas.canvasIO) { - log.debug(`Sending data for canvas node ${nodeId}`); - sendPromises.push(canvasWidget.canvas.canvasIO.sendDataViaWebSocket(nodeId)); - } else { + const node = app.graph.getNodeById(nodeId); + + if (!node) { log.warn(`Node ${nodeId} not found in graph, removing from instances map.`); canvasNodeInstances.delete(nodeId); + continue; + } + + // Skip bypassed nodes + if (node.mode === 4) { + log.debug(`Node ${nodeId} is bypassed, skipping data send.`); + continue; + } + + if (canvasWidget.canvas && canvasWidget.canvas.canvasIO) { + log.debug(`Sending data for canvas node ${nodeId}`); + sendPromises.push(canvasWidget.canvas.canvasIO.sendDataViaWebSocket(nodeId)); } }