- [Restrict Internal Warmup Endpoint to Direct Loopback Only] (PR #3660, Fixes #3659, Thanks to @Quirrel-zh):
- Direct TCP Loopback Verification: Introduced
is_direct_loopbackinip_filter.rs, validating requests strictly against underlying TCP socket peer information (ConnectInfo, with full support for IPv4, IPv6, and IPv4-mapped IPv6 loopbacks) while ignoring spoofableX-Forwarded-ForandX-Real-IPheaders. (PR #3660, Fixes #3659, Thanks to @Quirrel-zh) - Strict 403 Rejection for Non-Loopback & Off-Mode Requests: Elevated internal endpoint verification in
auth.rsahead of any general proxy auth checks. Whether proxy authentication is enabled or disabled (auth_mode = Off), or whether external requests supply valid API keys / User Tokens, all non-loopback calls to/internal/*are immediately blocked with403 Forbidden. Tightened service stop bypass logic to completely eliminate quota draining, unauthorized upstream forwarding, and false account bans. (Ref #3659, PR #3660)
- Direct TCP Loopback Verification: Introduced
- [Global Endpoint Health Sharing & Timeout Convergence for loadCodeAssist and Quotas] (PR #3657, Fixes #3635, Ref #3525, Thanks to @cubelikeplayDaniel):
- Host-Level Cross-Module Endpoint Health Sharing: Introduced
get_global_endpoint_health()andextract_endpoint_hostinupstream/client.rs, aggregating endpoint health by FQDN host across differing API paths. Chat streaming, project resolution (loadCodeAssist), and quota fetching (fetchAvailableModels,retrieveUserQuotaSummary) now seamlessly share failure cooldowns. If any module detects a dead endpoint, all modules immediately reprioritize healthy Prod endpoints, eliminating redundant cascading waits across subsystems. (PR #3657, Fixes #3635, Ref #3525, Thanks to @cubelikeplayDaniel) - Single-Endpoint Timeout Convergence & Pool Idle Tuning: Enforced a 3s timeout on
project_resolver::fetch_project_idand a 5s timeout across quota fetchers, completely preventing hot-path timeout expiration, project ID fallback degradation, and negative caching; alignedconnect_timeout(5s)andpool_idle_timeout(45s)inhttp.rsandproxy_pool.rsto match Google GFE silent disconnect windows. (PR #3657, Thanks to @cubelikeplayDaniel)
- Host-Level Cross-Module Endpoint Health Sharing: Introduced
- [Unified Account Quota Grouping & Details Dialog Polish]:
- Unified Account Quota Grouping: Aligned with Google Antigravity's native unified quota mechanism by moving away from individual per-model quota cards towards unified "Gemini Models" and "Claude & GPT Models" groups. Dashboard "Current Account" card, account cards, table views, and draggable lists now elegantly aggregate 5-hour rolling quotas alongside 7-day weekly progress bars, live refresh countdowns, cycle token usage, and weekly bottleneck indicators.
- Account Details Dialog Restyling & i18n Fix: Overhauled the
AccountDetailsDialogwith refined card styling, smooth gradient progress indicators, model icons, and natural language relative reset countdowns. Fixed thinking budget rendering issues caused by nested i18n key collisions, and streamlined account priority inputs. - Deduplicated Account Status Badges: Refined account status badges across card and list views to suppress secondary "Proxy Disabled" pills when an account is already marked with a global "Disabled" status, eliminating visual clutter.
- Comprehensive 12-Language Localization: Synchronized all newly introduced quota grouping labels, weekly bottleneck warnings, cycle token tooltips, and detail modal texts across all 12 supported locales.
- [Traffic Monitor Multi-Metric Analytics & Responsive Layout]:
- Dedicated Duration Column & TTFT Metrics: Split duration into a dedicated column, surfacing Time to First Token (TTFT) metrics and cache hit indicators for transparent stream latency observability.
- Requested Model vs Physical Model Visualization: Clearly presented client-requested models alongside upstream physical execution models and cache statuses.
- Column Width Dragging & Adaptive Sizing: Fixed inverted drag directions on table headers while maintaining responsive width adaptability.
- 12-Language Full Coverage: Completed full i18n localization for all traffic monitor headers, tooltips, TTFT, and cache tags across all 12 supported locales.
- [Dashboard Dark Theme Overhaul & Inverted Hero Card]:
- Elevated Dark Surface Architecture: Overhauled dark surfaces to eliminate flat muddy blacks with distinct luminance levels, luminous state badges, and crisp border lighting.
- Inverted Focal Hero Card: The "Account Base Assets" card mirrors the light theme's inverted aesthetic—featured as an ink-black card in light mode, and inverted into an elegant luminous platinum card in dark mode, securing the primary focal anchor.
- [收紧内部预热端点为仅限本机回环访问] (PR #3660, Fixes #3659, Thanks to @Quirrel-zh):
- 严格限制 TCP 回环来源访问: 在
ip_filter.rs中新增is_direct_loopback,仅依据底层 TCP 对端地址(ConnectInfo,完整适配 IPv4、IPv6 与 IPv4 映射 IPv6 回环地址)判定是否为本机回环,坚决不读取易被外部伪造的X-Forwarded-For与X-Real-IP请求头。 (PR #3660, Fixes #3659, Thanks to @Quirrel-zh) - 非回环与鉴权关闭状态强阻断: 在
auth.rs中将内部端点校验提升至任何鉴权模式判断之前。无论系统全局代理鉴权是否开启(包括auth_mode = Off模式),或外部请求是否携带普通 API Key / User Token,只要是非本机回环发往/internal/*的调用,一律直接拒绝拦截(403 Forbidden);并收紧代理停服状态下的放行规则,根治局域网/公网暴露时无凭证探测、任意邮箱预热上游配额盗刷与账号误封禁隐患。 (Ref #3659, PR #3660)
- 严格限制 TCP 回环来源访问: 在
- [全局共享端点健康状态并收敛 loadCodeAssist 与配额查询超时] (PR #3657, Fixes #3635, Ref #3525, Thanks to @cubelikeplayDaniel):
- 跨模块端点健康全局记忆与主机名归一化: 在
upstream/client.rs中引入全局单例get_global_endpoint_health()与extract_endpoint_host,以主机名(Host)为粒度对齐不同 API 路径的健康状态。主聊天网关、项目解析(loadCodeAssist)与后台配额查询(fetchAvailableModels、retrieveUserQuotaSummary)全面共享端点健康记忆,任一模块发现故障,所有模块立即动态重排候选端点优先路由至健康的 Prod 节点,彻底杜绝跨模块在死端点上重复踩坑。 (PR #3657, Fixes #3635, Ref #3525, Thanks to @cubelikeplayDaniel) - 单端点请求超时紧凑收敛与连接池防断流: 为
project_resolver::fetch_project_id引入 3s 单点超时,为quota各接口引入 5s 单点超时,彻底消除级联等待超限导致的项目 ID 降级与负缓存;并在http.rs与proxy_pool.rs中统一收敛connect_timeout(5s)与pool_idle_timeout(45s),杜绝 Google GFE 空闲断流引发的死连接复用异常。 (PR #3657, Thanks to @cubelikeplayDaniel)
- 跨模块端点健康全局记忆与主机名归一化: 在
- [账号分组配额重构与详情视图多维体验重塑]:
- 配额分组统一聚合与卡片视图重塑: 对齐 Google Antigravity 原生配额机制,全面废弃按单一模型分散展示配额的旧模式,重构为按「Gemini 模型」与「Claude & GPT 模型」两大核心分组展示。在首页仪表盘「当前账号」卡片、账号管理卡片、表格与拖拽列表中统一聚合实时 5H 滚动配额与 7 天周配额进度条,动态显示刷新倒计时与本周期 Token 消耗,支持短板压制与耗尽状态精准提示。
- 配额详情弹窗精致度重塑与 i18n 异常修复: 彻底重构「配额详情(
AccountDetailsDialog)」弹窗。修复思考预算字段因 i18n 键嵌套对象导致的显示错误;优化账号优先级设置交互布局;为各具体模型引入带平滑色彩过渡的进度条、模型专属高亮图标与自然语言重置时间倒计时。 - 状态标签互斥去重: 优化账号状态徽章展示逻辑。当账号因 Token 失效等原因触发完全「已禁用」时,自动折叠并隐藏次级的「反代已禁用」标签,杜绝冗余标签并排挤占界面。
- 全 12 种多国语言本地化完备支持: 全量补充并同步配额分组名称、周配额压制提示、周期 Token 统计与详情弹窗字段至全部 12 种语言本地化文件(含简繁中文、英语、日语、韩语、西语、俄语、葡语、土耳其语、越南语、阿拉伯语与缅甸语)。
- [流量日志多维指标增强与自适应体验]:
- 耗时独立列与首字耗时 (TTFT) 展示: 流量日志表格中将耗时独立成列,并新增首字耗时(TTFT)精确指标与缓存命中状态展示,直观洞察流式首包与链路延迟。
- 请求模型与真实物理模型分层展示: 模型列清晰呈现客户端「请求模型」与调度实际使用的「物理模型」,支持透明追溯上游物理执行版本。
- 列宽拖拽交互修复与自适应对齐: 修复列宽拖拽手势反向问题,全面支持平滑拉拽与响应式宽度自适应。
- 多国语言全量同步: 全量补充并补齐流量日志新表头、耗时/TTFT、缓存与模型 Tooltip 等全部 12 种语言本地化文案。
- [仪表盘深色主题重塑与对偶反转 Hero 卡片]:
- 深色模式高对比度与空间悬浮感重塑: 重构暗色底座架构,拉开卡片与背景明度差,状态徽章升级为晶莹通透发光胶囊,消除扁平沉闷感。
- 账号资产卡片对偶反转设计 (Inverted Hero Card): 首张「账号底座资产」卡片在浅色模式下为沉稳黑卡,在深色模式下对称反转为明亮白金反色卡,完美对偶并确立全场首卡视觉焦点。
Full Changelog: v4.9.7-beta.9...v4.9.7-beta.10