diff --git a/apps/frontend/src/renderer/components/PhaseProgressIndicator.tsx b/apps/frontend/src/renderer/components/PhaseProgressIndicator.tsx index 9a98ca7f..f911034b 100644 --- a/apps/frontend/src/renderer/components/PhaseProgressIndicator.tsx +++ b/apps/frontend/src/renderer/components/PhaseProgressIndicator.tsx @@ -8,6 +8,8 @@ interface PhaseProgressIndicatorProps { phase?: ExecutionPhase; subtasks: Subtask[]; phaseLogs?: TaskLogs | null; + /** Fallback progress percentage (0-100) when phaseLogs unavailable */ + phaseProgress?: number; isStuck?: boolean; isRunning?: boolean; className?: string; @@ -47,6 +49,7 @@ export const PhaseProgressIndicator = memo(function PhaseProgressIndicator({ phase: rawPhase, subtasks, phaseLogs, + phaseProgress, isStuck = false, isRunning = false, className, @@ -140,6 +143,8 @@ export const PhaseProgressIndicator = memo(function PhaseProgressIndicator({ {activeEntries} {activeEntries === 1 ? t('execution.labels.entry') : t('execution.labels.entries')} + ) : isRunning && isIndeterminatePhase && (phaseProgress ?? 0) > 0 ? ( + `${Math.round(Math.min(phaseProgress!, 100))}%` ) : ( '—' )} diff --git a/apps/frontend/src/renderer/components/TaskCard.tsx b/apps/frontend/src/renderer/components/TaskCard.tsx index 9c6fa185..3df8acee 100644 --- a/apps/frontend/src/renderer/components/TaskCard.tsx +++ b/apps/frontend/src/renderer/components/TaskCard.tsx @@ -488,6 +488,7 @@ export const TaskCard = memo(function TaskCard({ task, onClick, onStatusChange }