Repository navigation
v0.4.0 — 适配 DSH 0.2.1(放弃旧宿主兼容)
为什么发这一版
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 的契约重新编译后,暴露出三处真实断裂。
三处真实断裂
-
设置 API 换了一代
dsh-settings不再导出SettingsSectionHooks,两代安装器(installSettingsSection/settings.installSection)全部移除,改为依据插件 Loader 入口的 Config schema 推导托管表单。 -
settings.plugins.tab的 SlotMap 声明搬家
该插槽的类型声明现位于 settings shell(ui-settings/src/client/contract/slots.ts)。缺少这次类型合并时ctx.slots.register直接编译不过 —— 设置页的 CodeBuddy CLI 标签会整块消失。 -
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.00.3.0 内置三代宿主兼容层,可在 0.1.2、0.1.5、0.1.7+ 上运行。
验证
tsc双端(host + client)通过;vitest278 passed / 1 skipped- 在运行中的 DSH
0.2.1-rc.2上实测:- 插件不再出现在不兼容列表
- 已安装插件卡片无「异常」标记(同页 aegis / agent-teams / auto-continue 仍为异常)
- 设置 → 内置插件 → CodeBuddy CLI 标签正常渲染,卡片正文完整(已登录账号、令牌有效期、账号管理/可选模型/积分统计/剩余积分、粘贴 Token 入口)
/plugins/dsh-codebuddy-cli/status返回 200,5 个账号、积分正常读取