• v3.3.53 ddf2710fc6

    Administrator released this 2026-06-08 21:28:34 +02:00 | 10 commits to master since this release

    Stability hardening from the 4-agent crash audit (19 HIGH + 9 MEDIUM findings, 35 confirmed). Implements the highest-impact ones:

    1. Hot-path timer callbacks now wrapped in try/catch. setInterval bodies (speedMonitor, statsInterval) and the per-byte progressCb closure used to let any throw escape into Node's unhandled-exception path → silent process death. Each is now bounded; a throw is rotLog'd and the timer keeps running.

    2. Main process event listeners (uploadManager 'progress', 'stats', 'rot-log') wrapped in try/catch with object-shape validation. JSON.stringify in the rot-log entries → pairs encoder now per-key try/catch to survive a circular ref or non-serializable value.

    3. New safeSend(channel, data) wrapper used for all 15 channels of main → renderer IPC. Guards mainWindow.isDestroyed() + try/catch so a racing window-close during a webContents.send() doesn't bubble.

    4. Renderer: handleProgress and handleStats wrapped in try/catch — any throw inside the IPC-driven path is logged via window.api.debugLog and the renderer event loop survives.

    5. Auto-updater no longer calls app.quit() unconditionally 900ms after launching the installer. It now polls globalThis._mhuUploadManagerRef.getActiveJobCount() every 3s and only quits when 0 active uploads (or after a 30 min safety timeout). Prevents the 'app vanished mid-upload' scenario if the user clicked install and a background batch was still running.

    6. crash.log is now collected in the Support Bundle next to debug.log + account-rotation.log + doodstream-debug.log + fileuploader.log.

    Downloads