Sync fork to upstream 0.31.1 + preserve color/separator (May 2026)#18
Merged
Conversation
* fix: prefer Codex last token usage * docs: add Codex cost spike changelog * fix: avoid stale divergent Codex token gaps --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Clarify unofficial Kimi K2 provider * docs: add Kimi K2 changelog --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
Adds xAI Grok provider support via the Grok CLI integration, including local identity detection, billing response decoding, provider registration, docs, tests, and changelog credit.\n\nCo-authored-by: taibaran <taibaran@users.noreply.github.com>
* fix(grok): treat expired credentials as missing in fetch Follow-up to the Codex P1 review on steipete#965 (`cbd30a4e`). Grok session tokens expire after ~7 days. The auth-error suppression in `GrokStatusProbe.fetch` previously only checked `credentials == nil`, so an `auth.json` whose `expires_at` was already in the past still counted as "renderable" and masked the RPC auth failure. The probe would return a successful snapshot carrying stale identity and no `grok login` hint while billing silently 401s — users had to inspect logs to figure out they were logged out. Treat expired records the same as missing credentials when deciding whether to swallow the RPC error, and drop them from the rendered snapshot so the UI doesn't surface a stale email/team for an inactive session. Adds a unit test covering past/future/missing `expires_at`. * test(grok): include grok in SettingsStoreTests provider-order fixture CI on steipete#976 surfaced a hardcoded provider-order list in SettingsStoreTests.swift:1161 that wasn't updated when grok was added in steipete#965. The Grok-only test filter I ran locally before steipete#965 skipped this file, so the breakage only became visible on the next post-merge CI run. Append .grok to the expected ordering so the suite passes. All 2565 tests pass under Xcode 26.5 (51 in CodexBarTests + plenty more). * fix: preserve Grok identity after refreshed billing * style: format Grok auth regression --------- Co-authored-by: taibaran <taibaran@users.noreply.github.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
* test: stabilize status menu switcher refresh * test: prevent switcher refresh detection race
* Block cross-host redirects for OpenCode Go * fix: compile OpenCode Go redirect session * test: cover OpenCode Go redirect guard * docs: add OpenCode Go redirect guard changelog --------- Co-authored-by: Pavlo Barzdun <50662594+pavbar@users.noreply.github.com> Co-authored-by: pavbar <pavlo@barzdun.com>
Co-authored-by: pavbar <pavlo@barzdun.com>
Show Codex Spark usage as a named extra quota lane for Codex OAuth and OpenAI dashboard usage paths.\n\nThanks @LeoLin990405.\n\nProof:\n- swift test --filter CodexAdditionalRateLimitsTests\n- swift test --filter OpenAIDashboardSparkTests\n- swift test --filter MenuCardModelCodexProjectionTests\n- swift test --filter MenuCardAntigravityTests\n- swift test --filter OpenAIDashboardModelsTests\n- swift test --filter CLIOpenAIDashboardCacheTests\n- make check\n- autoreview clean\n- CI green for 4f9c902\n\nFixes steipete#1177\n\nCo-authored-by: Zhongyue Lin <101193087+LeoLin990405@users.noreply.github.com>
Add named AWS profile authentication for Bedrock usage and cost history. Maintainer follow-up preserves credential precedence: explicit profile mode uses the selected profile without projecting saved static keys, AWS CLI source profiles can still read inherited environment credentials, and merged static keys continue to win when no profile mode is explicitly selected. Co-authored-by: Oleksandr Soldatov <oleks.soldatov@gmail.com>
Localize popup panels, menu labels, and provider settings across supported languages. Maintainer follow-up preserves provider-supplied organization names and localizes dynamic cookie-source subtitles through shared templates. Co-authored-by: Shun Min Chang <ji394m6y7@gmail.com>
…bar-cask Update Homebrew cask install command
pt-BR was missing 178 of en.lproj's 785 keys, so those strings fell back to English (a mixed-language UI for Brazilian users). Translate all missing keys to reach full parity with the English base, keeping the same key order as en.lproj. Validated with `plutil -lint`; pt-BR and en key sets and format specifiers (%@, %1$@, %d%%) match exactly (785 keys each, no missing or extra keys).
…localization Complete Brazilian Portuguese (pt-BR) localization
Add Swedish localization
Brings johnlarkin1/CodexBar up to parity with steipete/CodexBar @ 0.31.1 (744 commits since the last sync). Establishes a real merge-base so future upstream syncs no longer re-fight historical conflicts. Resolution strategy: take upstream for the whole conflicted tree, then re-apply the fork's genuinely-unique features on top in a follow-up commit. - Adopt upstream's pace / projection / time-window machinery (HistoricalUsagePace, UsageStore+HighestUsage, MenuBarMetricWindowResolver); dropped the fork's parallel implementations and the 5 Weekly* files. - Keychain security-CLI default is now upstream's default (.securityCLIExperimental), so the fork override is no longer needed. - Kept fork tooling: Makefile (fork-release guards), signing scripts (APPLE_* env), version.env scheme, fork README. - UsageColorLevel.swift / MenuBarSeparatorStyle.swift retained for re-wiring of the color + separator features in the follow-up commit. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ler crash The prior squash-style upstream syncs meant several fork-touched files were silently auto-merged into mashups (e.g. a duplicated applicationWillTerminate). Reset all of Sources/ to upstream/main's exact content so the baseline is pure upstream 0.31.1, keeping only the two fork-only files (UsageColorLevel, MenuBarSeparatorStyle) for re-wiring next. Also work around a swift-frontend IRGen crash (SIGABRT) in AccountSwitcherView.compactButtonTitle under the Swift 6.2.3 + macOS 26.4 SDK toolchain: the nested makeTitle() captured the mutable emailWidth/workspaceWidth vars. Pass them as parameters instead. Pure upstream 0.31.1 does not build on this toolchain without this change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-applies the fork's two genuinely-unique menu-bar features on top of the upstream baseline, plus the macOS 26 Liquid Glass color handling. Color-coded icons (toggle in Advanced ▸ "Color-coded icons", default on): - UsageColorLevel.tintColor(for:) interpolates green→orange→red by session usage; applied in both StatusItemController icon paths (merged + per-provider). - IconRenderer.makeIcon(tintColor:) draws shapes directly in the tint color and marks the image non-template so macOS 26 Liquid Glass keeps the RGB pixels (older macOS still tints the template via the button's contentTintColor). Tint participates in the icon cache key and the render-skip signatures. - StatusItemController observes effectiveAppearance on macOS 26+ to re-render baked colors on dark/light switches. Separator style (Display ▸ "Separator", dot/pipe, default dot): - MenuBarSeparatorStyle drives the character between percent and pace in the "both" menu-bar display mode. Settings plumbing for colorCodedIcons + menuBarSeparatorStyle across SettingsStoreState / SettingsStore / +Defaults / +MenuObservation. Bump version to 0.31.1-jl.1 (build 75). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
UsageColorLevelTests: nil passthrough, high-usage red clamping, monotonic redness, low-usage green dominance. MenuBarSeparatorStyleTests: separator characters, id/rawValue, allCases, parse. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
What
Brings
johnlarkin1/CodexBarup to parity withsteipete/CodexBar@0.31.1(744 upstream commits since the last sync) while preserving this fork's genuinely-unique features.How it was resolved
Prior syncs were squash/flatten merges, so the merge-base had drifted back to Feb 9 and every sync re-fought historical conflicts (166 conflicts this time, mostly spurious drift in provider/test/doc files the fork never intentionally touched). This PR does a real
git merge upstream/main, which re-establishes a true merge-base —git merge-base HEAD upstream/mainis now upstream HEAD, so future syncs are trivial.Strategy: take upstream for the entire conflicted tree, normalize
Sources/+Tests/to pure upstream (to eliminate silent auto-merge mashups — e.g. a duplicatedapplicationWillTerminate), then re-apply only the fork-unique features on top.Kept (fork-unique)
UsageColorLevel, default on) — green→orange→red by session usage, including the macOS 26 Liquid Glass handling (icons drawn non-template in the tint color so the color survives;effectiveAppearanceobserver re-renders on dark/light switch).MenuBarSeparatorStyle, dot/pipe) for the "both" menu-bar display mode.APPLE_*),version.envscheme (now0.31.1-jl.1), fork README.UsageColorLevelTests,MenuBarSeparatorStyleTests.Dropped (now redundant with upstream)
HistoricalUsagePace/UsageStore+HighestUsage/MenuBarMetricWindowResolverinstead (5Weekly*files removed)..securityCLIExperimental.Notable fix
Pure upstream 0.31.1 does not compile under the local Swift 6.2.3 + macOS 26.4 SDK toolchain: a nested
makeTitle()inAccountSwitcherView.compactButtonTitlecaptured mutablevars and crashed swift-frontend (IRGen SIGABRT). Reworked to pass the widths as parameters. Good candidate to send upstream.Verification
swift build✅swift test— 3130/3130 logic-pass (2 timing/coalescing suites flake only under full-suite CPU load; both pass in 0.3s in isolation)./Scripts/lint.sh lint✅ 0 violations./Scripts/compile_and_run.sh✅ packaged, signed, launched ("OK: CodexBar is running")🤖 Generated with Claude Code