feat(gui): adopt the shared desktop GUI (Flavian/Vespasian pattern) - #130
Merged
Merged
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Copied verbatim from PMDevSolutions/Vespasian packages/gui (deb6c1c), with the Wix site screen removed, identity renamed to Aurelius, and dependencies bumped to Flavian's current versions. The manifest, core, main, and renderer are retargeted in the following commits. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…d, visual QA Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…@aurelius/gui Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ages/gui pnpm/action-setup refuses a pinned version when package.json carries packageManager (pnpm 10), so the GUI lane reads it like ci.yml does. ESLint 10 resolves config per file and would load the GUI's ESLint 9 + eslint-plugin-react config (which has no ESLint 10 release yet) and crash; the package lints itself in its own lane, so the root config ignores it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #122. Adds
packages/gui/(@aurelius/gui), a cross-platform Electron desktop app that drives Aurelius's existing scripts and Claude Code through four screens, using the same engine, layering, and commands Flavian and Vespasian ship.Approach. Forked Vespasian's manifest-driven GUI engine verbatim from the local clone (
deb6c1c), stripped its Wix screen, and retargeted it with one AureliusProductManifestplus four bespoke React panels. Dependencies are bumped to Flavian's current, security-swept versions (electron-vite 5, electron-builder 26). Core stays pure Node and is unit-tested headless; the renderer can only call named, typed bridge operations.Screens, each driving existing scripts unchanged:
scripts/check-prerequisites.sh(sibling output format),scripts/setup-playwright.shvia an install buttonscripts/setup-project.sh <name> --renderer <id> [--dry-run]claude -p "/build-from-figma <url>"(headless Claude Code).claude/visual-qa/)capture-baselines.sh,regression-test.sh,check-responsive.sh,check-dark-mode.sh,cross-browser-baseline.sh compareEngine changes (generic, documented in
packages/gui/docs/GUI-PLATFORM.md): arunStep(screen, step, vars)bridge/IPC channel replacing the per-screenrunSite/runQahandlers;fillTemplatedrops empty placeholder-only args so optional flags never produce a stray''; the wizard is a plainbashScriptstep (themoduledescriptor is removed).Also: root
gui:*scripts,.github/workflows/gui.yml(path-filtered lint → typecheck → tests, plus an Xvfb smoke launch),docs/GUI.md, the README "Desktop GUI (experimental)" section, CLAUDE.md tree/commands,.versionrc.jsonbumpFiles so the GUI version tracks releases, and a documented script count of 56. Design spec and implementation plan are underdocs/superpowers/.Deferred (follow-ups):
gui-release.ymlattaching installers to releases; Canva / screenshot / conversation / InDesign pipeline steps; Lighthouse and Storybook QA steps; node-pty interactive sessions.Test plan
pnpm gui:lint,pnpm gui:typecheck,pnpm gui:test(43 headless core tests: process runner, shell resolver, prereq parser against fixtures of the real script, command building from the manifest, wizard arg mapping, pipeline launch, QA discovery, sandboxed artifact reads, project detection, manifest shape incl. "every script it names exists")scripts/__tests__/check-prerequisites.test.jspins the script's output contract; full script suite passes (40 files, 527 tests); root lint + Prettier clean; doc-count check cleanpnpm gui:buildthen the smoke test launches the app and reaches the shell (locally on a real display; CI runs it under Xvfb)pnpm gui:packageproducespackages/gui/dist/Aurelius-2.0.0.AppImage; the packaged binary launches (app.isPackaged === true) and renders the prerequisite reportcommit-and-tag-version --dry-runbumps bothpackage.jsonandpackages/gui/package.jsonpnpm gui:devon macOS/Windows (Git Bash required on Windows)🤖 Generated with Claude Code