@having5548/dsh-downloader 0.5.3 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -9,10 +9,91 @@
9
9
 
10
10
  ## [未发布]
11
11
 
12
- ## [0.5.3] - 2026-10-11
12
+ ## [0.7.1] - 2026-11-14
13
13
 
14
14
  ### 修复
15
15
 
16
+ - **页面整块显示英文**(界面其它地方都是中文)。
17
+ 根因:`ctx.locale` 只有在 `inject` 里声明了硬依赖 `locale` 时才存在,而本插件只 inject 了
18
+ `slots` —— 于是 `ctx.locale.register` / `bind` / `getLocale` 全部抛异常、被 try/catch 吞掉,
19
+ 回落到英文默认值;侧栏标签也是靠 `label()` 的硬编码兜底才显示成中文。
20
+ 修法:改用**可选访问** `ctx.get('locale')`,包在 `localeService()` 里(硬依赖与可选访问两条路都试),
21
+ 并让测试的假 ctx **只**通过 `get('locale')` 提供服务 —— 直接暴露 `ctx.locale` 会让这个测试失去意义,
22
+ 而漏掉这一点正是「全变英文」的原因。
23
+ - 新增 `scripts/fix-nested-links.mjs` 与 `npm run fix-links`:修 pnpm 在扁平布局下留下的「空壳」嵌套依赖目录。
24
+ DSH 的加载器按每个包自己声明的 dependencies **构造路径并直接 open**(`<包>/node_modules/<依赖>/<main>`),
25
+ 空目录不会向上回退,于是插件 `failed to import`,连带其它插件一起报同一个路径。
26
+ 脚本把缺的嵌套依赖指回顶层同名包(Windows 用 junction,其它平台用符号链接),可反复执行。
27
+
28
+ > 测试 421 项全过。
29
+
30
+ ## [0.7.0] - 2026-11-14
31
+
32
+ ### 新增
33
+
34
+ - **左侧栏导航入口**:插件现在在侧栏有自己的面板行(`sidebar.panellist` + keyed `main`),
35
+ 点开是一个完整的「下载代理」页面,不再是只能钻进设置里找。
36
+ - **设置页与导航页共用同一套组件与样式**:同一个 `DownloaderPage`,两种排版
37
+ (`variant: 'panel' | 'settings'`),所以两个入口长得一样。
38
+ - **中英双语,默认跟随系统语言**:字典经 `ctx.locale` 注册 —— DSH 会按浏览器/系统语言自动选中,
39
+ 用户也能在 设置 → 语言 里改;页内另有「自动 / 中文 / English」切换,只影响本插件页面,不劫持全局语言。
40
+ - **高级设置开关**:默认只显示常用项(上游状态、节点配置、节点选择、下载目录/线程/大小上限、
41
+ 会话保护、流量)。打开开关后才展开上游地址、订阅、拉订阅代理、分组策略、首选节点、测速参数、
42
+ 分流(境内直连 / AI 平台直连 / 额外直连域名 / 追加与剔除规则)、下载引擎(重定向、停滞、TLS、
43
+ 写盘范围、shell 守卫)与 harness 出网(`harnessProxy` 与固定端口)。开关状态记在 localStorage。
44
+ - 节点配置卡片改为 FlClash 式网格:名称、流量进度条、更新时间,右上角 `⋯` 菜单做选用/更新/自动更新/删除,
45
+ 右下角「添加配置」展开导入表单(订阅地址 + 名称 + 文件导入)。
46
+ - 节点卡片网格:「自动选择」+ 每个节点的类型与延迟(绿/红),点击即选用,右上角「全部测速」。
47
+ - 新增宿主接口 `select-auto`(清掉钉死的节点,回到分组策略自动挑)。客户端对旧宿主有降级路径。
48
+
49
+ ### 变更
50
+
51
+ - 设置页文案**全部重写**为口语化的中文,不再直接显示 `upstream` / `proxyUrl` / `latencyTimeoutMs` 这类字段名。
52
+ - 样式全部改用 DSH 主题令牌(`--dsw-alias-*`),自动适配明暗与配色,不再写死颜色。
53
+
54
+ ### 修复
55
+
56
+ - 「自动选择」以前实际是把 AUTO 组的当前节点**钉死**成手动选择 —— 语义反了。现在走 `select-auto` 真正清除选择。
57
+
58
+ > 测试 406 → 421 项:新增「`apply()` 在一个最小 ctx 上真的能跑起来」的断言(捕获注册结果,
59
+ > 而不是 grep 源码)、四个槽(`sidebar.panellist` / `main` / `settings.section` / `sidebar.footer.action`)都必须注册、
60
+ > 两个入口必须由同一个 `DownloaderPage` 渲染,以及**中英字典必须键集完全对齐**、
61
+ > **源码里每个 `t('key')` 都必须有译文**(漏翻译是这类改动的典型 bug)。
62
+
63
+ ## [0.6.0] - 2026-10-17
64
+
65
+ ### 新增
66
+
67
+ - **`harnessProxy`:让 harness 自身的出网也走内核**(原先只有 `dsh_download` 与 `dsh_run_proxied` 走)。
68
+ 做法是把内核绑到**固定端口**、额外接受一个**持久化令牌**,再把
69
+ `HTTP_PROXY` / `HTTPS_PROXY` / `ALL_PROXY` 写进 `$DSH_HOME/.env`(写前备份)。
70
+ DSH 启动时据此装全局 dispatcher 并把变量传给子进程,因此**这些会跟着走**:
71
+ `web_fetch`、shell 子进程里的 `curl`/`git`/`npm`、MCP 的 HTTP 传输、jobs/workflow/subagent 派生的进程。
72
+ **覆盖不到** Electron 渲染进程与内嵌 webview —— Chromium 读的是**系统代理**,不读环境变量。
73
+ - 新工具 `dsh_harness_proxy`(`status` / `apply` / `remove`),新配置项
74
+ `harnessProxy`(开关)与 `harnessProxyPort`(默认 `17890`)。
75
+ - 新模块 `lib/core/harness-proxy.js`:令牌持久化、URL 拼装、`.env` 的增/删/查、备份。
76
+
77
+ ### 设计要点
78
+
79
+ - **令牌必须持久化**:`.env` 里要写死它,随机令牌每次重启都会 407。存在
80
+ `<数据目录>/harness-token.txt`(`mode 0o600`)。
81
+ - **端口必须固定**:`.env` 指不到随机端口。被占用时自动退回随机端口并 warn —— 此时开放实际不生效(`status` 会报「与配置不一致」)。
82
+ - **`NO_PROXY` 自动补上回环 + 国内 AI 平台域名**:前者避免「代理指向自己」的循环,后者保证代理抖动时不打断模型长连接。
83
+ - **不会有自指环**:内核与订阅自己拉的流量走 `httpFlow`(Node `http/https` 模块),**不受全局 dispatcher 影响** —— 这是刻意确认过的,插件里没有用 `fetch()` 的核心代码。
84
+ - 内核原先只接受一个令牌,现改为**令牌集合**(本进程令牌 + 持久化令牌),unknown 令牌照旧 407。
85
+
86
+ ### 兼容
87
+
88
+ `harnessProxy` 默认**关闭**,行为与 0.5.3 完全一致;不开时内核仍是随机端口 + 随机令牌,只服务本插件自己的下载。
89
+
90
+ > 测试 368 → 406 项:令牌持久化与只读模式、URL 校验、6 个 `*_PROXY` 键的增删幂等、
91
+ > 备份与还原、`NO_PROXY` 合并、不一致检测,以及**内核同时接受两个令牌 / 未知令牌仍被拒**的运行时断言。
92
+
93
+ ## [0.5.3] - 2026-10-11
94
+
95
+ ### 修复
96
+
16
97
  - **上游断管会把整个 DSH 宿主崩掉**(严重,宿主连续崩了两次)。
