Skip to content

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 11:55
· 14 commits to main since this release

First public release.

Added

  • Multiple CLIProxyAPI accounts. Each account has its own base URL, API key (own credential ref), provider route ID, protocol mode, model selection and per-model overrides, and synchronizes into its own llm-pi-ai routes (cli-proxy-2, cli-proxy-2-responses, cli-proxy-2-messages, …).
  • Per-account enable switch. A disabled account keeps its settings but its routes are removed, so its models leave the picker. New accounts start disabled; a manual refresh still probes them so models can be picked before enabling.
  • Settings panel account bar: switch accounts, + Add Account, Delete Account, credential-ref field.
  • cliproxyapi tool: add_account and remove_account actions, account, enabled and apiKeyEnv parameters; output lists every account.
  • HTTP routes POST /api/dsh-cliproxyapi/accounts/add and /accounts/remove; refresh and save accept accountId.
  • English README.md and Chinese README.zh.md with captioned screenshots; screenshots.json for plugin storefronts; LICENSE, AGENTS.md, CHANGELOG.md.
  • GitHub Actions: CI (Ubuntu + Windows, Node 22 / 24) and a tag-triggered release that attaches the packed bundle and optionally publishes to npm.

Changed

  • state.json is now { version: 2, refreshIntervalSeconds, probeTimeoutMs, accounts: [...] }. A v1 single-account file migrates automatically into account default with the same routes, key and selection; the original is kept as state.v1.json.
  • An account with an explicit base URL only probes that URL and never falls back to local :8317, the existing route or CLIPROXYAPI_BASE_URL.
  • Overlapping provider route IDs between accounts are rejected on save; an overlapping account in a hand-edited file is reported as an error and never writes or removes another account's routes.
  • Settings writes from concurrent account syncs are serialized.
  • /cpa-status and /cpa-refresh cover every account.
  • The DSH version requirement moved to top-level engines.dsh, where DSH reads it; ./icon is exported.
  • engines.node is now >=22 (the versions CI tests).

Fixed

  • First-run selection no longer uses hard-coded model ids. An account without a saved selection is seeded once, on its first successful probe, with the newest model of each family from its own server's catalog (at most 12). Previously a fresh install pre-selected 7 fixed ids that most servers do not offer, so nothing reached the picker.
  • Reset to Recommended uses the same catalog-derived list (with its count) instead of the fixed 7.
  • Saving a new account before its catalog was ever probed no longer stores an empty selection.
  • When a saved selection matches nothing on the server, the error names the server and the discovered models stay visible in the panel.