Skip to content

v0.4.0 — 适配 DSH 0.2.1(放弃旧宿主兼容)

Choose a tag to compare

@fu827707013 fu827707013 released this 17 Oct 16:40
· 17 commits to main since this release

为什么发这一版

DSH 升级到 0.2.1-rc.2 后,插件管理页把 0.3.0 标成「已安装,与当前 dsh 不兼容」并拒绝装配。原因是 0.2.1-alpha.3 起兼容性判定改为优先读 engines.dsh,其次才看 DSH peerDependencies,而本插件的 peer 上限停在 <0.2.0。

只放宽版本号并不够:按 0.2.1 的契约重新编译后,暴露出三处真实断裂。

三处真实断裂

  1. 设置 API 换了一代
    dsh-settings 不再导出 SettingsSectionHooks,两代安装器(installSettingsSection / settings.installSection)全部移除,改为依据插件 Loader 入口的 Config schema 推导托管表单。

  2. settings.plugins.tab 的 SlotMap 声明搬家
    该插槽的类型声明现位于 settings shell(ui-settings/src/client/contract/slots.ts)。缺少这次类型合并时 ctx.slots.register 直接编译不过 —— 设置页的 CodeBuddy CLI 标签会整块消失。

  3. SettingsForms 新增必需注入
    static inject = ["configEditor", "profileContext"]。

修复内容

  • settings-compat.ts 按单代契约重写:只保留 configure({ auto: false }) 与 settings/document-updated 订阅,移除三代探测与 volatile schema 剥离。
  • 修复一处被吞掉的崩溃:entryNamespaceOf 原会无条件读取 ctx.loader,cordis 对未 inject 的服务抛 cannot get property "loader" without inject;该异常被注册流程的 try/catch 捕获,表现为 provider 静默不注册。
  • current() 改为每次经 settings.describe() 实时读取,替代原先由 setSource 推送启动快照的写法,设置文档的实时编辑立即生效。
  • package.json 新增 engines.dsh(>=0.2.1-rc.2 <0.3.0),DSH peer 同步提到 >=0.2.1-rc.2 <0.3.0。
  • 测试改为对插件自身契约断言:用暴露 describe/update 的最小 stub 替代真实 SettingsForms(后者在无 profile 的测试环境里已无法启动)。
  • README 中英文同步:写明只支持 0.2.1+,并指引旧宿主用户安装 0.3.0。

⚠️ 不向下兼容

本版只支持 DSH 0.2.1-rc.2 ~ <0.3.0。

仍在 DSH 0.1.x 上的用户请继续使用旧版:

npm i dsh-codebuddy-cli@0.3.0

0.3.0 内置三代宿主兼容层,可在 0.1.2、0.1.5、0.1.7+ 上运行。

验证

  • tsc 双端(host + client)通过;vitest 278 passed / 1 skipped
  • 在运行中的 DSH 0.2.1-rc.2 上实测:
    • 插件不再出现在不兼容列表
    • 已安装插件卡片无「异常」标记(同页 aegis / agent-teams / auto-continue 仍为异常)
    • 设置 → 内置插件 → CodeBuddy CLI 标签正常渲染,卡片正文完整(已登录账号、令牌有效期、账号管理/可选模型/积分统计/剩余积分、粘贴 Token 入口)
    • /plugins/dsh-codebuddy-cli/status 返回 200,5 个账号、积分正常读取