Skip to content

Commit 04f1960

Browse files
authored
Reduce running agent timer precision (#1372)
## Summary - Update the live running-agent timer to show 1 decimal place instead of 2 - Make `formatDuration` support configurable fractional precision while preserving minute-based formatting - Add coverage for sub-minute precision and unchanged minute formatting ## Testing - `pnpm --filter code test -- --run apps/code/src/renderer/features/sessions/components/GeneratingIndicator.test.ts`
1 parent f6d57db commit 04f1960

2 files changed

Lines changed: 26 additions & 4 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { describe, expect, it } from "vitest";
2+
3+
import { formatDuration } from "./GeneratingIndicator";
4+
5+
describe("formatDuration", () => {
6+
it("formats sub-minute durations with configurable precision", () => {
7+
expect(formatDuration(12_340)).toBe("12.34s");
8+
expect(formatDuration(12_340, 1)).toBe("12.3s");
9+
});
10+
11+
it("preserves minute formatting", () => {
12+
expect(formatDuration(62_340)).toBe("1m 02s");
13+
expect(formatDuration(62_340, 1)).toBe("1m 02s");
14+
});
15+
});

apps/code/src/renderer/features/sessions/components/GeneratingIndicator.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,23 @@ function getRandomThinkingMessage(): string {
9595
];
9696
}
9797

98-
export function formatDuration(ms: number): string {
98+
export function formatDuration(ms: number, fractionDigits = 2): string {
9999
const totalSeconds = Math.floor(ms / 1000);
100100
const mins = Math.floor(totalSeconds / 60);
101101
const secs = totalSeconds % 60;
102-
const centiseconds = Math.floor((ms % 1000) / 10);
103102

104103
if (mins > 0) {
105104
return `${mins}m ${secs.toString().padStart(2, "0")}s`;
106105
}
107-
return `${secs}.${centiseconds.toString().padStart(2, "0")}s`;
106+
107+
if (fractionDigits <= 0) {
108+
return `${secs}s`;
109+
}
110+
111+
const fractionalUnit = 10 ** (3 - fractionDigits);
112+
const fractionalValue = Math.floor((ms % 1000) / fractionalUnit);
113+
114+
return `${secs}.${fractionalValue.toString().padStart(fractionDigits, "0")}s`;
108115
}
109116

110117
interface GeneratingIndicatorProps {
@@ -164,7 +171,7 @@ export function GeneratingIndicator({
164171
color="gray"
165172
style={{ fontVariantNumeric: "tabular-nums" }}
166173
>
167-
{formatDuration(elapsed)})
174+
{formatDuration(elapsed, 1)})
168175
</Text>
169176
</Flex>
170177
);

0 commit comments

Comments
 (0)