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 的「设置 → 插件」会把它渲染成一张卡片。