Updates
CLI self-update, registered component upgrades, Homebrew refresh, verified release assets, and TUI restart behavior.
Updates
A3S separates the umbrella executable from optional components:
a3s self update # update the executable and bundled Code surface
a3s upgrade # list component upgrades without mutation
a3s upgrade use --yes # upgrade one installed componenta3s code update and TUI /update enter the same self-update implementation.
The former overloaded a3s update route is hidden transition compatibility,
not the command for new scripts. Component upgrades use the verified component
transaction engine and never install a missing component implicitly.
Self-Update Flow
- Read the current compiled CLI version.
- Resolve the latest release from GitHub release redirects.
- Compare numeric version components, allowing optional
vprefixes. - Prefer Homebrew when the current install is Homebrew-managed.
- Refresh the tap before upgrading so stale formula metadata does not block the update.
- Verify that the installed binary reports the target version.
- Fall back to a standalone release download when Homebrew cannot complete or verify the upgrade.
Supported Standalone Targets
Standalone direct-download update targets:
aarch64-apple-darwinx86_64-apple-darwinaarch64-unknown-linux-gnux86_64-unknown-linux-gnu
Unsupported targets are pointed at the latest release page instead of attempting an unsafe in-place update.
These self-update targets are macOS and Linux. Native Windows self-update remains roadmap work, while the registered WebView component has a verified Windows x86_64 release and managed first-use lifecycle. WSL follows the Linux contract.
Component Upgrades
a3s upgrade with no IDs is read-only. Select IDs explicitly, or use --all
for an intentional bulk operation. --dry-run prints the resolved plan,
--offline permits only cached material, and --non-interactive prevents
prompts. Each component transaction verifies provenance, stages files before
activation, records ownership, and preserves the prior healthy version when an
upgrade cannot commit.
TUI Restart
When /update succeeds from inside a3s code, the TUI exits cleanly, performs
the upgrade in the restored shell, then restarts into:
a3s code resume <session-id>That keeps the terminal state clean and returns the user to the saved session.
Older Builds
Older builds whose /update path could not refresh the Homebrew tap need one
manual bootstrap upgrade:
brew update
brew upgrade a3s
a3s --versionCurrent builds handle the tap refresh inside the updater.