From 05d404210058d714cfef902517fc20ad66b82339 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Fri, 11 Sep 2026 10:09:48 -0700 Subject: [PATCH] feat(web): open Usage on the Limits tab by default (#11261) Co-authored-by: Claude Code --- .../mobile/src/features/usage/UsageRouteScreen.tsx | 4 +++- .../components/usage/usagePagePreferences.test.ts | 6 +++--- .../src/components/usage/usagePagePreferences.ts | 14 +++++++------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/apps/mobile/src/features/usage/UsageRouteScreen.tsx b/apps/mobile/src/features/usage/UsageRouteScreen.tsx index ad54d6e323ee2ad5d5b61feed5a48ec3ba980bdf..b3232acc6810df3e2ad97a0ce376f7e95426b824 100644 --- a/apps/mobile/src/features/usage/UsageRouteScreen.tsx +++ b/apps/mobile/src/features/usage/UsageRouteScreen.tsx @@ -67,7 +67,9 @@ const CHART_HEIGHT = 180; export function UsageRouteScreen() { const navigation = useNavigation(); const insets = useSafeAreaInsets(); - const [tab, setTab] = useState("usage"); + // Limits first: remaining quota and reset time are what most people open + // the screen for. + const [tab, setTab] = useState("limits"); const [windowSelection, setWindowSelection] = useState(() => ({ days: 30, window: makeWindow(30), diff --git a/apps/web/src/components/usage/usagePagePreferences.test.ts b/apps/web/src/components/usage/usagePagePreferences.test.ts index dcdde98fa2471381effa6dc31f325a55ee3f1b12..f5686de012beaf17ec21f3209007319cfd3659df 100644 --- a/apps/web/src/components/usage/usagePagePreferences.test.ts +++ b/apps/web/src/components/usage/usagePagePreferences.test.ts @@ -25,7 +25,7 @@ afterEach(() => { describe("Usage page preferences", () => { it("uses defaults when no preference has been saved", () => { - expect(readUsagePagePreferences()).toEqual({ metric: "cost", windowDays: 30 }); + expect(readUsagePagePreferences()).toEqual({ metric: "limits", windowDays: 30 }); }); it.each([1, 7, 30, 90] as const)("round-trips every metric with a %i-day range", (windowDays) => { @@ -41,7 +41,7 @@ describe("Usage page preferences", () => { '{"metric":"cost","windowDays":365}', ])("replaces invalid preferences on the next save: %s", (value) => { values.set(key, value); - expect(readUsagePagePreferences()).toEqual({ metric: "cost", windowDays: 30 }); + expect(readUsagePagePreferences()).toEqual({ metric: "limits", windowDays: 30 }); saveUsagePagePreferences({ metric: "tokens", windowDays: 7 }); expect(readUsagePagePreferences()).toEqual({ metric: "tokens", windowDays: 7 }); }); @@ -64,7 +64,7 @@ describe("Usage page preferences", () => { throw new Error("SecurityError"); }, }); - expect(readUsagePagePreferences()).toEqual({ metric: "cost", windowDays: 30 }); + expect(readUsagePagePreferences()).toEqual({ metric: "limits", windowDays: 30 }); expect(() => saveUsagePagePreferences({ metric: "tokens", windowDays: 7 })).not.toThrow(); }); }); diff --git a/apps/web/src/components/usage/usagePagePreferences.ts b/apps/web/src/components/usage/usagePagePreferences.ts index ddd6d5341cc0470c75f8c8f139f31b53d4f51681..630e78e98fe2b9a49505d1ab7b6f60686b95e60d 100644 --- a/apps/web/src/components/usage/usagePagePreferences.ts +++ b/apps/web/src/components/usage/usagePagePreferences.ts @@ -9,17 +9,17 @@ const UsagePagePreferencesSchema = Schema.Struct({ }); export type UsagePagePreferences = typeof UsagePagePreferencesSchema.Type; +// Limits is what most people open the page for (how much subscription quota is +// left, and when it resets), so it is the first-visit default; the last picked +// tab sticks after that. +const DEFAULT_PREFERENCES: UsagePagePreferences = { metric: "limits", windowDays: 30 }; + export function readUsagePagePreferences(): UsagePagePreferences { try { - return ( - getLocalStorageItem(STORAGE_KEY, UsagePagePreferencesSchema) ?? { - metric: "cost", - windowDays: 30, - } - ); + return getLocalStorageItem(STORAGE_KEY, UsagePagePreferencesSchema) ?? DEFAULT_PREFERENCES; } catch (error) { console.error("Could not read Usage page preferences.", error); - return { metric: "cost", windowDays: 30 }; + return DEFAULT_PREFERENCES; } } -- 2.54.0