Skip to content

Zephyr v2.3.9

Latest

Choose a tag to compare

@github-actions github-actions released this 17 Jun 02:42

Zephyr v2.3.9 — 孤儿进程防护、系统代理守卫、订阅下载三级回退

mihomo 孤儿进程防护(Windows Job Object / Unix PR_SET_PDEATHSIG);系统代理所有权守卫防止外部篡改;订阅下载新增第三级回退(临时切换 global 模式);一键复制代理环境变量(5 种 Shell 格式);每订阅 User-Agent 覆盖;设置页面重构为 9 个意图区块。

新功能

孤儿进程防护

防止 mihomo 在 Zephyr 意外退出(包括任务管理器强制结束、崩溃)后成为孤儿进程占用端口。

系统代理所有权守卫

防止外部程序篡改 Zephyr 设置的系统代理。

代理环境变量复制

一键复制当前代理的环境变量到剪贴板,方便在终端中快速配置代理。

每订阅 User-Agent 覆盖

每个订阅可单独设置 User-Agent,覆盖全局 subscription_user_agent

Override 脚本失败指示

Override 脚本执行失败时,状态指示器从绿色变为红色,显示"失败"状态文本,便于快速定位问题。

窗口隐藏时暂停渲染

窗口隐藏或最小化时暂停连接列表轮询和流量图表渲染,可见时自动恢复,减少后台资源消耗。

设置页面重构

设置页面从扁平列表重构为 9 个意图区块(General、Proxy、TUN、Network、Security、Updates、Shortcuts、Advanced、About),提升信息密度和导航效率。

订阅下载三级回退

订阅下载失败时,依次尝试三种策略,最大限度提高下载成功率:

配置回退自动纠正

启动核心时如果请求的配置文件不存在,会静默回退到第一个可用配置。现在自动检测这种回退并纠正 last_config,避免下次冷启动仍然指向已删除的文件。

删除配置时悬空指针清理

删除配置后检查 last_config 是否指向已删除的文件,如果是则重置为第一个可用配置。使用两段锁模式避免 TOCTOU 竞态。

Bug 修复

  • 订阅更新后强制重启核心:订阅内容变更后通过 force: true 参数强制重启 mihomo 使新配置生效
  • 订阅下载超时缩短:连接超时从 30s→5s,总超时从 30s→10s,避免长时间阻塞
  • 代理节点列表竞态条件:修复订阅切换后代理节点列表可能显示旧数据的问题
  • JS Override YAML 键顺序serde_json 启用 preserve_order feature,JavaScript override pipeline 现在保持 YAML 键的原始插入顺序
  • Prism YAML Override 配置切换:切换配置时 override_apply_all 自动重新应用所有 Prism YAML 类型 override(先于 JS override 执行,批量编译:single compile → single write → single reload)
  • TUN toggle cleanup:合并到 finally 块,确保异常路径也能正确清理
  • deep-link.js 缺失 type import:修复深链处理模块中缺失的类型导入