- Destroy trayPanelWindow and clear refresh timer during cleanup, preventing hidden BrowserWindows from keeping the Electron process alive - Add SIGTERM/SIGINT handlers for graceful shutdown - Detect crashed webContents in focusMainWindow() and recreate the window instead of silently failing on second-instance activation Closes the issue where restarting the app shows "Failed to load the UI" and leaves multiple zombie processes in the task manager. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>