From cbc3c01604dc103596a613f6f4a6a73583bfae4d Mon Sep 17 00:00:00 2001 From: nesquena-hermes Date: Sat, 11 Apr 2026 21:26:34 -0700 Subject: [PATCH] =?UTF-8?q?docs:=20v0.48.2=20release=20notes=20=E2=80=94?= =?UTF-8?q?=20provider=20mismatch=20warning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nathan Esquenazi --- CHANGELOG.md | 10 ++++++++++ ROADMAP.md | 3 ++- TESTING.md | 2 +- static/index.html | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6faa0db..bd32fd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,16 @@ --- +## [v0.48.2] Provider/model mismatch warning (PR #283, fixes #266) + +- **Provider mismatch warning** (PR #283): WebUI now warns when you select a model from a provider different from the one Hermes is configured for, instead of silently failing with a 401 error. + - `api/streaming.py`: 401/auth errors classified as `type='auth_mismatch'` with an actionable hint ("Run `hermes model` in your terminal to switch providers") + - `static/ui.js`: `populateModelDropdown()` stores `active_provider` from `/api/models` as `window._activeProvider`; new `_checkProviderMismatch()` helper compares selected model's provider prefix against the configured provider + - `static/boot.js`: `modelSelect.onchange` calls `_checkProviderMismatch()` and shows a toast warning immediately on selection + - `static/messages.js`: `apperror` handler shows "Provider mismatch" label (via i18n) instead of "Error" for auth errors + - `static/i18n.js`: `provider_mismatch_warning` and `provider_mismatch_label` keys added to all 5 locales (en, es, de, zh-Hans, zh-Hant) + - Check skipped for `openrouter` and `custom` providers to avoid false positives + - 21 new tests in `tests/test_provider_mismatch.py`; 679 tests total (up from 658) ## [v0.48.1] Markdown table inline formatting (PR #278) - **Inline formatting in table cells** (PR #278, @nesquena): Table header and data cells now render `**bold**`, `*italic*`, `` `code` ``, and `[links](url)` correctly. Previously `esc()` was used, which displayed raw HTML tags as text. Changed to `inlineMd()` consistent with list items and blockquotes. XSS-safe: `inlineMd()` escapes all interpolated values. Two-line change in `static/ui.js`. Fixes #273. diff --git a/ROADMAP.md b/ROADMAP.md index 142089b..761bfd0 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -3,7 +3,7 @@ > Goal: Full 1:1 parity with the Hermes CLI experience via a clean dark web UI. > Everything you can do from the CLI terminal, you can do from this UI. > -> Last updated: v0.48.1 (April 12, 2026) — 658 tests, 658 passing +> Last updated: v0.48.2 (April 12, 2026) — 679 tests, 679 passing > Tests: 604 total (604 passing, 0 failures) > Source: / @@ -47,6 +47,7 @@ | v0.47.1 | Spanish locale | Full Spanish (es) locale, 175 keys, key-parity tests (#275 @gabogabucho); +3 tests | 648 | | v0.48.0 | Gateway session sync | Real-time Telegram/Discord/Slack sessions in sidebar via SSE + DB polling (#274 @bergeouss); +10 tests | 658 | | v0.48.1 | Table inline formatting | `inlineMd()` in table cells — **bold**, *italic*, `code`, links render correctly (PR #278); 0 new tests | 658 | +| v0.48.2 | Provider mismatch warning | Toast warning + auth_mismatch error type for provider/model mismatches (#283, fixes #266); +21 tests | 679 | | v0.32 | Auto-compaction handling | Compression detection, /compact command, real context window indicator | 424 | | v0.33 | /insights sync | Opt-in state.db sync so `hermes /insights` includes WebUI sessions | 424 | | v0.34 | Sprint 26 — Pluggable themes | Dark, Light, Slate, Solarized, Monokai, Nord; settings unsaved-changes guard; /theme command | 433 | diff --git a/TESTING.md b/TESTING.md index 66b12dc..ce22e7b 100644 --- a/TESTING.md +++ b/TESTING.md @@ -8,7 +8,7 @@ > Prerequisites: SSH tunnel is active on port 8786. Open http://localhost:8786 in browser. > Server health check: curl http://127.0.0.1:8786/health should return {"status":"ok"}. > -> Automated tests: 658 total (658 passing, 0 skipped, 0 known failures) +> Automated tests: 679 total (679 passing, 0 skipped, 0 known failures) > Run: `pytest tests/ -v --timeout=60` --- diff --git a/static/index.html b/static/index.html index 066b39b..23e61d6 100644 --- a/static/index.html +++ b/static/index.html @@ -14,7 +14,7 @@