• v3.3.52 f0608dcda1

    Administrator released this 2026-06-08 21:19:19 +02:00 | 12 commits to master since this release

    Crash instrumentation. The app was silently exiting during long 5-hoster batches and leaving no breadcrumb. Five gaps closed:

    1. process.on('uncaughtException', ...) added — synchronous throws in the main process are now logged to debug.log AND a dedicated crash.log instead of terminating the process silently. Same for any signal received (SIGINT/SIGTERM/SIGHUP/SIGBREAK) and process exit.

    2. mainWindow.webContents.on('render-process-gone', ...) added — if the renderer dies (OOM at thousands-of-queue-rows × hours of upload, GPU crash, native crash), the reason + exitCode are written to crash.log and a dialog asks whether to reload the UI (uploads in main keep running) or quit. Without this, render-process-gone → window-all-closed → silent app.quit().

    3. webContents.on('unresponsive' / 'responsive' / 'did-fail-load') added — captures hung renderer and load failures.

    4. app.on('child-process-gone', ...) added — captures GPU/utility process death.

    5. Renderer: window.addEventListener('error', …) + 'unhandledrejection' forward every uncaught throw + rejection back to main's debug.log via the existing debugLog IPC, so renderer-side bugs are now visible in the support bundle.

    Plus app.on('window-all-closed', …) now logs activeJobs count + uploadManager presence to crash.log before quitting — so the next time the app dies, we'll see exactly which subsystem state it was in. New 'crash.log' lands next to debug.log and is included in the support bundle.

    Downloads