v0.1.4 โ Sync, Clean & Global Config
Author
๐๏ธ July 2026
The big one: /sync is live, config moved to a global directory, and a new /clean command gives you full control over stored data.
โจ Features
/syncโ incremental doc updates. After a/genesisbaseline exists,/syncdiffs the project against the last snapshot, asks the AI which docs are affected, and patches only those โ existing sections are updated in place, nothing is deleted, and new docs are added when the changes warrant them. No more/genesis --forceafter every code change/cleanโ manage global data. Lists all configured projects with their provider, model, and cache size. Subcommands to clear caches (all or per-project), remove config, or nuke everything:/cleanโ show status/clean cache//clean cache <n>โ clear caches/clean <n>โ remove a project entirely/clean configโ delete API keys/clean allโ remove~/.aether/completely
- Global config directory (
~/.aether/) โ API keys and provider config now live in your home directory, never in the repo. One machine, many projects, each can use a different provider/model without touching version control. The first/configalso sets a shared default that new projects inherit automatically - Per-project cache โ distill cache (condensed source notes for large projects) lives in
~/.aether/cache/<project>/, not in the repo - Concurrent doc generation โ both
/genesisand/syncnow generate multiple docs in parallel (default: 4, configurable viaAETHER_GEN_CONCURRENCY) - Shared project context โ instead of building context per-doc, Aether now builds ONE complete context shared across all docs. If the project fits the budget, it's real code; if not, it's distilled once (not per-doc), so the expensive pass runs a single time
๐๏ธ Under the hood
- Snapshot moved from
.aether/context.jsonto.aether/settings/context.jsonโ keeps the project root clean (backwards-compatible: old location still found) - Project identity uses a stable hash (
<folder>-<sha1-of-path>) so same-named projects in different paths never collide - Section-level patching: when
/syncupdates an existing doc, it rewrites only the affected sections instead of regenerating the whole file - File fingerprinting with content hashes for precise change detection
- Git log integration:
/syncincludes recent commit messages in the AI's context so it understands why things changed, not just what - Retry with exponential backoff on provider errors (429, 5xx, timeouts)
- Smart rate-limit handling: 429 errors now get up to 6 retries with 15s+ backoff (respects provider's suggested
retry-afterdelay), so free-tier limits are survived automatically instead of failing
๐ Fixes
- Config
providerfield no longer drifts whenbaseUrlis changed to a recognized host - Large projects that exceeded the context budget no longer lose files silently โ they're distilled into factual notes instead
