Releases: lire1131/dsh-undo-plugin
Releases · lire1131/dsh-undo-plugin
Release list
v0.3.4
v0.3.4 — 版本号修正(修复 #5)+ WebUI 快照入口全面增强 + 会话运行中撤销安全闸
修复 #5:package.json 版本号
0.3.3.1非法(四段,非 semver),导致方式 A 安装(dsh plugin add github:lire1131/dsh-undo-plugin#master)被 pnpm/npm 拒绝——已改为合法版本0.3.4,安装恢复可用。
新增
- WebUI 快照入口全面增强(替换社区 PR #4 的"两个小相机图标"方案,改为成套 UI):
- 会话头部「撤销 / 恢复 / 快照」三按钮全部图标化(红色 ↶ / 绿色 ↷ / 相机,单色
currentColor随主题自适应) - 快照按钮 = 一键手动快照:点击立即存档当前配置(等价面板内「手动保存」,成功后按钮旁闪现「已存档 」),不再打开面板
- 头部新增自动快照状态徽章:绿点 + 「已存 N 份快照 · 最近 xx 分钟前」,30 秒自动轮询刷新;点击徽章 = 打开快照面板
- 快照面板头部:相机图标 + 标题 + 当前 profile 副标题(取自最新快照 manifest 的
profile字段)
- 会话头部「撤销 / 恢复 / 快照」三按钮全部图标化(红色 ↶ / 绿色 ↷ / 相机,单色
- 纯客户端改动(
lib/client.js),host 端与快照逻辑零改动
修复
- 会话运行中禁止撤销/恢复/回滚/安全模式切换:有任何 live 会话处于 open turn(agent 正在执行)时一律拒绝并给出明确提示(host 端安全闸 + WebUI 专属提示)。此前撤销会写回
cordis.patch.yml、触发 DSH 内置 HMR 热重建插件树,导致所有正在跑的会话一起中断;空闲时行为完全不变 - #5 版本号非法:
0.3.3.1→0.3.4(合法 semver),CHANGELOG(zh/en)同步 - 新增
tools/check-version.mjssemver 守卫,接入npm test与 CI——非法版本号不再可能合入 master
测试:smoke 106 项(新增运行中守卫:open turn 拒绝且配置未被回滚 / safe-mode 拒绝且 patch 未被改写 / closed turn 放行)+ e2e 回归全绿,CI(commit 9748f5e)通过
v0.3.3
v0.3.3 — 多 profile 支持(issue #3)+ 离线工具环境变量对齐
新增
- 多 profile 支持(issue #3):从启动参数解析当前 profile(
--profile mine/--profile=mine;dsh web回退web),config.profileName可显式覆盖profileDir默认改为当前 profile 目录(此前硬编码web——非 web profile 下快照读错、watcher 漏监听、恢复写错位置)- 快照仓库按 profile 隔离:
<快照根>/<profileName>/{auto,manual};作用域目录不存在而旧平铺目录存在时自动回退平铺(不隐身旧快照) - manifest 增加
profile字段,undo_list显示当前 profile - 离线 CLI/GUI:
DSH_UNDO_PROFILE环境变量或 settingsprofileName指定
- ps1 离线工具支持
DSH_UNDO_ROOT/DSH_UNDO_SETTINGS(与 Node 插件对齐) - package.json 声明
dsh.runtime: "host"(WhaleHarness 审计门槛:使用 child_process 须声明 host runtime) - README 补充多 profile 部署说明(zh/en)
修复
- settings.json 默认位置迁移兼容:旧位置(如
D:\dsh\undo\settings.json)配置的数据不再"隐身"——新位置读取后按配置目录继续工作
测试:smoke 101 项(新增 argv 解析 / manifest profile 字段 / 显式 profileName 覆盖)+ e2e 10 项全绿
v0.3.2
v0.3.2 — 敏感脱敏 + 局外急救全齐 + 设置页独立成栏
安全
- 敏感信息脱敏 + 本机 vault(默认):.env / .credentials.yaml 快照内值替换为 REDACTED,导出 ZIP 零泄露;本机回滚完整还原,换机占位+提示
- diff 两侧脱敏:修复当前文件侧明文泄露(如 DEEPSEEK_API_KEY: sk-...),界面永不出现真实值
- 导出敏感警告:含明文密钥的导出明确警告"请勿外传"
- .credentials.yaml 纳入快照范围
局外急救(DSH 挂了也能救)
- GUI 崩溃横幅升级(last-good 一键回退)+ 安全模式按钮 + 标题显示敏感模式
- CLI:recent 命令、settings -Set 离线改设置、恢复输出 needsRestart/预检/脱敏提示
体验
- WebUI 设置独立「快照」侧栏栏目(敏感模式下拉、插件白名单、目录选择)
- 设置双端同步修复(keepPre/autoCleanup);GUI 浏览按钮
- 孤儿 blob 清理(跨机导入残留不再占空间);undo_list 显示敏感模式
测试:smoke 98 项 + e2e 10 项全绿
v0.3.1
v0.3.1 — 跨机一致性预检 + 双语迁移指南
新增
- 跨机一致性预检:undo/redo/restore 时自动扫描目标快照引用的插件(patch 挂载条目 + package.json bundles),本机解析不到的明确列出并提示"恢复后可能启动失败",建议先装插件或安全模式启动
- 多锚点探测(用户 node_modules / profile 依赖树 / 插件位置链),任一可解析即视为已装,junction 布局下不误报
- 本地文件条目(name: './xxx')不探测;预检结果写入回滚日志
- docs/migration 双语文档:跨机迁移行为说明(插件代码不会塞进目标机、blob 残留、patch 缺插件的坑)+ 最佳实践,中英双语
- README 功能表(中英)同步更新
修复
- toolsRequire 提升为模块级(此前块级作用域导致 ReferenceError 被 try/catch 静默吞掉)
测试:smoke 71 → 76 项,e2e 10/10
v0.3.0
v0.3.0 — 崩溃归因 + 一键安全模式 + 重启联动(第 2 期)
新增
- 崩溃归因升级:启动自检从 .booting 升级为 boot-state.json,记录每次启动结果与"最后正常启动时间";上次异常退出时,undo_list 与 WebUI 直接给出具体的最后正常快照 id + 一键回退按钮,不再只说"上次崩溃了"
- 一键安全模式:对话工具 undo_safe_mode / WebUI 快照面板「安全模式」按钮 / 离线 CLI
safe-mode on|off|status——进入时自动快照 + 备份 cordis.patch.yml,把配置最小化(只留撤销系统),保证 DSH 一定能启动;退出恢复原配置。DSH 完全起不来时的终极兜底 - 重启联动:undo/redo/restore 涉及插件代码或挂载配置时,报告与 WebUI 明确提示"重启 DSH 后生效",回滚日志同步记录
测试:smoke 56 → 71 项(崩溃归因 / 安全模式往返 / 重启提示),e2e 10/10
v0.2.1
v0.2.1 — 一键桌面快捷方式
新增
- 一键桌面快捷方式:
tools/make-desktop-shortcut.bat(双击)/.ps1自动定位插件目录,桌面创建「DSH撤销管理器」快捷方式——解决"装完找不到局外工具" - README 新增「局外工具在哪」章节:两种安装方式的工具路径 + 一段无需先找文件的一行命令 + 打开工具目录命令
修复
- 澄清包名/仓库名差异:安装命令写
dsh-undo-plugin,装好后目录名是包名dsh-undo-savepoint——按仓库名找目录必然找不到,README 已标注
v0.2.0 — 插件代码级撤销(第 1 期)
新增
- 插件代码树快照:自动发现用户插件(node_modules 下的 junction,如 D:\dsh\plugins*)与 profile 本地代码文件(cordis.patch.yml 里 name: './xxx' 引用)——插件代码被改坏也能撤销,配置没变也能撤(如 whale-kit "yield* is not async iterable" 纯代码事故)
- 体积 4 道保险:扩展名白名单(资源文件不进快照,pet 57MB→47KB)、内容寻址 blob 库去重(没变的文件零拷贝)、单文件/单快照上限(超限记录 skipped)、按引用恢复(缺失明确报告)
- 插件文件 diff:undo_diff 与 WebUI 差异预览显示 plugin:/profile: 条目
- 插件 watcher:插件代码目录变化自动快照(plugin-code-change),恢复动作自身不误伤
- 单一清单 lib/spec.json:Node 与 PowerShell 共用一份快照范围配置
- pluginDirs 设置(空数组 = 关闭自动发现);导出/导入含 blob 库;manifest 记录插件名/版本/跳过项
修复
- 旧快照在 PowerShell 离线工具下被 @($null) 单元素数组污染(过滤空值)
- 离线 CLI diff 统一走 Get-UndoDiffText(支持插件文件)
- ps1 文件统一 UTF-8 BOM,PowerShell 5.1 正确解析中文注释