Skip to content

1.8.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 01:58
· 202 commits to main since this release

1.8.1

自 1.8.0 以来的变更。

Clash 订阅导入改按 mihomo 的实际行为

内置核心版本不变(Xray v26.10.10、mihomo v1.19.32、sing-box v1.14.3)。Clash 订阅里的节点改为按 mihomo v1.19.32 自己运行时的语义导入,存量订阅下次更新时,下面这些节点的导入结果会变:

  • 以前能导入、现在拒绝的写法(mihomo 自己也会拒绝这些节点,导入汇总里列出原因):
    • hysteria2 写了 obfs: salamander 却没有混淆口令(此前导入成不混淆的节点)
    • hysteria(v1)的 auth 不是标准 base64
    • VLESS 的 flow 不少于 16 个字节却不以 xtls-rprx-vision 开头,如 xtls-rprx-direct、xtls-rprx-origin(此前丢掉 flow 照常导入)
    • VMess / VLESS 的 network: h2 没开 TLS(mihomo 是明文 h2c)、network: http 开了 TLS(mihomo 是 TLS 里的 HTTP/1.1 伪装):本应用表示不了这两种组合,此前会导入成另一种传输方式
    • Shadowsocks 的 udp-over-tcp-version 不是 0、1、2
  • 导入结果改变的写法:
    • hysteria2 只写 obfs-password、没写 obfs 时不再开混淆
    • hysteria(v1)同时写 auth 与 auth-str 时以 auth 为准,与键的先后无关
    • VMess / VLESS / Trojan 只套用当前 network 对应的 *-opts,其它传输方式的 opts 不再改写 Host、路径与 SNI
    • Trojan 的 network 除 ws、grpc 外一律按 TCP 导入:xhttp、kcp 等此前整个节点被拒,h2、http 此前套用 HTTP 传输
    • packet-encoding: packet 按 packetaddr 导入(此前当作没设置);这类节点自动选核会落到 sing-box
    • VMess 的 cipher 转成小写(大写写法此前在连接时被拒)
    • AnyTLS 的 ech-opts 只写 config、没写 enable: true 时不开 ECH
    • 顶层 global-client-fingerprint 不再读取(mihomo 已移除它),没写指纹的 REALITY 节点用 chrome
    • Shadowsocks 写了 udp-over-tcp 却没写版本时用 UDP over TCP v1(mihomo 的默认值,此前实际是 v2);udp-over-tcp: 1 也算开启
    • Shadowsocks 的 Plugin、Plugin-Opts、udp_over_tcp 等大小写或下划线写法与标准写法一样读取(此前导入成没有插件的节点,或丢掉 UDP over TCP)
  • 导入汇总里的字段记录同样按 mihomo 的读键方式判断:mihomo 读得到而本应用没用上的键记为有损,不再记成「无影响」

新增与改进

  • Shadowsocks 节点记录 UDP over TCP 的版本(v1 / v2),Clash 订阅按上面的规则填写;分享链接导入与编辑器新建的节点仍是 v2。存储格式随之升级,1.8.1 导出的备份与通用链接里的 Shadowsocks 节点,1.8.0 及更早版本读不对
  • 恢复备份前先检查备份内部的引用(节点所属分组、分组的前置 / 落地节点;有损坏记录时还有链成员与规则出站),发现断链时整体不导入,并列出每类缺失的数量
  • 订阅深链的确认框列出链接预设的节点解析 DNS、强制解析与自定义 UA;名称、链接与节点名过长时截断显示,导入的仍是完整值
  • 编辑订阅分组时检查链接:只接受单行的 http(s) 链接或「选择文件」得到的本地文件,链接首尾空白自动去掉
  • 应用勾选页(分应用代理、路由规则选应用)没有用户应用或搜索无结果时显示提示
  • 配置页搜索框展开时,返回键先收起搜索
  • STUN 测试的服务器为空时直接提示,不再报 missing port in address
  • 设置页「启用 DNS 路由」「代理端口」「绕过 LAN」「TUN 实现」「网络变化时重置连接」「MTU」换用贴切的图标

