* docs(spec): auto-update with stable + nightly channels Design spec for channel-aware auto-update via electron-updater: stable (manual semver releases) and nightly (daily CI cron, version X.Y.(Z+1)-nightly.<UTC-ts>+<sha>). Covers runtime wiring, the feed, the version scheme and its ordering/channel rationale, the nightly pipeline, in-app UX (opt-in + channel + nightly disclaimer), error handling, testing, and the deferred/prereq items (CI signing for macOS updates, stable version stamping, polished UI in #2207). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(plan): auto-update channels implementation plan Bite-sized TDD plan for the in-app channel-aware updater + nightly pipeline: nightly version compute module, daily cron workflow, macOS feed metadata, ~/.ao update-settings module, electron-updater shell + main.ts wiring, and the first-run opt-in/channel/nightly-disclaimer prompt. Deferred items and Track-B prereqs (CI signing, stable stamping) are called out. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(release): nightly version compute module computeNightlyVersion -> X.Y.(Z+1)-nightly.<UTC-ts>+<sha>: next-patch base, fixed-width UTC timestamp for monotonic prerelease ordering, sha as build metadata. Pure ESM so CI runs it and vitest tests it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(release): daily nightly build + publish workflow Cron computes the nightly version from the latest stable tag, stamps it, builds all platforms, and publishes a prerelease (nightly channel). Skips when HEAD is already covered by the latest nightly. forge publisher prerelease flag is now env-driven (AO_RELEASE_PRERELEASE) so stable stays non-prerelease. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(release): pass nightly version via env, not inline interpolation Avoids interpolating ${{ }} into the run script (GitHub Actions injection hardening); the version now arrives via the NIGHTLY_VERSION env var. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(update): persist auto-update settings under ~/.ao readUpdateSettings/writeUpdateSettings store {enabled, channel, nightlyAck} with safe defaults and channel coercion, atomic temp+rename like app-state.ts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(update): channel-aware electron-updater wiring Replace update-electron-app (stable-only, no channels) with electron-updater driven by the user's ~/.ao settings: channel from settings, allowDowngrade for channel switches, auto-download gated on opt-in, errors swallowed. Feed configured via setFeedURL since forge does not emit app-update.yml. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * style(update): tabs in auto-updater.ts to match repo prettier config Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(update): first-run opt-in + channel + nightly disclaimer prompt Minimal main-process dialog flow: opt into auto-updates, pick stable/nightly, and acknowledge a nightly instability/data-loss disclaimer. Persists the choice to ~/.ao. Polished Settings-page selector is tracked in #2207. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(spec): correct feed-yml premise (no platform emits it as built) Final review verified that publish:null in both custom makers makes electron-builder skip update-info yml generation on Windows and Linux too (app-builder-lib PublishManager returns early before createUpdateInfoTasks), not just signing-blocked macOS. The runtime updater is therefore inert on all platforms until a separate feed-publishing workstream (yml gen+upload across all 3 platforms, coupled to Track-B signing) lands. Recorded in the Feed section and the prerequisites table. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(release): nightly skip-guard must match the v<version> tag namespace The forge publisher tags nightly releases v<version> (e.g. v0.10.4-nightly.<ts>), not desktop-v..., so the no-new-commits guard queried a namespace that never exists and never fired. Query v*-nightly.* instead. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore: format with prettier [skip ci] * chore(release): run nightly at 19:00 IST (13:30 UTC) Was 03:00 UTC (08:30 AM IST); move to 13:30 UTC = 7:00 PM IST. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| agent | ||
| cli | ||
| plans | ||
| superpowers | ||
| README.md | ||
| STATUS.md | ||
| ao-start-bootstrapper-and-npm-deprecation.md | ||
| architecture.md | ||
| backend-code-structure.md | ||
| daemon-environment.md | ||
| stack.md | ||
| telemetry.md | ||
README.md
agent-orchestrator rewrite docs
The agent-orchestrator is being rebuilt as a long-running Go backend daemon
(backend/) plus an Electron + TypeScript frontend (frontend/). The backend
supervises coding-agent sessions and exposes daemon control, project/session
state, terminal streaming, and CDC/event infrastructure.
Start with architecture.md for the current backend model and
cli/README.md for the CLI surface.
Reference docs
| Doc | What it covers |
|---|---|
| architecture.md | Current backend model, package layout, status derivation, persistence/CDC, and load-bearing rules. |
| backend-code-structure.md | Package ownership rules for the Go backend: domain, services, ports, adapters, storage, HTTP, CLI, and daemon wiring. |
| cli/README.md | CLI commands and daemon control surface. |
| agent/README.md | Agent adapter contract, hook methodology, and session-info derivation. |
| STATUS.md | What is shipped on main today and what is still in flight. |
| stack.md | Accepted library/runtime choices, pending stack decisions, and dependencies explicitly avoided for V1. |
Mental model
Persist durable facts, derive display status:
- session table:
activity_state,is_terminated, identity, metadata - PR tables: PR/CI/review facts
- derived read model:
service.Sessioncomputes display status from session + PR facts