From 04fbe1d1859bd75e41da4e2e3c8928c51523d17e Mon Sep 17 00:00:00 2001 From: waleed Date: Sun, 22 Feb 2026 14:33:13 -0800 Subject: [PATCH] fix timing for parallel block --- .../w/[workflowId]/components/terminal/utils.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/utils.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/utils.ts index 0c285a7b96..f1bb7b3dc8 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/utils.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/utils.ts @@ -261,6 +261,9 @@ function buildEntryTree(entries: ConsoleEntry[]): EntryNode[] { ...allBlocks.map((b) => new Date(b.endedAt || b.timestamp).getTime()) ) const totalDuration = allBlocks.reduce((sum, b) => sum + (b.durationMs || 0), 0) + // Parallel branches run concurrently — use wall-clock time. Loop iterations run serially — use sum. + const subflowDuration = + iterationType === 'parallel' ? subflowEndMs - subflowStartMs : totalDuration // Create synthetic subflow parent entry // Use the minimum executionOrder from all child blocks for proper ordering @@ -276,7 +279,7 @@ function buildEntryTree(entries: ConsoleEntry[]): EntryNode[] { startedAt: new Date(subflowStartMs).toISOString(), executionOrder: subflowExecutionOrder, endedAt: new Date(subflowEndMs).toISOString(), - durationMs: totalDuration, + durationMs: subflowDuration, success: !allBlocks.some((b) => b.error), } @@ -291,6 +294,9 @@ function buildEntryTree(entries: ConsoleEntry[]): EntryNode[] { ...iterBlocks.map((b) => new Date(b.endedAt || b.timestamp).getTime()) ) const iterDuration = iterBlocks.reduce((sum, b) => sum + (b.durationMs || 0), 0) + // Parallel branches run concurrently — use wall-clock time. Loop iterations run serially — use sum. + const iterDisplayDuration = + iterationType === 'parallel' ? iterEndMs - iterStartMs : iterDuration // Use the minimum executionOrder from blocks in this iteration const iterExecutionOrder = Math.min(...iterBlocks.map((b) => b.executionOrder)) @@ -305,7 +311,7 @@ function buildEntryTree(entries: ConsoleEntry[]): EntryNode[] { startedAt: new Date(iterStartMs).toISOString(), executionOrder: iterExecutionOrder, endedAt: new Date(iterEndMs).toISOString(), - durationMs: iterDuration, + durationMs: iterDisplayDuration, success: !iterBlocks.some((b) => b.error), iterationCurrent: iterGroup.iterationCurrent, iterationTotal: iterGroup.iterationTotal,