dsh-recall-plugin 2.2.1 → 2.3.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 +26 -0
- package/README.md +11 -20
- package/lib/client.js +1484 -1472
- package/lib/index.js +446 -411
- package/lib/routes-manage.js +624 -621
- package/lib/scripts.posix.js +1 -1
- package/package.json +66 -65
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
本文件格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循语义化版本。
|
|
4
4
|
|
|
5
|
+
## [2.3.1] - 2026-09-01
|
|
6
|
+
|
|
7
|
+
修复批次(PR #13 贡献,macOS 实机验证;Windows 侧本仓库复核)。单测 285 → 290 例全绿(新增 `nextShadowPriority` 5 例)、`test:probe` 探针 29 → 31 例全绿(新增 `slots.entries` 双包探测)、`verify:host` 装配门禁全绿。
|
|
8
|
+
|
|
9
|
+
### 修复
|
|
10
|
+
|
|
11
|
+
- **兼容 dsh-turn-fold 的用户消息渲染槽位**:`conversation.chat.node` 的 `user` key 改为在槽位回调实际执行时读取已占用的 priority,并自动选择当前最低 priority 再低一级,避免与 `dsh-turn-fold` 等第三方插件固定占用 `-1` 时发生冲突;其他插件继续占用更低 priority 时也会自动避让。
|
|
12
|
+
- **POSIX diff awk 程序多余点号导致预览/回退失败**:`lib/scripts.posix.js` 的 `diffScript` 中 awk 程序起始引号后混入多余 `.`(v2.2.0 随 PF-1 引入),awk 报语法错误退出非零,macOS/Linux 上点「撤回」预览即失败、无法回退;Windows 走 pwsh 路径不受影响,故此前仅 Windows 冒烟未暴露。
|
|
13
|
+
|
|
14
|
+
### 变更
|
|
15
|
+
|
|
16
|
+
- **dsh 升级一键核验门禁 `npm run check:upgrade`**:串联 check:dsh + test:probe + verify:host 三层机器化核验,输出后提示在 compat-audit.md 头部追加核验记录——dsh 升级后一条命令替代手动三步。
|
|
17
|
+
- **compat 台账复查方式增强**:I1/I3/I4/I5/I7/I9/I12/I18/I20 复查动作补官方产物证据链(读哪个包哪个文件、断言什么),修正 I1 与 I29 的 priority 语义脱节(guard 强制分配 shadowing priority)、I5 补「context 键已评估无害」结论;I9/I15/I19/I22/I23 出处标注「非官方耦合」(项目内约定,dsh 升级复查不涉及)。
|
|
18
|
+
- **字段探针补盲 + 负向断言**:fork 探针改双包探测(原指向已删除的 dsh-client-runtime,alpha.3 下静默零断言)+ atSeq/increaseTitle 严格可选负向断言;settings RPC 探针迁至 dsh-api-settings-controller(原 dsh-host-apiproxy 已删除);新增 I1/I3/I4/I7/I8/I9/I12/I18/I20 断言与 ConversationNode 节点集合断言——官方新增投影 kind / 收紧可选参数 / 删除字段即红。探针 29 例全绿。
|
|
19
|
+
|
|
20
|
+
## [2.3.0] - 2026-08-31
|
|
21
|
+
|
|
22
|
+
修复批次:适配 dsh 0.1.2 / 0.1.2-alpha.2(兼容 0.1.1-rc.2)。单测 285 例全绿,`verify:host` 装配门禁、`check:dsh` 巡检、`test:probe` 探针全绿;新旧两版 DSH(0.1.1-rc.2 / 0.1.2-alpha.2,Windows)实弹验证通过——撤回按钮、设置页「撤回插件」卡片、快照删除均正常。
|
|
23
|
+
|
|
24
|
+
### 修复
|
|
25
|
+
|
|
26
|
+
- **dsh 0.1.2-alpha 下撤回按钮与设置卡片全部消失(I29)**:0.1.2 的 client 服务层大迁移(`client/runtime` 包删除,slots 迁入 ui-renderer、sessions/workspaces 迁入新增的 api 包)后,插件 fiber 未声明 inject 时 `ctx.get('slots')` 解析不到服务、静默返回 undefined,apply 首行 `if (!slots) return` 即退出:CSS 不注入、slot 全部不注册、entry 仍 active(无任何报错,症状为「Host 活 Client 死」)。修复:client 插件对象声明 `inject: ['slots', 'sessions', 'workspaces', 'timer']` 并改为 `ctx.<name>` 属性访问(styles 服务 0.1.2 已移除,保留 `ctx.get` 可选探测 + `<style>` 降级)。**双版本兼容**(0.1.1-rc.2 ↔ 0.1.2,cordis 4.0.1 实测):`conversation` 服务 0.1.2 才存在,静态声明会让 0.1.1-rc.2 上插件「声明未满足」静默不启动(UI 全灭),故不进 inject,统一走 `ctx.get('conversation')` 探测 + 降级(0.1.1-rc.2 上回填输入框功能本来就不存在;0.1.2 主流程不受影响)。同批受影响的第三方插件可参照 compat-audit I29 自查。
|
|
27
|
+
- **dsh 0.1.2-alpha.2 适配(I30 + 事件 ignorable 恢复)**:① Host settings 接入路径破坏性变更——独立函数 `installSettingsSection` 被官方移除、改为 `SettingsProvider.installSection` 方法(bash-local/pwsh-local 同款迁移),静态 import 会让插件 Host 半启动即崩(`SyntaxError: does not provide an export named 'installSettingsSection'`,`/api/recall/*` 全 404)。修复:`lib/index.js` 改命名空间导入 + 双版本兼容分支(旧版走独立函数、新版走 `ctx.inject(['settings'])` + `installSection`),verify-host 桩补 installSection。② 事件信封 `ignorable?: true` 在 alpha.2 恢复(alpha.1 曾移除改 fail-closed)——插件只扫 `user/message` + `turn/end`、不读 ignorable,无影响,契约文档同步。③ `conversation.chat.node` 声明包定位更新(ui-chat),`test:probe` 探针改双包探测,17/17 全绿。
|
|
28
|
+
- **快照管理「已删除但列表仍在」**:列表/批量删除按 index.json 条目里的 root 匹配,但历史坏数据曾在写入时丢失路径反斜杠(如 `D:workspacedsh-plugin冒烟测试工作区`,正确应为 `D:\workspace\dsh-plugin\冒烟测试工作区`)——store 目录 hash 按正确 root 计算,删除按坏 root 解析到**空 store**,真快照 tag 一个没删,却仍返回匹配条数的 deleted 计数(用户看到「已删除 N 条」但列表原样)。修复:列表构建与批量删除的 root 来源**优先取 root.txt 权威值**(`resolveStore` 每次写入),index.json 条目 root 仅作兜底——三处读取点(`buildListItems` / `collectAllSnapshotRecords` / `locateSnapshotOnDisk`)同步修正;磁盘上重复 hash 的坏 store 一并消失,实弹验证删除真正生效(33 条全删、列表从 36 降到 2)。
|
|
29
|
+
- **旧版 0.1.1-rc.2 下设置页不显示「撤回插件」卡片(撤回功能正常)**:插件 node_modules 里 `@deepseek-ai/dsh-settings` 固定为最新版(0.1.2-alpha.2,只有 `installSection` 方法),旧版 DSH 注入的却是旧版 settings 实例(仅 `register` 核心 API)——兼容分支只看静态导入包判断(`installSettingsSection` 不存在 → 走 `ctx.inject` + `installSection`),旧版实例无此方法抛 TypeError,被 catch 静默吞掉(仅进 `recordError` 环形缓冲,`/api/recall/status` 可查),namespace 从未注册、设置卡片缺失。修复:`lib/index.js` 设置接线改为**按运行时注入实例的实际 API 分派**——`installSection` 方法(0.1.2-alpha.2)或 `register` 核心 API(0.1.1-rc.2 及以前,手动复刻独立函数接线语义:注册 namespace、源指向 scope、卸载回退入口 config、watch 热更新)。旧版实弹验证:`/api/recall/status` errors 为空,设置页「插件配置」出现完整「撤回插件」卡片(快照开关/gc 阈值/文件上限/回填/归档/排除表/快照管理)。
|
|
30
|
+
|
|
5
31
|
## [2.2.1] - 2026-08-30
|
|
6
32
|
|
|
7
33
|
快照管理消息内容显示修复(patch)。单测 283 → 285 例全绿,`verify:host` 装配门禁、`check:dsh` 巡检全绿。
|
package/README.md
CHANGED
|
@@ -2,14 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
简体中文 | [English](README.en.md)
|
|
4
4
|
|
|
5
|
-
](https://www.npmjs.com/package/dsh-recall-plugin)
|
|
6
|
+
[](https://www.npmjs.com/package/dsh-recall-plugin)
|
|
6
7
|

|
|
7
|
-

|
|
11
|
-

|
|
12
|
-

|
|
8
|
+
[](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.1-rc.2)
|
|
9
|
+
[](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.3)
|
|
13
10
|
---
|
|
14
11
|
**在任意一条你发过的消息下方**,**点「↶ 撤回」**,**工作区文件和对话历史一起回到那条消息发出之前的状态**(DSH 0.1.1-rc.2)。
|
|
15
12
|
---
|
|
@@ -18,16 +15,10 @@
|
|
|
18
15
|
|
|
19
16
|
## 界面预览
|
|
20
17
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-

|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
| 确认面板 · 变更文件清单 | 确认面板 · 回退范围说明 |
|
|
18
|
+
| 撤回按钮 | 确认面板 · 变更文件清单 |
|
|
27
19
|
| --- | --- |
|
|
28
|
-
|  |  |
|
|
29
21
|
|
|
30
|
-
- 撤回后自动把消息文本回填到输入框,方便修改后重发(可在设置卡片关闭)
|
|
31
22
|
- 设置页 · 插件配置卡片(配置表单 / 排除表 / 快照管理,保存即热生效)
|
|
32
23
|
|
|
33
24
|

|
|
@@ -73,15 +64,15 @@ dsh plugin --profile web add dsh-recall-plugin
|
|
|
73
64
|
```powershell
|
|
74
65
|
dsh plugin --profile web add github:limbo947/dsh-recall-plugin
|
|
75
66
|
```
|
|
76
|
-
|
|
67
|
+
|
|
68
|
+
- 卸载:同时移除依赖与挂载,快照数据保留在 home 下 `dsh-recall-snapshots/`,想彻底清除手动删掉该目录即可。
|
|
77
69
|
```powershell
|
|
78
|
-
dsh web
|
|
79
|
-
pm2 restart <你的dsh进程名> # 若用 pm2 托管
|
|
70
|
+
dsh plugin --profile web remove dsh-recall-plugin
|
|
80
71
|
```
|
|
81
72
|
|
|
82
|
-
|
|
73
|
+
- 验证:重启后硬刷新页面(Ctrl+Shift+R),悬停任意一条插件启用后发送的用户消息——复制按钮旁出现「↶」即生效。没有按钮?九成是没重启 DSH 进程,或 git CLI 不在 PATH 里。
|
|
74
|
+
|
|
83
75
|
|
|
84
|
-
**卸载**:`dsh plugin --profile web remove dsh-recall-plugin`(同时移除依赖与挂载层),快照数据保留在 home 下 `dsh-recall-snapshots/`,想彻底清除手动删掉该目录即可。
|
|
85
76
|
|
|
86
77
|
## 使用
|
|
87
78
|
|