Skip to content

YouYu 1.6.10

Choose a tag to compare

@fishknowsss fishknowsss released this 01 Aug 16:43
· 76 commits to main since this release

YouYu 1.6.10 迭代说明

YouYu 1.6.10 是针对 1.6.9 Windows 更新回归的修复版本。它修复系统代理读取、管理员提升与完整修复恢复链路,并确保仍停留在 1.6.8 的客户端可以直接更新到本版。

启动失败根因

  • ProxyServer 和 ProxyOverride 是允许不存在的可选注册表值。1.6.9 改为依赖 reg.exe 的英文或完整中文错误文本判断“值不存在”,但中文 Windows 使用本地 OEM 码页,Node 默认按 UTF-8 解码后会得到乱码,因此正常缺失被误判为致命错误。
  • YouYu 会先启动 Mihomo,再启用系统代理。代理读取失败后,生命周期按设计回滚并停止 Mihomo,所以日志中的 ready 后 SIGTERM 是下游清理,不是 Mihomo 自行崩溃。
  • 修复现在会在单值查询失败后读取完整注册表项,并根据值名与 REG_* 结构判断该值是否存在,不再匹配任何本地化错误文案。完整项不可读或目标值实际存在时仍传播原错误,不会把权限问题误当成“值不存在”。
  • 正常停止和失败回滚产生的预期退出不再写成 “mihomo exited after ready”,避免将主动清理显示成内核崩溃。

管理员提升与完整修复

  • 1.6.9 的提升安全绑定把裸 powershell.exe 用当前工作目录解析成了 YouYu\powershell.exe。目标文件不存在时,提升助手会在命名管道连接前退出,又被统一误报为“需要管理员权限”,所以即使以管理员方式启动应用也无法解决。
  • 本版只允许将受支持的裸 PowerShell 命令解析为 System32\WindowsPowerShell\v1.0\powershell.exe 的绝对路径;其他提升目标必须从调用方提供绝对路径,避免工作目录劫持。
  • 提升助手在安全连接前退出时会报告实际退出码或信号,不再把所有失败归结为权限不足。
  • 完整修复分为关键阶段和附加阶段。禁用当前用户代理并停止 Mihomo 属于关键阶段,失败时仍严格中止;WinHTTP、DNS、商店回环与缓存清理属于后续阶段。关键阶段已经安全完成时,后续单项失败会记录警告,但仍按未被取消的运行意图重新启动并恢复后台工作。
  • 如果重新启动也失败,错误会聚合保留附加修复、缓存清理和运行时恢复的全部原因,避免最后一个错误覆盖真正根因。

小白模式与诊断界面

  • 小白模式的错误卡与更新卡统一进入右下角通知栈;容器本身不截获鼠标,卡片操作仍可点击。左下角 52×52 的七击入口与通知区域不再相交。
  • 错误通知使用原子化 alert 语义,更新通知使用礼貌播报的原子化 status 语义。完全透明的隐藏入口移出 Tab 顺序,键盘隐藏快捷方式继续保留。
  • 专业模式可见诊断会将原始 reg.exe 命令和无法解码的 Windows 输出转换为“系统代理设置读取失败”等清晰摘要。底层日志与诊断导出仍保留完整的脱敏技术信息,便于进一步定位。

从 1.6.8 直接更新

  • 1.6.8 尚不会生成 1.6.9 引入的认证安装交接,而故障版本不能作为可靠中转。因此 1.6.10 将一次性兼容桥的唯一目标版本从 1.6.9 迁移到 1.6.10。
  • 该桥只允许版本不高于 1.6.8、产品名和发布者完全匹配、精确安装路径已经停止的 YouYu,通过 electron-updater 的 --updated 静默更新进入。
  • 1.6.9 及以后版本、普通静默新装、运行中目标、部分交接和任何无效交接都不能使用旧桥,必须继续通过绑定随机 nonce、Windows 用户 SID、会话、目标进程和有效期的认证路径。

验证

  • 自动化覆盖中文乱码缺失值、真实访问拒绝、PowerShell 绝对路径、安全连接前退出、关键与附加修复边界、恢复失败聚合、预期 Mihomo 停止、1.6.8 直升桥和 1.6.9 拒绝降级。
  • 渲染器覆盖错误与更新提示同时出现时的 DOM 归属、ARIA 语义、隐藏入口焦点边界和七次点击切换。
  • 在 900×600 与 1280×800 真实 Chromium 中确认两张通知卡与左下热点无交集,热点中心的最上层元素仍是入口,七次真实点击可以进入专业模式,且页面无横向或纵向溢出。
  • Windows 打包在复用 Electron 缓存前再次校验固定 ZIP 的字节数和 SHA256,并直接将该 ZIP 交给 electron-builder;缓存命中不再依赖在线下载校验清单,同时精确移除官方 ZIP 的默认入口残留,Actions 缓存键也覆盖校验模块与固定分发清单。
  • 发布仍需通过仓库卫生、Mihomo 固定分发、桌面端与 Worker 测试、类型检查、ESLint、Prettier、生产构建、Windows 本地三包、公开三通道 11 资产、摘要清单、GitHub Actions 和远端 latest*.yml 的完整门禁。