Repository navigation
v0.18.37
·
122 commits
to master
since this release
Added
- 开发工具:一键发版脚本 + 布局探针进仓(#208 复盘:编排税 / 复现税):
scripts/release.mjs(npm run release)把「门禁 → CHANGELOG 定格 → 版本号 → commit/tag/push → token 发布 → 可见性轮询 → GitHub Release」固化成一条命令,默认计划模式只读、--yes才执行、--verify <版本>做发布后自检(npm 可见 / latest / tag 指向 / GitHub Release / tarball 布局);scripts/panel-layout-probe.mjs(npm run probe:layout)用系统 Chrome 渲染真面板量盒子,断言 #93 单面板布局契约与 #240 批量盘弹窗契约(横幅不被压扁、复制按钮不越框、内容超高时自身可滚且末行可达)。口径写进docs/maintainers.md,docs/agents/architecture.md门径表同步指路。
Fixed
- #242 批量入口按钮卡「正在安装…」:弹窗关掉后台继续跑完后,入口件没人再刷(真机 2026-10-20 16:41 web profile,宿主 16:41:53 已收尾、按钮到 16:44 仍 disabled):入口件只在挂载/点击/关弹窗时各刷一次,关弹窗时批量还在跑就停在
installing相位,之后无人跟进。现在:src/panel/batch/entry-batch.ts在「有未终态行 + 面板没开 + 未卸载」时排后台跟进刷新(间隔取入口件pollMs(缺省批量面板缺省值)且不小于全局下限),最多跟 10 分钟;弹窗打开、卸载、收尾即停,跟进只打只读batchStatus,绝不再触发安装。 - #243 打开批量面板静默续跑两小时前的旧会话(autoResume 无新鲜度门限,用户以为只是「检查更新」;真机 2026-10-20 16:41 web profile 自动执行 14:17 旧会话 7 家):
runAutoOnce自动续跑只看「账本里有没有未完成行」,不看会话多旧。现在:src/panel/batch/mount.ts增AUTO_RESUME_MAX_AGE_MS = 10 分钟新鲜度门限——超龄会话不自动跑,落batch.notice.resume-stale(「上次更新未完成,点『继续上次未完成的更新』继续」)并把决定权交给用户(底部resume按钮本来就在);updatedAt读不到的旧形状保持原行为(照旧自动续跑),autoResume:false与显式续跑/丢弃语义不变。
Tests
- 新增
tests/issue-242-entry-background-watch.test.mjs4 例(后台收尾后按钮自己刷回、卸载即停、收尾不空转、跟进只打只读电话);tests/issue-243-auto-resume-stale.test.mjs4 例(超龄不自动续跑且留按钮与提示、点继续才续跑、新鲜会话照旧打开即续、缺updatedAt保持旧行为、无未完成行不动作)。
门禁(发版定格):npm run check 全绿——node --test tests/*.test.mjs 1966 例:1965 过 / 0 失败 / 1 跳过;npm run typecheck 过;npm run gate:bilingual 三道硬门禁过(88 个源文件、414 个 key、17 错误码、20 diag 键,违规 0);npm run docs:log:check 过(6 条缺行警告是既有缺行,只警告不失败);npm publish --dry-run 183 文件(dsh-plugin-update@0.18.37,518.9 kB 压缩 / 1.7 MB 解包);gate:bilingual:release 的第四道照旧如实红、非阻断(414 个 key 仍全是 draft: true)。