Repository navigation
1.3.0
dsh-version-update 1.3.0
重启不再有第二条路径,删除快照不再是死按钮。
变更
- 重启只由面板的按钮触发,没有别的入口。 策略字段
restart(ask/auto)、宿主侧的restartAfterDelay兜底、/restart/cancel路由、以及浏览器半区的 offer / 倒计时弹窗全部删除。安装落定后不弹任何窗,唯一交出端口的方式是点「立即重启」。理由正是旧兜底存在的原因本身:安装会重写页面赖以提供的那些文件,所以本该回答弹窗的页面往往已经是白屏;而一个会自己重启的宿主,和一个崩溃的宿主无法区分。仍写着"restart": "auto"的 policy 文件能正常加载,该键被忽略,而不是被"修"成新形状。 - 「立即重启」按钮从「安装任务」卡移到「当前安装」卡。 前者只在任务非 idle 时渲染,而这个按钮存在的原因恰恰是任务 idle 的时候:安装落定后刷新页面,宿主报的就是
state: 'idle'+needsRestart: true——最该出现它的时刻它不渲染。现在它和「检查」按钮同一行,正上方就是解释它为什么在那里的那行字,页面上任何时刻有且只有一个。
修复
- 「删除快照」看起来是个死按钮。
removeSnapshot在路由处理器里同步递归 unlink 快照目录,而一个快照是已安装包树的完整副本——本机那个是 223 MB,实测一棵 129 MB / 15 569 文件的树在 Windows 上要 5.6 s(Defender 逐条目扫描),超过面板 15 s 的请求超时,并且运行期间冻住整个宿主。用户看到的是:第一次点击武装该行,第二次点击毫无反应,行还在那里。现在删除改为把目录 rename 成隐藏的.trash-*墓碑——元数据操作,快照多大都是瞬时的——立刻带回新列表作答,字节交给线程池回收。墓碑不是版本名,所以调用返回的瞬间该版本就离开了面板。 - 被中断的进程留下的快照目录从来没被回收过。 一次中断的拷贝(
.tmp-*)和一次 unlink 随宿主一同死掉的墓碑(.trash-*)对面板和每一轮 prune 都是隐形的,因为两者都不是版本名——本机有一个从 2026-09-17 就一直躺在库里。现在宿主启动时、以及每次丢弃之后都会跑一次清扫。
测试
232 用例通过,tsc --checkJs 干净。
Full Changelog: v1.2.0...v1.3.0