Repository navigation
v0.10.0
Added
- Global
--jsonprints exactly one credential-free document per run
({"ok":true,"command":…,"version":…,"data":…}, or{"ok":false,…,"error":{"message":…}}with
exit code 1) and disables prompts and progress, so scripted runs never block on input.
--json --dry-runlists the file paths a run would touch without ever emitting the staged
configuration. Without--json,models --provider <id> --metadatakeeps its bare object. - Global
--quietsuppresses progress, hints and warnings while keeping results and errors, and
--no-colordisables color (so doesNO_COLOR;--no-coloroverridesFORCE_COLOR). - Slow operations report progress on a TTY: protocol probing, model-list pagination (page and
running model count), catalog and metadata lookups, Gateway loading, and per-app version
checks. The line animates only when nothing else is borrowing it and disappears before
results print; pipes and CI keep the previous single static line, andAGENTSW_NO_PROGRESS=1
turns it off. discover/add/quick/importretry a failed discovery when interactive instead of losing
the whole run, and a failing menu action reports the error and returns to the menu.- Menu provider pickers and the removal scope select gained a "back to main menu" entry, and
Ctrl-C inside a menu prompt abandons that action instead of quitting the application.
Changed
- Tables size themselves to the terminal: long BASE URL, CONFIG and NAME cells are truncated
with…while IDs and status columns stay intact, and numeric columns are right-aligned.
Piped output is unchanged. - Interactive cancellation is consistent: standalone prompts print
cancelledand exit130;
inside the menu they return to the menu. Errors are red and warnings yellow everywhere, and
the remaining hardcoded English strings follow the interface language. appsandupgradeoutput, install hints and model-discovery messages are localized; every
user-visible "next step" hint now goes to stderr so--quietcan drop it.
Fixed
- A corrupt or unreadable models.dev cache no longer aborts
models,add,discoveror
refresh: it is ignored and refetched, and a 200 response that is not catalog-shaped is
rejected instead of being cached and failing every later run. models --limitvalues that are not positive integers (--limit abc,--limit 0, ...)
fail with a clear error instead of dumping the whole catalog or one row.discoverno longer reports a pinned default or small model that the provider stopped
listing under "removed upstream" while keeping it anyway.- Switching providers no longer inherits the previous provider's
model_reasoning_effortin
Codex, and opencode clears a provider's own small model once that provider stops defining one. - The dsh adapter reads a wire declared on every model, as omp and pi already did, so such
providers import instead of being skipped and keep their Responses wire on sync. - Claude Code and Codex now honor
CLAUDE_CONFIG_DIRandCODEX_HOME; previously they always
wrote~/.claudeand~/.codex, so a relocated install was configured in the wrong place
andstatus/remove/renamedisagreed withuse. - The opencode adapter edits the file that actually exists, chooses between
opencode.json,
opencode.jsoncandconfig.jsonthe way opencode does, and preserves comments —rename
previously migratedconfig.jsononly in the default directory. - A base URL whose path already ends in
/modelsno longer becomes/models/v1/models, and
model-list pagination stops after 100 pages instead of looping forever on an endpoint that
keeps returning fresh cursors. - A provider store containing a wrong-typed provider or model is now rejected at load with the
file and provider id, instead of crashing later with an opaqueTypeError.
Changed
- All config paths come from one resolver (
src/app-paths.ts) and are recomputed per command,
so every adapter,renameandremoveagree on the same files;dshalso honors
%LOCALAPPDATA%on Windows.
Full Changelog: v0.9.2...v0.10.0