From 16c58e60f431402fef9f74e38052ac81b4f4b20f Mon Sep 17 00:00:00 2001 From: Nathan Esquenazi Date: Tue, 14 Apr 2026 16:44:58 +0000 Subject: [PATCH] docs: v0.50.37 CHANGELOG, version bump, test count --- CHANGELOG.md | 26 ++++++++++++++++++++++++++ TESTING.md | 2 +- static/index.html | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32f2acf..3856808 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,31 @@ # Hermes Web UI -- Changelog +## [v0.50.37] fix(onboarding): skip wizard when Hermes is already configured + +Fixes #420 — existing Hermes users with a valid `config.yaml` were shown the first-run +onboarding wizard on every WebUI load because the only completion gate was +`settings.onboarding_completed` in the WebUI's own settings file. Users who configured +Hermes via the CLI before the WebUI existed had no such flag, so the wizard always fired +and could silently overwrite their working config. + +**Changes:** +1. `api/onboarding.py` `get_onboarding_status()`: auto-complete when `config.yaml` exists + AND `chat_ready=True`. Existing configured users are never shown the wizard. +2. `api/onboarding.py` `apply_onboarding_setup()`: refuse to overwrite an existing + `config.yaml` without `confirm_overwrite=True` in the request body. Returns + `{error: "config_exists", requires_confirm: true}` for the frontend to handle. +3. `static/index.html`: "Skip setup" button added to wizard footer — users are never + trapped in the wizard. +4. `static/onboarding.js`: `skipOnboarding()` calls `/api/onboarding/complete` without + modifying config, then closes the overlay. +5. `static/boot.js`: Escape key now dismisses the onboarding overlay. +6. `static/i18n.js`: `onboarding_skip` / `onboarding_skipped` keys added to en + es locales. +7. `tests/test_onboarding_existing_config.py`: 8 new unit tests covering gate logic and + overwrite guard. + +- Total tests: 1063 (was 1055) + + ## [v0.50.36] fix: workspace list cleaner — allow own-profile paths, remove brittle string filter Two bugs in `_clean_workspace_list()` caused workspace additions to silently disappear on the next `load_workspaces()` call, breaking `test_workspace_add_no_duplicate` and `test_workspace_rename` (and potentially causing real-world workspace list corruption): diff --git a/TESTING.md b/TESTING.md index b93d5d5..fb81998 100644 --- a/TESTING.md +++ b/TESTING.md @@ -8,7 +8,7 @@ > Prerequisites: SSH tunnel is active on port 8787. Open http://localhost:8787 in browser. > Server health check: curl http://127.0.0.1:8787/health should return {"status":"ok"}. > -> Automated tests: 961 total (961 passing, 0 known failures). Includes onboarding coverage for bootstrap/static wizard presence, real provider config persistence (`config.yaml` + `.env`), and the `/api/onboarding/*` backend. +> Automated tests: 1063 total (1063 passing, 0 known failures). Includes onboarding coverage for bootstrap/static wizard presence, real provider config persistence (`config.yaml` + `.env`), the `/api/onboarding/*` backend, and the onboarding skip/existing-config guard. > Run: `pytest tests/ -v --timeout=60` --- diff --git a/static/index.html b/static/index.html index 6cc3d41..cfdeb50 100644 --- a/static/index.html +++ b/static/index.html @@ -535,7 +535,7 @@
System
Instance version and access controls.
- v0.50.36 + v0.50.37