From da25a67763811a3aae655dc31539381898dfbad1 Mon Sep 17 00:00:00 2001 From: Adam Bowker Date: Mon, 30 Mar 2026 10:26:08 -0700 Subject: [PATCH] Reduce live agent timer precision to one decimal --- .../components/GeneratingIndicator.test.ts | 15 +++++++++++++++ .../sessions/components/GeneratingIndicator.tsx | 15 +++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 apps/code/src/renderer/features/sessions/components/GeneratingIndicator.test.ts diff --git a/apps/code/src/renderer/features/sessions/components/GeneratingIndicator.test.ts b/apps/code/src/renderer/features/sessions/components/GeneratingIndicator.test.ts new file mode 100644 index 000000000..8e76be143 --- /dev/null +++ b/apps/code/src/renderer/features/sessions/components/GeneratingIndicator.test.ts @@ -0,0 +1,15 @@ +import { describe, expect, it } from "vitest"; + +import { formatDuration } from "./GeneratingIndicator"; + +describe("formatDuration", () => { + it("formats sub-minute durations with configurable precision", () => { + expect(formatDuration(12_340)).toBe("12.34s"); + expect(formatDuration(12_340, 1)).toBe("12.3s"); + }); + + it("preserves minute formatting", () => { + expect(formatDuration(62_340)).toBe("1m 02s"); + expect(formatDuration(62_340, 1)).toBe("1m 02s"); + }); +}); diff --git a/apps/code/src/renderer/features/sessions/components/GeneratingIndicator.tsx b/apps/code/src/renderer/features/sessions/components/GeneratingIndicator.tsx index b24a86a7b..86784a290 100644 --- a/apps/code/src/renderer/features/sessions/components/GeneratingIndicator.tsx +++ b/apps/code/src/renderer/features/sessions/components/GeneratingIndicator.tsx @@ -95,16 +95,23 @@ function getRandomThinkingMessage(): string { ]; } -export function formatDuration(ms: number): string { +export function formatDuration(ms: number, fractionDigits = 2): string { const totalSeconds = Math.floor(ms / 1000); const mins = Math.floor(totalSeconds / 60); const secs = totalSeconds % 60; - const centiseconds = Math.floor((ms % 1000) / 10); if (mins > 0) { return `${mins}m ${secs.toString().padStart(2, "0")}s`; } - return `${secs}.${centiseconds.toString().padStart(2, "0")}s`; + + if (fractionDigits <= 0) { + return `${secs}s`; + } + + const fractionalUnit = 10 ** (3 - fractionDigits); + const fractionalValue = Math.floor((ms % 1000) / fractionalUnit); + + return `${secs}.${fractionalValue.toString().padStart(fractionDigits, "0")}s`; } interface GeneratingIndicatorProps { @@ -164,7 +171,7 @@ export function GeneratingIndicator({ color="gray" style={{ fontVariantNumeric: "tabular-nums" }} > - {formatDuration(elapsed)}) + {formatDuration(elapsed, 1)}) );