Skip to content

v0.2.2 — 修复麦克风按钮不显示(客户端必须声明 inject)

Latest

Choose a tag to compare

@Nothree-code Nothree-code released this 13 Sep 13:40

修复(关键)

麦克风按钮完全不显示 —— 这是本版本真正解决的问题。

根因

客户端的 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