Skip to content

chore(release): v0.22.1——修复 files 接管 id 孤儿化与 macOS 拖拽失效 - #787

Merged
Menghuan1918 merged 2 commits into
mainfrom
chore/release-0.22.1
Sep 28, 2026
Merged

Menghuan1918 merged 2 commits into
mainfrom
chore/release-0.22.1

Conversation

@Menghuan1918

@Menghuan1918 Menghuan1918 commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

发版内容

补丁版,把本轮两个真机可复现、单测却全绿的缺陷交付到 npm latest:

  1. 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 reporting already 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)。
  2. macOS 桌面版窗口拖拽 / 双击标题栏缩放失效([macOS Desktop] Window drag works once then stops: [data-dsh-panel-host] inherits -webkit-app-region: no-drag #772):视口层继承宿主 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.ts 版本三处锁步 → 0.22.1(tests/service.spec.ts 与 tests/manifest-consistency.spec.ts 守护)
README.md / README_EN.md v0.22.1 条目、三处徽章、latest/支持线表格、切回 npm 通道示例;「最近更新」保持两条,更早版本指针下移为 v0.21.1 → v0.12.3
docs/external-plugin-guide.md 当前版本行 → v0.22.1
CHANGELOG.md / CHANGELOG_EN.md 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。无公共 API / 契约 / 词典 / chunk 改动。

验证

项目 结果
make check(typecheck → lint → build → test → check:consumer-types) ✅ 122 files / 1293 passed / 9 skipped
本地 pnpm test:mount ✅ 8 passed(mount 5 + native-reload 1 + perf 2,含新的 reload 门与级联探针)
本地 pnpm test:mount:aggregate ✅ 通过
scratch profile 红→绿(npm 0.22.0 vs 修复版) ✅ 3/3 红 → 3/3 绿(见 #785),拖拽探针与放大视图计算值:no-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)。

- 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 无需改动。
@Menghuan1918

Copy link
Copy Markdown
Collaborator Author

独立 review 已跑:一处必改 + 两处措辞,均已处理(commit `a18e0f0`)

reviewer 在本机逐项复核并实跑了两遍 pnpm test 与整条挂载 lane:

必改(已改):发布说明里的单测计数是 1292,但本 commit 实际产出 1293(1292 是 #785 当时的数字,与发版 PR 自己的验证段自相矛盾——那条写的就是 1293)。已改为 1293,涉及 CHANGELOG.md / CHANGELOG_EN.md / README.md / README_EN.md 与事故文档。

措辞(已改):tests/e2e/native-reload.e2e.ts 里只有 1 个用例,「3/3 红 / 3/3 绿」会被读成「3 个用例各红一次」——改成「连续 3 次运行全红 / 全绿(1 个用例重复跑三次)」,四份发布文档 + 事故文档 + AGENTS.md §2 同步。

PR 描述的口误也已更正:本地整条挂载 lane 是 8 passed(mount 5 + native-reload 1 + perf 2),不是 7。

reviewer 的正面结论(含实跑证据):版本三处锁步由 tests/service.spec.ts:537-541 与 tests/manifest-consistency.spec.ts:115 守护且全绿;全仓 0.22.0 命中逐条核对后都是应保留的历史引用;zh/en 段落一一对应(CHANGELOG 各 5 条、README 各 3 条);「最近更新」保持两条并把更早版本指针下移为 v0.21.1 → v0.12.3;发布说明里每一条非数字断言都能在 main 上找到对应(drop loop 的 FILES_KIND 跳过、三处回滚、三处 CSS reset、三个测试文件、app-region:initial!important ×2 / no-drag ×2 的产物形状、桌面壳日志 2370 行的逐字栈);release.yml 的 tag↔版本校验与 latest dist-tag 都能过;lockfile 不需要动;pnpm pack --dry-run 报 0.22.1。

@Menghuan1918
Menghuan1918 merged commit 9b5834f into main Sep 28, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant