- [macOS Mini View Deadlock Elimination & Foreground Cascading Jump Prevention] (Fixes #3744, Ref PR #3747, Ref #3748):
- Cross-Thread Deadlock & Zero-Visible-Window Hang Eradication: Dispatched
switch_to_main_windowstrictly onto the native OS UI thread (app.run_on_main_thread), immediately executingshow(),unminimize(), andset_focus()inexit_lightweight_modefor macOS to permanently eliminate the Mini window freeze and unopenable main console caused by cross-thread AppKit synchronization and WebKit message loop starvation. (Fixes #3744, Ref PR #3747) - Unified Accessory Activation Policy for Mini View: Replaced the flawed policy where
ActivationPolicy::Regularwas retained if the main window was still alive in the background/docked/on another Space. Opening Mini now consistently enforcesActivationPolicy::Accessory, preventing macOS AppKit from activating the entire application and pulling the background main console forward or triggering jarring cross-Space jumps. (Fixes #3744, Ref #3748) - Adaptive Regular Policy Restoration on Mini Dismissal & Refocus: Encapsulated
hide_mini_windowto safely restoreActivationPolicy::Regularupon blur, tray click, or close when the main console remains alive (is_visible() || is_minimized()), while maintainingRegulardynamically when the main window regains focus. (Ref #3748)
- Cross-Thread Deadlock & Zero-Visible-Window Hang Eradication: Dispatched
- [Tray Left-Click Action Preference & Multilingual i18n Localization] (Ref #3748):
- Tray Left-Click Behavior Preference: Added a
tray_click_actionsetting in General Settings supporting toggle between "Mini Floating Window" and "Main Console" to accommodate user workflow preferences. (Ref #3748) - Compact Pill Card UI & 12-Locale Completeness: Aligned with the minimalist design guidelines using compact pill-shaped toggle cards and localized strings across all 12 supported language dictionaries. (Ref #3748)
- Tray Left-Click Behavior Preference: Added a
- [Mini View Square Corner Rectification & Native Rounded Transparency] (Ref #3748):
- CSS Box-Shadow Redundancy Stripping: Removed redundant outer
shadow-2xlCSS boxes in desktop mode, delegating window shadow entirely to the native macOS NSWindow ("shadow": true) to eliminate horizontal cut lines and 90-degree squared artifacts at window boundaries (y = 360px). (Ref #3748) - Explicit Rounded Bounds & Root Overflow Clipping: Added
rounded-t-2xlto the header androunded-b-2xlto the footer, set#roottooverflow: hidden !importantin Mini mode, and ensured::-webkit-scrollbar-cornertransparency to completely expose smooth native rounded corners. (Ref #3748)
- CSS Box-Shadow Redundancy Stripping: Removed redundant outer
- [QoS Expiry Probing DashMap Self-Deadlock Elimination & Safe Phase Separation] (Fixes #3749, PR #3751, Thanks to @cubelikeplayDaniel):
- Two-Phase Read-Write Decoupling: Introduced
take_expired_jails_for_probing()inqos_guardian.rs. Phase 1 captures a read-only snapshotVec<(String, usize)>of expired jailed accounts viastates.iter()and cleanly terminates iteration to release shard read locks; Phase 2 safely transitions each account toProbingstate using write locks, completely eradicating DashMap shard self-deadlocks that caused port 8045 to freeze and become unresponsive. (Fixes #3749, PR #3751, Thanks to @cubelikeplayDaniel) - Deadlock-Resistant Regression Test: Added
test_take_expired_jails_for_probing_does_not_deadlockwith a 5-second timeout safeguard running in a dedicated OS thread to guarantee state transition correctness and prevent future concurrency deadlocks. (Fixes #3749, PR #3751)
- Two-Phase Read-Write Decoupling: Introduced
- [Official Hub Egress Baseline Upgrade to 2.24.0 & Headless Async Fingerprint Sync] (Fixes #3750, PR #3751, Thanks to @cubelikeplayDaniel):
- Official Hub Baseline Upgrade: Elevated
OFFICIAL_HUB_VERSIONto2.24.0andOFFICIAL_HUB_CLto1000335682inconstants.rs, satisfying upstream Google Cloud Code version and Piper CL verification gates for thegemini-4-argonfamily, eliminating 404 NOT_FOUND upstream rejections and instantaneous 0.326ms whole-pool 503 circuit-breaker trips. (Fixes #3750, PR #3751, Thanks to @cubelikeplayDaniel) - Headless Asynchronous Hub Manifest Discovery: Dispatched non-blocking background tasks during headless daemon and GUI initialization to invoke
detect_and_update_hub_fingerprint(), ensuring headless Docker deployments without local IDEs dynamically synchronize official release manifests. (Fixes #3750, PR #3751) - Dynamic QoS Probing User-Agent: Replaced the hardcoded legacy User-Agent in synthetic health-check probes with
get_current_hub_user_agent(), ensuring full compliance across all egress HTTP traffic. (Fixes #3750, PR #3751)
- Official Hub Baseline Upgrade: Elevated
- [Argon Quota Foolproof Isolation & False Inheritance Elimination] (Fixes #3745, Ref PR #3747, Thanks to @cubelikeplayDaniel):
- Removal of Quota Borrowing Fallback: Removed the fallback in
quota.rsthat borrowed general Gemini quota when an account lacked a dedicated Argon group, strictly requiring an official independent Argon quota group. (Fixes #3745, Ref PR #3747, Thanks to @cubelikeplayDaniel) - In-Memory Pool Sanitization Defense: In
token_manager.rs(load_single_account,get_available_models_from_json, and live quota refresh), thoroughly stripped all Argon variants frommodel_quotas,available_models, andmodel_limitswhen an account lacks dedicated Argon group authorization, preventing unauthorized accounts from usurping quota and causing 503 circuit-breaker trips. (Fixes #3745, Ref PR #3747) - Frontend Quota Card Precision: Refined
hasArgoninquotaDisplay.tsto display cards only when realquota_groupscontain an Argon group, eradicating synthetic false 5H rolling quotas generated byfallbackModels. (Fixes #3745) - Adaptive Retry Boundary Alignment: Guaranteed in
common.rsthat fast account rotation (50ms) for hard quota depletion applies exclusively to round 1, transitioning smoothly into standard backoff on subsequent rounds. (Fixes #3745)
- Removal of Quota Borrowing Fallback: Removed the fallback in
- [macOS 悬浮窗唤起死锁根除与前台级联跳出修复] (Fixes #3744, Ref PR #3747, Ref #3748):
- 跨线程死锁与 0-可见窗口挂起修复: 将
switch_to_main_window统一调度到操作系统原生 UI 主线程 (app.run_on_main_thread) 执行,在exit_lightweight_mode中针对 macOS 立即执行show()、unminimize()与set_focus(),根治因跨线程 AppKit 调度与 WebView2/WebKit 消息循环悬空导致的悬浮窗卡死及主控制台无法打开的问题。(Fixes #3744, Ref PR #3747) - 唤起 Mini 统一收敛至 Accessory 附属模式: 移除原先主窗口未彻底销毁(在后台/最小化到 Dock/其他 Space)时保留 Regular 策略的缺陷逻辑,唤起 Mini 时统一设为
ActivationPolicy::Accessory,彻底消除 AppKit 激活 Mini 视窗时伴随整个应用激活而将后台主控制台强制拉至前台、展开最小化或触发跨 Space 屏幕跳跃的顽疾。(Fixes #3744, Ref #3748) - 收起 Mini 与主窗口重聚自适应恢复: 封装
hide_mini_window统一视窗收起流程,在失焦自动收起、点击托盘切换或手动关闭 Mini 时,若主控制台原本处于存活态(is_visible() || is_minimized()),精准恢复Regular策略;并在主控制台重新获得焦点时保证Regular实时在线。(Ref #3748)
- 跨线程死锁与 0-可见窗口挂起修复: 将
- [托盘左键行为偏好配置与多国语言支持] (Ref #3748):
- [Mini 悬浮窗底部背景直角消除与真圆角透明治理] (Ref #3748):
- 移除冗余 CSS box-shadow: 在桌面端模式下移除最外层容器冗余的
shadow-2xl,完全由系统原生 NSWindow 绘制透明窗体阴影("shadow": true),根治内部 CSS 阴影向下溢出在视窗边界(y = 360px)被截断形成的水平平切线与 90 度直角阴影。(Ref #3748) - 首尾两栏显式圆角与根视窗溢出截断: 顶栏显式追加
rounded-t-2xl,底栏追加rounded-b-2xl,杜绝 WebKit 亚像素渲染及 backdrop-filter 在容器边缘轻微溢流的问题;并将 Mini 模式下的#root设为overflow: hidden !important,补全::-webkit-scrollbar-corner透明规则,彻底透出桌面原生平滑圆角。(Ref #3748)
- 移除冗余 CSS box-shadow: 在桌面端模式下移除最外层容器冗余的
- [QoS 到期巡检 DashMap 自死锁修复与安全读写分离] (Fixes #3749, PR #3751, Thanks to @cubelikeplayDaniel):
- 两阶段解耦与安全读写分离: 在
qos_guardian.rs中新增take_expired_jails_for_probing(),Phase 1 通过只读迭代器收集所有已到期小黑屋账号快照Vec<(String, usize)>,彻底退出迭代并释放DashMap分片读锁;Phase 2 逐个安全原子置换为Probing状态并释放写锁,彻底消除后台巡检线程同线程读写自死锁导致代理端口 8045 假死挂死的问题。(Fixes #3749, PR #3751, Thanks to @cubelikeplayDaniel) - 并发防死锁回归专项测试: 增加
test_take_expired_jails_for_probing_does_not_deadlock单元测试,在独立子线程与 5 秒超时保护下执行到期提取与状态置换验证,杜绝并发死锁回归。(Fixes #3749, PR #3751)
- 两阶段解耦与安全读写分离: 在
- [官方 Hub 出站基准升级至 2.24.0 与 Headless 异步探测注入] (Fixes #3750, PR #3751, Thanks to @cubelikeplayDaniel):
- 内置稳态基准提升: 将
constants.rs中的内置稳态基准升级至官方 Antigravity 2.24.0(OFFICIAL_HUB_VERSION = "2.24.0",OFFICIAL_HUB_CL = "1000335682"),满足 Google 上游新一代gemini-4-argon系列模型的客户端版本门控,杜绝因陈旧指纹触发 404 NOT_FOUND 进而导致全账号池 0.326ms 熔断 503 报错。(Fixes #3750, PR #3751, Thanks to @cubelikeplayDaniel) - Headless 异步探测远程清单: 在 Headless 与桌面启动流程中派发后台异步任务调用
detect_and_update_hub_fingerprint(),确保无本地 IDE 的纯 Docker 容器在启动后即自动同步官方最新更新清单。(Fixes #3750, PR #3751) - 合成测速探针 UA 动态化: 将
token_manager.rs中的测速探针硬编码 UA 替换为crate::modules::hub_version::get_current_hub_user_agent(),确保出站指纹全链路合规统一。(Fixes #3750, PR #3751)
- 内置稳态基准提升: 将
- [Argon 配额防呆隔离与虚假继承消除] (Fixes #3745, Ref PR #3747, Thanks to @cubelikeplayDaniel):
- 移除降级借额逻辑: 在
quota.rs中移除 Argon 模型在缺少专属分组时借用通用 Gemini 配额的降级逻辑,严格要求命中官方 Argon 独立配额组。(Fixes #3745, Ref PR #3747, Thanks to @cubelikeplayDaniel) - 内存账号池全链路清理防呆: 在
token_manager.rs的load_single_account、get_available_models_from_json以及实时配额刷新逻辑中,若账号未分配 Argon 专属分组,彻底从model_quotas、available_models和model_limits中清理,防止无权账号冒领配额并规避调度器 503 熔断。(Fixes #3745, Ref PR #3747) - 前端配额卡片精准解耦: 在
quotaDisplay.ts中修正hasArgon判定,仅在真实quota_groups中存在 Argon 分组时展示卡片,杜绝fallbackModels注入虚假 5H 滚动配额。(Fixes #3745) - 自适应重试策略边界对齐: 在
common.rs中确保硬配额快速轮换(50ms)仅在第一轮重试生效,第二轮平滑进入温和指数退避。(Fixes #3745)
- 移除降级借额逻辑: 在
What's Changed
- fix(proxy,qos): 修复 QoS 到期巡检 DashMap 自死锁与 Docker Headless Argon 熔断 (Fixes #3749, Fixes #3750) by @cubelikeplayDaniel in #3751
Full Changelog: v5.0.0-beta.2...v5.0.0-beta.3