diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/utils/block-protection-utils.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/utils/block-protection-utils.ts index eb76077fc..d86f1b3dc 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/utils/block-protection-utils.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/utils/block-protection-utils.ts @@ -36,17 +36,18 @@ export function isBlockProtected(blockId: string, blocks: Record ): boolean { - return isBlockProtected(edge.source, blocks) || isBlockProtected(edge.target, blocks) + return isBlockProtected(edge.target, blocks) } /** diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx index 66fa0ee16..5f29334ac 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx @@ -2523,7 +2523,7 @@ const WorkflowContent = React.memo(() => { .filter((change: any) => change.type === 'remove') .map((change: any) => change.id) .filter((edgeId: string) => { - // Prevent removing edges connected to protected blocks + // Prevent removing edges targeting protected blocks const edge = edges.find((e) => e.id === edgeId) if (!edge) return true return !isEdgeProtected(edge, blocks) @@ -2595,11 +2595,11 @@ const WorkflowContent = React.memo(() => { if (!sourceNode || !targetNode) return - // Prevent connections to/from protected blocks + // Prevent connections to protected blocks (outbound from locked blocks is allowed) if (isEdgeProtected(connection, blocks)) { addNotification({ level: 'info', - message: 'Cannot connect to locked blocks or blocks inside locked containers', + message: 'Cannot connect to locked blocks', workflowId: activeWorkflowId || undefined, }) return @@ -3357,12 +3357,12 @@ const WorkflowContent = React.memo(() => { /** Stable delete handler to avoid creating new function references per edge. */ const handleEdgeDelete = useCallback( (edgeId: string) => { - // Prevent removing edges connected to protected blocks + // Prevent removing edges targeting protected blocks const edge = edges.find((e) => e.id === edgeId) if (edge && isEdgeProtected(edge, blocks)) { addNotification({ level: 'info', - message: 'Cannot remove connections from locked blocks', + message: 'Cannot remove connections to locked blocks', workflowId: activeWorkflowId || undefined, }) return @@ -3420,7 +3420,7 @@ const WorkflowContent = React.memo(() => { // Handle edge deletion first (edges take priority if selected) if (selectedEdges.size > 0) { - // Get all selected edge IDs and filter out edges connected to protected blocks + // Get all selected edge IDs and filter out edges targeting protected blocks const edgeIds = Array.from(selectedEdges.values()).filter((edgeId) => { const edge = edges.find((e) => e.id === edgeId) if (!edge) return true