Highlights
- Codex inside ChatGPT.app detected: Adaptive (agent-aware) refresh recognizes the ChatGPT-bundled Codex and holds the 5-minute active cadence while it works (#3160, #3163).
- Antigravity without the desktop app: menu-bar quota refresh reuses an already signed-in
agyCLI, and logged-out states show sign-in guidance instead of "Launch Antigravity" (#3146, #3161). - Faster OpenCodex spend: pricing each usage entry once drops the spend refresh from ~12 s to ~3 s on a 35k-entry log (#3136).
- Gemini shutdown guidance: Google's consumer-tier shutdown response surfaces the Antigravity migration path again instead of a bare
HTTP 403(#3139). - Codex token parity with tokscale: local token counts now match tokscale on cached usage, out-of-order events, and bare usage rows (#3120).
Fixed
- Gemini: recognize Google's live consumer-tier shutdown — an HTTP 200
loadCodeAssistbody whoseineligibleTierscarriesUNSUPPORTED_CLIENT— instead of surfacing the follow-up quota call as a bareHTTP 403, so the Antigravity migration guidance and the Enable Antigravity provider action appear; the login action also stops deleting~/.gemini/oauth_creds.jsonto launch a sign-in Google rejects (#3139). Thanks @betive37! - Merged Warp icons keep a present-but-unused bonus lane visible and an exhausted bonus in the missing-secondary layout, matching direct Warp rendering; the visible-zero sentinel now survives the renderer's tenth-percent cache quantization (#3165, #3166). Thanks @akshayprabhu200!
- Fixed single-quota menu-bar icons understating remaining usage: a provider's only meaningful quota now renders as one prominent meter instead of half an icon next to a reserved empty lane, including when it arrives in the secondary slot (#3154, #3155). Thanks @akshayprabhu200!
- Codex: tokscale parity for local token counts — cached usage derives from the larger of
cached_input_tokens/cache_read_input_tokens, out-of-order token_count events are detected field-level before watermark latching, and bare usage rows in non-event rollout lines parse (#3120). Thanks @Yuxin-Qiao! - Fixed the Codex cost card blanking Today and recent days when priority processing is in use: row-ownership evidence now accepts the trace database's tier classification instead of discarding whole (day, model) groups (#3150). Thanks @olddonkey!
- Stopped re-merging the Codex plan-utilization history with itself on every refresh and menu open — the legacy-bucket migration now runs only when a non-canonical bucket actually exists (#3141). Thanks @olddonkey!
- Claude: web-cookie refresh works in ad-hoc development builds by routing cookie cache entries to process memory, keeping persistent Keychain storage for signed builds and OAuth credentials; cookie imports prefer Chrome and evaluate other browsers lazily (#3162). Thanks @Zihao-Qi!
- Grok: report period-only CLI-proxy responses as unknown usage instead of 0% when Grok Build has hit its free limit, keeping identity and reset metadata (#3157, #3159). Thanks @anupamchugh!
- OpenRouter: request the latest completed UTC day from the Activity API instead of the current date, fixing the HTTP 400 that suppressed spend history (#3133, #3138). Thanks @kiranmagic7!
- CLI install: report success even when unrelated PATH directories are non-writable, while still listing genuine
codexbarconflicts from earlier PATH entries (#3153). Thanks @yicone!
Performance
- OpenCodex: price each
usage.jsonlentry once with a pre-resolved models.dev catalog and custom-pricing overlay, memoize day/hour buckets per calendar interval, and read the models.dev cache metadata with a plainstatinstead of an extended-attribute read — the OpenCodex spend refresh drops from ~12 s to ~3 s on a 35k-entry log with identical output; existing cost caches are adopted on upgrade, not rebuilt (#3136). Thanks @olddonkey!
Providers
- Codex: Adaptive (agent-aware) refresh detects ongoing Codex activity from the unified ChatGPT.app — the ChatGPT-bundled Codex is recognized at approved locations (signing-validated), recent rollout writes hold the 5-minute active cadence, and an idle open app is not treated as coding activity (#3160, #3163).
- Antigravity: menu-bar quota refresh reuses an already signed-in
agyCLI without requiring the desktop app, and logged-out/keyring-timeout states report CLI sign-in guidance instead of asking users to launch an unavailable app (#3146, #3161). - Antigravity: map retired Flash wire IDs to their current tier, and count local conversations as an offline fallback when the desktop app is unavailable (#3119). Thanks @Yuxin-Qiao!
- Qwen Cloud: restored Brave browser support in cookie import (#3148). Thanks @umutkeltek!
Usage & Spend
- Spend dashboard: silently refresh independent providers (Claude/Cursor) when their token publications update, bucket the activity heatmap with the configured IANA timezone, and stop coalescing display-affecting ownership and revision changes (#3106). Thanks @Yuxin-Qiao!
- Spend: add tokscale-compatible local readers for Cursor and Antigravity local history (#3113). Thanks @Yuxin-Qiao!
- Added CHF (Swiss Franc) to the display currency options (#3149).