Skip to content

YouYu 1.7.7

Choose a tag to compare

@fishknowsss fishknowsss released this 12 Aug 02:35

YouYu 1.7.7 迭代说明

YouYu 1.7.7 重点收紧配置权威、自动更新完成边界和诊断可观测性。界面仍保持日常使用所需的简洁度,但后台归属、客户端真实运行配置和导出诊断现在使用同一套可验证语义。

8 月 12 日纠正版

本次在保持版本号 1.7.7 的前提下重新打包发布。它修复了 1.7.5 成功更新到 1.7.7 后的一处启动竞态:Mihomo 已经启动时,启动流程仍在执行地区自动选点,而 3 秒后的节点健康检查可能进入恢复并把前一项系统自动任务替换成 operation replaced。客户端随后又把这次内部交接误判为真实启动失败,停止代理并连续执行完整修复,因此会看到多次启动、失败和重试;手动切换节点因为拥有更高优先级,最终能够成功。

纠正版将系统自动选点改为合并同一项正在进行的工作,后台计时器不再取消前台启动;用户主动选择仍会等待旧操作安全回滚后取得最高优先级。预期的取消与任务交接不会再写成“启动失败”或触发两轮修复。节点双站点探测全部失败时,首页只显示简洁的节点检测失败,诊断导出则保留受控的 gstatic-204、cloudflare-204、Mihomo delay/provider healthcheck 路径及 HTTP、超时或已知网络错误类别,不记录完整探测 URL、订阅、密钥或用户信息,并对同根因合并计数。

由于自动更新按版本号判断,已经安装早期 1.7.7 构建的客户端不会自动获取同版本纠正版,需要手动运行纠正版安装包覆盖;仍在 1.7.5、1.7.6 的客户端可以通过软件内更新直接获得纠正版 1.7.7。

配置权威与冲突

  • 未登记云身份时,订阅和规则属于当前设备本机配置。
  • 已登记且云配置就绪时,Mihomo 使用当前身份绑定的云端有效配置;本机只保留与云端无关的设备设置。
  • 后台“自行配置”为“不允许”时,客户端只能跟随云端,专业模式不会伪装成可以写回。
  • 管理员允许后,只有专业模式的显式保存才会签名提交订阅和规则。服务端接受后,该用户立即成为单独配置,后台同步显示真实归属。
  • 小白模式一键连接不会上传订阅或规则,也不会把跟随全局的用户意外变成单独配置。
  • 管理员将用户重置为跟随全局时会删除用户覆盖;客户端下次自动或手动同步采用后台最新全局值。之后获授权客户端再次显式保存,则作为更晚操作重新建立覆盖。
  • 后台与客户端并发时,以 D1 最后成功提交的数据库操作为准,不比较可能漂移的设备时钟。客户端写入在同一条 SQL 中读取当前权限和全局值,避免旧快照决定新归属。

已绑定身份但没有当前缓存时,保存和启动都会要求先完成云端同步,不再静默形成仅本机分叉。已有匹配缓存可供离线运行,但离线修改不会假装已经写入后台。切换身份、停用远端配置和旧版缓存迁移也不会把上一用户的规则留给下一用户。

自动更新完成边界

此前现场故障不是下载损坏或 UAC 没有启动。安装器已经确认交接,但在枚举刚退出的 Electron 进程时遇到瞬时 CIM GetOwnerSid 失败,随后在复制文件前退出;--force-run 因此重新打开的仍是旧版本。

1.7.7 对这一链路做了分层修复:

  • 消失的精确 PID 视为已经退出;仍存活、所有者不符或复查失败继续拒绝安装。
  • 主程序只在独立监督器完成身份绑定并确认接管后退出。
  • 监督器等待安装器真正关闭,检查认证交接已消费,并核对 YouYu.exe 的 ProductVersion。
  • 新客户端需要在应用初始化和主窗口内容加载完成后写回 nonce 绑定的 ready 回执;只拿到 Start-Process PID 不再算成功重开。
  • 超时或取消会终止安装进程树,避免安装目录仍在变化时并发恢复旧客户端。
  • 更新链路会在首个 Windows PowerShell 5.1 进程前清除可能由 PowerShell 7 传入的跨版本 PSModulePath 和缓存覆盖,让 bootstrap、监督器和提权安装进程使用 5.1 原生模块环境;文件 ACL 改由 .NET Framework 直接读写,不再依赖 Security 模块。
  • 成功与安全恢复都会保留更新前的代理运行意图;原本停止时不会自动启动。

对于从旧版本直接升级到 1.7.7 的首次安装,真正修复消失进程竞态的是 1.7.7 安装器内的受控进程脚本;升级完成后,新的监督协议会继续保护后续版本。

诊断双视图

首页只显示“连接警告:目标访问失败(TCP/UDP)”这类简洁摘要。诊断导出改用独立的安全原始视图,保留定位 Mihomo 故障所需的:

  • 目标域名或地址及端口;
  • TCP/UDP;
  • 匹配规则和进程名;
  • outbound 与代理链;
  • 最底层 dial、DNS、连接拒绝或超时错误。

URL 查询、订阅地址、token、密钥、设备与用户标识、邮箱和本机用户路径继续脱敏。超长代理链按“头部 + 尾部”裁剪,避免丢掉末尾根因。同一进程、同一根因仅因本地临时源端口变化时合并为最新样本,不同进程、规则、链路或底层错误保持独立。

普通模式继续读取 Mihomo stdout/stderr;TUN 提权模式通过带 Bearer 鉴权的本地 controller warning 流采集,生命周期结束即取消,断流有界重连,并限制单行与缓冲大小。

其他成熟度修复

  • 自动选点尝试失败、取消或出口验证失败时恢复本操作改变的 selector,但不会覆盖之后发生的手动选择。
  • 严格地区继续禁止跨区;允许全局降级时,健康但地区验证不可用的候选可在首轮验证耗尽后受控降级,并给出简洁提示。
  • 云端空覆盖行会被清理,不再把完全继承全局的用户误标为单独配置。
  • 旧云端缓存缺少来源字段时显示为云端来源,在线同步后再校正为全局或用户覆盖。
  • Electron 打包输入只允许主进程、preload 和 renderer 三类桌面产物;即使同一工作区先运行过 Worker 干构建,后台脚本、source map 或调试目录也不会进入桌面 ASAR,发布校验会读取真实 ASAR 清单再次拒绝越界内容。

验证范围

  • Windows PowerShell 5.1 的真实安装交接、父进程退出、超时取消、进程树关闭、版本核对、客户端 ready 回执与并行干净模块环境;
  • 云端权限、签名写回、并发提交、管理员重置、身份切换、离线与旧数据迁移;
  • Mihomo stdout/stderr 和 TUN controller 两条日志链路、脱敏、去重与首页/导出隔离;
  • 节点回滚、地区降级、后台恢复和手动选择并发;
  • 真实节点健康协调器在启动自动选点期间进入恢复的竞态、计划取消不触发完整修复,以及节点探测详情的首页/导出隔离、脱敏与去重;
  • Electron 桌面输出白名单与真实 ASAR 内容边界,确保 Worker/调试残留不进入安装包;
  • Worker、桌面端类型检查、测试、lint、格式、生产构建、私有双包和公共三通道发布资产闭环。