+
{phase.name}
+ {totalCount > 0 && (
+
+ {completedCount}/{totalCount}
+
+ )}
{canExecute && (
+ {/* Progress bar */}
+ {totalCount > 0 && (
+
+ )}
+
{/* Tasks */}
{isDetailing ? (
@@ -105,13 +155,27 @@ export function PipelinePhaseGroup({ phase, tasks, taskDepsRaw, isBlocked, detai
) : sorted.length === 0 ? (
No tasks
) : (
- sorted.map((task) => (
-
- ))
+ <>
+ {visibleTasks.map((task) => (
+
+ ))}
+ {needsCollapse && (
+
+ )}
+ >
)}
diff --git a/apps/web/src/components/pipeline/PipelineStageColumn.tsx b/apps/web/src/components/pipeline/PipelineStageColumn.tsx
index 78f7868..a963e15 100644
--- a/apps/web/src/components/pipeline/PipelineStageColumn.tsx
+++ b/apps/web/src/components/pipeline/PipelineStageColumn.tsx
@@ -15,7 +15,7 @@ interface PipelineStageColumnProps {
export function PipelineStageColumn({ phases, tasksByPhase, taskDepsByPhase, blockedPhaseIds, detailAgentByPhase }: PipelineStageColumnProps) {
return (
-