Skip to content

Releases

v0.3.1: installer default source follows the package version

Choose a tag to compare

@shaomingbo shaomingbo released this 05 Sep 11:26

Fix

v0.3.0 shipped with DEFAULT_SOURCE still pinned to #v0.2.1, so a plain npx install from the new tag reconciled the profile back to the old release. The default now derives from the package's own version, and the installer test asserts against the same value so this can never drift again.

Everyone who installed v0.3.0 via npx should re-run install from v0.3.1 (or pass --source explicitly).

Commit: 81e76ad (this release tag points here)

v0.3.0: agy CLI wire fingerprint — Gemini 3.8 Flash unlocked

Choose a tag to compare

@shaomingbo shaomingbo released this 05 Sep 11:17

What changed

  • Gemini 3.8 Flash unlocked: drop the legacy VS Code extension wire headers (X-Goog-Api-Client, Client-Metadata) and align the User-Agent with the official agy CLI (pi-antigravity v0.7.2, PR #35). Tokens presenting the old fingerprint were classified into the legacy 25-model catalog and 404ed on every Gemini 3.8 runtime id; with the CLI fingerprint the same tokens discover a 33-model catalog and generate on all 3.8 tiers.
  • Gemini 3.8 Flash reasoning params: thinkingBudget travels on the wire per advertised variant — low 1000 / medium 4000 / high -1 (dynamic); off disables thinking.
  • loadCodeAssist body trimmed to {metadata:{ideType:"ANTIGRAVITY"}} per the CLI wire shape.
  • Gemini 3.8 Flash registered with suffix routing (off/low → -low, medium → -medium, high/xhigh → -high), 1M context / 65,536 output, text+image. The 404 fallback ladder to the 3.7 tiered runtime stays as belt-and-braces.

Verification

  • 81/81 unit tests pass (npm run check).
  • Live end-to-end through the loopback proxy on a real account: gemini-3.8-flash (low and high) → gemini-3.8-flash-low/-high first try, HTTP 200, content verified — no fallback.
  • Quota summary and project discovery re-verified under the new fingerprint.

Commit: 95e4bfe (this release tag points here)

v0.2.1 — projectless account quota fix

Choose a tag to compare

@shaomingbo shaomingbo released this 29 Aug 16:36

Fix missing quota cards for newly added consumer accounts that do not receive a project id from loadCodeAssist.\n\n- Reuse generation's stable local project fallback for quota discovery\n- Preserve normal per-runtime quota even when aggregate summary is paid-tier gated\n- Add a regression for projectless accounts\n- Make the OAuth callback listener port injectable in tests so release gates do not collide with a live DSH login\n\nVerified against the reported account (email omitted from release notes): 21 runtime models, 21 quota entries, minimum remaining 100%. The exact usage-service repro changed from RED to GREEN. 78/78 tests pass.

v0.2.0 — multi-account pool

Choose a tag to compare

@shaomingbo shaomingbo released this 29 Aug 16:23

Add a local Antigravity account pool with per-account quota visibility and switching.\n\n## Accounts\n- Save multiple Google OAuth accounts; adding an account opens Google's account chooser\n- Migrate the existing v1 single-account credential file automatically, without re-login\n- Switch the active account manually from Settings; in-flight requests keep their original token/project snapshot\n- Refresh tokens independently per account and never expose them through browser RPC\n\n## Quota\n- Show each account's lowest known remaining quota, reset time, and expandable runtime-model details\n- Cache quota independently per account and fetch all accounts with concurrency 2\n\n## Optional failover\n- Persist an automatic quota failover toggle, default OFF\n- Rotate only on explicit quota-exhausted 429 responses; ordinary rate limits, auth/network errors, and 5xx do not switch\n- Serialize concurrent failover and preserve a manual selection made during an automatic attempt\n\n## Verification\n- 77/77 automated tests\n- Real v1 credential copy migrated to v2 with the saved account intact\n- Real Gemini 3.7 call through the migrated account returned 200 / pool-ok\n- Real per-account quota fetch returned 21 model quota entries\n- npm pack and diff checks passed

v0.1.4

Choose a tag to compare

@shaomingbo shaomingbo released this 29 Aug 15:05

Fix Gemini cache-hit and reasoning-token reporting.\n\n- Map upstream cachedContentTokenCount to OpenAI prompt_tokens_details.cached_tokens, which pi-ai records as cache reads\n- Map thoughtsTokenCount to completion_tokens_details.reasoning_tokens\n- Preserve a cache count when a later partial usage chunk omits the optional field\n\nReal-account verification with Gemini 3.7 and a repeated 25,024-token prompt: cold request had no cache count; requests 2 and 3 each reported 20,453 cached tokens (~81.7%). A separate 60,023-token probe reported 57,313 cached tokens (~95.5%). Existing historical sessions cannot be repaired because the upstream detail was discarded before persistence; new calls after restart will report correctly.

v0.1.3

Choose a tag to compare

@shaomingbo shaomingbo released this 29 Aug 13:43

Fix real Antigravity inference and Gemini tool replay.\n\n- Send requestType: "agent" instead of the obsolete numeric enum 1\n- Pin consumer generation to daily-cloudcode-pa.googleapis.com; prod is the control plane and returned false RESOURCE_EXHAUSTED for usable subscription quota\n- Use lowercase userAgent: "antigravity"\n- Add Antigravity's skip_thought_signature_validator sentinel when replaying Gemini function calls through OpenAI chat history\n- Add endpoint/request-envelope regressions and parity notes against CLIProxyAPI commit f0de1d0\n\nVerified against a real signed-in account: Gemini 3.7, Claude Sonnet 4.6, and GPT-OSS 120B generation succeeded; Gemini/Claude/GPT-OSS two-turn tool calls succeeded.

v0.1.2

Choose a tag to compare

@shaomingbo shaomingbo released this 29 Aug 13:24

Fix Antigravity models not appearing in the DSH model picker.\n\n- Omit unsupported thinking levels from reasoningEfforts instead of setting them to null; llm-pi-ai only permits null for off and previously refused the entire provider route\n- Remove the undeclared model-level reasoning field; llm-pi-ai derives reasoning capability from reasoningEfforts\n- Make diagnostics report actual route presence\n- Add regression tests for the exact llm-pi-ai validation invariant and installed schema

v0.1.1

Choose a tag to compare

@shaomingbo shaomingbo released this 29 Aug 13:07

Fix the usage section showing no quota numbers.

  • Read per-model quota from the nested quotaInfo: {remainingFraction, resetTime} field of fetchAvailableModels (top-level fields are still accepted)
  • Filter tab_* / chat_* placeholder models from the usage list and sort it
  • Show quota reset times in the Settings → Antigravity usage section

v0.1.0

Choose a tag to compare

@shaomingbo shaomingbo released this 29 Aug 12:56

Initial release.

  • Google Antigravity subscription OAuth sign-in (browser PKCE via localhost:51121, paste-URL fallback for remote browsers)
  • Loopback OpenAI-compatible proxy (127.0.0.1:51122) to Cloud Code Assist: streaming SSE, tool calls, image input, thinking → reasoning_content, quota-friendly 429 mapping, endpoint/runtime-model fallbacks
  • Seven-model antigravity route for DSH (Gemini 3.7/3.6/3.5 Flash, Gemini 3.1 Pro, Claude Sonnet/Opus 4.6, GPT-OSS 120b) provisioned via per-provider settings merge
  • Settings → Antigravity section: sign-in card, account status, model catalog, best-effort quota usage
  • Fixed-tag no-argument installer per the DSH plugin spec (npx --yes github:shaomingbo/dsh-subscription-antigravity#v0.1.0); 61 offline tests; zero runtime dependencies

Unofficial integration — not affiliated with or endorsed by Google.