Monorepo for Aesthetic.Computer aesthetic.computer
README.md

Aesel Dev #

Aesel Dev.app and aesel-dev follow the committed easel/ tree on monorepo origin/main. aesel --dev opens the same app. Ordinary aesel opens the signed release and follows its existing release feed. They use separate bundle IDs, application data, windows, and update channels. Account credentials remain with the existing AC/provider login stores.

Both fleet machines check main once a minute. A change outside easel/ does not create a dev build. New source is extracted to an immutable directory, native helpers are compiled, and current moves only after staging succeeds. Runtime changes checkpoint and restart the agent in its existing window. UI changes also reload the interface. Host changes checkpoint and relaunch the Dev app. Active requests finish before the checkpoint. Project files are never synced between machines, and working Git checkouts are never reset.

Settings shows Dev/Release/Local, app version, content-based dev build ID, and update state. Hover the settings status for its Git commit. Identical Aesel source keeps the same build ID even when other projects change. Piece versions such as v3 are separate. Offline or old checks say they cannot verify freshness. Local edits inside an installed dev snapshot pause syncing and show “Local changes”; move them into a source checkout before republishing. An offline machine catches up when it reconnects. “Lockstep” means the same committed source tree once both machines are online and have finished their current requests; it does not claim simultaneous swaps or copy uncommitted work.

Install once on each Mac using matching Electron and production dependencies:

node easel/dev/install.mjs --repo ~/aesthetic-computer \
  --base ~/Applications/aesel.app --dependencies /path/to/extracted/node_modules

The installer creates ~/Applications/Aesel Dev.app, ~/.local/bin/aesel-dev, and the launch agent computer.aesthetic.aesel-dev-sync. State, logs, immutable source snapshots, and the atomic current link live in ~/.local/share/aesel-dev/. The last three snapshots, any live PTY snapshot, and locally edited snapshots are retained. The native Electron shell is not replaced by source sync. If Electron or npm dependency requirements change, syncing stops visibly until this installer is rerun with matching dependencies. No signing credentials are copied; the development shell is signed locally with an ad-hoc identity.