diff --git a/src/renderer/components/chat/SubagentActivityCard.tsx b/src/renderer/components/chat/SubagentActivityCard.tsx index 8593f4d..42e3f70 100644 --- a/src/renderer/components/chat/SubagentActivityCard.tsx +++ b/src/renderer/components/chat/SubagentActivityCard.tsx @@ -5,12 +5,12 @@ import type { ActiveSubagent } from '@renderer/lib/subagentTracker'; const COMPLETION_GRACE_MS = 3000; -function formatElapsed(startedAt: string): string { - const seconds = Math.floor((Date.now() - new Date(startedAt).getTime()) / 1000); - if (seconds < 60) return `${seconds}s`; - const minutes = Math.floor(seconds / 60); - const remainder = seconds % 60; - return `${minutes}m ${remainder}s`; +import { formatElapsedMs } from '@renderer/hooks/useElapsedTimer'; + +function formatElapsed(startedAt: string, endedAt?: string): string { + const endMs = endedAt ? new Date(endedAt).getTime() : Date.now(); + const durationMs = endMs - new Date(startedAt).getTime(); + return formatElapsedMs(durationMs); } function StatusIcon({ status }: { status: ActiveSubagent['status'] }) { diff --git a/src/renderer/components/chat/TurnActivityPanel.tsx b/src/renderer/components/chat/TurnActivityPanel.tsx index 11d4ce7..e3a49ab 100644 --- a/src/renderer/components/chat/TurnActivityPanel.tsx +++ b/src/renderer/components/chat/TurnActivityPanel.tsx @@ -153,12 +153,12 @@ function ActivityTimelineEventRow({ event }: { event: RunTimelineEventRecord }) const isTerminal = event.kind === 'run-completed' || event.kind === 'run-cancelled' || event.kind === 'run-failed'; return ( -
-
+
+
- + {label} @@ -231,14 +231,14 @@ function GroupedToolCallRow({ toolName, events }: { toolName: string; events: Ru