Sync upstream CodexBar through 02b4ba278 - #93
Merged
Conversation
sourceModeRequiresWebSupport blanket-rejects web-source providers off macOS, but carries per-provider escape hatches for opencodego, commandcode, cursor, and qoder when their cookie source is manual - the fetch is plain URLSession + cookies, only browser auto-import needs macOS. alibabatokenplan was missing this exemption, so codexbar usage --provider alibaba-token-plan failed on Linux even with a manually configured cookie header. Add the same exemption. Part of #2328.
Ignore model-scoped Claude weeklies (Fable, Routines, Sonnet) when picking the overview progress so an exhausted carve-out no longer empties the bar while Weekly remains. Co-authored-by: Cursor <cursoragent@cursor.com>
Prefer the most-constrained Claude weekly window that still has remaining (including Fable). Only fall back to account Weekly when carve-outs are exhausted so the overview bar stays informative in both cases. Co-authored-by: Cursor <cursoragent@cursor.com>
Overview switcher ignores Fable/Sonnet/Routines carve-outs and tracks account Weekly; those scoped lanes remain on the Claude detail card. Co-authored-by: Cursor <cursoragent@cursor.com>
UsageFetcher was already at the file_length warning ceiling; moving the switcher helpers out keeps the Claude overview fix under the limit. Co-authored-by: Cursor <cursoragent@cursor.com>
Clock rollover tests called selectDays(7) on UserDefaults.standard, which leaked into later ControllerTests and, once wall-clock moved past the Jul 15 fixtures, made totalCost nil under a 7-day window. Co-authored-by: Cursor <cursoragent@cursor.com>
The Claude CLI renders /usage as a redrawing TUI. A half-painted capture frame can drop a character from "Current week (all models)" (e.g. "all modls"), and the exact-string all-models guard in extractScopedWeeklyUsages let that garbled copy through, surfacing it as a bogus second weekly row ("all modls only") next to the real Weekly limit.
Match the all-models bucket with a small edit-distance tolerance so minor capture corruption no longer escapes the filter, and cover it with a StatusProbe parse test.
Address review: apply the tolerant all-models match in the weekly percent/reset extraction too, so a capture where only the corrupted "all modls" label survived still populates the Weekly limit instead of dropping it. Move the new cases into their own test type to stay under type_body_length.
Address review: extractPercent/extractReset now try an exact label match first and only fall back to the fuzzy (garbled-capture) match, so a clean 'all models' row always wins the Weekly percent/reset even when a corrupted 'all modls' copy is captured earlier. Expand tests: exact-wins-over-earlier-garbled, scoped-only leaves weekly nil, single-char insertion is all-models, and a distance-3 corruption stays a visible scoped row (documenting the tolerance boundary).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ard-ci test(repo-hygiene): restore macOS test baseline
# Conflicts: # Tests/CodexBarTests/SpendDashboardControllerTests.swift
…r-20260720 Center stacked menu bar titles
Prevent WidgetKit reload loop in BurnDownRefreshSchedule (fix #2369)
…an-linux-manual-cookie fix: allow Alibaba/Qwen Token Plan usage on Linux with a manual cookie
The Claude OAuth and web usage parsers synthesized a placeholder 0% "Daily Routines" window whenever a routines key (seven_day_cowork, seven_day_routines, ...) was present with a null payload. claude.ai renders from the limits array and shows no routines bar in that case. Treat present-but-null keys as absent so the row only appears with real utilization data.
Stabilize dashboard fixture clock
…scoped-weeklies fix: keep Claude switcher bar on account weekly quota
…ookie-import Support LongCat Firefox cookie imports
…-20260724 Preserve hooks in config persistence
Hide Daily Routines bar when the routines payload is null
…s-weekly-duplicate Fix duplicate weekly row from garbled Claude all-models capture
…outines Show model-scoped weekly rows before Daily Routines
…ie-fallback Cache validated Ollama browser sessions
…-window Fix Kimi quota pace metadata
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
Owner
Author
|
Ownership review complete for upstream cc8da27..02b4ba2 (29 commits). Focused review covered Claude auth/quota parsing, Kimi window identity and sync, Ollama discovery/retries, CLI/menu/widget runtime behavior, config hooks, Linux coverage, and QuotaKit release/branding boundaries. QuotaKit-specific adaptations and validation are documented in the PR body. Local gates are green: swift build, full lint, focused suites, and make test (764 selections; 64/64 groups; zero failures/retries). Waiting on required CI for exact head 26b90b1. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Upstream range
cc8da27cec92029a6435bfee4a703a719290234e02b4ba278c81e667d2e5587d0ceb9eaf1d83f854steipete/CodexBarReviewed risk areas
QuotaKit adaptations
Validation
git diff --checkswift buildPARSER_LINT_BASE=origin/main ./Scripts/lint.sh lintmake test: 764 selections, 64/64 groups passed, no retries or failuresNo
CodexBarMobile/orShared/files changed, so the iOS simulator lane is not implicated by this range.