From 90674cf16515db8b7c7b7fcea85942b21b8c5db9 Mon Sep 17 00:00:00 2001 From: jiangchen <1703935164@qq.com> Date: Sun, 27 Sep 2026 14:11:06 +0800 Subject: [PATCH] =?UTF-8?q?fix(host):=20ctx.set=20=E5=89=8D=E5=BF=85?= =?UTF-8?q?=E9=A1=BB=20ctx.provide=EF=BC=8C=E5=90=A6=E5=88=99=E6=95=B4?= =?UTF-8?q?=E4=B8=AA=E6=8F=92=E4=BB=B6=E6=A0=91=E5=8A=A0=E8=BD=BD=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E3=80=81DSH=20=E8=B5=B7=E4=B8=8D=E6=9D=A5=EF=BC=88?= =?UTF-8?q?=E9=9A=94=E7=A6=BB=E5=AE=9E=E4=BE=8B=E5=AE=9E=E6=B5=8B=E5=A4=8D?= =?UTF-8?q?=E7=8E=B0=EF=BC=9B=E4=BF=AE=E5=A4=8D=E5=90=8E=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=B9=B6=E5=86=99=E5=87=BA=20endpoint.json?= =?UTF-8?q?=20=E4=B8=8E=20HTTP=20=E8=B7=AF=E7=94=B1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/host.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/host.js b/lib/host.js index c536482..80141fb 100644 --- a/lib/host.js +++ b/lib/host.js @@ -261,8 +261,14 @@ export function apply(ctx) { } const pushHidden = () => broadcast({ type: 'cmd', cmd: 'hide' }) - // 抓屏前隐藏:给其它插件/工具用的门面(没有消费者时静默) - ctx.set?.('floatWindow', { hide: pushHidden, show: () => broadcast({ type: 'cmd', cmd: 'show' }), snapshot, endpoint: () => endpointFile }) + // 抓屏前隐藏的对外门面:交给宿主的共享对象。 + // 注意 cordis 要求先 provide 再 set,否则会抛 "cannot set property ... without provide" + // (实测:漏了 provide 会让整个插件树加载失败、DSH 起不来)。这里做成可选的, + // 拿不到 provide 就退化成只广播 SSE 命令。 + try { + ctx.provide?.('floatWindow') + ctx.set?.('floatWindow', { hide: pushHidden, show: () => broadcast({ type: 'cmd', cmd: 'show' }), snapshot, endpoint: () => endpointFile }) + } catch (e) { log('floatWindow facade skipped:', String(e?.message || e)) } // ---------------------------------------------------------------- DSH 设置入口 // 注册一个设置命名空间,DSH 的「设置 → 插件」会把它渲染成一张卡片。