Skip to content

v1.4.1 - Clash 远程管理模块 + mihomo 崩溃防护

Latest

Choose a tag to compare

@ciskonc ciskonc released this 03 Jul 21:44

v1.4.1 — Clash 远程管理模块 + mihomo 崩溃防护

一、新功能:Clash 远程管理模块

主页新增独立模块(默认隐藏),与「浏览器代理模式切换」并列分层显示,三按钮组 [规则] [全局] [直连] 切换 Clash 内核代理模式。

  • 通过 Clash API PATCH /configs {mode} 实时切换 mihomo 内核 mode
  • 默认 clashRemoteEnabled=false,需在「设置 → 连接配置」中手动启用
  • LAYOUT_VERSION 3 → 4:clash-remote 模块自动加入默认布局
  • 「代理模式切换」改名「浏览器代理模式切换」以避免概念混淆
  • 9 个新翻译键(zh_CN / en / ja)

二、关键修复(实测发现并解决)

问题 修复
切换 mode 后旧连接仍走旧代理 switchClashMode 成功后调用 DELETE /connections 关闭所有活跃连接
重启 Clash 后按钮不跳回「规则」 initPopup 在 await settings 后主动调用 setClashRemoteModuleVisible + renderClashRemoteMode
保存设置后主页不显示模块 buildTabLayout 重建布局后立即调用 setClashRemoteModuleVisible
「全局」按钮切了不生效(走伪节点) pickFirstRealProxyNode 过滤 server 为空的伪节点;新增 pickPreferredGlobalNode 优先指向 Selector 类型代理组(通常是「节点选择」组)
重启 Clash 导致 mihomo fatal 退出 restartClash 新增 Step 0 isMihomoAlive 预检 + Step 2.5 validateRulesAgainstGroups 丢弃引用不存在代理组的规则

三、伪节点问题背景

部分机场在订阅开头插入"剩余流量:xxx GB"伪节点(server 字段为空),用于在 Clash UI 显示流量信息。mihomo 隐式 GLOBAL 组会把这些伪节点也加入候选,GLOBAL 默认选中第一个伪节点导致所有流量走伪节点(连接失败后 fallback 到列表首个真实节点,表现为切到 global 后 ip111 显示东京而非节点选择组的香港/新加坡)。

修复后切 global 时:

  • 自动跳过伪节点 + 代理组
  • GLOBAL 默认指向「🚀 节点选择」组
  • 流量跟随用户在节点选择组中切换的节点
  • 后续用户切换节点选择组中的节点时,GLOBAL 自动跟随,无需重新点「全局」按钮

四、mihomo 崩溃问题背景

当规则引用的代理组在当前 proxy-groups 中不存在时(例如配置文件被裁剪或某代理组被删除),mihomo 启动时会 fatal 退出:

level=fatal msg="Parse config error: rules[N] [RULE-SET,xxx,SOME_GROUP] error: proxy [SOME_GROUP] not found"

ClashOmega 的「重启 Clash」按钮通过 HTTP API 与 mihomo 通信,但 mihomo 已死时任何 HTTP API 都不可达,导致死循环失败。修复后:

  • Step 0 检测 mihomo 是否存活,已死时返回明确提示让用户去 Clash Verge Rev GUI 重启
  • Step 2.5 在写入快照前校验规则,丢弃引用不存在代理组的规则,保证写入的快照可被 mihomo 正常加载

五、文件清单

文件 变更
extension/manifest.json 1.4.0 → 1.4.1
extension/background.js restartClash 加 Step 0 + Step 2.5,restartClash 重置 mode
extension/lib/clash-api.js 新增 isMihomoAlive / validateRulesAgainstGroups / pickPreferredGlobalNode,伪节点过滤,closeAllConnections
extension/popup/popup.js 模块显示修复 + initPopup 刷新 + renderClashRemoteMode
extension/popup/popup.html Clash 远程管理模块 UI
extension/locales/{zh_CN,en,ja}.json 9 个新翻译键
docs/index.html 着陆页 v1.4.1
README.md / README_EN.md 版本号同步
CHANGELOG.md v1.4.1 详细变更记录

六、升级须知

  • 老用户升级后 LAYOUT_VERSION 自动从 3 升级到 4,自定义布局会被重置为默认(新增 clash-remote 模块)
  • 升级后需在「设置 → 连接配置」中手动启用「Clash 远程管理」开关
  • 升级后需重新加载扩展(chrome://extensions/ → 重新加载),刷新 service worker

详见 CHANGELOG.md