17
98
  现象:`crash-2026-10-11T03-46-46-081Z-host.log` 与 `03-48-03-999Z-host.log` 的栈指向同一处:
18
99
  ```
package/README.en.md CHANGED
@@ -6,11 +6,11 @@
6
6
 
7
7
  [简体中文](README.md) | English
8
8
 
9
- ![Version](https://img.shields.io/badge/version-0.5.3-4c7ef3?style=flat-square)
9
+ ![Version](https://img.shields.io/badge/version-0.6.0-4c7ef3?style=flat-square)
10
10
  ![npm](https://img.shields.io/npm/v/@having5548/dsh-downloader?style=flat-square&label=npm)
11
11
  ![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-0078d6?style=flat-square)
12
12
  ![Protocols](https://img.shields.io/badge/nodes-ss%20%7C%20trojan%20%7C%20vless%20%7C%20vmess%20%7C%20socks5%20%7C%20http-2b6cb0?style=flat-square)
13
- ![Tests](https://img.shields.io/badge/tests-368%20passed-2fa95e?style=flat-square)
13
+ ![Tests](https://img.shields.io/badge/tests-406%20passed-2fa95e?style=flat-square)
14
14
  ![License](https://img.shields.io/badge/license-MIT-green?style=flat-square)
15
15
 
16
16
  </div>
@@ -60,14 +60,14 @@ dsh plugin --profile desktop add @having5548/dsh-downloader
60
60
  From the GitHub release:
61
61
 
62
62
  ```bash
