From b21d36c783fe818a426d3f8a976aaa4c4c8fb503 Mon Sep 17 00:00:00 2001 From: Dontdrunk <1761696257@qq.com> Date: Wed, 5 Aug 2026 16:05:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86ComfyUI=E5=9C=A8?= =?UTF-8?q?=E5=AD=90=E5=9B=BE=E8=8A=82=E7=82=B9=E6=A8=A1=E5=BC=8F=E4=B8=8B?= =?UTF-8?q?=EF=BC=8C=E7=8B=AC=E7=AB=8B=E6=B8=B2=E6=9F=93=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E5=B7=A6=E5=8F=B3=E8=BF=9E=E7=BA=BF=E4=B8=8D=E7=94=9F?= =?UTF-8?q?=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++-- .../Online_Animation/ConnectionAnimationCore.js | 15 ++++++++------- .../Online_Animation/styles/CircuitBoardStyle.js | 5 +++-- .../Online_Animation/styles/StyleManager.js | 12 +++++++----- .../styles/static/StaticCircuitBoardStyle.js | 5 +++-- 5 files changed, 24 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 5968ce6..f818443 100644 --- a/README.md +++ b/README.md @@ -65,10 +65,11 @@ 3. **功能范围**:目前支持节点翻译,前端功能翻译正在开发中 ## 📈 版本历史 +- **v3.1.5**(2025-08-05) +-修复了ComfyUI在子图节点模式下,独立渲染模式的左右连线不生效的问题 -### 最新版本 - **v3.1.4**(2025-06-10) -- 合并Suzu008的贡献分支 +- 合并Suzu008的贡献分支,添加了选中和悬停一起激活连线的模式 - **v3.1.3**(2025-01-24) - 给连线动画的速度从3档设置为6档 diff --git a/extensions/Online_Animation/ConnectionAnimationCore.js b/extensions/Online_Animation/ConnectionAnimationCore.js index 31c02e8..3955d0b 100644 --- a/extensions/Online_Animation/ConnectionAnimationCore.js +++ b/extensions/Online_Animation/ConnectionAnimationCore.js @@ -304,8 +304,9 @@ export class ConnectionAnimation { _shouldShowAnimation(link) { if (!link || !this.canvas || !this.canvas.graph) return false; - const originNode = link.origin_id === -10 ? this.canvas.graph.inputNode : this.canvas.graph._nodes_by_id[link.origin_id]; - const targetNode = link.target_id === -20 ? this.canvas.graph.outputNode : this.canvas.graph._nodes_by_id[link.target_id]; + // ComfyUI toNodeId(): subgraph IO ids are strings "-10"/"-20" (also accept legacy numbers) + const originNode = link.origin_id == -10 ? this.canvas.graph.inputNode : this.canvas.graph._nodes_by_id[link.origin_id]; + const targetNode = link.target_id == -20 ? this.canvas.graph.outputNode : this.canvas.graph._nodes_by_id[link.target_id]; if (!originNode || !targetNode) return false; @@ -552,8 +553,8 @@ export class ConnectionAnimation { } // 获取节点和位置信息 - const outNode = link.origin_id === -10 ? this.canvas.graph.inputNode : this.canvas.graph.getNodeById(link.origin_id); - const inNode = link.target_id === -20 ? this.canvas.graph.outputNode : this.canvas.graph.getNodeById(link.target_id); + const outNode = link.origin_id == -10 ? this.canvas.graph.inputNode : this.canvas.graph.getNodeById(link.origin_id); + const inNode = link.target_id == -20 ? this.canvas.graph.outputNode : this.canvas.graph.getNodeById(link.target_id); if (!outNode || !inNode) return; @@ -691,8 +692,8 @@ export class ConnectionAnimation { const graph = this.canvas.graph; if (!graph || !graph._nodes_by_id) return null; - const outNode = link.origin_id === -10 ? graph.inputNode : graph._nodes_by_id[link.origin_id]; - const inNode = link.target_id === -20 ? graph.outputNode : graph._nodes_by_id[link.target_id]; + const outNode = link.origin_id == -10 ? graph.inputNode : graph._nodes_by_id[link.origin_id]; + const inNode = link.target_id == -20 ? graph.outputNode : graph._nodes_by_id[link.target_id]; if (!outNode || !inNode) return null; @@ -707,7 +708,7 @@ export class ConnectionAnimation { if (!pathInfo) return null; // 获取基础颜色 - const baseColor = this.staticStyleManager.getCurrentStyle()?.getBaseColor(link.origin_id !== -10 ? outNode : inNode, link) || "#999999"; + const baseColor = this.staticStyleManager.getCurrentStyle()?.getBaseColor(link.origin_id != -10 ? outNode : inNode, link) || "#999999"; return { path: pathInfo.points, diff --git a/extensions/Online_Animation/styles/CircuitBoardStyle.js b/extensions/Online_Animation/styles/CircuitBoardStyle.js index 9e19c71..93bb72b 100644 --- a/extensions/Online_Animation/styles/CircuitBoardStyle.js +++ b/extensions/Online_Animation/styles/CircuitBoardStyle.js @@ -911,8 +911,9 @@ class MapLinks { const allLinks = Object.values(graph.links || {}); allLinks.forEach(link => { - const isSubgraphOrigin = link.origin_id === -10; - const isSubgraphTarget = link.target_id === -20; + // ComfyUI toNodeId(): subgraph IO ids are strings "-10"/"-20" + const isSubgraphOrigin = link.origin_id == -10; + const isSubgraphTarget = link.target_id == -20; if (!isSubgraphOrigin && !isSubgraphTarget) return; const outNode = isSubgraphOrigin ? graph.inputNode : graph._nodes_by_id[link.origin_id]; diff --git a/extensions/Online_Animation/styles/StyleManager.js b/extensions/Online_Animation/styles/StyleManager.js index 3316db2..8d03839 100644 --- a/extensions/Online_Animation/styles/StyleManager.js +++ b/extensions/Online_Animation/styles/StyleManager.js @@ -135,15 +135,17 @@ export class StyleManager { // 处理指定的连线 linksToProcess.forEach(link => { - const outNode = link.origin_id === -10 ? this.animationManager.canvas.graph.inputNode : this.animationManager.canvas.graph.getNodeById(link.origin_id); - const inNode = link.target_id === -20 ? this.animationManager.canvas.graph.outputNode : this.animationManager.canvas.graph.getNodeById(link.target_id); + // ComfyUI toNodeId(): subgraph IO ids are strings "-10"/"-20" + const outNode = link.origin_id == -10 ? this.animationManager.canvas.graph.inputNode : this.animationManager.canvas.graph.getNodeById(link.origin_id); + const inNode = link.target_id == -20 ? this.animationManager.canvas.graph.outputNode : this.animationManager.canvas.graph.getNodeById(link.target_id); if (!outNode || !inNode) return; - const outPos = link.origin_id === -10 ? outNode.slots[link.origin_slot].pos : this._getOutputPos(outNode, link.origin_slot); - const inPos = link.target_id === -20 ? inNode.slots[link.target_slot].pos : this._getInputPos(inNode, link.target_slot); + const outPos = link.origin_id == -10 ? outNode.slots?.[link.origin_slot]?.pos : this._getOutputPos(outNode, link.origin_slot); + const inPos = link.target_id == -20 ? inNode.slots?.[link.target_slot]?.pos : this._getInputPos(inNode, link.target_slot); + if (!outPos || !inPos) return; // 使用统一的getBaseColor方法获取颜色 - const baseColor = this.currentStyle.getBaseColor(link.origin_id !== -10 ? outNode : inNode, link); + const baseColor = this.currentStyle.getBaseColor(link.origin_id != -10 ? outNode : inNode, link); // 计算路径点和类型 const pathInfo = this.currentStyle.calculatePath(outNode, inNode, outPos, inPos, link); diff --git a/extensions/Online_Animation/styles/static/StaticCircuitBoardStyle.js b/extensions/Online_Animation/styles/static/StaticCircuitBoardStyle.js index ca421f8..9f3d1b3 100644 --- a/extensions/Online_Animation/styles/static/StaticCircuitBoardStyle.js +++ b/extensions/Online_Animation/styles/static/StaticCircuitBoardStyle.js @@ -854,8 +854,9 @@ class StaticMapLinks { const allLinks = Object.values(graph.links || {}); allLinks.forEach(link => { - const isSubgraphOrigin = link.origin_id === -10; - const isSubgraphTarget = link.target_id === -20; + // ComfyUI toNodeId(): subgraph IO ids are strings "-10"/"-20" + const isSubgraphOrigin = link.origin_id == -10; + const isSubgraphTarget = link.target_id == -20; if (!isSubgraphOrigin && !isSubgraphTarget) return; const outNode = isSubgraphOrigin ? graph.inputNode : graph._nodes_by_id[link.origin_id];