Repository navigation
Releases
1.9.2
1.9.2
自 1.9.1 以来的变更。
核心
- Xray-core 从 v26.10.31 升级至 v26.11.9
- Xray 的默认 Chrome 指纹升级为 Chrome 155,支持显式指定
hellochrome_155;显式hellochrome_133仍使用原模板 - 此版上游 Mux.Cool 会将 1–127 的并发值按 128 处理,XUDP 的独立并发值不受该下限影响;应用保留节点原有参数和选核顺序
修复
- 修复代理连接时,设置列表在中间上下反向滑动、惯性滚动或接近底部时随状态卡片收放而跳动的问题,保持现有界面设计
- 修复状态卡片动画期间重新布局或快速反向滑动时突然跳到隐藏位置的问题
- 修复较短设置列表的布局与滚动范围不稳定问题,确保最后一项仍可滚动到状态卡片和底部导航上方
- 修复提示条显示期间状态卡片收起或拉出时,提示条跟着卡片滑到底部导航之下、随后跳回的问题;提示条入场动画期间同样正确跟随
构建与工程
- 将版本、仓库与 lint 配置集中到 gradle 目录,同步构建和发布脚本
- 同步 ARM64 / x86_64 核心校验摘要与能力声明,补充 Chrome 155 指纹的自动选核、手动选核和真实握手回归测试
- 新增核心升级复核用的配置检查、SOCKS、TLS / REALITY、XHTTP 与 Vision 手动探测工具,覆盖 XHTTP 的 OPTIONS 上行、客户端
h2Params行为及 REALITY / Vision 跨核与同核对照 - 探测工具将入口接受连接后的复位统一按无回复判读,不再随复位到达的时机在通过与出错之间摇摆;整理生成器与执行器的共用部分
- 合并状态卡片的滑动跟踪与列表留白冻结判断,补充设置列表滚动、状态卡片收放和提示条跟随的回归测试
仅发布 universal APK;分 ABI 包已在 CI 中构建并核验,不作为发布资产。
1.9.1
1.9.1
自 1.9.0 以来的变更。
新增与改进
- 底部导航支持按住左右拖选,拖动时预览目标,松手后切换页面;横向拖选开始后,滑到系统手势线附近仍可继续选择
- 设置分类及其它二级页面的进入与返回统一为不透明的左右平移,返回时方向相反;支持从右向左布局,并遵循系统动画时长设置
- 导航触控反馈统一由选中胶囊和图标承担,保留键盘焦点提示
修复
- 连续切换设置分类后,返回首页仍能恢复原来的滚动位置
- 系统取消触摸、窗口失焦或多指介入时,正确结束拖选并恢复导航胶囊与图标状态
- 修复导航触摸结束后原位置的按压涟漪残留
构建与工程
- 简化页面导航状态、拖选处理和界面测试工具,补充连续导航、触摸中断、动画复位及设置滚动恢复的回归用例
- 重写项目说明,完善下载、协议、插件、导航与构建指引
仅发布 universal APK;分 ABI 包已在 CI 中构建并核验,不作为发布资产。
1.9.0
1.9.0
自 1.8.4 以来的变更。
升级提示
- VLESS / VMess / Trojan 节点新增 XHTTP 参数存储;旧版本不能完整读取本版本保存或导出的 XHTTP 节点,降级前请先备份
- 旧版本保存的 XHTTP 节点原本未保存主机、路径等参数,升级后会提示参数丢失且不能启动;请重新导入、更新订阅,或在编辑器中补全后保存
核心
- 内置 sing-box 升级至 v1.14.4,补丁集为 1.14.4-neko-2;包含 WireGuard 休眠与重连、VLESS Vision 关闭连接、TUN 会话清理、QUIC / UDP 及 IPv6 伪装请求等上游修复
- 内置 Xray 升级至 v26.10.31;内置根证书随上游更新,SOCKS 入站修正 UDP ASSOCIATE 临时连接的超时计时
- AnyTLS 正式改由 sing-box 内置兼容实现承载,支持运行、测速、独立证书信任策略、整证书固定、uTLS 与 ECH;移除内置 mihomo,APK 不再包含该核心
- 升级或恢复备份时,旧的手动 mihomo AnyTLS 节点恢复自动选核,保留节点参数、证书策略、流量和链式引用;仍作用于旧本地 SOCKS 跳的自定义 JSON 会明确报错,需删除或改写
- 修复 Go 依赖中的 7 个已知漏洞:
golang.org/x/net升至 v0.60.0,golang.org/x/crypto升至 v0.57.0;govulncheck复查实际调用到的已知漏洞为 0
新增与改进
- VLESS / VMess / Trojan 支持 XHTTP 传输,可设置主机、路径、模式与高级参数;支持标准分享链接、VMess v2rayN JSON、Clash 订阅、备份与配置导出
- XHTTP 高级参数按 Xray 客户端白名单规范化,始终拒绝会另连其它服务器的
downloadSettings;支持 REALITY + XHTTP,并在保存或启动前报告不兼容的传输、安全层、Vision 流控与 Mux.Cool 组合 - AnyTLS 的证书策略可通过带版本的通用分享链接保留;订阅刷新保留用户手动覆写,旧 sing-box 节点的原生自定义 JSON 语义保持不变
- 主题恢复为 21 种独立配色,新增「夜间纯黑背景」开关;选色面板支持滚动,测速结果与日志颜色适配当前主题
- 顶部栏、节点、分组、路由、设置与独立内容页统一卡片和配色;设置行改为卡片样式,备份页按导出、导入和恢复默认设置分组
- 一级页面按 Dock 顺序同步左右滑动,连续点击只保留最终目标;旋转、进程重建、RTL 和关闭动画时均保持正确页面状态
- 节点名称与测速结果单行显示并在过长时省略;文本输入保留行内校验,不合法时显示原因并禁用「确定」
- Clash 导入与 XHTTP 校验错误提示本地化,只显示计数、原因和已过滤的键名路径;设置分类标题补齐 13 种语言译文
性能
- 节点、分组、路由、分组标签与规则资源列表改为差量刷新;搜索改为就地过滤并缓存搜索键,减少整表重载和重复字符串处理
- 配置、分组、路由与编辑器页面状态由 ViewModel 保存,旋转后不再重新读取数据库或重播入场动画
- 状态卡片滑动时只重算可见列表的底部留白,并缓存语义色与主题色的和谐化结果,减少逐帧重复计算
修复
- 修复列表后台重读与新增、撤销、拖动排序并发时的重复行、顺序回退和滚动位置跳动
- 修复编辑器保存期间页面关闭或旋转后的界面访问;设置变更监听切回主线程执行,页面销毁后自动取消
- 修复测速与正在运行的服务同时启动外部核心时可能分到同一本机端口的问题
- 修复夜间模式切换、Android 12 及以上启动画面底色,以及后台连接按钮补播过时动画的问题
- 修复状态卡片滑动时列表留白突跳、Snackbar 被卡片遮盖,以及应用列表与出站节点摘要加载期间的重入刷新
- Clash 导入按 mihomo 语义读取
network键;XHTTP 参数在各导入、保存、分享、导出与生成入口统一校验和规范化 - 修复 Android 9 及以下加载页面背景颜色状态列表时的启动崩溃
- 配置日志进一步遮蔽自定义请求头;非法或无法安全转换的节点在运行、测速与导出前明确失败
构建与工程
- 工具链升级至 Gradle 9.8.2、AGP 9.4.1、Kotlin 2.4.21、Go 1.26.10;Android、Gson、Guava、OkHttp 等依赖例行更新并补齐校验哈希
- 建立 Robolectric + Roborazzi 界面回归体系,当前包含 139 张截图基线,以及页面重建、列表、编辑器、转场与旧版系统资源加载测试
- 配置生成黄金场景扩展到 360 个;AnyTLS 补充迁移、证书、ECH、互通、并发关闭与导出测试,CI 包含 Go 测试和 sing-box 补丁包的 race 检查
- 发布流程严格校验 tag、版本号与正式版 / 预览版参数
仅发布 universal APK;分 ABI 包已在 CI 中构建并核验,不作为发布资产。
1.8.4
1.8.4
自 1.8.3 以来的变更。
核心
- 内置 Xray 升级到 v26.10.17(mihomo v1.19.32、sing-box v1.14.3 不变);能力表按 v26.10.17 逐条复核,
run -test与回环探测结果与 v26.10.10 一致。v26.10.17 起 Xray 只接受 .json / .yaml / .toml 等扩展名的配置文件,本应用写 .json,不受影响 - sing-box 补丁集升到 1.14.3-neko-3:没有设置监听端口的 WireGuard 端点改用与链式代理后一跳相同的逐包收发方式,不再为批量收发给每个端点预占约 24 MB 缓冲;这种收发方式连不上服务器时不再在持锁状态下等待一秒,停止时立即结束重连等待,并修正一处并发读写
新增与改进
- 免映射的 hysteria 1 插件节点(faketcp、链上最先拨号的 wechat-video):插件配置的
resolver改为指向 sing-box 的本机 DNS 入站(只听 127.0.0.1),服务器写成域名时由 sing-box 解析。本组的域名节点按分组「节点解析 DNS」的顺序逐台回退,其余走直连 DNS;分组 DNS 是加密 DNS、地址写成域名或没有配置时也能解析,测速同样适用。1.8.3 只在分组 DNS 里有明文、IP 地址、53 端口的服务器时可用
修复
- 多个 WireGuard 节点的分组(选择器)反复连接、断开后,后台服务进程的内存持续上涨不回落,几轮之后连接超时、界面无响应(模拟器上 50 个成员,第 4 轮起 1.5 GB 以上)。原因是每次连接都为每个成员预占约 24 MB 缓冲,停止后这些内存迟迟不回收、再次连接时又变成常驻。现在同样 51 个成员连接、断开 6 轮,内存稳定在约 290 MB(仅代理与 VPN 模式相同)
- WireGuard 作为链式代理的后一跳、前一跳连不上(例如服务器不可达)时,启动会卡住不返回。启动过程中不再产生无用的网络暂停,这个死锁随之消除
- 节点测速失败时,报错文本在存入测速结果、显示到节点卡片之前先脱敏:按本次构建的配置把密码、密钥等凭据的值遮成
***,再按键名脱敏。此前核心的报错原文可能带出节点凭据。测速成功时清掉上一次留下的报错 - Clash 订阅导入 WireGuard 节点:
ip/ipv6写成不带前缀的地址时,按 mihomo 的做法补上/32//128。此前原样写入,sing-box 不接受不带前缀的地址,这类节点在分组里被跳过、单独选中时启动失败
构建与工程
- 新增回归测试:WireGuard 端点的收发方式选择与启动后的内存上限、连不上时发送与重连等待的返回时间、并发收发与关闭(在 CI 的 race 步骤里检查数据竞争)、启动期间不发出网络暂停、前一跳不可达时的启动与停止;测速报错脱敏与 Clash WireGuard 地址前缀的单元测试;hysteria 1 插件节点相关的 7 个黄金基线场景按本机 DNS 入站更新
- 可重放补丁产物改名为
sing-box-v1.14.3-neko-3.diff,版本一致性校验同步
仅发布 universal APK;分 ABI 包已在 CI 中构建并核验,不作为发布资产。
补注(2026-10-24)
- 本版本内置的 Xray v26.10.17 已被上游删除(tag 与发布都已不存在),按本版本的源码已无法重新构建:下载内置核心的一步(
./run lib plugins)会失败。已发布的 APK 不受影响,其中的 Xray 是当时按固定 sha256 校验过的官方二进制。需要从源码构建时请使用 1.9.0-a3 或更新的版本
1.8.3
1.8.3
自 1.8.2 以来的变更。
升级提示
- 数据库结构从 9 升到 10。升级到本版本后不能再装回旧版本:旧版本打不开新结构的数据库,会以「数据库无法打开」停止服务。回退前请先导出备份。
核心
- 内置核心版本不变(Xray v26.10.10、mihomo v1.19.32、sing-box v1.14.3)
- sing-box 补丁集升到 1.14.3-neko-2:WireGuard 启动失败时的报错不再带出完整的接口配置原文(含私钥、对端公钥、预共享密钥的十六进制),这段报错此前会原样进入日志与界面
新增与改进
- 启动、测速、导出前由内置 sing-box 逐个试建节点出站(只解析与构造,不监听、不拨号):选择器成员或路由规则目标的证书不是合法 PEM、ECH 配置损坏、SSH 私钥 / 口令 / 主机公钥读不出来、Shadowsocks 2022 密钥不是 base64 或长度不符、WireGuard 密钥长度不对、自定义出站 JSON 有未知字段等只在 sing-box 加载期才暴露的错误,现在在构建阶段就被识别:该成员被跳过并提示错误类别,其余节点照常启动;选中的节点自身有这类错误时启动失败,提示「节点名: sing-box rejected the outbound options: <类别>」。提示与日志只含错误类别和字段路径,不回显任何取值。此前这类坏成员会让整组启动失败,报错是 sing-box 的原始文本
- 缺少插件时的下载入口统一指向托管该插件的 GitHub Releases 页面(Hysteria、Naive、Mieru 在 MatsuriDayo/plugins,Trojan-Go 在 SagerNet/SagerNet),去掉已不再分发的 Play 商店与 F-Droid 入口;对话框标题改为插件名
- 免映射的 hysteria 1 插件节点(faketcp、链上最先拨号的 wechat-video):分组「节点解析 DNS」里配了明文 udp / tcp、IP 字面量、53 端口的服务器时,插件配置写入
resolver,服务器域名经该服务器解析。此前插件用 Go 的默认解析,Android 上没有系统解析器配置,服务器写成域名的这类节点解析失败。分组 DNS 只有加密 DNS 或域名地址、或没配分组 DNS 时仍然解析不了,留待后续版本在 sing-box 侧提供本机 DNS 入站解决
修复
- 备份恢复与订阅更新的竞争:恢复备份后约 1 秒内仍在进行的订阅更新不再把旧节点写回去覆盖恢复出来的数据。恢复替换节点与分组时记一次数据世代,订阅更新在写库事务里比对,世代变了就整次放弃(下次自动更新照常)
- 订阅「强制解析」:域名解析改为最多 5 个并发。此前所有节点同时解析,几十个节点的订阅一次发出几十个 DNS 查询,容易被上游限速或丢弃
性能
- 节点库(节点、分组、路由规则)的读取全部移出主线程:偏好项摘要、节点与链编辑器、路由页出站名、服务启动与通知标题、快捷切换、磁贴等处改为后台读取或使用已载入的数据,减少界面卡顿与 ANR 的机会;设置项数据库维持原样
构建与工程
- libcore 新增逐出站试建入口
TrialSingBoxOutbound(进程内复用一个从不启动的 sing-box 实例,返回值只有错误类别与字段路径,sing-box 原始报错与配置内容不出 Go)及其回归测试;./run lib test改用与 AAR 相同的构建标签,主机上的测试与设备行为一致 - 黄金基线新增 12 个试建场景与一份试建语料(类别手写、Go 用真实 sing-box 逐条核对、JVM 测试要求每条都被查中),SSH 夹具换成格式真实的测试专用 ed25519 密钥;单元测试从 919 项增至 976 项
- 配置页拆出分组维护操作与搜索接线两个文件;多处英文注释改为中文;修正 1 个在双核 CI 上偶发失败的并发取消用例(只改断言,不改被测代码)
仅发布 universal APK;分 ABI 包已在 CI 中构建并核验,不作为发布资产。
补注(2026-10-24)
- 本版本内置的 Xray v26.10.10 已被上游删除(tag 与发布都已不存在),按本版本的源码已无法重新构建:下载内置核心的一步(
./run lib plugins)会失败。已发布的 APK 不受影响,其中的 Xray 是当时按固定 sha256 校验过的官方二进制。需要从源码构建时请使用 1.9.0-a3 或更新的版本
1.8.2
1.8.2
自 1.8.1 以来的变更。
核心
- 内置核心版本不变(Xray v26.10.10、mihomo v1.19.32、sing-box v1.14.3)
- libcore 改用 Go 1.26.9 编译(1.8.1 用的是 1.26.8),带上 Go 官方对 crypto/tls、net/http、net/textproto 等包的安全修复
新增与改进
- 打开「允许来自局域网的连接」前先弹出确认:代理端口没有密码,开启后同一网络里(例如公共 Wi-Fi)的任何设备都能使用本机的代理
- 订阅更新的结果对话框只列节点的新增、更新、删除与重复;Clash 订阅里被拒绝或有损导入的节点改为只写进日志,不再另弹「导入结果」对话框
修复
- 局域网连接开关:服务运行时改动立即生效。此前要在几秒内点到提示里的「应用」或重启服务,没点到时开关显示关闭,端口却仍对局域网开放
- 选择器分组:当前节点在选择器分组里时,设置页、路由规则与分应用代理改动后点「应用」不生效,要手动重启服务;现在会按新设置重启。在选择器内切换节点仍是直接切换,不重启服务
- 分组 DNS:由 Xray / mihomo 承载、经本机映射端口转发的节点,服务器域名同样经分组配置的节点解析 DNS 解析(此前走默认解析)
- 测速:整组测速期间节点被编辑或订阅更新改了配置时,旧配置的测速结果不再写回到新配置上;配置没变(如只改了名字)的照常写入
- Clash 订阅:别名指回自身(成环)或层层引用、展开后过大的 YAML 按无效内容处理,不再让订阅更新崩溃或耗尽内存
- 订阅更新:写入时只处理此刻仍在本分组的节点,更新期间被删掉的节点不再报成本次删除
- 选核冲突提示:节点的 uTLS 指纹、ws early data 头名等取值含换行、异常字符或超过 64 个字符时,对话框里显示「取值不显示」,日志里写
(value not shown),不再原样回显 - 链式代理编辑器:选择成员节点时,编辑器缓存若已被另一个编辑器接管,迟到的选择结果不再写入
构建与工程
- CI 固定 Go 的补丁版本(go1.26.9),版本检查要求 libcore 工作流两处 go-version 与缓存键里的 Go 版本一致;此前只写 1.26 时用的是 runner 预装的补丁版本,出了安全补丁也用不上
- README 改为要求使用 Go 1.26 线最新的补丁版本;问题模板加入环境栏,提醒发帖前去掉订阅链接、服务器地址、UUID 和密码,并写明日志的导出路径
- 补充分组 DNS 映射解析的 libcore 运行时测试,以及测速结果写回、选核取值回显的单元测试;单元测试从 911 项增至 919 项
- 删除未使用的 Play 商店图标与一个未引用的图标资源
仅发布 universal APK;分 ABI 包已在 CI 中构建并核验,不作为发布资产。
补注(2026-10-24)
- 本版本内置的 Xray v26.10.10 已被上游删除(tag 与发布都已不存在),按本版本的源码已无法重新构建:下载内置核心的一步(
./run lib plugins)会失败。已发布的 APK 不受影响,其中的 Xray 是当时按固定 sha256 校验过的官方二进制。需要从源码构建时请使用 1.9.0-a3 或更新的版本
1.8.1
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 写了
- 导入结果改变的写法:
- 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)
- hysteria2 只写
- 导入汇总里的字段记录同样按 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 或更新的版本
1.8.0
1.8.0
自 1.7.7 以来的变更。
核心
- 内置 Xray 升级至 v26.10.10(原 v26.3.27),内置 mihomo 升级至 v1.19.32(原 v1.19.31),sing-box 升级至 v1.14.3(原 v1.14.2),本地补丁集为 1.14.3-neko-1;sing 生态模块随之升级
- 节点由哪个核心承载改为完整的能力匹配:先核对协议、传输方式、TLS / REALITY、证书固定、多路复用、packet encoding、uTLS 指纹、VLESS flow 等整套组合,再按偏好选核;没有核心能完整承载、或手动指定的核心承载不了时明确报错并列出冲突字段,不再静默丢字段、退化传输或悄悄换核心。编辑器保存时按同一套规则检查
- 自动选核的变化(其余组合不变):不带 REALITY 的 VLESS 从 Xray 改走 sing-box(带证书指纹、Mux.Cool、或只有 Xray 支持的 flow / uTLS 指纹的留在 Xray);VMess + REALITY、Trojan + REALITY 从 sing-box 改走 Xray;不带证书指纹和自定义证书的 AnyTLS 从 mihomo 改走 sing-box;开了「允许不安全」的 VLESS REALITY 节点按规则走 Xray
- Trojan 节点可以由 Xray 承载,编辑器里 Trojan 新增「核心」选项;带证书指纹或 mldsa65Verify 的 Trojan 此前报错,现在走 Xray
- 多路复用分两族:sing-mux(h2mux / smux / yamux,sing-box)与 Mux.Cool(Xray),编辑器按所选核心显示可选项。Xray 承载的节点开多路复用时补写
xudpProxyUDP443: allow,去 UDP/443(QUIC)的流量不再被 Xray 静默丢弃 - 升级时一次性整理存量节点(数据库版本 8 → 9):按旧规则的实际运行方式补齐多路复用协议族、WebSocket early data 的携带方式与手动核心值,从 Xray 改走 sing-box 且没填 uTLS 指纹的 VLESS 补写 firefox 指纹;恢复旧备份、导入旧通用链接时做同样的整理。升级后不能再装回 1.7.7 及更早版本(旧版打不开新数据库)
- REALITY 的 mldsa65Verify 只有 Xray 支持,最终核心不是 Xray 的节点拒绝连接并说明原因,不再被 sing-box 静默丢掉
- Xray 行为变化:
allowInsecure无条件拒绝;TLS 客户端默认信任 Xray 内置的根证书包而不是系统证书库,节点自带的certificates照常生效,但装进系统证书库的 CA 对走 Xray 的节点不再生效 - sing-box 行为变化:未被路由规则或当前选中项引用的出站会关闭空闲连接,切回之前未选中的、带多路复用或 QUIC / HTTP / gRPC 传输的节点时要重新握手;Hysteria / Hysteria2 / TUIC 不再默认允许 UDP 分片
- 服务端侧的变化会影响能否连通:Xray v26.9.8 起的 REALITY 服务端要求客户端提供 X25519MLKEM768,sing-box 承载的 REALITY 节点连不上这类服务端,Xray 承载的要用 chrome / firefox / safari 一类指纹;Xray v26.7.11 起的服务端删掉了 VMess 的 none / zero 加密。测速时 REALITY 握手失败会给出对应提示
- sing-box 承载的 VMess 开 TLS 且加密为 auto 时改写为 aes-128-gcm,此前 sing-box 会换成 zero,对新版 Xray 服务端连不上且不报错
新增与改进
- Xray 与 mihomo 每种核心只运行一个进程:一次连接里所有走 Xray 的节点(选择器成员、链里的节点、路由规则指向的节点)合并成一份配置由一个进程承载,mihomo 同理;Trojan-Go、Naive、Mieru、Hysteria 1 仍是每个节点一个进程。导出配置时 Xray、mihomo 的配置各合并成一段
- 启动前校验与就绪确认:内置 Xray / mihomo 启动前先把合并配置加载一遍,被拒绝时不启动、报错以出错节点的名字开头;外核本机入站逐个确认可用后才启动 sing-box
- Xray 与 mihomo 的本机入站启用认证:每次连接随机生成用户名 / 密码写进两端配置,本机其它应用不能再直接连这些端口绕过分流与统计(只约束 TCP);启动时用错误密码试连一次,确认认证已生效
- 选择器分组与路由规则里的坏节点不再拖垮整份配置:启动前逐个预检,无效的成员跳过并逐行列出节点名与原因,当前选中的节点出错仍直接报错。预检覆盖链循环与空链、证书指纹、REALITY / WireGuard / Hysteria 参数、自定义出站 JSON、外核配置、缺插件,以及 sing-box 不认识的 Shadowsocks 加密与插件、VMess 加密、TUIC 拥塞控制、uTLS 指纹
- 配置构建失败、sing-box 创建或启动出站失败时,报错开头标明对应的节点名
- 未知的传输方式不再按 TCP 运行:xhttp、splithttp 等在导入时拒绝并说明原因,已保存的节点连接时明确报错;Xray 的
raw按 TCP 识别;ZIP 导入时单个条目被拒不影响其余条目 - Clash 订阅导入报告被跳过与有损导入的节点:订阅更新的 Diff 对话框末尾列出类型不支持、解析失败、部分字段未保留(字段路径与原因)与无影响的字段;一个节点都没导入时也弹出「导入结果」。导入后连不上或少一道安全校验的 10 类 Clash 节点改为明确拒绝。诊断与日志里只出现字段路径和少数枚举值,不含节点名、地址与凭据
- 界面改为 Material 3:底部悬浮 Dock 取代侧边抽屉,配置 / 分组 / 路由 / 设置四页从 Dock 切换,连接按钮常驻 Dock 右侧;状态栏改为悬浮卡片,随滚动收起;开关、对话框、卡片、Chip、列表项与字号层级统一为 Material 3;顶部栏随内容滚动显示分隔;空列表显示说明文字
- 主题精简为 6 种(粉为默认、橙、蓝、绿、白、黑),配色按 Material 3 算法生成;之前选了已移除颜色的自动显示为相近的一种,设置里保存的值不变
- 设置页拆成「运行」「界面」「通知」「路由」「DNS」「入站」「高级」七个分类页,日志、仪表板、工具、关于放在一级页末尾;所有设置项都有图标,长标题换行完整显示
- 动效:一级页之间交叉淡变、设置二级页横向滑入滑出、Dock 选中胶囊弹簧滑动、连接按钮已连接时轻微呼吸、断开时从已连接图标变形过渡;全部遵守系统「动画时长缩放」设置
- 应用图标换成新设计(改编自 OpenMoji,CC BY-SA 4.0),快捷设置磁贴与通知小图标换成它的剪影
性能
- 含大量 Xray / mihomo 节点的分组不再触发系统反复清理进程(Android 12 起子进程数受限)。模拟器实测(38 个 Xray、2 个 mihomo、2 个 sing-box 节点,运行 330 秒):外核进程 40 → 2,被系统杀掉 24 次 → 0 次,应用总内存约 700 MB → 290 MB
- Xray 与插件核心节点的测速去掉固定的 0.5 秒等待,入站就绪即开始
- 选择器分组预检时,同一个外核节点(如分组的前置 / 落地代理)只试生成一次配置
修复
- 流量统计:同一节点出现在多条链或多个规则目标里时各处流量都计入;选择器分组带前置代理时速度不再恒为 0;前置 / 落地代理、链的各跳与规则直接指向的节点计入流量;切换节点时尚未统计的流量记给旧节点
- 链:嵌套链按填写顺序连接(此前子链倒序,含嵌套链的配置升级后路径会变,请核对);链编辑器一次拖过多行后保存顺序与界面一致
- 订阅与导入:只含无认证 HTTP 代理的订阅可以在新分组正常更新;修改链接或类型后旧的流量与到期信息清零;Clash 的
ws-opts.v2ray-http-upgrade只在network: ws时生效且与键序无关;http 节点读取证书固定;订阅里不认识的传输方式值、带显式 YAML 标签的非字符串键不再原样出现在提示与日志里;「… 另有 N 项」显示剩余条数(此前是总数) - 旧版本保存的 gRPC 节点(1.2.8 及更早)不再读错位,包括这些版本导出的备份与通用链接
- 路由:
regexp:域名规则不再被转成小写 - 服务:仅代理模式可以正常使用(此前出站一律报 no VpnService);VPN 与仅代理服务切换时不再互相清掉登记,停止后的重放按当前模式启动;外核在就绪等待中被系统杀掉又被守护重启时不再判为启动失败;测速取消或启动中途停止时不残留核心实例与临时文件
- 数据损坏的选择器成员(节点数据为空)照常跳过并以节点 id 提示,不再让整份配置构建失败
- 隐私:Xray 配置校验报错里的 UUID、十六进制解码错误与 REALITY shortId 一律遮蔽;写进日志的 mihomo 配置里的密码与
username/user/pass一并遮蔽;节点编辑页密码摘要不再暴露长度 - 界面:全面屏下连接按钮闪现、工具栏钻进状态栏、键盘遮挡列表等遮挡问题;分组卡片的订阅更新日期用系统日期格式;「Mulitplex」拼写改正
构建与工程
- 配置生成改为只消费事先采集的输入、按「先规划、再提交」两段进行,能力表集中声明三个核心的能力并由测试对照固定的核心版本
- 新增配置输出基线(326 个场景 × 运行 / 测速 / 导出)与 JVM 黄金测试、存储格式兼容测试;单元测试从 1.7.7 的 60 项增至 796 项
- 新增
./run lib check_core_releases检查内置核心的新版本;geo 数据库改为构建时取上游最新发布并按上游 sha256 校验;本地构建核对 NDK 版本,不再静默用错 - 移除 fdroid 构建变体;CI runner 固定为 ubuntu-24.04
- 全周期 /simplify 复审:合并重复的显示规则、端点校验、mux 划分与日志脱敏入口等 15 处
仅发布 universal APK;分 ABI 包已在 CI 中构建并核验,不作为发布资产。
补注(2026-10-24)
- 本版本内置的 Xray v26.10.10 已被上游删除(tag 与发布都已不存在),按本版本的源码已无法重新构建:下载内置核心的一步(
./run lib plugins)会失败。已发布的 APK 不受影响,其中的 Xray 是当时按固定 sha256 校验过的官方二进制。需要从源码构建时请使用 1.9.0-a3 或更新的版本
1.7.7
1.7.7
自 1.7.6 以来的变更。
新增与改进
- WireGuard 的「对端允许 IP」(AllowedIPs)开始生效:填了就只放行该范围,与官方客户端一致;留空仍放行全部。从 .conf 或 Clash 订阅导入、带分流范围(如 10.0.0.0/8)的节点,升级后只有范围内的流量能通过,想恢复原来的行为请清空这一项;导入时格式不合法的值会被清空
- 证书指纹固定不再被静默忽略:sing-box 核心与 hysteria 插件不支持证书固定,此前设置了也不生效。现在直接选中这类节点会拒绝连接并说明原因,编辑器保存时也会拦下;选择器分组成员或路由规则指向的这类节点改为跳过并汇总提示,不影响分组里的其他节点。自动核心下设置了证书指纹的 VMess / VLESS 会选用 Xray(支持证书固定)
- 云备份不再上传任何数据:此前设置库(含自定义 DoH 地址中的个人 ID、自定义配置)会随 Google 云备份上传。通过云备份换机或重装后设置不会自动恢复,请用应用内「备份与恢复」导出;Android 9 及以上换机迁移仍会带上设置,Android 7–8.1 换机不再迁移设置
- 仅代理(非 VPN)模式下服务运行时,订阅更新与规则资源下载不再悄悄改走直连:本地代理不可用时直接报错并提示先停止服务;服务未运行或 VPN 模式下行为不变
- Clash 面板:核心未连接时不再加载本机面板并清除面板存储,核心停止时立即清空已打开的面板、重新连上后自动加载,避免面板密钥被占用 9090 端口的其他应用获取;Clash API 未开启时提示「Clash API 未启用」
- 插件日志级别跟随应用设置分级(warn / info / debug / trace),hysteria、Xray、mihomo、trojan-go 不再在开启任意日志级别时直接输出最详细日志
- 速度显示的默认间隔与设置页一致(1 秒):从未打开过设置页的用户,升级后会开始显示速度
- 编辑器:AnyTLS 密码与 WireGuard 私钥输入框改为掩码;本地代理端口只接受 1025–65535;订阅链接无法解析或含换行时拒绝保存;订阅自动更新间隔改为数字键盘并在不合法时提示原因
- 路由规则相关提示(应用未安装、需要 VPN、出站不存在、节点被跳过)每次连接各汇总一条,不再逐条弹出
性能
- 列表滚动时不再每一步查询一次数据库
修复
- WireGuard:核心启动后网络一直处于暂停状态,IP 地址 endpoint 的隧道启动即关闭,域名 endpoint 的 keepalive / 重传 / 重新握手停摆
- 日志分享:「发送日志」与崩溃后的自动发送日志不再崩溃,崩溃后不再陷入反复重启;日志整理移到后台线程,临时日志文件在下次分享时清理;离开日志页时取消导出不再留下多余错误记录
- 路由:带应用条件的组合规则在所选应用全部未安装时整条跳过并提示,不再对所有应用生效
- 流量统计:服务停止与启动交错时不再遗留旧的统计循环,避免流量少计与重复通知
- 日志脱敏:补上 trojan-go 的密码数组、hysteria1 的混淆密码,以及 DoH 服务器路径中的个人 ID
- 服务:被系统直接销毁时先显示「正在停止」、后台关闭完成后才视为已停止,避免旧核心仍占用端口时立即重启失败;后台更新任务不再读到陈旧的连接状态
- 界面:拖拽排序在列表刷新瞬间不再可能越界;搜索中新增的节点按关键词过滤;节点选择页在进程恢复后保持分组与标题;分组页刷新不再在后台线程读写界面状态;链接导入解析期间旋转屏幕或退出不再因弹窗崩溃
- 数据:损坏的节点数据只影响该行,不再导致整组读取失败;单个节点删除与清空分组改为单个事务;备份恢复多次失败后不再保留含凭证的明文文件
- 平台 DNS 调用同步失败时,等待协程不再滞留到超时
- WireGuard:AllowedIPs 格式错误的报错带上节点名称
构建与工程
- 新增核心启动后网络状态、平台 DNS 调用失败、仅代理模式不回退直连的 Go 回归测试,以及日志脱敏的单元测试
- 精简 1.7.7 改动中的重复代码:证书指纹判断收拢到单一入口、拖拽排序防护并入公共函数、脱敏规则共用一份键名列表等
仅发布 universal APK;分 ABI 包已在 CI 中构建并核验,不作为发布资产。
1.7.6
1.7.6
自 1.7.5 以来的变更。
核心
- sing-box 升级至 v1.14.2,neko 补丁集升至 1.14.2-neko-1;流量统计服务改为在核心启动前安装,删除 2 项不再需要的补丁
- 未开启 Clash API 时不再常驻 sing-box 流量管理器,每条连接少一层统计开销
新增与改进
- 设置 → 软件设置新增「在最近任务中隐藏」开关(默认关闭):开启后应用不出现在多任务界面,切换即时生效;只影响列表显示,服务与通知照常运行。扫码、切换节点等本就不进最近任务的界面,关闭开关后仍保持隐藏
- 分组的前置 / 落地代理可以选择链;链的成员全部失效时启动报错,不再静默跳过前置 / 落地
性能
- 停止与重启服务时,核心关闭移到后台线程,不再阻塞主线程;服务在连接中被系统直接销毁时同样在后台关闭
- 二维码对话框按二维码模块数生成小位图、由界面放大显示(边缘保持锐利),主线程上要填充的像素量从数十万降到数千
修复
- 服务生命周期:连接中服务被系统直接销毁时,tun 文件描述符也会正确关闭
- 订阅与导入:订阅更新不再清空用户在分组设置里手填的节点解析 DNS,只清除由订阅自身写入的值;开启 FakeDNS 时,订阅「强制解析」不再把 fakeip 段的假 IP 写进节点,底层网络暂缺时按解析失败处理,不回退默认解析器
- 订阅解析与 ping 测试的域名解析:DoH / DoH3 每台服务器最多等待 5 秒,第一台无响应时继续尝试后续服务器(1.7.5 说明中的「单台超时不再耗尽整体预算」此前只对 udp / tcp / tls / quic 生效)
- 界面:节点列表增删、拖动后,流量不再显示到别的行上;停止服务后重新显示的行使用最新流量,而不是列表加载时的旧值
构建与工程
- 发布改用 gh release:重跑旧版本的发布不再抢走 Latest 标记,tag 不再删除重建
- CI 构建并行运行 app 单元测试与全量 lint,发布须二者通过
- preview 版本名改为构建时按 git 短哈希生成,构建配置期只调用一次 git
- 补充 dialer 接口选择绕过补丁的回归测试与订阅存储格式测试;编辑器快捷键栏初始化顺序出错时直接报错,便于排查
- 若干处代码精简;README 更新
仅发布 universal APK;分 ABI 包已在 CI 中构建并核验,不作为发布资产。