优化: 审批超时倒计时(60s变红)+分离窗口监听核验

This commit is contained in:
lxy
2026-08-15 18:46:13 +08:00
parent 871416637a
commit 13ecd7eba4
7 changed files with 64 additions and 10 deletions
+8
View File
@@ -105,6 +105,14 @@ async function detachPanel(convId?: string) {
// 异步传播。消除 detached=true 到 AiChat 实际卸载的窗口期(reattach 重叠期/HMR/极速 mount-unmount
// 竞态下,onBeforeUnmount 可能延迟,旧 listener 残留会与分离窗口新 listener 并存竞态)。
// stopListener 同步释放后端 listener + 清看门狗,分离窗口 resumeInDetached 起自己的 startListener。
//
// BUG-260624-02 核验结论(2026-08-15):分离窗口事件监听独立存在,审批事件无缺口。
// 链路:本窗口 url '#/ai-detached' → AiDetached.vue 挂 AiChat(detached) → AiChat onMounted
// 调 store.startListener()(独立 JS context 各自注册);后端 ai-chat-event 为 app 级广播
// (emit 到全部 webview),故审批类事件(工具 pending/审批结果)分离窗口自身可收。
// 前端派生的 'ai-pending-arrived'(useAiStreamingEvents/useAiToolEvents emit)亦为全局广播,
// 分离窗口 ToolCardList 的 listener 同样收到。主窗口 listener 在此 stopListener 释清,
// 不与分离窗口并存竞态。审批超时计时器(aiShared)同样随 listener 在接管窗口内重建。
stopListener()
}