release: v0.50.150 — session index, read-path, profile-switching fixes

Bundles three bug fixes (PRs #847, #848, #849) and updates README test count to 1858.

- v0.50.148: prune stale _index.json ghost rows after session-id rotation (closes #846)
- v0.50.149: side-effect-free GET /api/session model resolution (closes #845)
- v0.50.150: profile switching cookie persist + syncTopbar fix + active indicator state
This commit is contained in:
nesquena-hermes
2026-04-22 10:09:35 -07:00
committed by GitHub
parent f42f1c69ca
commit d8e1f37e2b
2 changed files with 33 additions and 1 deletions

View File

@@ -1,5 +1,37 @@
# Hermes Web UI -- Changelog
## [v0.50.150] — 2026-04-22
### Fixed
- **Profile switching: three related state fixes** — (1) `hermes_profile=default`
cookie is now persisted instead of being cleared with `max-age=0`, which had
caused the browser to fall back to the process-global profile on the next
request. (2) The `sessionInProgress` branch of `switchToProfile()` now calls
`syncTopbar()` instead of the undefined `updateWorkspaceChip()`. (3) Sidebar
and dropdown active-profile rendering now prefer `S.activeProfile` client
state when available, with a safe fallback. (#849 by @migueltavares)
## [v0.50.149] — 2026-04-22
### Fixed
- **`GET /api/session` is now side-effect free for stale-model sessions** —
the read path previously called `_normalize_session_model_in_place()`,
which could write back to disk and update the session index while handling
a plain read. Replaced with a read-only
`_resolve_effective_session_model_for_display()` that returns the effective
display model without any write-back. Closes #845. (#848 by @franksong2702)
## [v0.50.148] — 2026-04-22
### Fixed
- **Prune stale `_index.json` ghost rows after session-id rotation** — index
entries whose backing session file no longer exists (e.g. after context
compression rotates the session id) are now pruned on both incremental
index writes and `all_sessions()` reads. Fixes duplicate session entries
in the sidebar. Also pre-snapshots `in_memory_ids` under a single `LOCK`
acquisition in `all_sessions()` rather than one per row — small but
measurable contention reduction. Closes #846. (#847 by @franksong2702)
## [v0.50.147] — 2026-04-22
### Fixed