# 更新记录 每个已发布版本的内容。当前版本见 `package.json`。 ## 0.2.0 — 2026-10-13 ### 新增 - **手动归档 / 恢复一个工作区**(模型可见工具 `workspace_archive`):把一个工作区的会话一次收进归档,或恢复**此前由它归档**的那些。台账为此新增**独立**的 `manualArchivedSessionIds`,与"目录消失自动归档"那份**完全分开** —— 手动归档是用户的明确意图,不能被"目录消失又回来"的自动恢复顺手放出来;反之亦然。 - **斜杠命令入口**:`/archive-workspace <路径或标题>` 与 `/restore-workspace <路径或标题>`。纯宿主侧、零依赖,不需要客户端半边。 - **删除工作区登记时立即归档**:官方注册表说登记没了是**权威事件**,不再等确认窗口(实测 **3125 ms → 33 ms**)。而"目录缺失"是一次 `stat` 的观测、会抖(网络盘、改名中途),仍然走窗口(3120 ms → 3128 ms,不变 —— 符合设计)。 - **改文件夹名时不再漏唤醒**:`fs.watch` 在改名事件里给的 filename 是**新名字**,而旧实现按被跟踪的**旧名字**集合过滤,把事件丢掉了 ⇒ 改名后要等 5 分钟兜底轮询才归档,与"删目录"的行为不一致。现在收到未知 filename 会做一次合并存活探测,**确有缺失才**唤醒插件;同时修掉了"watcher 闭包捕获建立时名字快照"这个隐患。 ### 仓库内的探索分支(**不随本包发布**) 本版仓库里另有一条**探索分支**:一个离线迁移 CLI(只改会话日志第 0 帧的 `cwd`、把日志搬到新 `projectKey` 目录,再让插件用**官方** `attachSession` 收尾),用来探索「跨工作区迁移会话 / 工作区改名重绑定」这两类**官方没有通道**的需求。 它**不作为功能交付**:要求「完全退出 DSH → 在外部终端跑命令 → 重启 DSH」,而根因在**上游**(官方把会话 header 缓存在内存里,且没有任何公开入口能重建它)。⇒ **它的代码不在 npm 包里**,完整记录(机制、实测证据、为什么做不到)见 [docs/plan-session-migration.md](docs/plan-session-migration.md)。 ### 验证 - `npm test` —— **157 项**离线断言。 - `npm run rm-test` —— **69 项**针对**真** DSH 运行时的断言(一次性 `DSH_HOME`,不碰真实 profile、不碰真实工作区目录)。 ## 0.1.0 — 2026-10-08 首个公开版本: - 工作区目录被**删掉 / 移走**时,自动归档该目录下由本插件登记的会话;目录**回来**时自动恢复。 - 「**删除工作区登记**」(目录仍在)也算消失信号。 - 恢复时把会话**挂回**分组,且**已经处于归档状态的成员也回到自己的分组** —— 只动成员表,**绝不改动归档集合**。 - 「**无项目 → 按 cwd 归位**」:把未分组、且 `cwd` 精确等于某已登记工作区路径的会话,用官方 `attachSession` 挂回去。 - 反应模型:事件驱动(注册表变更 + 目录 watcher)+ 时间型确认窗口 + 兜底轮询。