From 5fa731ea4a5382be4cf98d24c51bc1586215db50 Mon Sep 17 00:00:00 2001 From: nesquena-hermes Date: Wed, 22 Apr 2026 13:18:02 -0700 Subject: [PATCH] =?UTF-8?q?release:=20v0.50.151=20=E2=80=94=20credential?= =?UTF-8?q?=5Fpool=20provider=20detection=20+=20Ollama=20Cloud=20support?= =?UTF-8?q?=20(PR=20#820=20by=20@starship-s)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Surfaces providers added via credential_pool in the model dropdown. Ambient gh-cli tokens suppressed. _apply_provider_prefix helper extracted. Ollama Cloud display name + dynamic model list. looksLikeBareOllamaId heuristic tightened. Test isolation fixed. PR #820 by @starship-s. --- CHANGELOG.md | 31 + api/config.py | 192 +++++- api/routes.py | 8 +- static/boot.js | 1 + static/ui.js | 33 +- tests/test_credential_pool_providers.py | 595 ++++++++++++++++++ ...test_ollama_model_chip_label_regression.py | 51 ++ 7 files changed, 879 insertions(+), 32 deletions(-) create mode 100644 tests/test_credential_pool_providers.py create mode 100644 tests/test_ollama_model_chip_label_regression.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bdf3fd..f0c4d0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Hermes Web UI -- Changelog +## [v0.50.151] — 2026-04-22 + +### Added +- **Ollama Cloud support** — added `ollama-cloud` display name + dynamic model-list + handler backed by `hermes_cli.models.provider_model_ids()`. Live-models endpoint + routes `ollama-cloud` through the same formatter. Server-side `_format_ollama_label()` + and matching client-side `_fmtOllamaLabel()` turn Ollama tag IDs into readable + labels (e.g. `qwen3-vl:235b-instruct` → `Qwen3 VL (235B Instruct)`). (#820 by @starship-s, #860) + +### Fixed +- **`credential_pool` providers now visible in the model dropdown** — + `get_available_models()` previously only read `active_provider` from the auth + store. Providers added via `credential_pool` (e.g. an Ollama Cloud key stored by + the auth layer without a matching shell env var) were silently invisible. The + fix loads `credential_pool` entries and adds any provider with at least one + non-ambient credential to `detected_providers`. Ambient gh-cli tokens (source + `gh_cli` / label `gh auth token`) are explicitly excluded so Copilot doesn't + appear merely because `gh` is installed. Two-tier detection: primary via + `agent.credential_pool.load_pool()`, fallback via raw field inspection when + the upstream module isn't importable. (#820 by @starship-s, #860) +- **`_apply_provider_prefix()` helper extracted** — removes ~15 lines of + duplicated inline `@provider:` prefixing logic for non-active providers. + Semantics unchanged; one fewer place for drift. (#860) +- **Model chip shows friendly labels for bare Ollama IDs** — + `static/ui.js:getModelLabel()` now routes Ollama tag-format IDs (e.g. + `kimi-k2.6` or `@ollama-cloud:glm5.1`) through `_fmtOllamaLabel()`. Custom + `