From c6c271539572ae60e8f0dbbdadd5a638c36a84e0 Mon Sep 17 00:00:00 2001 From: lif <1835304752@qq.com> Date: Wed, 25 Mar 2026 11:14:12 +0800 Subject: [PATCH] fix(workflow): clear loop/iteration metadata when pasting node outside container (#29983) Co-authored-by: hjlarry --- .../workflow/hooks/use-nodes-interactions.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/web/app/components/workflow/hooks/use-nodes-interactions.ts b/web/app/components/workflow/hooks/use-nodes-interactions.ts index cd35d2310f..8de86edecb 100644 --- a/web/app/components/workflow/hooks/use-nodes-interactions.ts +++ b/web/app/components/workflow/hooks/use-nodes-interactions.ts @@ -1822,6 +1822,8 @@ export const useNodesInteractions = () => { else { // single node paste const selectedNode = nodes.find(node => node.selected) + let pastedToNestedBlock = false + if (selectedNode) { const commonNestedDisallowPasteNodes = [ // end node only can be placed outermost layer @@ -1849,10 +1851,24 @@ export const useNodesInteractions = () => { } // set position base on parent node newNode.position = getNestedNodePosition(newNode, selectedNode) + // update parent children array like native add parentChildrenToAppend.push({ parentId: selectedNode.id, childId: newNode.id, childType: newNode.data.type }) + + pastedToNestedBlock = true } } + + // Clear loop/iteration metadata when pasting outside nested blocks (fixes #29835) + // This ensures nodes copied from inside Loop/Iteration are properly independent + // when pasted outside + if (!pastedToNestedBlock) { + newNode.data.isInLoop = false + newNode.data.loop_id = undefined + newNode.data.isInIteration = false + newNode.data.iteration_id = undefined + newNode.parentId = undefined + } } idMapping[nodeToPaste.id] = newNode.id