Skip to content

Releases: lmr233/dsh-git-update-notifier

v0.2.8

Choose a tag to compare

@lmr233 lmr233 released this 11 Sep 11:33

v0.2.8

补上一个明显的盲区:插件一直在检测 dsh 本体,却检测不了自己。

新增

  • 插件自身的更新检测:先判定「自己是怎么被装进来的」(git 检出 / github: 依赖 / npm 依赖 / 手工放进 node_modules 的副本),再据此决定去哪儿问版本 —— 而 GitHub 始终兜底,所以手工副本也能检测到新版。设置页显示「插件自身已是最新」或「插件自身有新版:X → Y(来源)」
  • POST /plugin/update:按来源更新插件自己 —— git 检出走 fetch + 快进合并,npm / github 依赖走 npm install;手工副本明确拒绝并给出手动做法(不知道这份副本从哪来时,不动它)
  • DSH_GIT_UPDATE_NOTIFIER_GITHUB_API:指向镜像或本地 mock(测试据此离线验证)
  • 自身检查失败只记日志,绝不影响 dsh 本体的结论

变更

  • HTTP 路由由 11 条增至 12 条(新增 POST /plugin/update)
  • npm test 增至 10 个脚本(新增 test/selfcheck.mjs)

完整变更:CHANGELOG.md
发布归档:docs/releases/v0.2.8.md

宿主端有改动:升级后需要重启 dsh web 才生效。

v0.2.7

Choose a tag to compare

@lmr233 lmr233 released this 11 Sep 11:23

v0.2.7

让「更新失败」这件事可检修:失败时留下完整现场,并且事后还找得回来。

新增

  • 失败诊断日志:resolve / download / verify / install / fetch / merge 任一阶段失败,都把完整现场写进 $DSH_HOME/dsh-git-update-notifier-logs/update-<时间>-<阶段>.log —— 含插件版本、安装形态、包位置 / 仓库根 / 安装位置、本地与目标版本、代理、运行时、执行的命令、退出码、完整 stdout 与 stderr,以及(合并失败时)git status --short。只保留最近 20 份
  • GET /diagnostics.json:取回最近一次失败的完整现场(进程内优先,磁盘兜底;只允许读日志目录内的文件)
  • 错误信息带上退出码:失败消息改为「失败(退出码 N):…」,命令与诊断文件路径写进状态,刷新页面后仍可见
  • 设置页「查看完整报错」:任何阶段的失败都多出一行现场摘要与一个按钮,点开在页面内摊开完整输出直接复制(懒加载,不点不请求)

变更

  • HTTP 路由由 10 条增至 11 条(新增 GET /diagnostics.json)
  • 卸载说明补上日志目录

完整变更:CHANGELOG.md
发布归档:docs/releases/v0.2.7.md

宿主端有改动:升级后需要重启 dsh web 才生效。

v0.2.6

Choose a tag to compare

@lmr233 lmr233 released this 11 Sep 11:15

v0.2.6

补上更新流程最后一段的「出事了怎么办」:安装失败可以只重试安装,也可以回退到更新前。

新增

  • 安装失败后的重试:把「准备安装包(下载 + 校验)」与「安装」拆成两步,安装失败时保留已校验的包与失败阶段标记。新增 POST /update/retry —— 只重做安装,不重新下载、不重新解析 registry;源码形态复用已抓取的 FETCH_HEAD 重做快进合并
  • 安装失败后的回退:失败时把「更新前」那一刻的回退点正式记入状态(此前只在更新成功后才记录),因此失败后 POST /rollback 立刻可用
  • 失败阶段可见:lastUpdate 增加 phase / canRetry / canRollback / attempt / needsFreshDownload;设置页给出「重试安装」与「回退到更新前」两个按钮,并写明这是第几次尝试
  • 重试前重新校验:每次安装前重算哈希,确保装的就是当初校验通过的那份字节;本地包已被改动则丢弃并要求重新下载

变更

  • HTTP 路由由 9 条增至 10 条(新增 POST /update/retry)
  • 源码形态的快进合并失败,提示改为「重试或回退」,而不是笼统的「请手动处理后重试」

完整变更:CHANGELOG.md
发布归档:docs/releases/v0.2.6.md

宿主端有改动:升级后需要重启 dsh web 才生效。

v0.2.5

Choose a tag to compare

@lmr233 lmr233 released this 11 Sep 11:06

v0.2.5

把「更新」从一次性的写操作,变成可中断、可继续、装前先验的过程。

新增

  • 更新包下载的断点续传:先把 tarball 下到 $DSH_HOME/dsh-git-update-notifier-downloads/,再用 Range 从断点继续。网络断开、主动取消、甚至 dsh 重启,下次都接着下(断点记在磁盘上)
  • 更新包校验:交给 npm install 之前校验 dist.integrity(sha512)、dist.shasum(sha1)与 tarball 内的包名 / 版本;两层凭据都缺失时拒绝安装
  • 源码形态抓取可重试:git pull 拆成 git fetch(可中断、可重试、git 复用已下载对象)+ 本地 merge --ff-only
  • 更新过程可见:阶段、已下载 / 总大小与百分比,并标注「这次是从断点续上的」
  • 中断入口:「中断下载」(保留断点)与「中断并丢弃断点」

变更

  • npx / npm 形态改为安装校验过的本地 tarball:项目形态加 --no-save --no-package-lock(不改用户清单),npx 缓存写回依赖版本
  • HTTP 路由由 7 条增至 9 条:新增 GET /progress.json 与 POST /download/cancel

修复

  • 服务端忽略 Range、回 200 全量重下时,不再把磁盘断点位置误报成「续传了多少」
  • 对端直接掐断连接时不一定报 error —— 改为同时依据 complete 判定为可续传的中断

完整变更:CHANGELOG.md
发布归档:docs/releases/v0.2.5.md

宿主端有改动:升级后需要重启 dsh web 才生效。另外「下载 + 校验 + 装本地包」这条路径只对 npx / npm 形态生效,源码形态的续传由 git 自身完成。

v0.2.0

Choose a tag to compare

@lmr233 lmr233 released this 11 Sep 01:27

v0.2.0

从「只认源码 checkout」扩展到「先认清自己在哪种部署形态里」,并补齐了打扰控制与可回退性。

新增

  • npx / npm 安装形态支持:非源码形态改用 npm registry 比对版本,支持在原地 npm install 升级
  • 设置页「更新」区块(settings.section):常驻状态框 + 手动检测更新
  • 检测结果提示:常驻结果行(含「已是最新」);自动检测只在真有更新时弹卡片
  • 延期更新:1 天 / 3 天 / 1 周 / 2 周 / 1 个月(服务端强制上限),可随时取消
  • 延期与回退入口常驻:不再只在「有可用更新」时出现
  • 两半自检:CODE_VERSION 不一致时提示需要重启 dsh web
  • 更新回退:更新前记录回退点,并生成一个不依赖 dsh 运行的回退脚本
  • 自选回退目标:可回退到任意近期提交 / 版本,候选以版本号展示

变更

  • 每日检查触发点改为本地 24 时(保留启动补检,午夜没开机不会漏检)
  • 源码形态的展示从提交号改为版本号(本地版本 → 上游版本)
  • HTTP 路由由 4 条增至 7 条

修复

  • 回退请求的判定顺序:没有更新记录时返回 409,而不是 500
  • 非法回退目标在任何环境下都返回 400

完整变更:CHANGELOG.md
发布归档:docs/releases/v0.2.0.md

宿主端有改动:升级后需要重启 dsh web 才生效(仅刷新页面不够),插件会在设置页自检并提示。