🚀 VProxy v1.16.9 发布说明 / Release Notes
🎉 VProxy v1.16.9 正式发布!本版本重点根治了 Windows 10/11 环境下程序最小化或停放至托盘后出现的“未响应” (Not Responding) / 界面冻结卡顿 问题,全面升级了 eframe 事件循环架构,并深度优化了剪贴板大文件识别与窗口还原机制:
🛠️ 稳定性与架构:彻底根治 Windows 最小化“未响应”
- 双阶驱动事件调度重构 (
App::logic与App::ui):- 在
eframe底层机制中,窗口处于最小化或停放遮挡状态时,渲染器判定show_ui == false并完全跳过ui()阶段; - 本版本将托盘事件消费、后台管道消息轮询 (
poll_bg)、窗口还原状态机以及周期性心跳守护彻底前置移入App::logic驱动; - 确保窗口在最小化期间,托盘交互与后台消息以毫秒级持续流转,彻底根除因消息循环停摆超 5 秒触发的 Windows DWM 幽灵窗口(标题栏
(未响应))假死。
- 在
- Win32 消息泵极速唤醒 (
WM_NULL):- 托盘工作线程在派发事件与触发
trigger_waker时,主动向主窗口句柄HWND发送WM_NULL空消息; - 瞬间打破阻塞在
GetMessageW/MsgWaitForMultipleObjectsEx中的 Win32 消息循环,托盘点击唤醒延迟由原先的 10~24 秒骤降至 < 5ms 秒开。
- 托盘工作线程在派发事件与触发
- 完善任务栏常规最小化窗口唤回:
- 补全
unpark_from_tray的原生还原分支,当窗口由 Windows 任务栏正常最小化(而非收起停放)时,显式调用原生ShowWindow(hwnd, SW_RESTORE)与SetForegroundWindow,确保任何场景下托盘点击均可瞬间拉回主窗口并置顶激活。
- 补全
⚡ 剪贴板识别异步化:告别大配置阻塞
- 离线反序列化解耦 (
tokio::task::spawn_blocking):- 将 Ctrl+V 粘贴时的
paste::intake(含数千节点与分流规则提取)移入后台线程池异步运算,运算完成后通过BgMsg::PasteIntakeDone回传结果; - 彻底规避 22KB ~ 5MB+ 庞大 Clash YAML 配置反序列化对 UI 渲染主线程的同步阻塞,Ctrl+V 粘贴零掉帧。
- 将 Ctrl+V 粘贴时的
- 启动与关闭安全拦截加固:
- 优化启动前 5 帧内的系统关闭消息防御,并为退出态加入前置快速返回,保障生命周期平稳收尾。