import { BrowserWindow, nativeTheme } from "electron/main"; import type { Session } 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(); }