Skip to content

v0.11.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Oct 07:27
· 2 commits to main since this release

Added

  • use --small-model <id> fills the slot agents reach for cheap background work — Claude Code's
    ANTHROPIC_DEFAULT_HAIKU_MODEL and ANTHROPIC_SMALL_FAST_MODEL — and --no-small-model clears
    it again. Leaving it unset means "same as the default model", so an expensive default quietly
    became the background model too, and the only way to set the slot was add, which demands the
    endpoint and credential again. The id is validated against the provider's model list and a dry
    run previews it without saving, exactly as -m does.

  • Picking providers works the same way everywhere. --all and a comma-separated --provider a,b
    now mean the same thing on sync, discover and refresh; discover additionally takes its
    ids positionally (discover alpha beta) and falls back to the active provider when given none,
    where it used to require exactly one. Every id is resolved before the first request, so a typo
    fails before half a run is on disk, and each command keeps its own default for an omitted
    selection: the active provider for sync and discover, every provider for refresh.

    discover refreshes several providers with the same isolation sync has — an unreachable
    endpoint is reported and skipped, the rest still refresh, and the run exits non-zero — and
    discover --sync then writes only the providers that actually refreshed, never a stale list.

  • sync --all syncs every configured provider, and --provider now takes a comma-separated list
    (sync -p alpha,beta), so refreshing a machine's providers is one command instead of one per
    provider. The menu's Sync providers action is a multi-select with an "all" row; selecting
    nothing returns to the menu.

    Each provider is refreshed and written in turn, with the active provider last, so whatever
    "current" pointer an app keeps ends up where the store says it should. An app that names a single
    provider rather than a map — Claude Code's env block — is written once rather than once per
    provider: it receives the active provider when it supports that protocol, otherwise the single
    provider in the run that it does support, so an anthropic-only app is not starved by an openai
    active provider. When several candidates compete and the active provider is not among them the
    app keeps pointing where it already does, because syncing is not switching. A provider whose
    endpoint cannot be reached is reported and skipped; the rest still
    sync and the run exits non-zero. --json reports a providers array plus the deduplicated union
    of the files touched; a single-provider sync keeps the payload it had.

Changed

  • sync refreshes the provider's model list (and re-enriches saved metadata) before writing the
    agent configs, so one command keeps both sides in step; sync --no-refresh writes the saved
    list without fetching. The menu's separate model-list action and its "also sync?" toggle are
    gone — the single Sync a provider action runs the same refresh-then-write path as the CLI.

Fixed

  • A default or small model the endpoint has stopped listing is now named out loud. A refresh keeps
    such an id on purpose — one flaky listing must not delete the model a person chose — but keeping
    it also kept it out of removed, so the only trace was a dim yellow line between the refresh
    header and a model table that can run to dozens of rows, and --json carried no trace at all
    while sync went on writing that id into every agent config. This is exactly what an endpoint
    renaming a model looks like from the client side. It is still written, and now it is reported:
    a warning: naming the models and the agentsw use <id> -m <model> that replaces them, printed
    after discover's table and after sync's per-app results, plus refreshed.missing in the
    --json payload. The small model counts too, which it did not before.

  • sync --dry-run no longer saves the refreshed model list. The refresh above ran before the
    dry-run scope opened, so previewing a sync wrote the freshly fetched list straight into the
    provider store — the one thing --dry-run promises not to do. The fetch still happens, so the
    preview matches what a real sync would write, but the list now stays in memory and --json
    reports it as refreshed.saved: false.

Full Changelog: v0.10.2...v0.11.0