Skip to content

feat(desktop): add Electron dashboard shell#730

Open
NetVar1337 wants to merge 2 commits into
mainfrom
feat-desktop-electron
Open

feat(desktop): add Electron dashboard shell#730
NetVar1337 wants to merge 2 commits into
mainfrom
feat-desktop-electron

Conversation

@NetVar1337

@NetVar1337 NetVar1337 commented Jun 27, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add clients/desktop, an Electron shell for the existing local web dashboard.
  • Use a chameleon desktop/window/taskbar icon derived from the repo banner asset and wire it through BrowserWindow.icon + Windows AppUserModelID.
  • Make the desktop shell CLI-style: Decepticon terminal bootstrap screen, monospace console, chameleon branding, and dashboard-runtime status lines instead of generic app-card UI.
  • Auto-start the existing Docker Compose web profile on launch when the dashboard is offline; no required first-click UI.
  • Pin Compose launches to the installed CLI version from ~/.decepticon/.version, matching launcher behavior and avoiding stale :stable / 1.1.15 containers.
  • Detect already-running stale web containers and recreate them at the installed version before loading the dashboard.
  • Preflight docker-compose.yml and .env before starting Compose so incomplete setup shows actionable onboarding guidance instead of raw Docker errors.
  • Keep unsafe/external navigation out of the Electron renderer by opening non-dashboard links in the system browser.
  • Add root scripts and dashboard docs for contributor usage.
  • Add first-run onboarding surface with OS-specific install command, copyable decepticon onboard, copyable API-key reset, release download, and setup docs actions.

Fixes #721

Verification

  • Red test first: npm test --workspace=@decepticon/desktop failed before src/config.mjs existed.
  • npm run desktop:test
  • node --check clients/desktop/src/main.mjs
  • node --check clients/desktop/src/config.mjs
  • node --check clients/desktop/src/ui.mjs
  • node --check clients/desktop/src/preload.cjs
  • ELECTRON_DISABLE_SANDBOX=1 npm exec --workspace=@decepticon/desktop electron -- --versionv39.8.10
  • file clients/desktop/assets/icon.pngPNG image data, 512 x 512, 8-bit/color RGBA
  • Xvfb + CDP smoke: verified no Start dashboard button exists; launch auto-bootstraps to the web profile path and polls readiness after Compose succeeds.
  • Xvfb + CDP smoke: verified Retry bootstrap and Open dashboard in browser buttons remain present and clickable.
  • Xvfb + CDP smoke: with missing config, app shows CLI-style setup guidance, OS-specific install command, decepticon onboard, API-key reset, Download, and Setup docs actions.
  • Xvfb + CDP smoke with real ~/.decepticon: app loaded http://localhost:3000/ dashboard directly.
  • Live stale-version check: existing ghcr.io/purpleailab/decepticon-web:stable was detected, desktop recreated stack as ghcr.io/purpleailab/decepticon-web:1.1.23, then loaded dashboard.

@NetVar1337 NetVar1337 requested a review from PurpleCHOIms as a code owner June 27, 2026 00:32
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@NetVar1337 NetVar1337 force-pushed the feat-desktop-electron branch 5 times, most recently from 69d06c3 to add166e Compare June 27, 2026 01:17
Add a desktop workspace that wraps the local web dashboard, can start the existing Compose web profile, keeps external navigation in the system browser, and shows an offline status screen when the dashboard is not running.

Fixes: #721

Constraint: Reuse existing Next dashboard and Compose lifecycle instead of rewriting UI

Rejected: Tauri shell | adds Rust packaging risk while still needing Node/Next services

Confidence: high

Scope-risk: moderate
@NetVar1337 NetVar1337 force-pushed the feat-desktop-electron branch from add166e to 34b94b5 Compare June 27, 2026 01:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Desktop app

2 participants