63
- dsh plugin --profile desktop add https://github.com/having5548/dsh-downloader/releases/latest/download/having5548-dsh-downloader-0.5.3.tgz
63
+ dsh plugin --profile desktop add https://github.com/having5548/dsh-downloader/releases/latest/download/having5548-dsh-downloader-0.6.0.tgz
64
64
  ```
65
65
 
66
66
  Or build and install locally:
67
67
 
68
68
  ```bash
69
69
  npm pack
70
- dsh plugin --profile desktop add having5548-dsh-downloader-0.5.3.tgz
70
+ dsh plugin --profile desktop add having5548-dsh-downloader-0.6.0.tgz
71
71
  ```
72
72
 
73
73
  > Profile name: the current Electron desktop app uses `desktop`; the older web CLI used `web`.
@@ -359,7 +359,7 @@ The core (rule engine, CN data, loopback mixed proxy, node transports, subscript
359
359
 
360
360
  ```bash
361
361
  npm install
362
- node test/smoke.mjs # 368 checks: rules / subscriptions / profile import / routing / HTTP client / end-to-end / session guard / token gate
362
+ node test/smoke.mjs # 406 checks: rules / subscriptions / profile import / routing / HTTP client / end-to-end / session guard / token gate
363
363
  node --check lib/client.js
364
364
  npm pack
365
365
  ```
package/README.md CHANGED
@@ -6,11 +6,11 @@
6
6
 
7
7
  简体中文 | [English](README.en.md)
8
8
 
9
- ![Version](https://img.shields.io/badge/version-0.5.3-4c7ef3?style=flat-square)
9
+ ![Version](https://img.shields.io/badge/version-0.6.0-4c7ef3?style=flat-square)
10
10
  ![npm](https://img.shields.io/npm/v/@having5548/dsh-downloader?style=flat-square&label=npm)
11
11
  ![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-0078d6?style=flat-square)
12
12
  ![Protocols](https://img.shields.io/badge/nodes-ss%20%7C%20trojan%20%7C%20vless%20%7C%20vmess%20%7C%20socks5%20%7C%20http-2b6cb0?style=flat-square)
13
- ![Tests](https://img.shields.io/badge/tests-368%20passed-2fa95e?style=flat-square)
13
+ ![Tests](https://img.shields.io/badge/tests-406%20passed-2fa95e?style=flat-square)
14
14
  ![License](https://img.shields.io/badge/license-MIT-green?style=flat-square)
15
15
 
16
16
  </div>
@@ -60,14 +60,14 @@ dsh plugin --profile desktop add @having5548/dsh-downloader
60
60
  从 GitHub Release 安装:
61
61
 
62
62
  ```bash
63
- dsh plugin --profile desktop add https://github.com/having5548/dsh-downloader/releases/latest/download/having5548-dsh-downloader-0.5.3.tgz
63
+ dsh plugin --profile desktop add https://github.com/having5548/dsh-downloader/releases/latest/download/having5548-dsh-downloader-0.6.0.tgz
64
64
  ```
65
65
 
66
66
  本地打包安装:
67
67
 
68
68
  ```bash
69
69
  npm pack
70
- dsh plugin --profile desktop add having5548-dsh-downloader-0.5.3.tgz
70
+ dsh plugin --profile desktop add having5548-dsh-downloader-0.6.0.tgz
71
71
  ```
72
72
 
73
73
  > profile 名:新版桌面端是 `desktop`,旧版 Web 端是 `web`。
@@ -364,7 +364,7 @@ dsh_run_proxied({ command: "git clone https://github.com/x/y.git" })
364
364
 
365
365
  ```bash
366
366
  npm install
367
- node test/smoke.mjs # 368 项:规则引擎 / 订阅解析 / 配置导入 / 路由 / HTTP 客户端 / 端到端下载 / 会话守卫 / 令牌鉴权
367
+ node test/smoke.mjs # 406 项:规则引擎 / 订阅解析 / 配置导入 / 路由 / HTTP 客户端 / 端到端下载 / 会话守卫 / 令牌鉴权
368
368
  node --check lib/client.js
369
369
  npm pack
370
370
  ```