diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/action-bar/action-bar.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/action-bar/action-bar.tsx index dddeb126a..aa65c7b30 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/action-bar/action-bar.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/action-bar/action-bar.tsx @@ -123,8 +123,9 @@ export const ActionBar = memo( return sourceIncomingEdges.length === 0 } + // Non-trigger blocks need a snapshot to exist (so upstream outputs are available) const dependenciesSatisfied = - isTriggerBlock || incomingEdges.every((edge) => isSourceSatisfied(edge.source)) + isTriggerBlock || (snapshot && incomingEdges.every((edge) => isSourceSatisfied(edge.source))) const canRunFromBlock = dependenciesSatisfied && !isNoteBlock && !isInsideSubflow && !isExecuting diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts index 332d64e2e..fc9bdbd14 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts @@ -1456,11 +1456,8 @@ export function useWorkflowExecution() { return sourceIncomingEdges.length === 0 } - if ( - !snapshot && - !isTriggerBlock && - !incomingEdges.every((edge) => isSourceSatisfied(edge.source)) - ) { + // Non-trigger blocks need a snapshot to exist (so upstream outputs are available) + if (!snapshot && !isTriggerBlock) { logger.error('No execution snapshot available for run-from-block', { workflowId, blockId }) return } diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx index ea3ebb39e..a9aa5ba8f 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx @@ -1137,8 +1137,9 @@ const WorkflowContent = React.memo(() => { return sourceIncomingEdges.length === 0 } + // Non-trigger blocks need a snapshot to exist (so upstream outputs are available) const dependenciesSatisfied = - isTriggerBlock || incomingEdges.every((edge) => isSourceSatisfied(edge.source)) + isTriggerBlock || (snapshot && incomingEdges.every((edge) => isSourceSatisfied(edge.source))) const isNoteBlock = block.type === 'note' const isInsideSubflow = block.parentId && (block.parentType === 'loop' || block.parentType === 'parallel')