Skip to content

Releases: Nothree-code/voco-input-sh

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

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

v0.2.1 — DSH 0.1.5-rc.2 兼容性验证 + 日志轮转修复

Choose a tag to compare

@Nothree-code Nothree-code released this 12 Sep 11:34

适配

验证 DSH 0.1.5-rc.2 兼容性,结论是无需改动代码即可工作。

依赖面 0.1.5-rc.2 现状
dsh.client 清单(platform: "web" + exports["./client"]) 未变
客户端 bundle 入口 window.__ModuleLoader__.load({ id, factory }) 未变
插槽 conversation.input.right / conversation.input.dock 仍存在
插槽 props(InputZone + InputState.draft + inputActions.setDraft) 未变
Host 路由 webServer.register({ kind: 'exact' }) 未变

运行时实证:/dsh-voco-token 与 /dsh-voco-baseline 在当前实例上均返回 HTTP 200。

修复

  • VocoType 重启或日志轮转后语音不再插入:日志条目数回退会让客户端持有的 after 游标越过文件末尾,
    /dsh-voco-poll 会持续返回「无新内容」,表现为「点了麦克风、说了话,却再也没有文字插入」,
    必须重新点一次麦克风才能恢复。现在 host 端比较相邻两次读取的条目数,检测到回退时返回 rotated: true
    并清空增量,客户端收到后把游标重设到当前末尾。(lib/index.js、lib/client.js)

文档

  • README 新增「DSH 兼容性」章节:契约核对表 + 已知行为边界
    (输入框引用 chip 会被降级为纯文本;语音插入依赖 VocoType 日志格式)。
  • 新增 CHANGELOG.md。

安装 / 升级

dsh plugin --profile web add github:Nothree-code/voco-input-sh

升级后需完全重启 dsh web 生效。

校验

  • node --check 通过(host 与 client 两半)
  • 源码与运行副本(node_modules/voco-input-sh)字节一致
  • package.json 无 BOM

Full Changelog: 8ffb189...fa3f2df