import type { Session } from 'electron/main' import { BrowserWindow, nativeTheme } from 'electron/main' import { attachWindowDiagnostics, loadWindowURLSafely } from './external-window' interface ReviewWindowRecord { taskId: string window: BrowserWindow } const reviewWindows = new Map() export async function openReviewWindow(options: { taskId: string title: string url: string session: Session }): Promise { const existing = reviewWindows.get(options.taskId) if (existing && !existing.window.isDestroyed()) { existing.window.show() existing.window.focus() if (existing.window.webContents.getURL() !== options.url) { await loadWindowURLSafely(existing.window, options.url, options.title) } return } const window = new BrowserWindow({ width: 1440, height: 960, minWidth: 1120, minHeight: 760, title: options.title, autoHideMenuBar: true, backgroundColor: nativeTheme.shouldUseDarkColors ? '#15191a' : '#f4f1ea', webPreferences: { session: options.session, sandbox: true, contextIsolation: true, nodeIntegration: false, }, }) attachWindowDiagnostics(window, options.title) reviewWindows.set(options.taskId, { taskId: options.taskId, window }) window.on('closed', () => { reviewWindows.delete(options.taskId) }) await loadWindowURLSafely(window, options.url, options.title) window.show() window.focus() }