chore(release): v0.22.1——修复 files 接管 id 孤儿化与 macOS 拖拽失效 - #787
Conversation
- package.json / dsh.plugin.json / SIDEBAR_SERVICE_VERSION → 0.22.1(三者锁步由 tests/service.spec.ts 与 tests/manifest-consistency.spec.ts 断言) - README / README_EN:新增 v0.22.1 条目、同步三处徽章与 latest/支持线表格、 切回 npm 通道的示例版本号;「最近更新」保持两条(v0.22.1 + v0.22.0), 更早版本指针区间随之下移为 v0.21.1 → v0.12.3 - docs/external-plugin-guide.md:当前版本行 → v0.22.1 - CHANGELOG / CHANGELOG_EN:补 v0.22.1 条目(两个缺陷的根因链、真机证据、 修复要点与守卫清单) 支持线**不变**:仅 DSH 0.1.7-rc.1+(peer 下限 ^0.1.7-rc.1,CI 钉 0.1.7-rc.1); 0.21.1 / 0.22.0 用户直接升级;0.1.6-alpha.2 及更早仍固定 v0.19.1。 内容提要:① 修复客户端条目替换后 `dsh-better-sidebar:files` id 被孤儿化 (#777 + #785:清理循环跳过 FILES_KIND + 注册失败回滚已占用的 id 与槽位, 并新增部署级回归门 tests/e2e/native-reload.e2e.ts);② 修复 macOS 桌面版 窗口拖拽/双击缩放失效(#773 + #786:视口层用 initial !important 退出 app-region 计算,补齐放大视图,探针改用真实级联计算值)。 验证:make check 全绿(typecheck / lint / build / test 122 files 1293 passed 9 skipped / check:consumer-types);此外本地 pnpm test:mount 与 pnpm test:mount:aggregate 绿,npm 0.22.0 与修复版在 scratch profile 上的 红→绿对照见 PR #785 / #786。
- 单测计数:`122 files / 1292 passed / 9 skipped` → **1293**。1292 是 #785 当时的数字, 本 commit 自己的 `make check` 两次都报 1293(`tests/` 与 main 逐字相同,122 个 spec + `it.each` 展开 = 1293)。涉及 CHANGELOG.md / CHANGELOG_EN.md / README.md / README_EN.md 与事故文档。 - 「3/3 红 / 3/3 绿」措辞改为「连续 3 次运行全红 / 全绿」并注明该 lane 里只有 1 个用例、 是重复跑三次——原措辞会被读成「3 个用例各红一次」。涉及上述四份发布文档 + 事故文档 + AGENTS.md §2(同一句话在那边也有)。 - 其余 review 结论均已满足:版本三处锁步 + 两个守护用例绿、无遗留 0.22.0 引用、 zh/en 段落一一对应、「最近更新」保持两条并把指针下移为 v0.21.1 → v0.12.3、 release.yml 的 tag 校验与 `latest` dist-tag 都能过、lockfile 无需改动。
独立 review 已跑:一处必改 + 两处措辞,均已处理(commit `a18e0f0`)reviewer 在本机逐项复核并实跑了两遍 必改(已改):发布说明里的单测计数是 1292,但本 commit 实际产出 1293(1292 是 #785 当时的数字,与发版 PR 自己的验证段自相矛盾——那条写的就是 1293)。已改为 1293,涉及 措辞(已改): PR 描述的口误也已更正:本地整条挂载 lane 是 8 passed(mount 5 + native-reload 1 + perf 2),不是 7。 reviewer 的正面结论(含实跑证据):版本三处锁步由 |
发版内容
补丁版,把本轮两个真机可复现、单测却全绿的缺陷交付到 npm
latest:files接管 id 被孤儿化(社区 tab type "dsh-better-sidebar:files" already registered on sidebarRightTabs re-prove (+ React #130) #770 / [Bug] sync() 清理循环误删 FILES_KIND takeover 后立即重注册,触发 dsh-better-sidebar:files already registered #771 / fix(native): absorb a duplicate tab-type id instead of reportingalready registered#766):native register files error: … already registered刷屏 + 文件树落到宿主空态直到刷新页面。根因(桌面壳日志逐字确认):teardown 期间sync()在 inactive 上下文上重建files接管 ——tabs.register在宿主上下文上取走了 id,ctx.slots.inject在插件上下文上抛cannot create effect on inactive context,disposer 丢失、id 永久不可注册。修复:fix(native): 注册失败的 tab 类型必须释放,否则 id 永久占用(插件重载后文件树变空态) #777(清理循环跳过FILES_KIND+ 注册失败回滚已占用的 id 与槽位)+ fix(native): 钉牢 files 接管泄漏的守护断言 + 记录两条不变量 #785(事件日志断言、部分回滚覆盖、部署级回归门tests/e2e/native-reload.e2e.ts)。body > :not(#root) { no-drag },且 app-region 无视pointer-events→ 抵消所有拖拽带。修复:fix(desktop): stop panel host from blocking macOS window drag #773 + fix(desktop): 补齐 mermaid 放大视图的拖拽区退出 + 把 #772 的守卫换成真实级联探针 #786([data-dsh-better-sidebar]/[data-dsh-panel-host]/.mermaidModal用initial !important退出计算,> *保持no-drag;单元形状守护 + 挂载 lane 的真实级联探针)。变更文件
package.json/dsh.plugin.json/src/client/service.ts0.22.1(tests/service.spec.ts与tests/manifest-consistency.spec.ts守护)README.md/README_EN.mddocs/external-plugin-guide.mdCHANGELOG.md/CHANGELOG_EN.md基线不变:仅 DSH 0.1.7-rc.1+(peer 下限
^0.1.7-rc.1,CI 钉0.1.7-rc.1);0.21.1 / 0.22.0 直接升级;0.1.6-alpha.2 及更早仍固定 v0.19.1。无公共 API / 契约 / 词典 / chunk 改动。验证
make check(typecheck → lint → build → test → check:consumer-types)pnpm test:mountpnpm test:mount:aggregateno-drag→none(见 #786)合并后我会等 main 上
ci/ci-windows/plugin-mount三 job 全绿,再gh release create v0.22.1 --target main触发 release.yml 发 npm(dist-tag 由版本串决定,0.22.1不含-→latest)。