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 .pfx certificate in WIN_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:

  1. People on offline / restricted networks.
  2. People who want OS-level integration (notifications, file associations, dock badges).
  3. 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: .AppImage for portable, .deb for Debian/Ubuntu.