Skip to content

pm 1.1.2

Choose a tag to compare

@github-actions github-actions released this 02 Sep 19:45
· 13 commits to main since this release

pm 1.1.2 —— 备份盘瞬断保护内建(2026-09-02 用户裁定「防瞬断功能加入正式功能,防止备份/检查时硬盘断连;升到 1.1.2 发布」)。

1.1.1 → 1.1.2

  • 瞬断保护内建(Pm.Removable:外置 USB 备份盘在持续 I/O 下会掉线又自己回来(真实盘 2026-09-02 一天 11 次,最短 2 s 内重挂)。1.1.1 时 pm backup / pm apply 遇到它整批崩掉(hPutBuf: invalid argument 逃顶),pm doctor --deep 吐一片假「读取失败」,只能靠仓内 python 脚本在外面分块续跑。现在同一套判据进了 pm:盘在 = .pm/root-id.json 读得出;一个 I/O 异常三分——确定性错误(用户错误、权限、已存在…)原样抛出,行为与 1.1.1 逐字相同;盘不在 → 等它回来(最多 [backup] drive-wait 秒,缺省 1800)再冷却 30 s 重试;盘在而 EINVAL 一类 → 短停重试,同一步骤最多 5 次。
  • 续跑不重做pm backup 的扫描按 pass 续(拿这一遍的索引当旧快照重扫,只补漏);pm apply 逐项记进度,异常后等盘、先 doctor --repair 把「rename 已落位、Done 未写」的洞补上,再按「组内每项都成功 / 组内每项 journal 末事件都是 Done」结算,只把没跑完的组交给下一场——已落好的文件不重拷、不重 hash;pm doctor --backup [--deep] 整场幂等可重跑,--deep 逐条先等盘,场末盘不在则整场作废重跑,不交假结论。
  • 配置项 [backup] drive-waitpm config set --drive-wait <秒> / --no-drive-wait;GUI 设置页备份卡;POST /api/configdriveWait);0 = 关闭 = 1.1.1 行为。
  • 内核改动只有一行:ExecEnv 多一个只读进度钩子 eeProgressPm.DerivedPm.Convert 字节级拆出(解 Doctor→Convert→Cli 的依赖环)。scripts/backup_watchdog.py 退役;两支核验脚本(verify_backup_dst.py / verify_backup_entries.py)保留。
  • 照片与索引之外的文件一字节不动;关闭保护时行为与 1.1.1 逐字相同(对偶用例钉住)。

安装

  • pm-ui_1.1.2_x64-setup.exe:安装包(装到当前用户,不要管理员权限)。
  • pm-1.1.2-windows-x64.zip:免安装,含 pm.exe(CLI)与 pm-ui.exe(GUI)。
  • 两个资产都没有代码签名,首次运行 SmartScreen 会提示「未知发布者」。

门禁

第一方自审 + 判别突变判红 + 436 测试全绿(新增 RemovableTests 8 例:盘的替身 = 挪走 root-id.json、插回由打印口触发;每个「开」用例配一个「关」对偶)、GHC 警告 0;细节见 docs/REVIEW-LOG.md「1.1.2 瞬断保护内建」节。

SHA-256

17e9922a218ce2765d0ced591ddea0f654a9eb7e83a7598e1c0c0c840987388d *pm-1.1.2-windows-x64.zip
5e2eb3aeaa15ff9833b74aea9133745c2cbbbb32047996e604a7205231372fad *pm-ui_1.1.2_x64-setup.exe