# 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.