修复

  • 流量统计:界面清除节点流量后,运行中的服务不再把清除前的累计写回;落库改为只加新增的部分
  • 测速状态:编辑节点或订阅更新后配置真的变了,旧的测速结果随之清除(只改名不清)
  • 全局「允许不安全」对 Hysteria 1(faketcp / wechat-video)与 Trojan-Go 插件节点也生效,与其它核心一致
  • 备份:恢复前先停止服务,等它确认停止、最后的流量写完再写库,避免旧服务的流量写到恢复后的节点;服务未能及时停止时不导入、现有数据不变;恢复途中旋转屏幕不再中断;导出改为选好保存位置后再生成内容,节点、分组、规则在同一个事务里读取
  • 订阅更新:下载期间订阅被改了(链接、类型、自定义 UA、强制解析等),这次结果整体放弃,不再把旧订阅的节点写进已换成新订阅的分组;手动更新时给出提示
  • 节点域名解析:分组配了节点解析 DNS 时同时查询 A 与 AAAA(此前 A 有结果就不查 AAAA);订阅强制解析按 IPv6 模式取地址,禁用 IPv6 时不写入 IPv6 地址,仅 IPv6 时不写入 IPv4 地址
  • 链接导入:VMess / VLESS / Trojan 链接里的 security(v2rayN 格式的 tls)为 xtls 等不认识的值时拒绝导入,不再当作无 TLS 导入成明文节点
  • 编辑器:页面初始化途中被重建、或缓存被另一个编辑器接管时,迟到的初始化、选节点、选文件、移动分组的结果不再写进别的编辑器;保存时缓存已不属于本编辑器则提示并关闭
  • JSON 编辑器:改回原样视为未修改,旋转后未保存的判断不丢
  • 撤销删除:撤销窗口期间别处删改了节点、分组、规则或资源文件时,先提交待删项,撤销不再越界崩溃或插回已删除的行
  • 稳定性:读取应用列表失败(如权限被拒)时,分应用代理页、关于页与应用列表摘要不再崩溃,失败后隔一段时间再重试;内置代理应用清单读不出来时取消自动选择,不再清空现有勾选;URL 测试时服务恰好断开不再崩溃
  • 日志脱敏:REALITY shortId、SSH 私钥口令、Mieru 用户名、URL 里的用户名一并遮蔽;不支持的 hysteria2 混淆类型名只在形态合格时回显;Neko 插件配置 JSON 解析失败不再把原文写进日志;超长配置脱敏不再栈溢出
  • 文案:启动失败提示的冒号后按语言处理空格;「重置路由」的确认框不再沿用「清空配置」的文案;中文「连接被拒绝」与备份页说明改正
  • Naive 节点编辑器的隐藏功能开关只在保存时切换

构建与工程

  • 移除预览构建工作流与 preview 构建变体,只保留 oss
  • run 脚本拒绝含 /、.. 的脚本名;版本检查新增 Gradle wrapper jar 的 sha256 固定
  • 界面的数据访问统一经 Repository,节点表只按列写入;拆分能力表、主界面与配置页文件,删除 20 个无引用的配置模型类,动效时长统一取自主题属性
  • 新增数据库迁移测试(JVM 上执行 Room 迁移)、协议转换契约测试、存储格式嵌套版本号校验与日志脱敏对账测试;单元测试从 796 项增至 911 项
  • 全面代码审查修复 7 项,/simplify 复审精简 11 处重复与冗余

仅发布 universal APK;分 ABI 包已在 CI 中构建并核验,不作为发布资产。

补注(2026-10-24)

  • 本版本内置的 Xray v26.10.10 已被上游删除(tag 与发布都已不存在),按本版本的源码已无法重新构建:下载内置核心的一步(./run lib plugins)会失败。已发布的 APK 不受影响,其中的 Xray 是当时按固定 sha256 校验过的官方二进制。需要从源码构建时请使用 1.9.0-a3 或更新的版本