dsh-composer-ux 0.22.0 → 0.23.0
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 +43 -0
- package/README.md +12 -3
- package/dsh-plugin.json +2 -2
- package/lib/client.js +771 -606
- package/lib/client.js.map +4 -4
- package/lib/index.js +304 -12
- package/lib/index.js.map +4 -4
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,49 @@
|
|
|
2
2
|
|
|
3
3
|
本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
4
4
|
|
|
5
|
+
## [0.23.0] — 2026-10-15(第九栏「自启动」:登录时自动拉起 DSH,带开关)
|
|
6
|
+
|
|
7
|
+
用户 2026-10-15:「给我的插件添加一个 DSH 自启动功能,要有按钮开关」。逐个问清后的定论:
|
|
8
|
+
|
|
9
|
+
- **开关跟着"你在哪个运行时里开"走**:在网页版里打开就注册网页版(用当前 profile、当前这条启动命令),
|
|
10
|
+
在桌面应用里打开就注册桌面应用。两个运行时各用**自己那一条**启动项(值名
|
|
11
|
+
`dsh-composer-ux:autostart:<profile>`),互不覆盖;开关只碰自己那条,绝不动别人的条目。
|
|
12
|
+
- **登录后启动**(`HKCU\...\Run`,当前用户,**不需要管理员**;关掉开关 = 删掉自己那一条)。
|
|
13
|
+
- **网页版的控制台最小化到任务栏**:`wscript` 跑一个生成的 .vbs,里面 `shell.Run "…", 7, False`
|
|
14
|
+
(7 = 最小化且不抢焦点)—— 中间**不闪任何控制台**,node 自己的窗口按"最小化"出现。
|
|
15
|
+
这件小事有三个坑:直接把 `node …` 写进 Run 键会弹控制台;`powershell -WindowStyle Hidden` 也会闪一下;
|
|
16
|
+
只有 wscript + .vbs 这一组"无闪烁 + 最小化"。
|
|
17
|
+
- **桌面端直接注册 exe**:它是 Electron 应用,有托盘与单实例锁(重复启动只会聚焦已有窗口)。
|
|
18
|
+
exe 路径由宿主**问父进程**得到(`Get-Process -Id <ppid>.Path`)—— 因为桌面端是把宿主作为
|
|
19
|
+
**子进程**拉起来的(`ELECTRON_RUN_AS_NODE=1` + `dsh-desktop-host` 入口),宿主自己不知道 exe 在哪。
|
|
20
|
+
- **真相来源是注册表**:这个开关**不写 settings 字段**。写成"意图 + 镜像"就会出现"设置说开着、
|
|
21
|
+
系统里其实没有"的自相矛盾(你手删了条目、或换个 profile 跑就会这样)。所以界面的开关一律显示
|
|
22
|
+
宿主读回来的事实;条目在但值对不上(别的 profile / 旧版本留下的)会**显示开着 + 明确提示**。
|
|
23
|
+
- 卡里另有「立即试一次」:用自启动那条命令真的拉一次(网页版已在服务时不重复启动,只报告"已经在跑")。
|
|
24
|
+
- 非 Windows 平台:如实说不支持并把开关置灰(不假装有)。
|
|
25
|
+
|
|
26
|
+
**测试纪律**(照着重启那条链的先例):自动化测试**只测纯函数与源码面**,绝不真的写注册表、也绝不真的拉进程
|
|
27
|
+
——`npm test` 会被人反复跑、变异测试更要跑两百多轮,它不许改动用户的系统。真机行为由人工验证覆盖。
|
|
28
|
+
|
|
29
|
+
**真机验证抓到并修掉的两个 bug**(2026-10-15,本机 Windows、profile `a4web`):
|
|
30
|
+
|
|
31
|
+
1. **运行时判错**:第一版用 `ELECTRON_RUN_AS_NODE=1` 判"是不是桌面端",而这个环境变量**会泄漏**到别的进程
|
|
32
|
+
—— 在带它的 shell 里起网页版,插件把网页版认成桌面端,注册出一条指向 `bash.exe` 的启动项 ✗。
|
|
33
|
+
现在只看**入口路径**(桌面端的宿主入口固定是 `@deepseek-ai/dsh-desktop-host/lib/index.js`):
|
|
34
|
+
环境变量是"猜",入口路径是"事实"。这条判断也下沉成了纯函数 `runtimeOf(argv1)`,可逐格测、可被锚点咬住。
|
|
35
|
+
2. **"值不存在"被当成"读失败"**:`reg query /v <名字>` 在值不存在时退出码为 1,只能靠解析报错文本判断 ——
|
|
36
|
+
而那是**本地化**文本,在 GBK 控制台下还变成乱码,于是界面显示吓人的"读不到启动项"✗。
|
|
37
|
+
现在读**整个 Run 键**再找自己那条(在输出里找不到 = 没有这条值),真的读不动才会报错。
|
|
38
|
+
|
|
39
|
+
(脚本实跑:8 秒后实例真的在监听,`IsIconic=True` —— **真的最小化到任务栏**、没有多余控制台)→
|
|
40
|
+
关掉开关(值消失、.vbs 被删)→ 全程不动其它启动项(前后条目数都是 9)。
|
|
41
|
+
桌面端那一路的 exe 探测单独验过(问父进程路径这招有效);桌面应用里的开关表现要等你重启桌面端后才看得到
|
|
42
|
+
(这一版没有重启它)。
|
|
43
|
+
|
|
44
|
+
**验证**:`npm test` —— **32 个套件 2731 passed / 0 failed**(新增 `test/autostart.mjs` 31 条:值名、
|
|
45
|
+
两条启动命令、VBScript 引号翻倍、reg 三动作、reg 输出解析、状态判定五分支;渲染 4 条;源码守卫 12 条)。
|
|
46
|
+
|
|
47
|
+
|
|
5
48
|
## [0.22.0] — 2026-10-15(借鉴 dsh-ops:安全门控 / 运行期覆盖 / 自检 / 市场清单 / CLI + 适配 dsh 0.2.1-alpha.4)
|
|
6
49
|
|
|
7
50
|
### 适配 dsh 0.2.1-alpha.4(用户 2026-10-15:「更新网页版,把插件适配,测试没问题就发布」)
|
package/README.md
CHANGED
|
@@ -50,6 +50,15 @@ DeepSeek Harness Web 输入体验增强插件:
|
|
|
50
50
|
2. **快捷指令按钮**:输入框工具行里、「展开」按钮左侧的胶囊按钮,点开是常备提示词清单 + 「优化提示词」。
|
|
51
51
|
3. **键位生效**(仅主聊天输入框):默认值 = 现状(Enter 发送、Shift+Enter 换行、Ctrl+Enter 加速提交),改动即时生效并持久保存。
|
|
52
52
|
|
|
53
|
+
## 0.23.0 新增:第九栏「自启动」
|
|
54
|
+
|
|
55
|
+
- **开关跟着"你在哪个运行时里开"走**:网页版里打开就注册网页版(当前 profile、当前启动命令),
|
|
56
|
+
桌面应用里打开就注册桌面应用;两个运行时各用自己那一条启动项(`dsh-composer-ux:autostart:<profile>`)。
|
|
57
|
+
- **登录后启动**:只写 `HKCU\...\Run`,**不需要管理员**;关掉开关就是删掉自己那一条。
|
|
58
|
+
- **网页版最小化到任务栏**:用生成的 .vbs + `wscript` 拉起,中间不闪控制台。
|
|
59
|
+
- **状态以注册表为准**(不写 settings 字段):你手删了条目,界面就显示关;条目在但值对不上会明确提示。
|
|
60
|
+
- 卡里另有「立即试一次」,验证它在你这台机器上确实有效。非 Windows 平台如实说不支持。
|
|
61
|
+
|
|
53
62
|
## 0.22.0 新增(安全 / 自检 / CLI)
|
|
54
63
|
|
|
55
64
|
- **解释层「内置 Bash」按会话权限门控**:完全权限直跑;其它模式**必须**过 `ctx.sandbox.confine`,
|
|
@@ -57,7 +66,7 @@ DeepSeek Harness Web 输入体验增强插件:
|
|
|
57
66
|
- **「OpenCode 请求头」不再写你的配置**:改成挂官方 `internal/config` 事件做**运行期可逆覆盖**,
|
|
58
67
|
0.21.x 及以前写进去的残留由迁移表一次性清掉(只删值与记账一致的,你自己写的同名头不动)。
|
|
59
68
|
- **自检**:设置页多了「自检」卡(也可 `GET /composer-ux/doctor`),一行一句人话摊平
|
|
60
|
-
设置字段是否都在宿主 schema
|
|
69
|
+
设置字段是否都在宿主 schema、九栏开关、终端服务与 bash 探测、请求头覆盖、快捷指令本、
|
|
61
70
|
通知凭据、解释层档位、运行环境。
|
|
62
71
|
- **CLI**:`npx dsh-composer-ux status|doctor|install|uninstall`(安装卸载一律委托官方 CLI)。
|
|
63
72
|
- **长命令走文件**:解释层的 bash 工具支持 `command` 与 `script_path` 二选一,
|
|
@@ -711,9 +720,9 @@ node build.mjs # 产出 lib/index.js + lib/client.js
|
|
|
711
720
|
# ⚠️ 宿主半会**内联** schemastery / cosmokit:
|
|
712
721
|
# 优先用 DSH 检出里的 vendor 副本,检出不在时退到 node_modules
|
|
713
722
|
# 里同版本的 npm 包(两者逐字节相同)——CI 上走的就是退路
|
|
714
|
-
npm test #
|
|
723
|
+
npm test # 32 个套件;当前 2731 passed, 0 failed(2026-10-09 实测;CI 三平台同样全绿)
|
|
715
724
|
# 走 scripts/run-tests.mjs:顺带把"多少套件/多少条"记进 test/.last-run.json
|
|
716
|
-
npm run test:mutations # 手动跑:变异测试,证明那套护栏真的在咬人(
|
|
725
|
+
npm run test:mutations # 手动跑:变异测试,证明那套护栏真的在咬人(210 条,须单独跑)
|
|
717
726
|
# 同样记录结果,供下面的文档门禁核对
|
|
718
727
|
npm run gates # 发版门禁三条一起跑:tag 指向 / 包内容 / 文档数字
|
|
719
728
|
npm run check:tag # ① tag 名里的版本 == 该 tag 所指提交里的 package.json 版本
|
package/dsh-plugin.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"manifestVersion": "0.15",
|
|
4
4
|
"id": "dsh-composer-ux.input-experience",
|
|
5
5
|
"name": "dsh-composer-ux",
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.23.0",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"facets": {
|
|
9
9
|
"host": {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
{
|
|
41
41
|
"icon": "./icon.png",
|
|
42
42
|
"title": "dsh-composer-ux",
|
|
43
|
-
"description": "
|
|
43
|
+
"description": "输入体验增强:键位、右键菜单、快捷指令、提示词优化、通知、统计与成本、目录选择、终端策略、自启动(九栏,逐栏开关)"
|
|
44
44
|
}
|
|
45
45
|
],
|
|
46
46
|
"x-prompt-sections": [
|