Repository navigation
修复(关键)
麦克风按钮完全不显示 —— 这是本版本真正解决的问题。
根因
客户端的 apply(ctx) 依赖 ctx.get('slots'),但插件对象只导出了 apply,没有声明 inject:
exports.apply = apply; ← 修复前只有这一行
cordis 因此不会等待服务就绪就调用 apply。调用发生时 slots 尚未注册,ctx.get('slots')
返回 undefined,而代码写的是静默返回:if (slots === undefined) return; ——
按钮没了,控制台也一声不吭,从外部几乎无法自查。
对照:同一台机器上 dsh-prompt-enhancer 声明了 inject: ['timer'],因此不受影响,
它的「开始录音」按钮一直正常显示在同一个槽位上。
修复
exports.inject = ['slots', 'timer']—— 让 cordis 等到两个服务就绪后再调用apply- 兜底分支由静默
return改为console.error(...),契约再变时会出声 - 两处 slot 注册补上
label,order由10调整为12(让开dsh-prompt-enhancer已占用的 10/11)
验证
真机验证(无头 Chrome + CDP,连接运行中的 dsh 0.1.5-rc.2 实例):
| 检查项 | 修复前 | 修复后 |
|---|---|---|
.voco-mic-btn 计数 |
0 | 1 |
| 页面 console 报错 | 无 | 无 |
沙箱验证:exports 键为 ['inject','apply'],slots.register 命中 2 次
(conversation.input.right#vocotype-paste、conversation.input.dock#vocotype-panel)。
更正 v0.2.1
v0.2.1 判断「无需改动代码即可兼容 dsh 0.1.5-rc.2」。该结论只对 host 端成立——路由层契约确实未变,
实测 /dsh-voco-token、/dsh-voco-baseline 均返回 200;但客户端并不成立。
v0.2.1 的按钮在 dsh 0.1.5-rc.2 上是不可见的,请升级到 v0.2.2。
升级
dsh plugin --profile web add github:Nothree-code/voco-input-sh本插件支持 HMR:同步文件后浏览器会自动重载插件 bundle,通常无需重启 dsh web。
Full Changelog: v0.2.1...v0.2.2