'use strict'; /** * Schmale, explizite Brücke zwischen Main-Prozess und Oberfläche. * Der Renderer bekommt keinen Node-Zugriff — nur diese Funktionen. */ const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('dashboard', { /** Registriert den Empfänger für Zustandsaktualisierungen. */ onState(callback) { ipcRenderer.on('state', (_event, state) => callback(state)); }, /** Fordert den aktuellen Zustand an (für den ersten Aufbau). */ getState: () => ipcRenderer.invoke('get-state'), /** Liefert den gespeicherten Ansichtszustand, damit die Oberfläche zur Fenstergröße passt. */ getUiState: () => ipcRenderer.invoke('get-ui-state'), /** Klappt die Detailansicht auf oder zu. */ setExpanded: (expanded) => ipcRenderer.send('set-expanded', expanded), /** Blendet das Fenster aus (bleibt über das Tray-Symbol erreichbar). */ hide: () => ipcRenderer.send('hide-window'), /** Öffnet den Einstellungsdialog. */ openSettings: () => ipcRenderer.send('open-settings'), /** Öffnet das Fehler-/Ereignis-Log. */ openErrorLog: () => ipcRenderer.send('open-error-log'), /** Öffnet die Release-Seite eines gefundenen neuen Updates im Browser. */ openReleasePage: () => ipcRenderer.send('open-release-page'), /** Öffnet den Benutzerhandbuch-Dialog. */ openManual: () => ipcRenderer.send('open-manual'), /** Öffnet den Disclaimer-Dialog. */ openDisclaimer: () => ipcRenderer.send('open-disclaimer'), /** Öffnet den Lizenz-Dialog. */ openLicense: () => ipcRenderer.send('open-license'), });