From 229a709ec8997f6e96ec7593fac1cffd62d9dd00 Mon Sep 17 00:00:00 2001 From: Naiyuan Qing <145280634+NevilleQingNY@users.noreply.github.com> Date: Thu, 26 Feb 2026 16:36:25 +0800 Subject: [PATCH] fix(desktop): prevent black screen when closing fullscreen window on macOS On macOS, calling win.hide() on a fullscreen window causes a black screen because it interrupts the Space transition animation. This is a known macOS Cocoa limitation (NSWindow.orderOut() + fullscreen). Fix: Exit fullscreen first and wait for 'leave-full-screen' event before hiding the window. Also added render-process-gone handler for debugging renderer crashes. Refs: - https://github.com/electron/electron/issues/20263 - https://github.com/electron/electron/issues/6033 Co-Authored-By: Claude Opus 4.5 --- apps/desktop/src/main/index.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src/main/index.ts b/apps/desktop/src/main/index.ts index 352ea543..0461e678 100644 --- a/apps/desktop/src/main/index.ts +++ b/apps/desktop/src/main/index.ts @@ -147,11 +147,25 @@ function createWindow() { return { action: 'deny' } }) + // Track renderer crashes for debugging + win.webContents.on('render-process-gone', (_event, details) => { + console.error('[Window] Renderer process gone:', details.reason, details.exitCode) + }) + // Hide window on close instead of quitting (tray keeps running) win.on('close', (event) => { if (!isQuitting) { event.preventDefault() - win?.hide() + // On macOS, hiding a fullscreen window causes a black screen. + // Exit fullscreen first, then hide. + if (win?.isFullScreen()) { + win.once('leave-full-screen', () => { + win?.hide() + }) + win.setFullScreen(false) + } else { + win?.hide() + } } })