Desktop builds
A native Electron wrapper around the web UI.
Build
scripts/build_desktop_all.sh
Builds for macOS (arm64 + x64), Windows (x64), Linux (x64) into dist/. Requires:
- Node 18+.
- For macOS code-signing: an Apple Developer account + signing identity in Keychain.
- For Windows code-signing: a
.pfxcertificate inWIN_CSC_LINK.
Skip code-signing with --no-sign for local-only builds.
Publish
scripts/publish_desktop.sh v3.2.0
Uploads built binaries to GitHub Releases. Requires GITHUB_TOKEN env var with repo scope.
Auto-generates release notes from CHANGELOG.md between the previous tag and this one.
What it bundles
The desktop app is essentially Electron + a local copy of the web frontend pointed at:
- A bundled local server (Python embedded), or
- A remote KrowForge instance (configured at first run).
By default, first launch asks: "local install" or "connect to existing".
Updates
The desktop app checks for updates on launch (24h cooldown). When available, downloads in background and prompts on next launch.
Auto-update can be disabled in Settings → Updates → Manual only.
Why an Electron build at all
For three audiences:
- People on offline / restricted networks.
- People who want OS-level integration (notifications, file associations, dock badges).
- People who hate browser tabs.
Everything that runs in the browser also runs in Electron — no functional difference, just packaging.
Issues
- macOS first-launch may show "unidentified developer" until code-signing is in place. Workaround: right-click → Open.
- Windows defender sometimes flags fresh unsigned builds. Code-sign or whitelist.
- Linux:
.AppImagefor portable,.debfor Debian/Ubuntu.