From 200b21068eb56ac434b550dfa2e39c424b50ed24 Mon Sep 17 00:00:00 2001 From: Charlie Lockyer <97544360+charlielockyer-rice@users.noreply.github.com> Date: Wed, 7 Oct 2026 12:43:56 -0700 Subject: [PATCH] fix(web,mobile): limit bars use each provider's chart color MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Limit bars are meant to use the usage chart's series color for each provider so the two views read as one, but only Codex and Claude were mapped. On web, Cursor, Grok, OpenCode, and Antigravity bars on Usage → Limits and in the /usage-limits result fell back to the plain foreground color. On mobile, the same providers fell back to the foreground in limit rows and to Codex's color in pooled limits. Web now looks the driver up in PROVIDER_PRESENTATION, the table the chart uses. Mobile gains usageProviderKind for the same lookup against its chart colors. Co-Authored-By: Claude Opus 5.5 (1M context) --- apps/mobile/src/features/usage/UsageLimitsPooled.tsx | 4 ++-- apps/mobile/src/features/usage/UsageLimitsSection.tsx | 6 ++---- apps/mobile/src/features/usage/usageProviders.ts | 6 ++++++ apps/web/src/components/usage/UsageLimits.tsx | 8 ++++---- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/apps/mobile/src/features/usage/UsageLimitsPooled.tsx b/apps/mobile/src/features/usage/UsageLimitsPooled.tsx index 713b9ffd160f..59303f24993e 100644 --- a/apps/mobile/src/features/usage/UsageLimitsPooled.tsx +++ b/apps/mobile/src/features/usage/UsageLimitsPooled.tsx @@ -25,7 +25,7 @@ import { ProviderIcon } from "../../components/ProviderIcon"; import { SettingsScreen } from "../settings/components/SettingsScreen"; import { environmentPresentations } from "../../state/presentation"; import { ResetCredits } from "./UsageLimitsSection"; -import { useProviderColors } from "./usageProviders"; +import { usageProviderKind, useProviderColors } from "./usageProviders"; const DRIVER_LABEL: Partial> = { codex: "Codex", claudeAgent: "Claude" }; const PACE_LABEL = { ahead: "Ahead of pace", on: "On pace", under: "Under pace" } as const; @@ -257,7 +257,7 @@ export function UsageLimitsSection({ kind === driver) ?? null; +} + export const PROVIDER_LABEL: Record = { claude: "Claude Code", codex: "Codex", diff --git a/apps/web/src/components/usage/UsageLimits.tsx b/apps/web/src/components/usage/UsageLimits.tsx index a031cd0d1564..7056a2a11ac6 100644 --- a/apps/web/src/components/usage/UsageLimits.tsx +++ b/apps/web/src/components/usage/UsageLimits.tsx @@ -6,7 +6,6 @@ import { ServerProvider, ServerProviderResetCredits, ServerProviderUsageWindow, - UsageProviderKind, } from "@t3tools/contracts"; import { useAtomValue } from "@effect/atom-react"; import { @@ -48,9 +47,10 @@ const PACE: Record entry.driverKind === driver, + ); + return presentation?.color ?? "var(--foreground)"; } /** Pace as a glyph with the words on hover. */