Skip to content

v0.3.1

Latest

Choose a tag to compare

@dotdance dotdance released this 22 Oct 03:43
· 2 commits to main since this release

0.3.1 声明修正版

本版只改兼容性声明,不改插件行为:engines.dsh 从没有上界的 >=0.2.0-rc.2 改成 ^0.2.0-rc.2 || ^0.2.1-0,5 个 @deepseek-ai/dsh-* peer 与 2 个 @deepseek-ai/dsh-* dependency 同步到同一区间。源码与界面没有变化。

修正一:补上上界

旧区间 >=0.2.0-rc.2 没有上界,DSH 连 1.0.0 都判为兼容。本插件的职责是限制工具:若未来的大版本改了 tools.restrict 的语义,插件会「照常加载但限制没生效」——这比直接被禁用更危险。新区间盘掉 0.3.0、0.3.0-alpha.* 与 1.0.0。

修正二:0.2.0-rc.2 上的放宽从来没有生效

engines.dsh 这个判定机制是 DSH 0.2.1-alpha.4 才引入的。更早的宿主(包括 0.2.0-rc.2)根本不读 engines.dsh,只看 peerDependencies;而之前的 peer 区间是 ^0.2.1-alpha.2,在 0.2.0-rc.2 上不满足 —— 插件会被判为不兼容并被禁用。

所以「支持 0.2.0-rc.2」这条放宽,在真正能用到它的宿主上其实一次都没生效。现在 engines.dsh 与 peer 使用同一区间,两条判定路径结论一致。

为什么区间写成这样

^0.2.0-rc.2 || ^0.2.1-0 不够直观,但它是唯一能同时满足两个消费者的写法:

消费者 判定语义
DSH(evaluatePluginCompatibility) semver.satisfies(range, { includePrerelease: true })
npm / pnpm 默认模式:预发布版本只有在同一 主.次.修 三元组也带预发布号时才匹配

更直观的 >=0.2.0-rc.2 <0.3.0-0 在 npm 模式下会拒掉 0.2.1-alpha.* 与 0.2.1-rc.*(实测:pnpm install --frozen-lockfile 直接报错),在 DSH 模式下却放行。^0.2.1-0 里的 -0 把 0.2.1 三元组的预发布纳入匹配,两个模式的结论由此一致。

验证

  • 用 DSH 0.2.1-rc.2 的官方 evaluatePluginCompatibility 跑本 manifest:0.2.0-rc.1、0.3.0-alpha.1、0.3.0、1.0.0 均不兼容;0.2.0-rc.2 起至 0.2.2 全部兼容。
  • pnpm install --frozen-lockfile 通过,pnpm peers check 无问题。
  • pnpm run typecheck / build / test(19 个文件、300 个测试)全过。

升级提示

  • 已在 DSH 0.2.1.x 上的用户:无感知,照常安装即可。
  • 想留在 0.2.0-rc.2 的用户:现在会被判为兼容,但本插件没有在 0.2.0-rc.2 实机上跑过(只在 0.2.1-alpha.2 与 0.2.1-rc.2 上验证过 API 与装配)。若装配后界面异常,请提 issue,并可用 dsh plugin add @dotdance/dsh-skill-scope@0.3.0 回退。