dsh-recall-plugin 2.3.15 → 2.3.16

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
@@ -2,6 +2,12 @@
2
2
 
3
3
  本文件格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循语义化版本。
4
4
 
5
+ ## [2.3.16] - 2026-09-11
6
+
7
+ ### 变更
8
+
9
+ - **插件描述与双语 README 文案重写**:包描述由「是什么 / 怎么做」改为「能做什么」——撤回自己发过的消息,工作区文件与对话历史一起回到那条消息发出之前,消息的文本与附件自动放回输入框(文件走独立影子 git 快照、对话走官方 `sessions.fork`、原会话归档可找回)。双语摘要补齐「撤回后可重发」;英文侧去掉过时的 DSH 版本标注;徽章由历史版本(`0.1.2-rc.1` / `0.1.3-alpha.1`,英文侧 `0.1.1-rc.x`)统一为当前核验版本 `0.1.5-rc.2`(兼容范围仍以「安装」节的 peer 声明为权威);两侧同步新增「撤回完就能重发」亮点与预览区的回填要点。功能、接口与构建产物零变化。
10
+
5
11
  ## [2.3.15] - 2026-09-11
6
12
 
7
13
  ### 新增
package/README.en.md CHANGED
@@ -7,14 +7,13 @@
7
7
  ![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blue)
8
8
  ![Build](https://img.shields.io/badge/pure%20JS-green)
9
9
 
10
- ![DSH](https://img.shields.io/badge/DSH-0.1.1--rc.2-blue)
11
- ![DSH](https://img.shields.io/badge/DSH-0.1.1--rc.1-blue)
10
+ [![DSH](https://img.shields.io/badge/DSH-0.1.5--rc.2-blue)](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.5-rc.2)
12
11
  ![DSH](https://img.shields.io/badge/DSH-Desktop-blue)
13
12
  ---
14
- Under any message you've sent, click "↶ Recall" — **both your workspace files and the conversation history roll back to the moment right before that message was sent** (DSH 0.1.1-rc.2).
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**.
15
14
  ---
16
15
 
17
- Files and conversation roll back together: the workspace is first snapshotted into an independent shadow git repository, and a recall uses it to restore files to their state before that message; the conversation is rewound through DSH's official `sessions.fork` to the turn boundary before it. Snapshots never touch your project's own git and live under `$DSH_HOME` by default; the original session is archived and can be recovered anytime. The main boundary: snapshots are created only **when a message is sent** — messages from before the plugin was enabled have no snapshot and show no recall button.
16
+ Files and conversation roll back together: the workspace is first snapshotted into an independent shadow git repository, and a recall uses it to restore files to their state before that message; the conversation is rewound through DSH's official `sessions.fork` to the turn boundary before it, with the original session archived and recoverable. After a recall, the message's text and attachments are placed back into the input box, ready to edit and resend. Snapshots never touch your project's own git and live under `$DSH_HOME` by default. The main boundary: snapshots are created only **when a message is sent** — messages from before the plugin was enabled have no snapshot and show no recall button.
18
17
 
19
18
  [Changelog](CHANGELOG.md)
20
19
 
@@ -37,7 +36,7 @@ Files and conversation roll back together: the workspace is first snapshotted in
37
36
  | --- | --- |
38
37
  | ![Recall button appears on hover](docs/screenshots/recall-button.png) | ![Confirmation panel · file change list](docs/screenshots/confirm-panel-1.png) |
39
38
 
40
- - After a recall, the message text is auto-refilled into the input box for quick editing and resending (can be disabled in the settings card)
39
+ - After a recall, the message's text and attachments are placed back into the input box for quick editing and resending (can be disabled in the settings card)
41
40
  - Settings · plugin config card (config form / exclusions / snapshot manager, saved changes apply live)
42
41
 
43
42
  ![Settings](docs/screenshots/settings-exclude-2.png)
@@ -49,6 +48,7 @@ Abilities with a version in parentheses require that version or later; the rest
49
48
  - **Files + conversation, rolled back together**: recalling isn't just about chat history — files the agent modified go back to their original state too; immune to your project's `.gitattributes` conversion, with byte-level fidelity for line endings and binary content (2.1.1+).
50
49
  - **Never touches your project's own git, and keeps it clean**: snapshots live in an independent shadow git repository — branches, staging area, and uncommitted changes are untouched; storage stays under `$DSH_HOME` regardless of the session's sandbox permission (workspace-write / read-only sessions work as usual), falling back to an in-project `.dsh-recall-snapshots` only when home itself is unwritable.
51
50
  - **See the list before you act — and change your mind as often as you like**: recall first shows the list of files that will change (modified / restored / deleted); nothing runs until you confirm. After a recall you can recall again to an even earlier point, and files overwritten during a recall always remain recoverable (up to 500 snapshots per workspace by default).
51
+ - **Resend right after a recall** (2.3.15+): a recall places the message's text and attachments back into the input box — images and files return as well, so you can edit and send again without picking the attachments over.
52
52
  - **A guarded recall path** (2.0+; auto-rescue 2.1+): recall is refused while an agent is running, and a new snapshot after the preview forces a fresh preview; a "pre-rollback" safety snapshot is taken before every recall, a failed rollback is rescued automatically, and a failed rescue gives you a copy-paste-ready manual recovery command.
53
53
  - **Disk-friendly, self-maintaining**: snapshots use git delta compression and large files are skipped automatically (threshold configurable); periodic lossless `git gc`, session-deletion cleanup, and optional cleanup by cap or retention age — plus a **workspace → session → snapshot** tree manager on the settings page with search and per-level deletion.
54
54
  - **Failures speak up and heal** (self-healing 2.1+): failures are classified by root cause (git missing / disk full / permission denied / lock conflict / directory conflict) with actionable guidance (the same fault only bothers you once per 10 minutes; reasons land in the settings card's "Recent errors"); leftover objects are pruned, 3 consecutive failures trigger exponential backoff, concurrent instances yield via heartbeats, and unindexable paths are skipped with a notice instead of failing the whole snapshot (they are neither restored nor deleted on recall).
package/README.md CHANGED
@@ -5,13 +5,12 @@
5
5
  [![npm version](https://img.shields.io/npm/v/dsh-recall-plugin?style=flat-square&label=npm&color=3178C6)](https://www.npmjs.com/package/dsh-recall-plugin)
6
6
  [![npm downloads](https://img.shields.io/npm/dm/dsh-recall-plugin?style=flat-square&label=downloads&color=1F883D)](https://www.npmjs.com/package/dsh-recall-plugin)
7
7
  ![License](https://img.shields.io/badge/license-MIT-blue)
8
- [![DSH](https://img.shields.io/badge/DSH-0.1.2--rc.1-blue)](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-rc.1)
9
- [![DSH](https://img.shields.io/badge/DSH-0.1.3--alpha.1-red)](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.3-alpha.1)
8
+ [![DSH](https://img.shields.io/badge/DSH-0.1.5--rc.2-blue)](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.5-rc.2)
10
9
  ---
11
10
  在任意一条你发过的消息下方点「↶ 撤回」——**工作区文件和对话历史一起回到那条消息发出之前的状态**。
12
11
  ---
13
12
 
14
- 撤回时文件与对话一起回退:工作区先被快照进一个独立的影子 git 仓库,撤回就用它把文件恢复到那条消息发出之前;对话通过 DSH 官方的 `sessions.fork` 切到该消息之前的 turn 边界。快照全程不触碰项目自身的 git,存储默认落在 `$DSH_HOME` 下;原会话归档保留,随时可找回。最主要的边界:快照只在**消息发送时**创建,插件启用前的历史消息没有快照、不显示撤回按钮。
13
+ 撤回时文件与对话一起回退:工作区先被快照进一个独立的影子 git 仓库,撤回就用它把文件恢复到那条消息发出之前;对话通过 DSH 官方的 `sessions.fork` 切到该消息之前的 turn 边界,原会话归档保留、随时可找回。撤回后,这条消息的文本与附件会自动放回输入框,改完即可重发。快照全程不触碰项目自身的 git,存储默认落在 `$DSH_HOME` 下。最主要的边界:快照只在**消息发送时**创建,插件启用前的历史消息没有快照、不显示撤回按钮。
15
14
 
16
15
  [更新日志](CHANGELOG.md)
17
16
 
@@ -34,6 +33,7 @@
34
33
  | --- | --- |
35
34
  | ![悬停出现撤回按钮](docs/screenshots/recall-button.png) | ![确认面板 · 变更文件清单](docs/screenshots/confirm-panel-1.png) |
36
35
 
36
+ - 撤回后,这条消息的文本与附件自动放回输入框,改完即可重发(可在设置卡片关闭)
37
37
  - 设置页 · 插件配置卡片(配置表单 / 排除表 / 快照管理,保存即热生效)
38
38
 
39
39
  ![设置页](docs/screenshots/settings-exclude-2.png)
@@ -46,6 +46,7 @@
46
46
  - **文件 + 对话,整段回退**:撤回的不只是聊天记录,agent 改过的文件也一并回到原样;不受项目 `.gitattributes` 转换影响,换行与二进制内容字节级保真(2.1.1+)。
47
47
  - **不碰你项目自己的 git,目录保持干净**:快照存在独立的影子 git 仓库里,分支、暂存区、未提交改动统统不受影响;存储默认落在 `$DSH_HOME` 下,与会话的沙箱权限无关(workspace-write / read-only 照常工作),仅当 home 不可写才降级到项目内 `.dsh-recall-snapshots`。
48
48
  - **先看清单再动手,可反复后悔**:撤回前展示将变更的文件清单(修改 / 恢复 / 删除),确认后才执行;撤回后还能再撤到更早,被覆盖的文件一直找得回来(默认每工作区保留 500 条)。
49
+ - **撤回完就能重发**(2.3.15+):撤回会把这条消息的文本与附件一起放回输入框——图片、文件原样回来,改完直接发送,不必重新挑一遍附件。
49
50
  - **撤回全程有防护**(2.0+,救援 2.1+):agent 运行中拒绝撤回,预览后出现新快照会强制重新预览;执行前自动打「回退前」安全快照,回退失败自动救援,救援失败给出可直接复制执行的手动恢复命令。
50
51
  - **磁盘友好、自动维护**:快照走 git delta 增量压缩,大文件自动跳过(阈值可配);定期无损 `git gc`,会话删除联动清理,可按条数与保留天数自动清理;设置页提供**工作区 → 会话 → 快照**三级树形管理,支持搜索与分级删除。
51
52
  - **失败不静默、能自愈**(自愈 2.1+):失败按根因分类(git 缺失 / 磁盘满 / 无权限 / 锁冲突 / 目录冲突)给出可行动提示,同类故障 10 分钟只打扰一次,失败原因进设置卡片「最近错误」;自动清理残骸、连续 3 次失败指数退避、多实例按心跳互让;无法索引的路径跳过并告知,不中断整条快照(撤回时也不触碰它们)。
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-recall-plugin",
3
- "version": "2.3.15",
4
- "description": "DSH 消息撤回插件:在用户消息气泡旁加「撤回」按钮,把项目文件(独立影子 git 仓库快照)与对话历史(官方 fork)一并回退到该消息发送之前。",
3
+ "version": "2.3.16",
4
+ "description": "DSH 中撤回自己发过的消息:工作区文件与对话历史一起回到那条消息发出之前,消息的文本与附件自动放回输入框,改完即可重发。文件走独立影子 git 快照(不碰项目自身的 git),对话走官方 sessions.fork,原会话归档可找回。",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",