const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('electronAPI', { // Accept an optional apiKey argument so the renderer can pass a stored key from localStorage generateAvatar: (prompt, apiKey) => ipcRenderer.invoke('generate-avatar', prompt, apiKey) }); contextBridge.exposeInMainWorld('electronLog', { info: (msg) => ipcRenderer.send('renderer-log', { level: 'info', msg }), warn: (msg) => ipcRenderer.send('renderer-log', { level: 'warn', msg }), error: (msg) => ipcRenderer.send('renderer-log', { level: 'error', msg }), }); try { ipcRenderer.send('renderer-log', { level: 'info', msg: 'preload loaded' }); } catch (e) { } try { const forward = (level, args) => { try { const msg = args.map(a => { try { return typeof a === 'string' ? a : JSON.stringify(a); } catch (e) { return String(a); } }).join(' '); ipcRenderer.send('renderer-log', { level, msg }); } catch (e) { } }; const origError = console.error.bind(console); console.error = (...args) => { forward('error', args); origError(...args); }; const origWarn = console.warn.bind(console); console.warn = (...args) => { forward('warn', args); origWarn(...args); }; const origLog = console.log.bind(console); console.log = (...args) => { forward('info', args); origLog(...args); }; // DOM snapshot logging removed — keep console forwarding only. window.addEventListener('error', (ev) => { try { ipcRenderer.send('renderer-log', { level: 'error', msg: `window.onerror: ${ev.message} ${ev.filename}:${ev.lineno}:${ev.colno}` }); } catch (e) {} }); } catch (e) { }