From 6fcd39ac097ca67ee4db8bf50dd4581078ffd5b8 Mon Sep 17 00:00:00 2001 From: luvs01 Date: Sun, 30 Aug 2026 08:16:33 +0900 Subject: [PATCH 1/4] fix(quota): drop expiry timestamps that no date formatter can render MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `epochMillis` accepted any finite number, but finite is not the same as representable. ECMAScript caps time values at ±8.64e15 ms, and `Intl.DateTimeFormat.format()` throws a RangeError past that rather than rendering an approximation. So a provider reporting a bogus expiry did not produce a wrong date; it produced a value that faults every consumer that formats it. Measured against the current code, 1e20 and 1e16 both yield "date value is not finite in DateTimeFormat format()", while 8.64e15 remains representable. Resolve an unrepresentable value to undefined so it never enters a report. Seconds inference, the zero/negative sentinel handling, and every representable timestamp are unchanged. --- src/providers/quota-wire.ts | 7 ++++++- tests/command-code-quota.test.ts | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/providers/quota-wire.ts b/src/providers/quota-wire.ts index 0abcb69efe..31a0c81457 100644 --- a/src/providers/quota-wire.ts +++ b/src/providers/quota-wire.ts @@ -30,7 +30,12 @@ export const QUOTA_JSON_READ_FAILURE = Symbol("quota-json-read-failure"); /** Unix 0 / negative values are sentinels, not reset clocks (Command Code fiveHour.resetAt: 0). */ export function epochMillis(value: number): number | undefined { if (!Number.isFinite(value) || value <= 0) return undefined; - return value > 10_000_000_000 ? value : value * 1000; + const milliseconds = value > 10_000_000_000 ? value : value * 1000; + // A finite number is not necessarily a representable date. ECMAScript caps time values at + // ±8.64e15 ms, and `Intl.DateTimeFormat.format()` throws a RangeError past that instead of + // rendering something wrong. A provider that reports a bogus expiry must not become a + // rendering fault in every consumer that formats it. + return Number.isFinite(new Date(milliseconds).getTime()) ? milliseconds : undefined; } export function normalizeResetAt(value: unknown): number | undefined { diff --git a/tests/command-code-quota.test.ts b/tests/command-code-quota.test.ts index 3e8da6d0d3..8ba447baaf 100644 --- a/tests/command-code-quota.test.ts +++ b/tests/command-code-quota.test.ts @@ -364,6 +364,38 @@ describe("Command Code provider quota", () => { }); }); + // An out-of-range period end is not merely a wrong date: every consumer that formats it + // through Intl throws a RangeError. Drop the field and keep the usable credit figures. + test("an out-of-range subscription period end is dropped, not carried into the report", async () => { + globalThis.fetch = (async (input: RequestInfo | URL) => { + const url = String(input); + const body = url.includes("/alpha/whoami") + ? {} + : url.includes("/alpha/billing/subscriptions") + ? { data: { currentPeriodStart: "2026-08-01T00:00:00.000Z", currentPeriodEnd: 1e20 } } + : url.includes("/alpha/usage/summary") + ? { totalCost: 12 } + : { + credits: { monthlyCredits: 0, purchasedCredits: 0, freeCredits: 0 }, + windowLimits: { fiveHour: { cap: 100, used: 40 } }, + }; + return new Response(JSON.stringify(body), { status: 200, headers: { "content-type": "application/json" } }); + }) as typeof fetch; + + const result = await fetchProviderQuotaReports(commandCodeConfig(), true); + + expect(result.reports[0]?.quota).toEqual({ + fiveHourPercent: 40, + creditsUsd: { + used: 12, + limit: 12, + remaining: 0, + percent: 100, + }, + updatedAt: expect.any(Number), + }); + }); + test("a mixed balance with roll-over purchased credits carries no subscription expiry", async () => { globalThis.fetch = (async (input: RequestInfo | URL) => { const url = String(input); From e7f5995155a2a3133ab3cdd7d34bc52aa8120cf9 Mon Sep 17 00:00:00 2001 From: luvs01 Date: Sun, 30 Aug 2026 08:18:26 +0900 Subject: [PATCH 2/4] fix(gui): keep the capacity panel when a credit expiry cannot be formatted MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `Intl.DateTimeFormat.format()` throws a RangeError on a time value outside ±8.64e15 ms rather than rendering an approximation. The capacity panel formatted `expiresAt` and `nextRecoveryAt` directly, so one unrepresentable timestamp did not merely show a wrong date — it aborted rendering and removed the credit balance, the recovery rows, and the aggregate view along with it. The wire-side guard stops such a value entering a fresh report, but persisted reports predate it and the component is reachable without that path. Guard both layers here: normalization drops the field, and the component omits the line instead of formatting it. Representable timestamps and seconds inference are unchanged. --- .../ProviderCapacityQuota.tsx | 41 ++++++++++++------- gui/src/provider-workspace/report.ts | 18 +++++++- gui/tests/provider-capacity-credits.test.tsx | 10 +++++ gui/tests/provider-capacity.test.ts | 12 ++++++ 4 files changed, 66 insertions(+), 15 deletions(-) diff --git a/gui/src/components/provider-workspace/ProviderCapacityQuota.tsx b/gui/src/components/provider-workspace/ProviderCapacityQuota.tsx index abc2fb9e63..20907b8f6c 100644 --- a/gui/src/components/provider-workspace/ProviderCapacityQuota.tsx +++ b/gui/src/components/provider-workspace/ProviderCapacityQuota.tsx @@ -56,18 +56,30 @@ export function ProviderCapacityQuota({ report, pending }: { report: ProviderQuo ...(aggregation.customWindows ?? []).map((window, index) => ({ key: index + 3, label: window.label, window })), ] : []; const formatPercent = (value: number) => new Intl.NumberFormat(locale, { maximumFractionDigits: 1 }).format(value); - const formatRecoveryAt = (value: number) => new Intl.DateTimeFormat(locale, { - dateStyle: "medium", - timeStyle: "short", - }).format(new Date(value > 10_000_000_000 ? value : value * 1000)); + // `Intl.DateTimeFormat.format()` throws a RangeError on a time value outside ±8.64e15 ms. + // These timestamps come from provider APIs and persisted cache, so one unrepresentable value + // would take down the whole capacity panel. Resolve to null and omit the line instead. + const asDate = (value: number): Date | null => { + const date = new Date(value > 10_000_000_000 ? value : value * 1000); + return Number.isFinite(date.getTime()) ? date : null; + }; + const formatRecoveryAt = (value: number) => { + const date = asDate(value); + return date === null ? null : new Intl.DateTimeFormat(locale, { + dateStyle: "medium", + timeStyle: "short", + }).format(date); + }; const localeTag = bcp47(locale); const formatCredits = (value: number) => new Intl.NumberFormat(localeTag, { style: "currency", currency: "USD", }).format(value); - const formatPeriodEnd = (value: number) => new Intl.DateTimeFormat(localeTag, { - dateStyle: "medium", - }).format(new Date(value > 10_000_000_000 ? value : value * 1000)); + const formatPeriodEnd = (value: number) => { + const date = asDate(value); + return date === null ? null : new Intl.DateTimeFormat(localeTag, { dateStyle: "medium" }).format(date); + }; + const periodEnd = credits?.expiresAt === undefined ? null : formatPeriodEnd(credits.expiresAt); return ( <> @@ -91,19 +103,20 @@ export function ProviderCapacityQuota({ report, pending }: { report: ProviderQuo {formatCredits(credits.remaining)} )} - {credits?.expiresAt !== undefined && ( + {periodEnd !== null && (
- {t("quota.creditsPeriodEnds", { date: formatPeriodEnd(credits.expiresAt) })} + {t("quota.creditsPeriodEnds", { date: periodEnd })}
)} - {recoveryRows.flatMap(({ key, label, window }) => ( - window.nextRecoveryAt !== undefined && window.nextRecoveryPercent !== undefined + {recoveryRows.flatMap(({ key, label, window }) => { + const recoveryAt = window.nextRecoveryAt === undefined ? null : formatRecoveryAt(window.nextRecoveryAt); + return recoveryAt !== null && window.nextRecoveryPercent !== undefined ? [
- {t("pws.capacity.nextRecovery")} · {label} · {formatRecoveryAt(window.nextRecoveryAt)} + {t("pws.capacity.nextRecovery")} · {label} · {recoveryAt} {t("pws.capacity.recoveryShare", { percent: formatPercent(window.nextRecoveryPercent) })}
] - : [] - ))} + : []; + })} {showsAggregate && aggregation && aggregation.currentAccount?.quota && (
diff --git a/gui/src/provider-workspace/report.ts b/gui/src/provider-workspace/report.ts index 539fbba2f2..4d4ff53f3b 100644 --- a/gui/src/provider-workspace/report.ts +++ b/gui/src/provider-workspace/report.ts @@ -39,6 +39,22 @@ const finite = (value: unknown): number | undefined => ( typeof value === "number" && Number.isFinite(value) ? value : undefined ); +/** + * A finite number is not necessarily a representable date. + * + * Reports are also read from persisted cache, so a bogus expiry recorded before the wire-side + * guard existed still reaches the GUI. `Intl.DateTimeFormat.format()` throws a RangeError on an + * out-of-range time value rather than rendering it, which turns one bad provider field into a + * render fault for the whole capacity panel. Drop the field instead: the rest of the credit + * figures stay useful without it. + */ +const dateTimestamp = (value: unknown): number | undefined => { + const timestamp = finite(value); + if (timestamp === undefined) return undefined; + const milliseconds = timestamp > 10_000_000_000 ? timestamp : timestamp * 1000; + return Number.isFinite(new Date(milliseconds).getTime()) ? timestamp : undefined; +}; + function quotaFromUnknown(quota: unknown, fallbackUpdatedAt?: number): AccountQuota | null { if (!quota || typeof quota !== "object" || Array.isArray(quota)) return null; const q = quota as Record; @@ -61,7 +77,7 @@ function quotaFromUnknown(quota: unknown, fallbackUpdatedAt?: number): AccountQu const creditsLimit = finite(creditsRaw?.limit); const creditsRemaining = finite(creditsRaw?.remaining); const creditsPercent = finite(creditsRaw?.percent); - const creditsExpiresAt = finite(creditsRaw?.expiresAt); + const creditsExpiresAt = dateTimestamp(creditsRaw?.expiresAt); const creditsUsd = creditsUsed !== undefined && creditsLimit !== undefined && creditsRemaining !== undefined diff --git a/gui/tests/provider-capacity-credits.test.tsx b/gui/tests/provider-capacity-credits.test.tsx index 35045aa870..38035c97c3 100644 --- a/gui/tests/provider-capacity-credits.test.tsx +++ b/gui/tests/provider-capacity-credits.test.tsx @@ -39,3 +39,13 @@ test("credits with an expiry render the localized billing-period end date", () = expect(markup).toContain("Credits balance"); expect(markup).toContain("Billing period ends 26 Aug 2026"); }); + +// Rendering is the failure point, not just the value: Intl.DateTimeFormat.format() throws a +// RangeError on a time value outside ±8.64e15 ms, so an unrepresentable expiry took down the +// whole capacity panel rather than showing a wrong date. +test("credits with an unrepresentable expiry still render the balance", () => { + const markup = renderCredits(1e20); + expect(markup).toContain("Credits balance"); + expect(markup).toContain("US$37.50"); + expect(markup).not.toContain("Billing period ends"); +}); diff --git a/gui/tests/provider-capacity.test.ts b/gui/tests/provider-capacity.test.ts index 3916b3eadb..5911e89d61 100644 --- a/gui/tests/provider-capacity.test.ts +++ b/gui/tests/provider-capacity.test.ts @@ -61,6 +61,18 @@ test("provider quota reports reject malformed required credits and drop malforme creditsUsd: { used: 12.5, limit: 50, remaining: 37.5, percent: 25 }, updatedAt: 123, }); + + // Persisted reports predate the wire-side guard, so normalization is a second line of + // defence: an unrepresentable expiry must be dropped rather than handed to a formatter. + expect(accountQuotaFromReport({ + updatedAt: 123, + quota: { + creditsUsd: { used: 12.5, limit: 50, remaining: 37.5, percent: 25, expiresAt: 1e20 }, + }, + })).toEqual({ + creditsUsd: { used: 12.5, limit: 50, remaining: 37.5, percent: 25 }, + updatedAt: 123, + }); }); test("capacity metadata preserves estimate, raw current quota, recovery percent, and incomplete coverage", () => { From bcbc3ad5898bc56609ba1bfcb44ad553c4d80a84 Mon Sep 17 00:00:00 2001 From: luvs01 Date: Sun, 30 Aug 2026 08:39:02 +0900 Subject: [PATCH 3/4] docs(assets): add the capacity-panel before/after screenshot Server-rendered comparison of the provider capacity panel when a provider reports an expiry outside the representable date range, following the repository's existing convention of committing PR screenshots under assets/. --- assets/pr2950-capacity-expiry.png | Bin 0 -> 77790 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/pr2950-capacity-expiry.png diff --git a/assets/pr2950-capacity-expiry.png b/assets/pr2950-capacity-expiry.png new file mode 100644 index 0000000000000000000000000000000000000000..10e3c995b90d61e804e8606e979eaf7d5841bb32 GIT binary patch literal 77790 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 NObjgyO7xv>{~I|6r+@$e literal 0 HcmV?d00001 From 79b5eab348942c51c8797a4e9f343179f4cfa7f1 Mon Sep 17 00:00:00 2001 From: bitkyc08-arch Date: Sun, 30 Aug 2026 11:01:12 +0900 Subject: [PATCH 4/4] fix(quota): preserve xAI usage without reset time An unrenderable weekly reset timestamp caused the credits parser to discard an otherwise valid usage percentage. Validate the percentage independently and omit only the invalid reset timestamp so the preferred weekly meter remains available. --- src/providers/quota.ts | 15 +++++++++------ tests/provider-quota.test.ts | 6 ++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/providers/quota.ts b/src/providers/quota.ts index 98bd079119..e27bb29a31 100644 --- a/src/providers/quota.ts +++ b/src/providers/quota.ts @@ -1153,14 +1153,17 @@ export function parseXaiCreditsResponse(value: unknown): { percent: number; rese if (!config) return null; const period = asRecord(config.currentPeriod); if (!period || period.type !== "USAGE_PERIOD_TYPE_WEEKLY") return null; - const resetAt = normalizeResetAt(period.end); - if (resetAt === undefined) return null; + let percent = 0; if (config.creditUsagePercent !== undefined) { - const percent = normalizePercent(config.creditUsagePercent); - if (percent === undefined) return null; - return { percent, resetAt }; + const normalized = normalizePercent(config.creditUsagePercent); + if (normalized === undefined) return null; + percent = normalized; } - return { percent: 0, resetAt }; + const resetAt = normalizeResetAt(period.end); + return { + percent, + ...(resetAt !== undefined ? { resetAt } : {}), + }; } async function fetchXaiWeeklyCredits(accessToken: string, userId: string): Promise { diff --git a/tests/provider-quota.test.ts b/tests/provider-quota.test.ts index 6d0e395f3d..5eef964306 100644 --- a/tests/provider-quota.test.ts +++ b/tests/provider-quota.test.ts @@ -2393,6 +2393,12 @@ describe("fetchProviderQuotaReports", () => { percent: 0, resetAt: Date.parse("2026-08-15T13:05:52.277209Z"), }); + expect(parseXaiCreditsResponse({ + config: { + creditUsagePercent: 42, + currentPeriod: { type: "USAGE_PERIOD_TYPE_WEEKLY", end: 1e20 }, + }, + })).toEqual({ percent: 42 }); expect(parseXaiCreditsResponse({ config: { creditUsagePercent: 10,