diff --git a/ui/src/lib/provider-quota-summary.test.ts b/ui/src/lib/provider-quota-summary.test.ts index d038ab1d1ac3..3cd9c17902b6 100644 --- a/ui/src/lib/provider-quota-summary.test.ts +++ b/ui/src/lib/provider-quota-summary.test.ts @@ -15,6 +15,16 @@ describe("formatQuotaReset", () => { expect(formatQuotaReset(Date.now() + 2 * 60 * 60_000 + 15 * 60_000)).toBe("2h 15m"); }); + it("returns <1m for sub-minute reset windows instead of 0m", () => { + vi.spyOn(Date, "now").mockReturnValue(Date.parse("2026-05-30T12:00:00.000Z")); + + expect(formatQuotaReset(Date.now() - 1)).toBe("now"); + expect(formatQuotaReset(Date.now())).toBe("now"); + expect(formatQuotaReset(Date.now() + 1)).toBe("<1m"); + expect(formatQuotaReset(Date.now() + 59_999)).toBe("<1m"); + expect(formatQuotaReset(Date.now() + 60_000)).toBe("1m"); + }); + it("ignores Date-invalid reset timestamps", () => { expect(formatQuotaReset(8_640_000_000_000_001)).toBeNull(); expect(formatQuotaReset(Number.POSITIVE_INFINITY)).toBeNull(); diff --git a/ui/src/lib/provider-quota-summary.ts b/ui/src/lib/provider-quota-summary.ts index 14e29606f79a..310109318bbb 100644 --- a/ui/src/lib/provider-quota-summary.ts +++ b/ui/src/lib/provider-quota-summary.ts @@ -12,6 +12,9 @@ export function formatQuotaReset(resetAt?: number): string | null { return "now"; } const minutes = Math.floor(diffMs / 60_000); + if (minutes < 1) { + return "<1m"; + } if (minutes < 60) { return `${minutes}m`; }