mirror of
https://github.com/mileswolfallen2/gelectron.git
synced 2026-09-08 12:43:16 +00:00
12 KiB
12 KiB
Gelectron — Electron API Compatibility Status
Every Electron module tracked. Status: full / partial / stub / missing
full = API surface complete, behavior matches Electron for common use cases partial = Core methods work, some methods are no-ops or return defaults stub = API surface exists but does nothing real missing = Not implemented at all
Browser (Main Process) Modules
| # | Module | File | webview-bundle | index.js | Status | Notes |
|---|---|---|---|---|---|---|
| 1 | app | YES | YES | YES | full | All methods, properties, events, quit lifecycle, dock, badge, GPU, about panel, secure keyboard, window tracking |
| 2 | autoUpdater | YES | YES | YES | stub | API surface for electron-updater compat, no actual updates |
| 3 | BaseWindow | NO | NO | NO | missing | Parent class for BrowserWindow, not implemented |
| 4 | BrowserView | NO | NO | NO | missing | Deprecated in favor of WebContentsView |
| 5 | BrowserWindow | YES | YES | YES | partial | create/show/hide/focus/min/max/close/destroy/setTitle/setSize/loadURL/loadFile. Missing: DevTools, navigation, capturePage, print, printToPDF |
| 6 | clipboard | YES | inline | YES | full | readText/writeText/readHTML/writeHTML/readRTF/writeRTF/readImage/writeImage/readBookmark/writeBookmark/readFindText/writeFindText/clear/availableFormats/has. Sync via Unix FIFO channel (macOS/Linux) or async bridge (Windows). RTF/bookmark/find-text/formats via NSPasteboard on macOS |
| 7 | contentTracing | NO | NO | NO | missing | Tracing/recording profiling data |
| 8 | crashReporter | NO | NO | NO | missing | Crash upload to server |
| 9 | desktopCapturer | NO | NO | NO | missing | Screen/window capture source enumeration |
| 10 | dialog | YES | YES | YES | partial | showOpenDialog/showSaveDialog/showMessageBox/showErrorBox. Native dialogs wired via rfd (Rust) |
| 11 | globalShortcut | NO | inline | YES | stub | register() always returns true, does nothing |
| 12 | ipcMain | YES | YES | YES | full | handle/handleOnce/on/once/removeHandler, full EventEmitter |
| 13 | ImageView | NO | NO | NO | missing | New in Electron 33+, image display view |
| 14 | inAppPurchase | NO | NO | NO | missing | macOS App Store in-app purchases |
| 15 | Menu | YES | YES | YES | partial | buildFromTemplate/append/insert/getMenuItemById, native setApplicationMenu via muda, _serialize. Missing: click events from native menu, role-based predefined items |
| 16 | MenuItem | YES | YES | YES | partial | All properties present (id/label/type/role/accelerator/enabled/visible/checked/submenu/click). Missing: role auto-behavior |
| 17 | MessageChannelMain | NO | NO | NO | missing | MessagePort-based IPC between main/renderer |
| 18 | nativeImage | YES | YES | YES | partial | createFromPath/Buffer/DataURL, toDataURL, getSize. Missing: resize/crop pixel transform, proper toPNG/toJPEG |
| 19 | nativeTheme | YES | inline | YES | partial | NativeTheme class: shouldUseDarkColors (getter + method), themeSource (getter/setter), shouldSystemUseDarkColors, queries Rust for system theme. systemPreferences.isDarkMode() linked |
| 20 | net | NO | inline | YES | partial | fetch delegates to globalThis.fetch. Missing: net.request(), ClientRequest API |
| 21 | netLog | NO | NO | NO | missing | Network log capture |
| 22 | Notification | YES | YES | YES | full | Full Electron API (title/subtitle/body/silent/icon/urgency/timeoutType/actions/hasReply/replyPlaceholder/sound/closeButtonText/toastXml). Native OS integration via notify-rust (macOS Notification Center, Windows Toasts, Linux D-Bus). Events: show/click/action/reply/close/failed |
| 23 | powerMonitor | NO | inline | YES | stub | getSystemIdleState returns 'active', no real monitoring |
| 24 | powerSaveBlocker | NO | NO | NO | missing | Prevent system sleep |
| 25 | protocol | NO | inline (session) | NO | missing | Custom protocol registration (standalone module). Session stubs exist |
| 26 | pushNotifications | NO | NO | NO | missing | macOS push notification registration |
| 27 | safeStorage | YES | YES | YES | stub | Base64 encoding, not real encryption |
| 28 | screen | YES | inline | YES | partial | Screen class: getPrimaryDisplay/getAllDisplays/getDisplayMatching/getCursorScreenPoint/getMenuBarHeight, fetches real monitor info from Rust via bridge |
| 29 | ServiceWorkerMain | NO | NO | NO | missing | Service worker management in main process |
| 30 | session | NO | inline | YES | stub | defaultSession + fromPartition stubs, all no-ops |
| 31 | sharedTexture | NO | NO | NO | missing | Shared texture between processes |
| 32 | ShareMenu | NO | NO | NO | missing | macOS share sheet |
| 33 | shell | YES | YES | YES | partial | openExternal/openPath (open crate), showItemInFolder (platform commands), moveItemToTrash (trash/fallback), beep. Shortcut stubs |
| 34 | systemPreferences | NO | inline | YES | stub | isDarkMode() linked to nativeTheme. Most other methods are no-ops |
| 35 | TouchBar | NO | NO | NO | missing | macOS Touch Bar. Sub-classes: TouchBarButton, TouchBarColorPicker, TouchBarGroup, TouchBarLabel, TouchBarOtherItemsProxy, TouchBarPopover, TouchBarScrubber, TouchBarSegmentedControl, TouchBarSlider, TouchBarSpacer |
| 36 | Tray | YES | YES | YES | stub | API surface present, no native system tray |
| 37 | utilityProcess | NO | NO | NO | missing | Fork utility child processes |
| 38 | View | NO | NO | NO | missing | Base View class for embedding |
| 39 | webContents | YES | YES | YES | partial | loadURL/loadFile/send/executeJavaScript/reload, session stub. Missing: navigation history, DevTools CDP, zoom, print, capturePage |
| 40 | WebContentsView | NO | NO | NO | missing | View-based content embedding |
| 41 | webFrameMain | NO | NO | NO | missing | Main-process webFrame for frame control |
Renderer Process Modules
| # | Module | File | webview-bundle | index.js | Status | Notes |
|---|---|---|---|---|---|---|
| 42 | clipboard (renderer) | NO | inline | YES | partial | Same as main process: readText/writeText/readImage/writeImage/clear/has via bridge |
| 43 | contextBridge | YES | YES | YES | partial | exposeInMainWorld with deep freeze. No real world isolation |
| 44 | crashReporter (renderer) | NO | NO | NO | missing | Renderer-side crash reporter |
| 45 | ipcRenderer | YES | NO (inline) | NO (via require hook) | partial | invoke/send/sendSync/on/once/removeListener. Bridge not always wired |
| 46 | sharedTexture (renderer) | NO | NO | NO | missing | Renderer-side shared texture |
| 47 | webFrame | NO | NO | NO | missing | setZoomFactor/setZoomLevel/insertCSS/executeJavaScript in frame context |
| 48 | webUtils | NO | NO | NO | missing | Renderer-side utilities (process |
Common Modules (Both Processes)
| # | Module | File | webview-bundle | index.js | Status | Notes |
|---|---|---|---|---|---|---|
| 49 | nativeImage | YES | YES | YES | partial | createFromPath/Buffer/DataURL, toDataURL, getSize. Missing: resize/crop transform |
| 50 | shell | YES | YES | YES | partial | openExternal/openPath/showItemInFolder/moveItemToTrash/beep via bridge (open crate + platform commands) |
Deprecated / Internal
| # | Module | Status | Notes |
|---|---|---|---|
| 51 | BrowserView | missing | Deprecated, replaced by WebContentsView |
| 52 | remote | missing | Removed in Electron 14+ |
| 53 | webviewTag | missing | Deprecated, replaced by BrowserView/WebContentsView |
| 54 | process (polyfill) | partial | WebView mode polyfill: pid/argv/env/platform/versions/cwd/nextTick. Missing: memoryUsage/cpuUsage/uptime/kill |
| 55 | contextIsolation | stub | webPreferences.contextIsolation stored but no actual V8 isolate separation |
Additional APIs from Electron Docs
| # | API | Status | Notes |
|---|---|---|---|
| 56 | navigation-history | missing | Navigation history API |
| 57 | parent-port | missing | UtilityProcess communication port |
| 58 | web-request | missing | Intercept/modify HTTP requests |
| 59 | web-socket | missing | WebSocket server |
| 60 | window-open | missing | window.open() handling |
| 61 | local-ai-handler | missing | Local AI model handler (new) |
Summary
| Status | Count | Modules |
|---|---|---|
| full | 4 | app, ipcMain, clipboard, Notification |
| partial | 13 | BrowserWindow, Menu, MenuItem, dialog, shell, nativeImage, contextBridge, webContents, ipcRenderer, net, process, screen, nativeTheme |
| stub | 7 | Tray, safeStorage, autoUpdater, session, systemPreferences, powerMonitor, globalShortcut |
| missing | 36 | BaseWindow, BrowserView, contentTracing, crashReporter, desktopCapturer, ImageView, inAppPurchase, MessageChannelMain, netLog, powerSaveBlocker, protocol, pushNotifications, ServiceWorkerMain, sharedTexture, ShareMenu, TouchBar (+10 sub-classes), utilityProcess, View, WebContentsView, webFrameMain, webFrame, webUtils, crashReporter (renderer), sharedTexture (renderer), remote, webviewTag, navigation-history, parent-port, web-request, web-socket, window-open, local-ai-handler |
| Total | 60 | BrowserView counted once (listed in both Main and Deprecated tables) |
Rust Bridge (main.rs ToRust commands)
These commands are implemented on the Rust side and can be triggered from the WebView:
| Command | Status | Notes |
|---|---|---|
| create-window | YES | Creates a new tao+wry window |
| destroy-window | YES | Removes window from state |
| load-url | YES | Navigates webview to URL |
| load-file | YES | Rebuilds WebView with file:// URL |
| set-title | YES | Updates window title |
| set-size | YES | Updates window inner size |
| show / hide / focus | YES | Window visibility |
| minimize / maximize | YES | Window state |
| close | YES | Closes window |
| eval-js | YES | Execute JavaScript in webview |
| ipc-message | YES | Forward IPC to renderer |
| quit | YES | Exit event loop |
| relaunch | YES | Spawn new process, exit |
| set-application-menu | YES | Set native menu via muda (macOS: init_for_nsapp) |
| popup-menu | YES | Show context menu via muda |
| close-popup-menu | YES | Close context menu |
| clipboard-read-text | YES | Read clipboard text via arboard |
| clipboard-write-text | YES | Write text to clipboard via arboard |
| clipboard-read-image | YES | Read clipboard image (base64 PNG) via arboard |
| clipboard-write-image | YES | Write image to clipboard via arboard |
| clipboard-read-html | YES | Read HTML via arboard |
| clipboard-write-html | YES | Write HTML (with optional plain-text alt) via arboard |
| clipboard-read-rtf | YES | Read RTF via NSPasteboard (macOS), empty elsewhere |
| clipboard-write-rtf | YES | Write RTF via NSPasteboard (macOS), no-op elsewhere |
| clipboard-read-bookmark | YES | Read bookmark { title, url } via NSPasteboard (macOS) |
| clipboard-write-bookmark | YES | Write bookmark via NSPasteboard (macOS) |
| clipboard-read-find-text | YES | Read find-pasteboard text (macOS), empty elsewhere |
| clipboard-write-find-text | YES | Write find-pasteboard text (macOS), no-op elsewhere |
| clipboard-clear | YES | Clear clipboard via arboard |
| clipboard-available-formats | YES | List MIME formats (NSPasteboard types on macOS, arboard probes elsewhere) |
| clipboard-has | YES | Check if a format is present |
| screen-get-displays | YES | Query monitor info via tao |
| native-theme-query | YES | Detect dark mode via platform API |
| dialog-open | YES | Show native open file dialog via rfd |
| dialog-save | YES | Show native save file dialog via rfd |
| dialog-message | YES | Show native message box via rfd |
| dialog-error | YES | Show native error box via rfd |
| shell-open-external | YES | Open URL in default browser via open crate |
| shell-open-path | YES | Open file in default app via open crate |
| shell-show-in-folder | YES | Reveal file in Finder/Explorer via platform command |
| shell-move-to-trash | YES | Move file to trash via platform API |
| shell-beep | YES | Play system beep |