dsh-recall-plugin 2.3.19 → 2.3.21
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 +18 -0
- package/README.en.md +2 -2
- package/README.md +2 -2
- package/lib/client.js +1694 -1717
- package/lib/routes-core.js +2 -2
- package/lib/snapshots.js +28 -19
- package/package.json +9 -8
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
本文件格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循语义化版本。
|
|
4
4
|
|
|
5
|
+
## [2.3.21] - 2026-09-15
|
|
6
|
+
|
|
7
|
+
### 变更
|
|
8
|
+
|
|
9
|
+
- **dsh 0.1.6-alpha.1 兼容性声明与台账同步**:全局实装 `@deepseek-ai/dsh@0.1.6-alpha.1`(npm dist-tag `alpha`,0.1.6 线首个预发布)后跑三层门禁——`verify:host` 装配断言通过、`npm test` 330/330、`test:probe` 32 例中 1 红。红点即本版唯一行为级变化:**官方修复 `sessions.fork` 按轮次分叉的切点**——由「`cut` 从 `boundary+1` 向后推进到下一个 `turn/start` 之前」改为「`cut` 固定 `boundary.seq + 1`、精确切到选中 `turn/end`」,结束事件之后的排队输入、标题、模型设置均不再复制进子会话 seed,2.3.17 起插件侧 `scanStaleQueueItemIds` 清理的残留排队消息问题(I35)在 0.1.6 线上从源头消失(探针按 2.3.20 预留的「好消息变红」路径改钉新锚点后 32/32 复绿)。**清理逻辑不退役**:peer 范围保留 0.1.5 线段,该线上 fork 切点未修复、清理仍必要;0.1.6 上退化为 `queue-item-not-found` 吞掉的无害空操作。其余消费面零破坏:`snapshotEvents`/`eventAt`/`ownEvents` 仅标 `@deprecated` 未移除(内存跳行为不变,列为前瞻观察项);`ShellExecutor.start` 异步化不涉及插件(只用 `resolve`+`run`);`agent/session-start`→`agent/created` 事件改名与插件无关;回填链与 chat.node/settings slot 全部在位。tag 对比(800 commits / 300 文件)按消费面包过滤后唯一源码命中即 fork 实现;reference/ 镜像按 alpha.1 tag 重拉 13 源——10 份内容相同、05/09/13 三文件有实质差异(09 不变式措辞补「纯消息投影」、新增 `agent/created`、桌面 profile 重写;13 钩子行改名;均不触及插件消费的槽位/契约)。**兼容声明同步**:0.1.6 为新 minor 线,7 个 dsh-* peer 各追加 `>=0.1.6-alpha.1 <0.1.7` 段;`dsh.compatibility.dshReleases` 补 `0.1.6-alpha.1: compatible`;README 双语安装兼容声明与 badge、reference/README 归档字段、dsh-contract.md「对应版本」同步。评估实证见 `docs/upgrade-assessments/dsh-0.1.6-alpha.1.md`,compat-audit 新增 0.1.6-alpha.1 核验段并更新 I35 条目。本插件源码零功能变更。
|
|
10
|
+
|
|
11
|
+
## [2.3.20] - 2026-09-14
|
|
12
|
+
|
|
13
|
+
### 新增
|
|
14
|
+
|
|
15
|
+
- **探针:`sessions.fork` 切点推进行为 3 例**(I35 的文档化行为落成机器断言):`tests/probe/api-surface.test.js` 新增「sessions.fork 切点推进行为」组,直钉 `dsh-api-session-controller` 构建产物的三条锚点——boundary 以「seq >= atSeq 的首条 `turn/end`」解析、`cut` 从 boundary+1 推进到下一个 `turn/start` 前、`seed` 取 `slice(0, cut)` 完整前缀。官方若改为「seed 排除未领取 inbox 项」(撤回残留排队消息的根治方向)或重构改名即红,提示复核 G1 清理逻辑是否可退役;0.1.1 旧版安装的实现锚点未核验,整体 skip(fork 签名探针仍覆盖旧包路径)。探针 31 → 34 例全绿,compat-audit I35 的「无直接探针」缺口随之闭环。
|
|
16
|
+
|
|
17
|
+
### 修复
|
|
18
|
+
|
|
19
|
+
- **与同页插件的全局名冲突(issue #14):client 产物顶层声明整体收进 IIFE 闭包**:client bundle 以 classic `<script>` 原文 serve,esbuild cjs 产物的全部顶层声明都会挂到 `window`——顶层 `var CSS`(样式表数组)直接覆盖浏览器原生 `CSS` 对象(`CSS.supports()` 不再是函数),同页的 dsh-image-gen 等插件一调即崩(`CSS.supports is not a function`),DSH 反过来拒绝加载对方。且顶层名共 23 个(`clockText`/`buildTree`/`sizeText`…),逐个改名堵不完。修复:build-client.mjs 打包格式从 cjs 改为 iife——整个 bundle 包进箭头函数作用域,除 `window.__ModuleLoader__.load` 调用外零全局泄漏,对未来新撞名免疫;loader 契约不受影响(`factory: (require) => {...}` 收参注册与 `require("react")` 运行时加载原样保留,esbuild 的 require→require2 改名照旧)。build-client.mjs 新增产物断言回归钉:format 意外回退 cjs 或出现顶层 var/function/class 声明时构建即红。
|
|
20
|
+
|
|
21
|
+
- **撤回残留排队消息的自动清理从未命中:改为按 item id 直删**(0.1.5-rc.1 + 2.3.19 真机复现定位):Host 侧解析与下发都正确(`/api/recall/execute` 响应带出窗口内入队项的 rpcId),失效段在客户端匹配——子会话输入框上方的残留卡片可稳定复现(刷新后仍在),30 秒轮询窗口内始终匹配不到队列行,随后弹「撤回前的一条排队消息未被自动清理…」toast 并打出 `console.warn`。改用官方 `updateQueue` 的寻址键直删:Host 侧 `scanStaleQueueItemIds` 取窗口内 user 来源入队项的 `inserted[].id`(即该消息的 message id)经 execute 响应的 `staleQueueItemIds` 下发;Client 侧对 fork 出的子会话逐项调 `updateQueue(itemId, { kind: 'remove' })`,删除队列快照匹配与 30 秒轮询(改为会话面未就绪时的 5 秒短等待,超时仍 warn + toast)。真机验收:子会话日志出现 `agent/inbox/spliced inserted=[] removed=1`(入队项当场移除),重复删除返回 `queue-item-not-found`,控制台零告警。读取链顺带加固:内存跳改用 `snapshotEvents()`(0.1.5-rc.1 的 `Session` 无 `events` 访问器,旧字段仍兼容),并把 `observeSession` 提到 `readSession` 之前。
|
|
22
|
+
|
|
5
23
|
## [2.3.19] - 2026-09-12
|
|
6
24
|
|
|
7
25
|
### 修复
|
package/README.en.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|

|
|
8
8
|

|
|
9
9
|
|
|
10
|
-
[](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.6-alpha.1)
|
|
11
11
|

|
|
12
12
|
---
|
|
13
13
|
Under any message you've sent, click "↶ Recall" — **your workspace files and the conversation history roll back to just before that message was sent**.
|
|
@@ -67,7 +67,7 @@ Boundaries accepted by design and edge cases not yet covered — worth checking
|
|
|
67
67
|
|
|
68
68
|
## Installation
|
|
69
69
|
|
|
70
|
-
Prerequisites: git CLI (without it the recall button won't appear and a notice shows at the top of the page — DSH itself keeps running); PowerShell 5.1 / 7 on Windows, bash + git on Linux/macOS; DSH `0.1.1-rc.2` through `0.1.
|
|
70
|
+
Prerequisites: git CLI (without it the recall button won't appear and a notice shows at the top of the page — DSH itself keeps running); PowerShell 5.1 / 7 on Windows, bash + git on Linux/macOS; DSH `0.1.1-rc.2` through `0.1.6-alpha.1` (peerDependencies open a window per minor line: `>=0.1.1-rc.2 <0.1.2 || >=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7`, consistent with the `dsh.compatibility.dshReleases` declaration; each line is anchored at its first verified version with an exclusive upper bound at the next minor, so later prereleases/releases within a verified line are admitted without touching the peer declaration, while unverified new minor lines (e.g. 0.1.7) remain blocked).
|
|
71
71
|
|
|
72
72
|
- Official DSH plugin command: install and auto-mount into the web profile
|
|
73
73
|
```powershell
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://www.npmjs.com/package/dsh-recall-plugin)
|
|
6
6
|
[](https://www.npmjs.com/package/dsh-recall-plugin)
|
|
7
7
|

|
|
8
|
-
[](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.6-alpha.1)
|
|
9
9
|
---
|
|
10
10
|
在任意一条你发过的消息下方点「↶ 撤回」——**工作区文件和对话历史一起回到那条消息发出之前的状态**。
|
|
11
11
|
---
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
|
|
66
66
|
## 安装
|
|
67
67
|
|
|
68
|
-
前置:git CLI(未装时撤回按钮不出现,页面顶部会提示安装 git,不影响 DSH 运行);Windows 上 PowerShell 5.1 / 7 均可,Linux/macOS 需 bash + git;DSH `0.1.1-rc.2` 至 `0.1.
|
|
68
|
+
前置:git CLI(未装时撤回按钮不出现,页面顶部会提示安装 git,不影响 DSH 运行);Windows 上 PowerShell 5.1 / 7 均可,Linux/macOS 需 bash + git;DSH `0.1.1-rc.2` 至 `0.1.6-alpha.1`(peerDependencies 为按 minor 版本线开窗 `>=0.1.1-rc.2 <0.1.2 || >=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7`,与 `dsh.compatibility.dshReleases` 声明一致;每条线以首个核验版本为下限、开一条上界到下一 minor 的区间,同线内后续 prerelease/正式版自动放行、无需改 peer 声明,未验证的新 minor 线(如 0.1.7)仍被拦截)。
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
- DSH 官方插件命令:安装并自动挂载进 web profile
|