From 6b12c8b139bd7d2ebb7eb288f6e3c18dcb97d3a8 Mon Sep 17 00:00:00 2001 From: abose Date: Wed, 28 Jan 2026 15:38:41 +0530 Subject: [PATCH] chore: process spawn error handling --- src-electron/main-app-ipc.js | 4 ++++ src-electron/preload.js | 1 + 2 files changed, 5 insertions(+) diff --git a/src-electron/main-app-ipc.js b/src-electron/main-app-ipc.js index 82b8a47..8d4ad81 100644 --- a/src-electron/main-app-ipc.js +++ b/src-electron/main-app-ipc.js @@ -78,7 +78,11 @@ function registerAppIpcHandlers() { }); childProcess.on('error', (err) => { + instance.terminated = true; console.error(`Failed to start process (instance ${instanceId}):`, err); + if (!sender.isDestroyed()) { + sender.send('process-error', instanceId, { message: err.message, code: err.code }); + } }); return instanceId; diff --git a/src-electron/preload.js b/src-electron/preload.js index 4bd2085..66cc2d0 100644 --- a/src-electron/preload.js +++ b/src-electron/preload.js @@ -11,6 +11,7 @@ contextBridge.exposeInMainWorld('electronAppAPI', { onProcessStdout: (callback) => ipcRenderer.on('process-stdout', (_event, instanceId, line) => callback(instanceId, line)), onProcessStderr: (callback) => ipcRenderer.on('process-stderr', (_event, instanceId, line) => callback(instanceId, line)), onProcessClose: (callback) => ipcRenderer.on('process-close', (_event, instanceId, data) => callback(instanceId, data)), + onProcessError: (callback) => ipcRenderer.on('process-error', (_event, instanceId, err) => callback(instanceId, err)), // Quit the app with an exit code (for CI) quitApp: (exitCode) => ipcRenderer.invoke('quit-app', exitCode),