Repository navigation
Releases: lmr233/dsh-git-update-notifier
Releases · lmr233/dsh-git-update-notifier
Release list
v0.2.8
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
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
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
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
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才生效(仅刷新页面不够),插件会在设置页自检并提示。