Repository navigation
Releases: xiaoyuyu6420/dsh-backup
Release list
v0.13.4 — 元数据版:npm 描述与关键词对齐检索用词(无行为变更)
0.13.4 — 元数据版(无代码与行为变更)
本版只改「被发现的方式」,不改功能:npm 描述与关键词对齐了用户实际会搜的词,方便「升级翻车、搬家换机」场景的人找到本插件。
变更
- npm 描述重写:把「备份、恢复、迁移」提到句首,并点出覆盖对象(会话 / 设置 / 插件 / MCP / 技能);
- npm 关键词 14 → 26:新增
migration迁移换机mcpskills技能sessions会话workspace工作区cross-machinevault; - README 双语变更日志各加一条;
lib/client.js重建(内嵌版本号)。
与 0.13.3 的差异
功能、归档格式、设置项、RPC 完全一致——停留在 0.13.3 与升级到 0.13.4 在行为上没有任何区别;升级与否只影响你在 npm 搜索里能不能搜到。
验证
node scripts/smoke.mjs→ 337/337node scripts/smoke-client.mjs→ 29/29node scripts/smoke-settings.mjs→ 47/47- 发布流水线在 tag 上重跑全部冒烟后发布(run 成功)
安装 / 升级
dsh plugin --profile web add @xiaoyuyu6420/dsh-backup
# 已装:dsh plugin --profile web update --latest @xiaoyuyu6420/dsh-backupv0.13.3 — 恢复链路三连修 + 更新/预检两修(#112/#119/#117/#115/#113)
v0.13.3 — 三个真实用户报障的恢复/观测修复 + 两个自建缺陷修复
全部在四条宿主列车(0.1.5-rc.3 / 0.1.7-rc.2 / 0.2.0-rc.2 / 0.2.1-alpha.1)真机 e2e 各 41/41 复验;smoke 337 / settings 47 / client 29。
修复
- #112(数据可用性级)含附件的归档恢复全链路不可用(@zevs281 报告):DSH 附件库用硬链接(tar 记为
h条目),而恢复校验器只放行-/d→ 0.13.2 及更早对这类归档的完整恢复 / dry-run / 分类型合并 / doctor 修复一律拒绝。现在:条目与目标都在备份根内的硬链接放行(符号链接、设备仍拒)。 - #119 大归档恢复被误拒(@Yoshino-JF 报告):归档清单超过宿主 subprocess 的 spill 上限时宿主会丢弃 spill 文件、只留 8 KB 尾窗,校验器把"断在文件名中间的碎片"当成不安全条目 → 整包拒绝(备份成功、verify 报完整、只在恢复时炸)。现在:清单走原始流逐行校验(无上限,发现违规立即终止)。
- #117 doctor/migrate 对 v4 会话日志失明(@xiuwufangoc-design 报告):宿主 0.1.7 起会话格式为 v4,而文件名与校准代写死到第 0 代/v3 → 体检与迁移预检一份都扫不到。现在:按宿主同源形态匹配文件名、校准代推进到 v4、更新代只提示。
- #115 一键更新跨不过 minor:pnpm
update只在声明范围内升级,跨 minor 停在旧版且回执谎报成功。现在:update --latest+ 跑完读回 profile 内真实版本核对。 - #113 迁移预检误报(@zevs281 报告):未知
source.kind从"判打不开"降级为提示,名单对齐宿主权威集合。
兼容性
- peers 不变:
0.2.1-alpha.1天然落在^0.2.0-rc.1内(下一 peer 边界是 0.3.0)。 - 会话格式代校准 v4(该列车无
session-format-v4-to-v5包、文件名正则未变)。 - 归档格式、设置项、RPC 均向后兼容(旧归档可读、旧版遇新归档安全降级)。
升级
dsh plugin --profile web update --latest @xiaoyuyu6420/dsh-backup(0.13.0+ 也可以直接用面板「插件更新」卡——0.13.3 起它自己就能跨 minor 了。)
English summary: three fixes from real user reports (hard-link restore #112, spill-truncation false rejection #119, v4 session blindness #117) plus two self-found defects (one-click update crossing minors #115, migration precheck false alarms #113); re-verified on four host trains with e2e 41/41 each.
v0.13.2 — DSH 0.2.0 列车适配 + 调度器卡死修复 + review P2 债
自 0.13.1 以来的全部改动。
适配
- DSH 0.2.0 列车(#106):peers/engines 追加
^0.2.0-rc.1。⚠️ 0.2.0 起宿主新增安装期兼容闸门——peer 不匹配会被直接拒绝安装(本版起不再遇到)。 - 修复 0.1.7 起失效的设置表单(#106):宿主在 0.1.7 移除了
ctx.settings.register,改从插件条目 Config schema 派生表单、且只认标了volatile的字段。本插件导出Config并逐字段标注(运行时探测兼容老 schemastery),设置卡片在 0.1.7 / 0.2.0 上恢复可读可写。
修复
- 调度器不再拖死宿主(#104,修 #103):备份收尾与启动补跑不再让宿主启动时卡死。
- 全量 review 的 P2 债清偿(#107):e2e 守卫恒假、救援页归档文件名注入面、升级快照过滤、merge 恢复的依赖重装失败处理、死码与文档同步。
验证
- compat 真机 e2e:宿主 0.1.7-rc.2 37/37、0.2.0-rc.1 37/37
- smoke 312/312、settings 47/47、client 29/29
- CI 双矩阵(Node 20 / 22)绿
升级
dsh plugin --profile web add @xiaoyuyu6420/dsh-backup@0.13.2或面板「插件更新」卡片一键更新。
v0.13.1 — 0.1.6+ 面板适配 + GitHub Token 按钮修复
修复
- 0.1.6+ 宿主上面板标签静默消失(#94,感谢 @jackovibe):宿主 0.1.6 起要求客户端 Remote 贡献的 strict codec 带
create()惰性工厂,缺失时$mount在校验阶段抛错且只有 console 日志,标签页永不注册。现同时提供schema(0.1.5 读)与create()(0.1.6+ 读);$mount改为声明式等待remote服务就绪;新增降级标签页,万一挂载失败会给出可见提示与命令指路,不再静默消失。 - 「GitHub Token」保存按钮报错(#97,感谢 @CheeseTJ):客户端 panel 代理漏接
setGithubToken(0.12.0 加入宿主半时即漏,因当时面板无入口而潜伏两版)。已补接,并新增「panel 面必须与贡献 descriptors 一一对应」的防漏断言。
兼容性
peers/engines 追加 ^0.1.6-alpha.1 || ^0.1.7-alpha.1;实机验证:0.1.6-alpha.2 / 0.1.7-alpha.2 / 0.1.7-rc.1 / 0.1.7-rc.2 / 0.1.5-rc.2(e2e 37/37)全部通过。
发布前实测
smoke 283/283 · settings 47/47 · client 29/29 · 真宿主 e2e 37/37。
v0.13.0 — 更新感知 + 一键更新
新增
- 更新感知:
/backup check-update+ 面板「插件更新」卡——查 npm 最新版(8s 超时、断网静默降级),发现新版出现「更新到 x.y.z」按钮;设置项updateCheck(默认关)开启后打开面板自动静默检查 - 一键更新:
/backup update [--profile 名]——更新前自动留dsh-pre-upgrade-升级前快照(失败可/backup restore回滚),再走官方dsh plugin update(pnpm 语义),完成提示重启 dsh web 生效
说明
宿主在启动时结算插件 Loader 树、插件是 profile 的 pnpm 依赖——运行中热替换在宿主现行架构下不可行,一键更新 + 重启是此架构下的最佳形态。
发布前实测
smoke 283/283 · settings 47/47 · client 25/25 · 真宿主 e2e-host 37/37 · registry 更新检查路径实弹通过。
v0.12.2 — 修复 Windows 盘符根布局备份/恢复/救援全链路(#88)
修复 #88(感谢 @Liuyeyuyangy0 出色的报告):
- 盘符根退化:
DSH_HOME直接挂在盘符根(如D:\dsh_data)时,求父目录的字符串截取退化为裸盘符D:,tar -C D:在 bsdtar/GNU tar 下必然失败。备份、分类型恢复、整包恢复、doctor 定点修复与 rescue 救援通道共 7 处 tar-C统一改传补过分隔符的父目录 - 尾斜杠相邻 bug:
paths()对DSH_HOME补上与 HOME 一致的尾斜杠归一化(尾斜杠曾让 tar 位置参数变空串、产出 0 字节坏包) - 失败不再静默:tar 失败路径删除空壳归档再抛错——此前 29 字节空包会被面板当正常备份列出
回归:smoke 新增场景 28(四种路径布局断言 + 尾斜杠真实备份 e2e),全套 274/274 · 45/45 · 23/23。归档格式、设置项、RPC 均不变,旧版可正常升级。
v0.12.1 — 修复 client bundle 顶层 var module/exports 泄漏(#85)
v0.12.0 — 迁移预检 + 凭据哨兵 + GitHub token 面板直配
/backup migrate-check迁移预检:升级前静态扫描全部代会话日志(v0/v1/v2/v3),预测哪些会话升完会打不开、挂在哪条规则,并探测文件系统硬链接支持。- 凭据哨兵:旧扁平布局的
.credentials.yaml被宿主原子替换前,先自动存底 vault。 - GitHub token 面板直配:设置面板直接粘贴保存(0600,不进归档、不进 GitHub 同步),优先于环境变量。
- 新增
engines.dsh声明(插件市场兼容卡片读取)。
v0.11.3 — 适配 dsh 0.1.5 列车
- peerDependencies 追加
^0.1.5-rc.1(0.11.2 在 0.1.5 宿主上会报 peer 警告)。 - 兼容实测:宿主 0.1.5-rc.2 真机 e2e 32/32;跨列车原地升级 e2e 14/14。
v0.11.2 — doctor 行级 SessionHeader 校验对齐宿主
闭环 0.11.0 已知遗留(PR #74)
0.11.0 Release Notes 里记的已知遗留:doctor 行级 SessionHeader 校验弱于宿主 isHeaderLine。本版闭环。
修复
- 行级校验对齐宿主完整语义(以 0.1.2-rc.1 为准——它是 0.1.1-rc.2 的严格超集):
version: number、createdAt/delegationDepth非负安全整数三连(含-0拒绝)seedLength可选分支、origin枚举(undefined | "subagent")、agentPreset类型- 退役字段
sandboxMode/approvalPolicy(Object.hasOwn,对齐宿主读端fromHeaderLine拒绝)
- 此前宿主拒载的 header(如字符串
createdAt、缺delegationDepth)会被 doctor 误报健康——现在如实检出并可从备份定点修复 lib/index.js与rescue/rescue.mjs(进程外救援台)两份实现逐字同步
验证
- 静态证明不误判:宿主写端
toHeaderLine全部产出形态均通过新检查 - 独立复核:对照双列车宿主编译产物逐字段审计,结论 ALIGN;复核抓出的测试盲区(
id/agentPreset分支)已补 - 自查修复
snippet(JSON.stringify(undefined))崩溃点(缺type字段场景),已加回归锁
| 套件 | 结果 |
|---|---|
| smoke(新增场景 21:11 种坏 header + 健康对照 + 修复往返) | 243/243 ✅ |
| settings / client | 45/45、20/20 ✅ |
| e2e-host 0.1.1-rc.2 / 0.1.2-rc.1 | 32/32、32/32 ✅ |
| 0.11.1(npm 正式版)→ 0.11.2 原地升级 | 14/14 ✅ |
| 跨列车救援升级(rc.2 世界 → rc.1 宿主) | 14/14 ✅ |
升级方式
dsh plugin --profile web add @xiaoyuyu6420/dsh-backup@0.11.2直接更新即可,无需手动迁移。