Roadmap
The road to beta.
Electron minus Chromium, powered by Bun and WebKit, with native modules that never need a compiler. Below: what has shipped, what we are building right now, and what beta has to prove before we use the word. If it isn't built, it says so.
Where we are today
On npm as 0.1.0-alpha.8; this site is the docs. It runs on macOS, Linux and Windows (x64). The CLI, the renderer build, signed auto-updates and the pinned-engine store are in place, and one hosted engine is live on the feed. The per-method truth lives on the parity page.
Release plan
From here to a beta you can check.
-
The first npm release
three platforms, honest gaps, on npm.
- The Electron-shaped API on Bun and WebKit: 21 main-process modules, roughly 70-80% of what a typical app touches, pure
bun:ffi, zero compiled native code, zero runtime dependencies. - macOS and Linux in full. Windows (x64) in beta on a from-source WinCairo WebKit backend, green on CI next to the other two.
- The CLI loop,
init/dev/build, producing real .app, .deb and .exe distributables, and the pinned-WebKit engine store: side-by-side, content-addressed, signature-verified. - Frameless windows, bundled preloads, and an event-driven macOS run loop that idles at about a tenth of the CPU.
- The Electron-shaped API on Bun and WebKit: 21 main-process modules, roughly 70-80% of what a typical app touches, pure
-
Foundation. Unglamorous on purpose.
the fixes and plumbing everything after it stands on.
- Crash-class fixes from our own code review: a Linux multi-window SIGSEGV and a macOS window use-after-free. Plus a security fix: a signed engine can no longer install under a different pinned id.
- The engine feed went live at engines.bunmaska.org, Windows first, because Windows is the one platform that needs a hosted engine.
bunmaska engine installverifies the Ed25519 signature and the content hash before it extracts anything. - Trusted input on Windows (
webContents.sendInputEvent),loadFilewith{ hash, query, search }, one shared WebKit context on Windows so a login carries across windows, and smaller Windows binaries. - A test-budget gate in CI: a suite that silently stops registering now fails the build instead of shrinking quietly.
-
The dev loop, rebuilt. Updates you can ship.
the release before this one.
- Bunmaska owns the renderer build. A
rendererblock in the config makesdevrebuild and live-reload a React edit instead of restarting the app, andbuildships the bundle beside the executable on all three OSes. - A dev loop that respects your saves: changes are content-hashed, atomic editor saves are never lost, a restart waits for the old process to exit, preload edits restart, the engine pin is honored, and the window comes back where you left it.
- Signed auto-updates end to end:
bunmaska keygen, a detached Ed25519.sigfrombuild --update, https-only feeds, unsigned updates refused, a real swap-and-relaunchquitAndInstall, and a--notarizethat submits and staples. - API depth:
session.cookieson macOS and Linux,capturePageon Linux, real macOS window geometry with amoveevent,setApplicationMenu(null), Super as Cmd in accelerators, and namedbunmaska/electronexports. - What did not ship: the stable-train hosted engine. The feed has been live since alpha.6 with one engine on it; the catalogue is alpha.9 work.
- Bunmaska owns the renderer build. A
-
Docs versus reality. Reality lost three rounds.
the current release. `npm i bunmaska` gets you this.
- Every claim in the docs was checked against the code, per platform, and whichever side was wrong got fixed. A new errors page, a reconciled parity table, and a CLI reference that matches
--help. - Three real bugs the pass flushed out: a
will-quitveto left the app alive with a dead run loop;buildignoredname,idandiconin the config; a dev restart stole focus from your editor on every save. - The small things you hit first:
bunmaska init my-app .,, a "run bun install" message instead of a stack trace, Linux builds named for the host architecture with the app version in the--help .deb,maximizeevents on macOS, silent notifications on Linux, template tray icons on macOS. - Bun 1.4: developed and tested on 1.4.2 on all three OSes. The engine-native
bun:ffineeded one typing shim and no code changes. Packaged apps now ship production React;devkeeps the development runtime. - What did not ship: the React starter and the stable-train engine. Both moved to alpha.9 so that this batch of fixes reaches you now.
- Every claim in the docs was checked against the code, per platform, and whichever side was wrong got fixed. A new errors page, a reconciled parity table, and a CLI reference that matches
-
The engine catalogue, a React starter, the last API stretch
what we are building now. The feed itself has been live since alpha.6; what it serves is the work.
- The catalogue, honestly. The feed serves exactly one engine today, a development-train WinCairo build we grandfathered in; our own rule is to host only stable-train releases. Three attempts to build that stable engine in CI were cancelled at the six-hour runner cap. Pack, sign and publish all work; the build needs a bigger box or a compile cache.
- A
bunmaska init --reactstarter on top of the alpha.7 renderer build: an IIFE bundle (file://blocks ES modules), live reload, and the renderer shipped beside the executable. The recipe is proven in a real app; the template is the work. - The hosted Linux engine: the relocatable build loads from the store today. Next it has to draw, then get a cross-distro base and a publish step of its own.
- Engine delivery you never type: embedded in the bundle, or fetched on first run.
- The parity cells still marked easy:
powerMonitoridle and battery,page-title-updated, per-instancewebContents.ipc,session.clearStorageDataon Linux. - A self-pipe wakeup primitive that structurally removes the one hang class we have ever shipped, and a worked serial-port native module published as a real package: the buildless-FFI demo, not a slide.
Exit test a fresh machine goes install > init > build > running app on a pinned engine, on all three OSes, and no "easy" cells are left on the parity page
-
What beta means here: checkable, not vibes
every box below can be verified by you. No box, no beta.
- The API surface is frozen for the beta line and semver discipline begins.
- install > init > dev > build > launch runs end to end in CI on macOS, Linux and Windows, not just unit-green.
- Stable-train engines are hosted for Windows and Linux, and the auto-updater has shipped a real update to a real app.
- At least five real open-source Electron apps run via dependency swap, and one app we use daily has run for two weeks without a crash.
- Docs are complete: every implemented method documented, the parity matrix exact, the migration guide tested against a real app.
- Coverage at threshold, zero silent skips, and published size and memory numbers with the methodology attached.
-
After beta
real, but not next. Listed so you know we know.
- Windows ARM64 (waiting on upstream WinCairo) and a Windows isolated content world.
- The macOS pinned-engine spike. System WKWebView stays the default either way.
- Delta updates, crash reporting, and a SECURITY.md with a disclosure process.
- The event-driven run loop on Linux and Windows, then upstreaming a Bun event-loop API so the pump disappears entirely.
The one everyone asks about
Windows, the honest version.
Windows is in beta - a from-scratch Win32 backend with WinCairo WebKit, green on CI. Here's the honest state, gaps and all.
Not WebView2
The easy Windows path is WebView2 - Microsoft Edge, i.e. Chromium. We didn't take it. Windows renders on WinCairo WebKit, the real WebKit port, loaded from the same engine store as every other platform.
A real Win32 backend
Built from scratch on bun:ffi - window + message pump, the WinCairo WebKit view and IPC bridge, and the full secondary-module set (clipboard incl. images, dialogs, tray, safeStorage via DPAPI, screen, shell, shortcuts, power, theme). It runs on a windows-latest CI runner.
x64 today, ARM64 next. Never 32-bit.
x64 is in beta now; ARM64 waits on upstream WinCairo. Windows is moving to ARM - so ARM64 is a when, not an if. x86 isn't on the list at all.
Still the expensive platform
Windows has no system WebKit, so we ship and maintain the WinCairo engine ourselves - CVE treadmill and all. That's why the engine feed exists: a Windows app fetches its signed engine from engines.bunmaska.org, and tracking WPE's stable train there is the alpha.9 stop.
Honest status: the backend is built and runs on a Windows CI runner, and the hosted WinCairo engine installs from the real feed end-to-end. What is still open is the stable-train build of that engine and ARM64 - both on the roadmap above. Linux is one step behind: its relocatable engine loads from the store but is not hosted yet.
Want to watch it happen?
It's all in the open. Star it, read the docs, or come argue about the parity matrix.