0.21.0 (2026-09-23)
✨ Features
- align account signature and quota behavior (46ad6f3)
- cloud-account: keep the Antigravity CLI on the account the IDE switched to (#261) (94be28a)
- cloud-account: sync Google OAuth credentials to local CLI stores (f470946)
- cloud: add account health recovery and media hardening (0845e04)
- cloud: add opt-in weekly quota warmup (b61d75a)
- cloud: add weekly quota view with explicit empty states (2017089)
- cloud: add weekly quota view with explicit empty states (7f0f7e9)
- harden proxy protocol compatibility (8616320)
- harden proxy streaming and media compatibility (9842237)
- proxy: add traffic monitoring and thought restoration (993ed7c)
- proxy: promote the completed gateway integration (#266) (573ad66), closes #252 #258 #258
🐛 Bug Fixes
- auth: request openid alongside existing Google OAuth scopes (ec349bc)
- ci: fix broken format, governance and lint checks on main (#312) (e88d867)
- close merged PR safety gaps (5c1130b)
- cloud-account: alert when model quota reaches zero (#267) (0ea6ed4)
- cloud-account: avoid treating generic forbidden errors as rate limits (#269) (23bea60)
- cloud-account: classify OAuth client errors precisely (#270) (b076e0b)
- cloud-account: fail OAuth callback without renderer (#276) (45b0796)
- cloud-account: gracefully skip unmigratable corrupted accounts in getAccounts (#246) (8823dfa)
- cloud-account: handle unrefreshable monitor tokens (#272) (8dc0bf3)
- cloud-account: harden post-merge account flows (577fa86)
- cloud-account: honor priority model availability (#281) (92a91f5)
- cloud-account: match prefixed models to quota groups (#273) (fb5b402)
- cloud-account: normalize auto-switch model config keys (#274) (f92dd7a)
- cloud-account: normalize quota group model identifiers (#275) (86143ff)
- cloud-account: prefer authoritative Linux secret-tool credentials (#277) (855a4a0)
- cloud-account: preserve last used during account import (#279) (58edc5c)
- cloud-account: recover stale auto-switch target state (#282) (bfd104c)
- cloud-account: reject expired unrefreshable token injection (#283) (04af356)
- cloud-account: retry AI credits after token refresh (eaba5b9)
- cloud-account: stabilize legacy device history revisions (#284) (2c6dc5c)
- cloud-account: start monitor after enabling auto-switch (#285) (1e32360)
- cloud-account: stop inventing IDE token expiry (#268) (ebf011e)
- cloud-account: update native keyring credentials atomically (#280) (624bce4)
- cloud-account: use explicit OAuth loopback address (#286) (5387d95)
- cloud-account: validate active account setting values (#287) (c77e733)
- cloud-account: validate imported device profiles (#288) (5e283cf)
- cloud-account: validate imported proxy URLs (#289) (5b3d812)
- cloud-monitor: recover from 401 unauthorized and serialize concurrent polls (#305) (fc8404a)
- cloud: retry quota summary without project after HTTP 403 (9e81ef7)
- credential-store: stop the keychain password prompt on every account switch (#309) (0ba7601)
- harden account sync and proxy state (54aefbc)
- identity-profile: fail closed on profile apply errors (#298) (6a78325)
- macos keychain atomic update (#255) (315adff)
- protect local account index (#253) (a6d76d0)
- proxy: align Responses and tool invocation compatibility (aee466a)
- proxy: align Responses input compatibility (9d02269)
- proxy: classify Google 403s and bound project fallback (f32e71c)
- proxy: harden session and routing state (#291) (6b104a8)
- proxy: honor structured retry delays (#293) (2f7a2ab)
- proxy: make bundled Nest injection explicit (b930d3c)
- proxy: normalize Claude SDK identity and retry compatibility (a75b8dd)
- proxy: preserve active cache entries (#300) (836f75f)
- proxy: preserve JSON schema and image URL compatibility (a1dff2b)
- proxy: preserve malformed model-path captures (#301) (3b9e200)
- proxy: preserve Responses history across reasoning changes (72d9f57)
- proxy: preserve thought signature compatibility across request paths (2b3e8bc)
- proxy: scope model availability by account (#302) (3dc795a)
- proxy: scope rate-limit backoff by model (#292) (5a9c8bc)
- proxy: serialize gateway lifecycle operations (#294) (36b7164)
- proxy: support Gemini tool config aliases (af0d33b)
- prune context cache failure cooldowns (#254) (de6d9ab)
- prune context cache failure cooldowns (#256) (545359c)
- recover crashed renderer (#257) (e1721ef)
- security: harden credential and diagnostic boundaries (#290) (a772032)
- security: make master key recovery non-destructive (e29cfdc)
- security: migrate legacy encrypted account data (#297) (fed2fbe)
- stabilize numeric settings and countTokens errors (3d27360)
- tray: select and configure icons by platform (4d6f86c)
📝 Documentation
- fix broken star history chart (#264) (4f636a6)
- performance: document Electron recorder workflow (4570866)
- proxy: document Responses and tool compatibility (010aec7)
- security: record legacy encryption migration (#303) (03fe87a)
💄 Styles
♻️ Code Refactoring
- http: migrate update and Google requests to Axios (75a2819)
- ipc: close typed IPC error envelopes (8090925)
- proxy: align batch target binding (1eb9884)
- proxy: clarify command tooling and quota routing (09e28d2)
- proxy: encapsulate file storage access (4b06faf)
- proxy: make batch dependencies explicit (343c7ec)
- proxy: split OpenAI route controllers (2ecce75)
- proxy: validate upstream payload boundaries (61c84dd)
- types: validate local and persistence boundaries (cc26c9e)