Skip to content

feat: add Botmux Desktop app shell#380

Open
anarkh wants to merge 11 commits into
masterfrom
codex/desktop-app-pr
Open

feat: add Botmux Desktop app shell#380
anarkh wants to merge 11 commits into
masterfrom
codex/desktop-app-pr

Conversation

@anarkh

@anarkh anarkh commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

Add the Botmux macOS Desktop app as a CLI-first desktop extension for the existing botmux runtime and dashboard.

What changed

  • Add Electron desktop shell, preload bridge, renderer UI, tray/window handling, runtime controls, and log/directory helpers.
  • Add CLI-first runtime ownership: the app discovers and binds the user's existing global botmux CLI/runtime instead of owning a private long-lived runtime by default.
  • Add dashboard desktop compatibility probe via /__desktop/compat and desktop shell URL shaping.
  • Keep Desktop installation outside the botmux CLI command surface because we do not have an Apple Developer ID / notarized distribution path yet.
  • Add src/desktop/README.md and executable src/desktop/install-local.sh so users can download source, build the Desktop bundle locally, ad-hoc sign, remove quarantine, and install /Applications/Botmux.app.
  • The local install script only installs the App. It does not install, upgrade, link, claim, or modify the user's global botmux CLI.
  • Source install injects an effective App version into Electron packaging instead of shipping 0.0.0; git checkout uses the nearest tag, and source archives can set BOTMUX_DESKTOP_VERSION.
  • Move Desktop smoke helpers from src/cli to src/desktop and keep the npm script pnpm desktop:smoke.
  • Add Electron packaging config, macOS entitlements, desktop bundle scripts, and version resolution for source checkouts.
  • Add focused regression tests for runtime selection, dashboard webview boundaries, IPC monitor behavior, local source install docs/script expectations, Desktop smoke, auto-start, PM2 process lookup, and packaging paths.

Scope note

This PR is intentionally separate from the stale dashboard lazy-chunk hotfix PR (#379). This PR carries the Desktop app code and its minimal CLI/dashboard integration surface. Desktop install/update is intentionally documented as source checkout + src/desktop/install-local.sh, not a botmux CLI subcommand, and the install script does not mutate the CLI installation.

Validation

Passing checks:

  • CI=true pnpm install --frozen-lockfile
  • pnpm exec tsc --noEmit
  • pnpm exec vitest run --project unit test/desktop/*.test.ts
  • pnpm build
  • pnpm desktop:bundle
  • bash -n src/desktop/install-local.sh
  • pnpm exec vitest run --project unit test/desktop/desktop-local-install-docs.test.ts
  • pnpm exec electron-builder --mac dir --config electron-builder.yml -c.extraMetadata.version=2.103.0
  • bash src/desktop/install-local.sh --no-open on macOS: installed /Applications/Botmux.app, ad-hoc signed it, removed quarantine, did not open the App, and wrote Info.plist version 2.103.0.
  • pnpm desktop:smoke --skip-dashboard: 6/6 checks passed after source install.

Additional full-suite check:

  • pnpm exec vitest run --project unit currently fails in unrelated existing areas: test/dashboard-create-session.test.ts mock missing resolveRoleInjection, test/sandbox.test.ts opaque-dir apply assertion, and a test/whiteboard-cli.test.ts timeout in full-suite mode. Re-running the three files shows whiteboard-cli passes standalone; dashboard-create-session and sandbox remain stable unrelated failures. Desktop-focused tests above pass.

@anarkh anarkh force-pushed the codex/desktop-app-pr branch from 1050502 to fb1b803 Compare July 7, 2026 08:36
@anarkh anarkh changed the title [codex] add Botmux Desktop app shell feat: add Botmux Desktop app shell Jul 7, 2026
@anarkh anarkh marked this pull request as ready for review July 7, 2026 09:03
@anarkh anarkh requested a review from deepcoldy as a code owner July 7, 2026 09:03
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.

1 participant