Releases: msilita/dsh-graceful-restart
Releases · msilita/dsh-graceful-restart
Release list
v0.3.0
v0.3.0 — 启动守护重构为纯指针模型
🎯 核心变更
快照系统重构(纯指针模型)
- 唯一指针
current(时间戳键值)指向按时间排序的快照链中当前生效版本 - 启动扫描:实际插件清单 vs
current指向快照求差集- 差集为空 → 不变化
- 差集非空 → 先删除比 current 新的条目(回滚遗留),再新建快照,指针前移
- 正常启动 → 不再操作快照(只清 stderr log、追加日志)
错误独立记录
- 启动失败不再记在快照条目上,独立
errors数组(只保留最新一条;历史错误完整保留在dsh-graceful-restart.log) - 视图错误区改为黑底终端风格:完整 stderr(滚动条)+ 复制按钮
无限逐级回滚(移除回滚上限)
- 失败时
current向更早移一条(不修改快照链)→ 对差集做完整逆操作 → 重试 - 逆操作双向处理:新增卸载 / 被删装回 / 版本变化恢复基线版本(
pkg@spec格式) - 循环直到成功或没有更早快照
独立 stderr 捕获
- 每次启动尝试独立文件
dsh-graceful-restart-stderr-<时间戳>.log - 失败时全量读取(不截断、不累积多次失败内容),随错误记录移交第二代展示与唤醒
🐛 修复
- stdio[2] 误写
inherit导致child.stderr为 null(spawn 后注册中断)→ 改pipe - 入列 dup 误判(全历史 vs HEAD)与键序敏感比较 →
[当前]与⚠同行 - 快照链重复状态 → "无变化"条目与回滚白跳
📦 升级
dsh plugin --profile web remove dsh-graceful-restart
dsh plugin --profile web add dsh-graceful-restart然后完整重启(dsh web)。旧格式快照自动迁移(条目内 error → errors 数组,current 对象 → 时间戳键值)。
✅ 实测验证
- 正常启动:差集空不变化 / 装包差集非空建新快照
- 装坏包 → 自动回滚 → 恢复(唤醒消息带完整错误)
- 双插件同时装 → 失败后一起卸载
- 卸边栏+装坏包 → 逆操作同时卸载坏包 + 装回边栏(removed→add)
- stderr 单份完整堆栈(多次失败不合并)
v0.2.2
v0.2.1
v0.2.0
DSH 优雅重启 / 关闭 / 启动守护插件。
- 自动套壳:启动方式不变(dsh web),第一代隐形 launcher + 正式实例
- 优雅重启(等轮次结束)+ 唤醒智能体继续(continuePrompt 优先级:工具参数 > settings)
- shutdown / cancel_harness_action 撤销安排
- 启动守护:多版本成功基线(snapshotKeep 可调)、失败自动回滚新增插件(官方 CLI)、逐级回溯
- 页面自动刷新:代际 ID(startedAt)+ localStorage 持久化对比,无轮询
- 设置菜单:快照保留版本数