Files

2.4 KiB

Plugin Compass Desktop (Electron)

This folder contains the desktop app build for Plugin Compass. The desktop app reuses the existing web UI and wraps it with a native Electron shell that can run OpenCode locally, save output on the user's machine, and sync finished plugins to the backend.

Features

  • Reuses the existing web UI with minimal divergence.
  • Self-updating via electron-updater (no manual downloads required).
  • Run OpenCode locally with API keys pulled securely from the backend.
  • Persist work on the user's device and sync results back to the backend.
  • Build via GitHub Actions.

Self-Update System

The app includes an automatic update system using electron-updater:

  1. Automatic Check: On startup, the app checks for updates from GitHub Releases.
  2. Background Download: Updates download in the background without interrupting the user.
  3. User Notification: When an update is ready, the user is notified via the UI.
  4. One-Click Install: User can restart the app to apply the update.

How Updates Work

  • Updates are published to GitHub Releases by the CI workflow.
  • electron-updater downloads the new version from GitHub.
  • The update is verified before installation.
  • Users can choose when to restart and apply the update.

Developer Notes

  • Updates require code-signing for production (not needed for testing).
  • The update server is GitHub Releases (configured in package.json).
  • Update events are exposed via window.windowsAppBridge:
    • checkForUpdates() - Manually check for updates
    • downloadUpdate() - Download available update
    • installUpdate() - Restart and install
    • onUpdateAvailable(callback) - Listen for update available
    • onUpdateDownloaded(callback) - Listen for update ready
    • onDownloadProgress(callback) - Track download progress

Setup

  1. Install prerequisites (Node 18+).
  2. From this folder: npm install.
  3. Pull UI assets: npm run prepare-ui.

Development

  • npm run dev starts Electron using the copied UI in ui-dist.
  • Commands are exposed via window.windowsAppBridge.

CI build

  • GitHub Actions workflow: .github/workflows/build-electron-app.yml.
  • The action runs on windows-latest, builds the app, and publishes to GitHub Releases.

Security notes

  • No command exposes the stored API key to the web layer.
  • OpenCode is only invoked from the main process with the key set via environment variables.
  • File system access is restricted to the app data directory.