Skip to content

Commit 573a264

Browse files
WayneWu98claude
andcommitted
chore(release): v2.10.1 — upstream bug-fix sync
Six fixes ported from upstream 7Sageer/sublink-worker (none of which affect the Snell support added in v2.10.0): - 7Sageer#371 custom rule proxy choices - 7Sageer#382 xray subscription-userinfo - subscription decoding (no spurious base64 decode of plain payloads) - 7Sageer#378 reject empty Clash url-test/fallback groups - 7Sageer#380 sing-box 1.11+ schema (no legacy block outbound, reject route action) - 7Sageer#379 stable hash-based auto provider names Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 495d715 commit 573a264

4 files changed

Lines changed: 24 additions & 2 deletions

File tree

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,17 @@ The Fall Back selector's default member (what unmatched traffic uses until the u
153153
154154
## 🗒️ Changelog
155155
156+
### v2.10.1
157+
158+
Sync six bug fixes from upstream `7Sageer/sublink-worker`. None of these affect the existing Snell support added in v2.10.0.
159+
160+
- **Restore full proxy choices in Custom Rule selectors** (#371). Custom Rule groups (e.g. "YouTube → MyProxy") now include individual nodes alongside the existing Node Select / Auto Select / Manual Switch / DIRECT chain — previously the node list was missing, so users could only route through aggregate selectors.
161+
- **Preserve subscription-userinfo on `/xray`** (#362, #382). The xray endpoint now passes the upstream `subscription-userinfo` HTTP header through to the client, matching the existing behaviour of `/singbox` / `/clash` / `/surge`. Surge / Stash / Loon clients in xray mode now show traffic and expiry information again.
162+
- **Better remote subscription decoding**. `decodeContent` no longer base64-decodes payloads that are already plain Surge / Clash / Sing-Box config or `ss://`/`vmess://`/etc. share-link lists, avoiding garbled output. Surge config text is now recognized in `detectFormat`.
163+
- **Reject empty Clash proxy groups** (#378). User-supplied `url-test` / `fallback` groups with empty `proxies: []` and no `use:` references now produce a 400 error with the offending group name, instead of being silently filled with all available nodes.
164+
- **Sing-Box 1.11+ schema** (#380). Removed the legacy `{type:'block', tag:'REJECT'}` special outbound and the deprecated `independent_cache` field from the base Sing-Box config. Ad Block rules now emit `action: reject` route actions (1.11+ idiom) rather than routing to a REJECT outbound. Selector groups in sing-box no longer include `REJECT`. A new sanitization pass strips legacy `block` / `dns` outbound references from user-uploaded base configs.
165+
- **Stable auto-provider names** (#379). Provider auto-tags are now `_auto_provider_<base36 hash>` derived deterministically from the source URL (FNV-1a 32-bit), instead of `_auto_provider_1` / `_2` indexes that shifted on every build. Duplicate URLs are deduplicated; hash collisions get `_2` / `_3` suffixes. Affects both Clash `proxy-providers` and Sing-Box `outbound_providers`. Cached providers will be re-downloaded once after the upgrade.
166+
156167
### v2.10.0
157168
158169
- **Snell protocol support.** Parses Snell nodes from Surge config blocks, Clash YAML (`type: snell` with `obfs-opts`), and a new tool-internal `snell://` share-link form (`snell://<psk>@<host>:<port>?version=&obfs=&obfs-host=&tfo=&reuse=&udp=#name`). Outputs natively to Surge and Clash (Mihomo); Sing-Box has no native Snell outbound, so Snell nodes are dropped with a console warning and excluded from selector groups. The `snell://` URL is *not* a community standard — URLs from other tools (Surgio, etc.) follow different conventions and are not guaranteed to round-trip.

README.zh-Hans.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,17 @@ Sing-Box · Clash · Xray/V2Ray · Surge
153153
154154
## 🗒️ 更新日志
155155
156+
### v2.10.1
157+
158+
同步上游 `7Sageer/sublink-worker` 的六项 bug 修复,均不影响 v2.10.0 引入的 Snell 支持。
159+
160+
- **自定义规则选择器恢复完整节点列表**(#371)。自定义规则的策略组(如"YouTube → 我的节点")现在会列出单个节点,而不只是 Node Select / Auto Select / 手动切换 / DIRECT 这几条聚合项。此前节点列表缺失,用户只能通过聚合选择器路由。
161+
- **`/xray` 端点保留 subscription-userinfo**(#362、#382)。xray 端点现在会把上游订阅返回的 `subscription-userinfo` HTTP 头透传给客户端,与 `/singbox` `/clash` `/surge` 行为一致。Surge / Stash / Loon 等客户端在 xray 模式下重新可见流量与到期信息。
162+
- **更稳的远程订阅解码**。当订阅响应已经是明文 Surge / Clash / Sing-Box 配置或 `ss://` / `vmess://` 等分享链接时,`decodeContent` 不再无条件 base64 解码,避免产生乱码。`detectFormat` 同时增加对 Surge 文本的识别。
163+
- **拒绝空 Clash 代理组**(#378)。用户提供的 `url-test` / `fallback` 组若 `proxies: []` 且没有 `use:` 引用,现在会返回 400 并指明出错组名,而不是静默用全部节点填充。
164+
- **Sing-Box 1.11+ schema**(#380)。移除基础配置里的旧式 `{type:'block', tag:'REJECT'}` 特殊出站与已废弃的 `independent_cache` 字段。Ad Block 规则改用 1.11+ 的 `action: reject` route action,而非路由到 REJECT 出站。sing-box 的策略组不再含 `REJECT`。新增清扫步骤会移除用户上传的 base config 里残留的 `block` / `dns` 出站引用。
165+
- **稳定的自动 provider 名**(#379)。auto-provider 标签改为基于源 URL FNV-1a 32-bit 哈希的 `_auto_provider_<base36>`,不再是每次构建都会变的 `_auto_provider_1` / `_2` 索引。重复 URL 自动去重,哈希冲突用 `_2` / `_3` 后缀避让。Clash `proxy-providers` 与 Sing-Box `outbound_providers` 同步生效。升级后客户端会重新拉取一次 provider 缓存。
166+
156167
### v2.10.0
157168
158169
- **新增 Snell 协议支持。** 可识别 Surge 配置段、Clash YAML(`type: snell`,含 `obfs-opts`)以及本工具自定义的 `snell://` 分享链接形式(`snell://<psk>@<host>:<port>?version=&obfs=&obfs-host=&tfo=&reuse=&udp=#name`)。输出端 Surge 与 Clash(Mihomo)原生支持;Sing-Box 无原生 Snell 出站,遇到 Snell 节点时会跳过并在控制台输出警告,不进入策略组。`snell://` 链接为本工具自定义格式,**非社区标准** —— 来自其他工具(Surgio 等)的 `snell://` URL 各家约定不同,不保证可直接解析。

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sublink-worker",
3-
"version": "2.10.0",
3+
"version": "2.10.1",
44
"private": true,
55
"type": "module",
66
"scripts": {

src/constants.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Application constants
22
export const APP_NAME = 'Sublink Worker';
3-
export const APP_VERSION = '2.10.0';
3+
export const APP_VERSION = '2.10.1';
44
export const GITHUB_REPO = 'https://github.com/WayneWu98/sublink-worker';
55
export const GITHUB_API_RELEASES = 'https://api.github.com/repos/7Sageer/sublink-worker/releases/latest';
66
export const DOCS_URL = 'https://sublink.works';

0 commit comments

Comments
 (0)