Skip to content

Aether 0.2.1

Choose a tag to compare

@kamyCodes kamyCodes released this 22 Sep 11:35
· 1 commit to main since this release

Aether now picks its own models, updates itself, and says hello properly. This is the stable release of the model-integration and onboarding work — updating from 0.2.0 is recommended.

Automatic model assignment

  • No more dead models on a fresh install. Aether fetches the catalog, drops everything that can never answer a chat request, removes duplicates, probes what's left with per-provider throttling, and assigns a role only to a model that actually replied. On a brand-new data directory this replaces the previously hard-coded picks, which included providers with no credentials.
  • It runs when it needs to, not on a schedule. Startup, a provider catalog change, the Re-check models now button in Settings, and the terminal-provider guard — which now repairs the broken role instead of just logging a warning.
  • Your own choices are never overwritten. Roles record whether they were auto-assigned or picked by hand. A role you chose yourself is left alone in both directions, even when its model is dead, and is reported as user-pinned rather than silently replaced.
  • “Nothing connected” is a clear state, not a silent void. An empty catalog reports No models are connected — connect a provider in OmniRoute and writes nothing.
  • One implementation, not two. The whole pipeline lives in server/modelSweep.ts and runs from server/modelAssignments.ts; the operator CLI delegates to the same engine.

Agent task reliability

  • Tool schemas are valid JSON Schema. The parameter builder emitted type: "optional", which some providers reject outright — failing the entire request before the model ran. Optionality is now a separate flag from the type, and the registered tool surface is asserted provider-valid by test.
  • Verification runs the project's declared scripts. The verifier previously hardcoded npm run build / npm test, so a workspace without a root package.json failed every task after correct work. It now runs only the scripts the project actually declares, and says so when there are none.

Desktop updates

  • The auto-updater is live. It checks the release feed on boot after the window paints, exposes its full state to the UI, and installs only when you click. AETHER_AUTO_UPDATE=0 disables it for operators.
  • Settings → App updates shows the real state — not checked, available, downloading with progress, ready to install, up to date, or the failure — with the one action valid for each, plus a status-line chip that opens it.
  • The installer carries its own release notes, and What's new announces them after an update, naming the version it replaced. Dismissing it is permanent for that version.

First-run setup

  • The setup wizard is a real welcome. It is now a two-panel onboarding window with a brand rail (the app's own icon, the wordmark, and the four steps as a numbered list) and, on the first step, a proper hero with three highlight cards explaining what Aether is — models with zero config, your work in your own folder, agents rather than autocomplete.
  • The layout adapts instead of collapsing. The mark scales fluidly with the window and the rail folds into a compact header on narrow windows, so the brand never shrinks to an unreadable speck.

Verification

  • 222 unit tests passing, including new suites for the sweep engine, the assignment service, provider health, the update state machine, and the updater bridge contract.
  • Model assignment validated end to end in a clean, independent data directory: 16/16 checks across six scenarios — a real gateway, a groq-only catalog, a gemini+mistral catalog, an empty catalog, a provider going terminal mid-session, and a user-pinned role — every assigned model confirmed by a real request, not just a liveness ping.
  • Typecheck, Prettier, and the audit gate all clean.

Downloads

  • Aether-Setup-0.2.1.exe — 126.9 MB
    • SHA-256: 19b1ba03769479d717f1e7fbd829b7c62551773c476c9a32dadcbefb5558c994
  • Aether-Setup-latest.exe — the same bytes under a fixed name, so the website download link stays stable

Every release ships a .sha256 beside each installer, a .blockmap for delta updates, and latest.yml for the auto-update feed.