Summary
The Claude provider does not surface per-model weekly quota carve-outs (e.g. Fable 5 on Max plans). The Claude desktop app shows a separate "Fable" weekly bar, but Win-CodexBar only shows Session + Weekly (all models).
Upstream macOS CodexBar already implemented this: steipete#1851 ("Claude: surface per-model weekly quota carve-outs (e.g. Fable 5) from limits[]"), with ClaudeScopedWeeklyLimitMapper.swift and follow-ups (steipete#1837, steipete#1887). It would be great to port that to the Rust providers.
Why the current parsers miss it
Anthropic now returns model-scoped weekly limits only in the newer limits array of GET https://api.anthropic.com/api/oauth/usage. The legacy fields stay null, and both providers/claude/oauth/mod.rs (OAuthUsageResponse) and providers/claude/web_api.rs only deserialize the legacy seven_day_* fields, so the scoped window is dropped.
Real response from a Max 5x account today (values rounded, identifiers removed):
{
"five_hour": { "utilization": 5.0, "resets_at": "2026-07-11T14:30:00+00:00" },
"seven_day": { "utilization": 6.0, "resets_at": "2026-07-16T10:00:00+00:00" },
"seven_day_opus": null,
"seven_day_sonnet": null,
"limits": [
{ "kind": "session", "group": "session", "percent": 5, "resets_at": "...", "scope": null },
{ "kind": "weekly_all", "group": "weekly", "percent": 6, "resets_at": "...", "scope": null },
{ "kind": "weekly_scoped", "group": "weekly", "percent": 7, "resets_at": "...",
"scope": { "model": { "id": null, "display_name": "Fable" }, "surface": null },
"is_active": true }
]
}
Suggested behavior (matching upstream)
Parse limits[], and for each kind == "weekly_scoped" entry with a scope.model.display_name, push a NamedRateWindow into extra_rate_windows (e.g. id claude-weekly-scoped-fable, title Fable) so it renders like the existing scoped windows the CLI source already produces. The CLI-source parser (extract_cli_scoped_weekly_limits) already handles arbitrary model names generically — the OAuth/web sources just need the same data from limits[].
Happy to test a build on Windows 11 — this machine reproduces it consistently. Thanks for the great app!
Environment: Win-CodexBar 0.41.3 (winget), Windows 11 Pro, Claude Max 5x, source = oauth.
Summary
The Claude provider does not surface per-model weekly quota carve-outs (e.g. Fable 5 on Max plans). The Claude desktop app shows a separate "Fable" weekly bar, but Win-CodexBar only shows Session + Weekly (all models).
Upstream macOS CodexBar already implemented this: steipete#1851 ("Claude: surface per-model weekly quota carve-outs (e.g. Fable 5) from limits[]"), with
ClaudeScopedWeeklyLimitMapper.swiftand follow-ups (steipete#1837, steipete#1887). It would be great to port that to the Rust providers.Why the current parsers miss it
Anthropic now returns model-scoped weekly limits only in the newer
limitsarray ofGET https://api.anthropic.com/api/oauth/usage. The legacy fields staynull, and bothproviders/claude/oauth/mod.rs(OAuthUsageResponse) andproviders/claude/web_api.rsonly deserialize the legacyseven_day_*fields, so the scoped window is dropped.Real response from a Max 5x account today (values rounded, identifiers removed):
{ "five_hour": { "utilization": 5.0, "resets_at": "2026-07-11T14:30:00+00:00" }, "seven_day": { "utilization": 6.0, "resets_at": "2026-07-16T10:00:00+00:00" }, "seven_day_opus": null, "seven_day_sonnet": null, "limits": [ { "kind": "session", "group": "session", "percent": 5, "resets_at": "...", "scope": null }, { "kind": "weekly_all", "group": "weekly", "percent": 6, "resets_at": "...", "scope": null }, { "kind": "weekly_scoped", "group": "weekly", "percent": 7, "resets_at": "...", "scope": { "model": { "id": null, "display_name": "Fable" }, "surface": null }, "is_active": true } ] }Suggested behavior (matching upstream)
Parse
limits[], and for eachkind == "weekly_scoped"entry with ascope.model.display_name, push aNamedRateWindowintoextra_rate_windows(e.g. idclaude-weekly-scoped-fable, titleFable) so it renders like the existing scoped windows the CLI source already produces. The CLI-source parser (extract_cli_scoped_weekly_limits) already handles arbitrary model names generically — the OAuth/web sources just need the same data fromlimits[].Happy to test a build on Windows 11 — this machine reproduces it consistently. Thanks for the great app!
Environment: Win-CodexBar 0.41.3 (winget), Windows 11 Pro, Claude Max 5x, source = oauth.