v0.1.2 — fix: showToast 挂死插件初始化导致 opencode 无法启动
Fixes
- showToast 不再可能挂死插件初始化:无 TUI 附加时(headless
opencode run,或 bootstrap 期间 TUI 尚未连接),/tuishowToast 端点永不响应;此前PeersPlugin初始化在名称冲突分支await该 toast,导致插件 init 挂起 → opencode 整个 bootstrap 卡死 —— 只要另一个存活实例占用了当前目录 basename 作为 peer 名(如一个常驻 home 目录实例),在该目录下 opencode 完全无法打开。feedback.showToast:SDK 调用与 2s(unref'd)超时竞速,超时/无client.tui时静默降级。- init 时的改名 toast 改为 fire-and-forget,插件初始化不再阻塞于 UX 反馈。
Tests
- 新增 2 个用例:TUI 端点永不 resolve 的挂死防护、
client.tui缺失时的 no-op。
验证结论
npm test:44/44 全绿。- 真实 opencode E2E:存活实例注册 peer 名
wangshuai后,修复前新实例在/Users/wangshuaibootstrap 卡死(25s 无任何输出),修复后完整启动(peers started name=wangshuai-2,TUI 正常渲染,opencode run完整跑通)。
Full Changelog: v0.1.1...v0.1.2