diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index d38bb78..32a826e 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -9,6 +9,7 @@ "core:event:allow-emit", "core:window:allow-create", "core:window:allow-close", + "core:window:allow-show", "core:window:allow-set-always-on-top", "core:window:allow-set-focus", "core:window:allow-set-position", diff --git a/src/App.vue b/src/App.vue index 05bb427..fcd2b1a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -122,12 +122,16 @@ let _stopApprovalPopup: (() => void) | null = null let _unlistenPopupReady: (() => void) | null = null async function activateForPopup() { // 浮窗「打开审批面板」按钮 → 聚焦主窗口 + 打开 AI 面板/激活分离窗口 + // 修复 BUG1:setFocus 先行(已授权,失焦场景有效),show 兜底(需 core:window:allow-show, + // capabilities/default.json 已补)。原顺序 show→setFocus,show reject 直接吞掉 setFocus, + // 主窗口最小化/隐藏时 show 失败 → 用户看到「点了没反应」。 try { const { WebviewWindow } = await import('@tauri-apps/api/webviewWindow') const mainWin = await WebviewWindow.getByLabel('main') if (mainWin) { - await mainWin.show() - await mainWin.setFocus() + // setFocus 先行(对未聚焦但可见的窗口即可恢复焦点);show 兜底取消最小化/隐藏 + try { await mainWin.setFocus() } catch { /* setFocus 失败不阻塞 show */ } + try { await mainWin.show() } catch { /* show 未授权或不可用,忽略(setFocus 已尽力) */ } } } catch { /* 忽略 */ } if (!aiStore.state.detached && !aiStore.state.panelOpen) { diff --git a/src/i18n/en/aiChat.ts b/src/i18n/en/aiChat.ts index 6a21b60..bc5638a 100644 --- a/src/i18n/en/aiChat.ts +++ b/src/i18n/en/aiChat.ts @@ -57,8 +57,8 @@ export default { popupTagPath: 'Path auth', popupTagRisk: 'Risk action', popupOpenPanel: 'Open approval panel', - // 根因1:首屏空态友好文案(数据未到达时,替代裸 spinner) - popupEmptyHint: 'Waiting for approval data…', + // 空态文案:正常空态会被 maybeAutoClose 即时关窗,此 hint 仅 close 失败时兜底 + popupEmptyHint: 'Closing…', // ── Provider status ── clickToSwitchProvider: 'Click to switch provider', diff --git a/src/i18n/zh-CN/aiChat.ts b/src/i18n/zh-CN/aiChat.ts index e47ac60..ef34d5b 100644 --- a/src/i18n/zh-CN/aiChat.ts +++ b/src/i18n/zh-CN/aiChat.ts @@ -57,8 +57,8 @@ export default { popupTagPath: '路径授权', popupTagRisk: '风险操作', popupOpenPanel: '打开审批面板', - // 根因1:首屏空态友好文案(数据未到达时,替代裸 spinner) - popupEmptyHint: '等待审批数据…', + // 空态文案:正常空态会被 maybeAutoClose 即时关窗,此 hint 仅 close 失败时兜底 + popupEmptyHint: '正在关闭…', // ── Provider 状态 ── clickToSwitchProvider: '点击切换 Provider', diff --git a/src/views/ApprovalPopup.vue b/src/views/ApprovalPopup.vue index c9ffa1f..b70c766 100644 --- a/src/views/ApprovalPopup.vue +++ b/src/views/ApprovalPopup.vue @@ -30,7 +30,8 @@