Skip to content

v1.7.8 — 说清楚卡片在哪儿、以及我们支持到哪个版本

Choose a tag to compare

@XDTrees XDTrees released this 01 Oct 07:23
· 50 commits to main since this release

这次没有功能问题,全在「声明」上:一处把你引到不存在的路径,一处让你以为装错了版本。

README 的入口路径是 0.1.x 时代的,0.2.0 上按它找不到

README 一直写着「设置 → 插件 → DSH WorkBuddy XD Pool」。0.2.0 起没有这条二层路径了。

实际位置是:打开设置面板 → 顶部平级标签里的「XD Pool」(排在 通用设置 / 模型 / 内置插件 / Agent 预设 后面)。开设置面板的方式是侧边栏左下角的齿轮,或快捷键 Ctrl+Alt+,。

已把 README 三处改掉,并且补上了开面板的方法——只写「切到 XD Pool」而不说怎么开设置,等于没写。老路径保留一句「0.1.x 时代叫这个」,方便升级上来的人理解自己的习惯为什么突然不灵了。

engines.dsh 写着 <0.2.0,可它在 0.2.0 上跑得好好的

这个声明的问题不在于"保守",而在于它会把人带偏:任何人按 engines 做兼容判断,第一反应都是"这插件不支持 0.2.0",然后往错误的方向排查。反馈里就有一位因此走了一大圈。

现在放宽到 <0.3.0,并且把三个 host peer 依赖(dsh-llm / dsh-llm-pi-ai / dsh-settings)一起对齐——它们约束的是同一批宿主包,只改一个反而制造新的不一致。

放宽不等于"什么都接受":上界仍然卡在 <0.3.0,没测过的大版本不该被默认声称支持。

导航图标匹配不上时,现在会说话

installNavIcon() 靠选择器找设置面板里那一行。找不到时它完全静默 —— 表现就是"图标没出来",没有任何线索。这次排查里它不是故障点,但它是最贵的一环:看起来什么都没发生。

现在连续匹配失败会 console.warn 一次,带上选择器、期望的标签、以及当前导航里实际有什么:

[dsh-workbuddy-xdpool] the settings nav row could not be found, so the icon was not applied.
selector="[role=\"dialog\"] nav button" expectedLabel="XD Pool" rowsPresent=["通用设置","模型",...]
This is cosmetic only — the card itself still works. Please report this line…

不是每次都喊:设置面板没打开时找不到是正常的(那一行压根不在 DOM 里),每次都喊只会让人学会忽略它。所以只在"面板开着、却连续 N 次找不到"时才报一次,且每轮只报一次。

关于那份"0.2.0 删了 slots 服务"的报告

反馈者自己撤回了那个结论,我更正一下:不成立。

他后来实测到:__DSH_BOOT__.entries 含本插件、importErrors 为空、客户端 fiber 状态是 ACTIVE、卡片 DOM 完整渲染、installNavIcon 正常生效。而且把 dsh.client.inject 改掉再测,行为完全一致 —— 所以那两个包的声明不会阻断加载,不需要改。

他复盘出的两个方法论坑,我认为值得原样记下来,因为它们非常容易重犯:

  • 只用正则扫「谁 provide("name") 了服务」,漏掉别的声明写法,就宣布服务被删了 —— 典型的假阴性;
  • 在会话页(设置面板没开)dump DOM 搜插件节点,0 命中当成故障证据 —— 而 settings.section 只在面板打开时才进 DOM,0 命中是必然的。

slots 和 settings.section 在 0.2.0 里都健在,渲染方是 dsh-client-ui-settings-general 的 renderSlot("settings.section", …)。

验证

  • 类型检查全绿,测试 332 项全绿(+7)。
  • 新增 tests/compatibility-declaration.test.ts:engines.dsh 必须容纳 0.2.x、上界仍要卡住没测过的大版本、三个 host peer 与 engines.dsh 保持一致、README 不得再把老路径当指引(但允许作为历史说明出现)、必须写出开设置面板的方法。
  • 反向验证:把 engines 退回 <0.2.0 → 2 项变红;把 README 退回老路径 → 1 项变红。
  • 本机核对宿主代码:renderSlot("settings.section", { close }, { only: active }) 确为平级渲染,插件注册 order: 440(排最后),与反馈的实测描述一致。

一点说明

我本机是 DSH Desktop 2.0.15(内核 0.1.7-rc.2),不是 0.2.0-rc.2,所以我没法在本地复现 0.2.0 的渲染行为。本次改动依据的是反馈者提供的实测数据,外加我对本机宿主代码里 renderSlot 调用的核对。放宽 engines 这个结论我是采信的,但没有在 0.2.0 上亲手验过。