github lbjlaq/Antigravity-Manager v4.9.2-beta.3
Antigravity Tools v4.9.2-beta.3

latest release: v4.9.2-beta.4
pre-release3 hours ago
  • [Claude 5.5 Thinking Signature Recognition & Gatekeeper Hardening] Resolve Upstream 400 Missing Signature Error for Claude 5.5 Tiered Models via OpenAI API (Fixes #3587):
    • Claude 5.5 Protobuf Signature Support: Upgraded is_claude_signature to recognize official Claude 5.5 Protobuf signatures (prefixed with CAQS / wrapped as Q0FR, corresponding to Protobuf tags 0x08 0x04 0x12) and multi-layer Base64 decoding, preventing native valid signatures from being stripped as foreign.
    • Outbound Thinking Block Signature Guard: Added signature admission checks in finalize_gemini_contents_thinking_with_session for Claude turns. If no valid signature is anchored in the turn, sending thought: true blocks is strictly intercepted, safely downgrading thoughts to wrapped <think> plain text to eradicate Google's messages.N.content.0.thinking.signature: Field required 400 rejection.
    • OpenAI Handler Retry Loop Circuit Breaker: On upstream 400 signature retry attempts, actively purged poisoned signatures in ThinkingStore, stripped signature from in-flight messages, and converted unanchored reasoning_content into plain text, guaranteeing self-healing on the same account.
  • [Active Account Sync] Fetch Current Account on Mini View & Accounts Page Init and Resolve Mini View Refresh Deadlock (PR #3589, Thanks to @EricZhou05):
    • Mini View Mount Sync: MiniView now calls fetchCurrentAccount() on mount, fixing the persistent No account selected state when the mini window is opened directly from a sub-page.
    • Refresh Deadlock Removed: Dropped the currentAccount early-return guard in handleRefresh; quota is refreshed only when an account exists, but the current account is always re-fetched, breaking the "no account → no request → no account" loop.
    • Accounts Page "Current" Badge Restored: The Accounts page now fetches the current account on mount, so the "Current" badge renders correctly when the page is opened directly or reloaded.
  • [Gateway Core Stability & Pipeline Schema Hardening] Eradicate 503 Inverted Timeouts, Isolate Clients from IDE, Harden 429 Retry Engine & Bound Signatures DB (PR #3590, Supersedes PR #3584, Fixes #3253, Fixes #3506, Fixes #3585, Fixes #3586, Thanks to @cubelikeplayDaniel):
    • Eradicate 503 Token Acquisition Timeouts: Introduced a 30s background pre-refresh loop (refreshing when token TTL < 600s), added 3.5s fast failover and lock timeouts on the hot path, and expanded outer safety guards to 15s, eliminating inverted timeouts and queue deadlocks under concurrency.
    • Process & Storage Isolation for Classic Client and IDE: Unified antigravity_ide variant filtering and removed implicit fallback to IDE database/device paths when Classic is not found, preventing cross-client pollution.
    • Harden 429 Retry State Machine: Prevented 50ms spinloops on single-account 429s; properly identified Google RESOURCE_EXHAUSTED errors to allow full-pool rotation before giving up.
    • Gemini Schema Protobuf Deep Normalization: Normalized non-object properties to {}, pruned orphan required keys, and restored type: "object", preventing upstream 400 Bad Request; preserved raw multiline description formatting.
    • Semver Tuple Parsing & Date Snapshot Filtering: Migrated to (u32, u32) semantic version comparisons to prevent float truncation on minor releases like 3.10; filtered 8-digit date snapshots.
    • Gatekeeper Sentinel Injection: Auto-injected fallback sentinel thought signatures for non-Claude/custom models on multi-turn tool calls lacking signatures, preventing upstream 400 AST rejections; synchronized requestId and labels.trajectory_id.
    • Tool Signatures DB Bounding & TTL Eviction: Enforced a 10,000-row cap and a 7-day TTL rolling prune on tool_signatures, eliminating disk budget deadlocks in proxy_logs.db.
  • [Adaptive Viewport Positioning & Dropdown Anti-Truncation] Fix GroupedSelect Dropdown Truncation and Inability to Scroll Near Viewport Bottom (PR #3591, Thanks to @zepeng-jin):
    • Intelligent Auto-Flip Placement: Dynamically calculates remaining space above and below the trigger button, flipping the dropdown upward when bottom clearance is under 260px and top space is larger, resolving overflow clipping on bottom cards (such as custom model mappings).
    • Fixed Viewport Positioning & Adaptive Height: Upgraded portal styling to position: fixed with dynamic maxHeight bounds (retaining viewport padding) and horizontal overflow boundaries, ensuring full visibility and smooth scrolling across all resolutions and scroll states.

  • [Claude 5.5 思考签名识别与出站准入守卫加固] 解决 Claude 5.5 Tiered 模型在 OpenAI 兼容端多轮调用必报 400 签名缺失错误 (Fixes #3587):
    • Claude 5.5 Protobuf 签名特征支持: 升级 is_claude_signature 判定,补充对官方以 CAQS 开头(经包装为 Q0FR,对应二进制 Protobuf 标签 0x08 0x04 0x12)的 Claude 5.5 真实签名识别与多层 Base64 解析,杜绝原生合法签名被误当异构签名剔除。
    • 出站思考块签名守卫门禁: 在 finalize_gemini_contents_thinking_with_session 中对 Claude 轮次增加有效签名准入检查。若本轮未能安置合法签名,严禁发送 thought: true 块,自动安全降级为普通正文(<think> 纯文本形式出站),彻底消除 Google 校验器 messages.N.content.0.thinking.signature: Field required 报错。
    • OpenAI 兼容端签名重试阻断: 命中上游 400 思考签名错误重试时,定向净化 ThinkingStore 污染签名的同时,主动剥离入参 messages 的 signature 并将未签名 reasoning_content 安全转换为普通正文,确保原地重试必能自愈成功。
  • [当前账号状态同步] 修复悬浮窗与账号管理页初始化未拉取活跃账号及悬浮窗刷新死锁 (PR #3589, Thanks to @EricZhou05):
    • 悬浮窗挂载主动同步: MiniView 挂载时主动调用 fetchCurrentAccount(),解决直接从子页面打开迷你悬浮窗时长期停留在 No account selected 的问题。
    • 解除刷新按钮死锁: 移除 handleRefresh 对 currentAccount 的前置拦截,仅在存在账号时刷新配额,但始终重新拉取当前账号,打破“无账号不请求、不请求无账号”的循环。
    • 账号页「当前」标签恢复: Accounts 页面挂载时同步拉取当前账号,修复直达或刷新账号管理页时「当前」标签不显示的问题。
  • [网关核心稳定性与管道规整加固] 根治 503 超时倒置、客户端与 IDE 隔离、429 重试状态机与 Schema 规整防爆 (PR #3590, Supersedes PR #3584, Fixes #3253, Fixes #3506, Fixes #3585, Fixes #3586, Thanks to @cubelikeplayDaniel):
    • 503 Token Acquisition 超时根治: 引入 30s 定时后台预刷新任务(生命周期 < 600s 提前刷新),热路径获取与 Project ID 解析增加 3.5s 快速切号与锁等待超时守卫,网关层全局守卫放宽至 15s,彻底根除弱网与高并发下 5s 超时倒置与无界排队。
    • 经典版客户端与 IDE 进程/数据双重隔离: 统一覆盖 antigravity_ide 命名变体,并在探测经典版缺失时剔除隐式降级至 IDE 路径逻辑,杜绝跨应用进程与数据库互相污染。
    • 429 速率限制重试状态机加固: 单账号 429 严禁 50ms 空转刷死;准确识别 Google 官方 RESOURCE_EXHAUSTED 错误,健全号池完整轮换深度。
    • Google Gemini Schema Protobuf 深度规整: 规整非对象 properties 为 {},剔除无效 required 键名,补齐 type: "object",解决上游 400 Bad Request;保留原始换行排版不被折叠。
    • Semver 元组化解析与日期快照过滤: 采用 (u32, u32) 精准版本比对,避免未来如 3.10 等次版本号被浮点截断;主动过滤 8 位日期快照。
    • 出站门禁哨兵签名兜底注入: 为非 Claude 及自定义模型在流式多轮缺少 thoughtSignature 时自动注入哨兵签名,防止 Gemini AST 校验 400 拒绝;提前同步 requestId 与 labels.trajectory_id。
    • Tool Signatures 防爆与 TTL 淘汰: 为 tool_signatures 设定 10,000 行容量硬上限与 7 天 TTL 滑动淘汰,避免高并发长对话下 proxy_logs.db 磁盘配额死锁。
  • [视口边界自适应与防截断治理] 修复 GroupedSelect 下拉菜单靠近视口底部时被截断与无法滚动的溢出问题 (PR #3591, Thanks to @zepeng-jin):
    • 智能视口翻转 (Auto-Flip): 动态计算视口上下方剩余空间,当下部空间不足 260px 且上方更充裕时自动向上翻转展开,彻底解决底部卡片(如自定义模型映射)下拉菜单穿底的问题。
    • Fixed 视口定位与动态高度约束: 将 Portal 浮层定位升级为 position: fixed,并动态计算 maxHeight(保留视口上下安全边距)与横向防溢出边界保护,确保在小窗口及任何滚动场景下选项与输入框完整可见且滚动顺畅。

What's Changed

  • fix(cowork,proxy): harden deep compact lifecycle, eliminate 503 timeouts, isolate clients and align retry strategy by @cubelikeplayDaniel in #3584
  • fix(ui): sync active account on init and resolve mini view refresh deadlock by @EricZhou05 in #3589
  • fix(proxy): harden pipeline schema normalization, model versioning and tool signature pruning by @cubelikeplayDaniel in #3590

Full Changelog: v4.9.2-beta.2...v4.9.2-beta.3

Don't miss a new Antigravity-Manager release

NewReleases is sending notifications on new releases.