-
[Per-Account Gemini / Claude Model-Family Priorities & Selective Pedal Mode] (PR #3879, Thanks to @vecyang1, @cubelikeplayDaniel):
-
Independent Model-Family Priorities: Added
Account.model_prioritiesandProxyToken::effective_priorityto configure independent scheduling priorities (1–100) forgeminiandclaudeper account, withG:x · C:yobservability badges on account cards and tables. (PR #3879) -
Pedal Mode Family Isolation & Account Selection: Pedal Quota Mode now boosts only the target model family's priority to
1while preserving the other family's priority;PedalNoticeModalnow displays model generation badges (Claude 5.5vsClaude 4.6) and checkboxes so users can selectively choose which accounts to exhaust. (PR #3879)
-
Independent Model-Family Priorities: Added
-
[Cowork In-Flight Tool Compaction Deferral & Quota Disparity Migration] (Thanks to @cubelikeplayDaniel):
-
Turn-Boundary Safe Auto-Compaction: Added
is_tool_result_continuationguard inshould_trigger_cowork_auto_compactto defer synthetic 400 compaction triggers while tool results are in-flight, preventing client tool state machine crashes and false"Your context window is full"modals. - Prefix Cache & Quota Equity Balance: Added same-or-higher priority quota disparity migration in sticky sessions and 60s windows ($\le 65%$ bound quota with $\ge 25%$ healthier alternative), alongside immediate unbinding on 401/403/404/429 upstream errors.
-
Turn-Boundary Safe Auto-Compaction: Added
-
[Pedal Mode CPU Re-entrancy Loop Elimination & Windows File Lock Backoff] (Fixes #3881, PR #3882, Thanks to @vigarh-netizen, @cubelikeplayDaniel):
-
React Cascade & In-Flight Mutex Hardening: Added module-level
isProcessingconcurrency mutex inusePedalModeStore; cleared state (active: false) and local storage immediately before awaiting priority restoration, eliminating race conditions where intermediate account updates re-triggered recovery. (Fixes #3881, PR #3882) -
Quota Metrics Fingerprint Gating: Introduced
prevFingerprintRefinLayout.tsxtracking only essential quota metrics (account IDs, proxy_disabled, weekly percentages, and reset timestamps). Account priority changes no longer trigger re-evaluation, severing the component re-entrancy loop. (Fixes #3881, PR #3882) -
Redundant Disk Write Elimination & Safe Reset Action: Re-enabled accounts in
temporarilyDisabledIdsnow check(!acc || acc.proxy_disabled)to avoid redundant disk writes; addedresetPedalModeStateaction with automated fallback inPedalBanner.tsxon error. (Fixes #3881, PR #3882) -
Windows File System Transient Lock Exponential Backoff: Enhanced Windows
MoveFileExWinsrc-tauri/src/utils/fs.rswith up to 5 retries and exponential backoff (5ms, 10ms, 20ms, 40ms, 80ms) onERROR_ACCESS_DENIED (5)andERROR_SHARING_VIOLATION (32)to withstand rapid concurrent atomic replacements. (Fixes #3881, PR #3882)
-
React Cascade & In-Flight Mutex Hardening: Added module-level
-
[单账号 Gemini / Claude 模型族独立调度优先级与蹬额度模式自由勾选] (PR #3879, Thanks to @vecyang1, @cubelikeplayDaniel):
-
按模型族独立编排调度优先级: 新增
Account.model_priorities与ProxyToken::effective_priority,支持在单账号内独立设置gemini与claude的调度优先级(1–100,未配置时自动继承账号默认优先级),并在账号卡片与表格直观展示G:x · C:y徽章。(PR #3879) -
蹬额度模式模型族隔离与账号自由勾选: 开启蹬额度模式时仅将目标模型族提权至
1,保留另一模型族原有优先级,彻底解决跨模型族误抢流问题;弹窗新增各候选账号实际支持的模型代数徽章(如Claude 5.5vsClaude 4.6)与复选框勾选功能,支持按需选择要消耗的账号(如跳过 4.6 仅蹬 5.5)。(PR #3879)
-
按模型族独立编排调度优先级: 新增
-
[Cowork 工具在途压缩避让与粘性会话配额悬殊均衡自愈] (Thanks to @cubelikeplayDaniel):
-
回合边界安全自动压缩: 在
should_trigger_cowork_auto_compact中增加is_tool_result_continuation工具在途守卫,Agent 工具执行链路未闭合(含tool_result)期间暂缓下发 400 假报警,等待工具链闭环并回到用户新回合边界再优雅触发压缩,根治工具执行中途打崩客户端状态机并弹出"Your context window is full"模态框的问题。 - 前缀缓存与配额均衡兼顾: 在粘性会话与 60s 窗口中引入同级优先级配额悬殊迁移(当绑定账号配额 $\le 65%$ 且池中同级/更高优先级健康账号领先 $\ge 25%$ 时自动解绑迁移),同时对 401/403/404/429 故障即时解绑。
-
回合边界安全自动压缩: 在
-
[蹬额度模式重入死循环根除与 Windows 文件锁并发退避] (Fixes #3881, PR #3882, Thanks to @vigarh-netizen, @cubelikeplayDaniel):
-
React 状态级联与互斥重入根治: 在
usePedalModeStore中引入模块级isProcessing互斥重入锁;在自动恢复与手动退出执行伊始立即重置active: false并清除本地存储,彻底阻断异步调度期间被外部刷新事件重新误判为激活状态的竞态条件。(Fixes #3881, PR #3882) -
关键配额指标特征指纹防抖: 在
Layout.tsx中引入prevFingerprintRef特征指纹防抖,仅提取账号 ID、代理禁用状态以及 Gemini/Claude 周配额百分比与官方重置时间,账号调度优先级回写不再改变特征指纹,从组件层彻底切断死循环闭环。(Fixes #3881, PR #3882) -
冗余写盘消除与异常保底重置: 容错遍历挂起账号时严格比对当前禁用状态,跳过重复写盘;新增
resetPedalModeState保底重置接口,并在PedalBanner.tsx手动退出增加异常捕获与状态重置降级。(Fixes #3881, PR #3882) -
Windows 文件系统原子替换瞬态锁指数退避: 在
src-tauri/src/utils/fs.rs的MoveFileExW逻辑中针对ERROR_ACCESS_DENIED (5)与ERROR_SHARING_VIOLATION (32)增加最大 5 次重试与指数退避(5ms, 10ms, 20ms, 40ms, 80ms),极大提升高频并发原子替换时的抗锁死容错韧性。(Fixes #3881, PR #3882)
-
React 状态级联与互斥重入根治: 在
What's Changed
- fix(pedal): 消除蹬额度模式重入死循环与Windows文件锁风暴 (Fixes #3881) by @cubelikeplayDaniel in #3882
- feat(scheduler): support independent Gemini / Claude model-family priorities per account by @vecyang1 in #3879
- chore(release): bump version to 5.0.4-beta.3 and update changelog (Ref #3879, #3881) by @cubelikeplayDaniel in #3884
New Contributors
Full Changelog: v5.0.4-beta.2...v5.0.4-beta.3