stage-355: 11-PR full sweep batch — metadata-only cache hit fixes + skill detail fix + phone UX + escaping + display-title projection + RFC update + test fixture hardening - #2263
Merged
Conversation
Keep distinct generated summary categories, route update-summary generation through the configured auxiliary model first, disclose capped large-range summary input, and constrain long summary panels.
[codex] Harden update-link git fixture (franksong2702, closes #2258)
[codex] Fix start.sh dotenv filtering load (franksong2702) # Conflicts: # CHANGELOG.md
[codex] Escape model picker display text (franksong2702, closes #2254) # Conflicts: # CHANGELOG.md
docs(runtime): codify #1925 adapter contract and migration gates (franksong2702)
[codex] Show skill detail API errors (franksong2702) # Conflicts: # CHANGELOG.md
[codex] Fix blank skill detail views (franksong2702, refs #1880) # Conflicts: # CHANGELOG.md
Fix Archive Session for metadata-only cache hits (franksong2702, fixes #2243) # Conflicts: # CHANGELOG.md
Fix metadata-only cache hits in session mutation routes (franksong2702, fixes #2248) # Conflicts: # CHANGELOG.md # tests/test_metadata_save_wipe_1558.py
Improve phone sidebar panel navigation (franksong2702, fixes #2231)
fix: reconcile stale sidebar display titles (dso2ng) # Conflicts: # CHANGELOG.md
fix: refine update summary category handling (Jordan-SkyLF, post-v0.51.61 rebase) # Conflicts: # CHANGELOG.md
…ed for 11-PR stage-355; clean up v0.51.60 (drop misattributed Phone bullet, which actually shipped in stage-355 as #2238)
eleboucher
pushed a commit
to eleboucher/homelab
that referenced
this pull request
May 14, 2026
… 0.51.62) (#470) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/nesquena/hermes-webui](https://github.com/nesquena/hermes-webui) | patch | `0.51.61` → `0.51.62` | --- ### Release Notes <details> <summary>nesquena/hermes-webui (ghcr.io/nesquena/hermes-webui)</summary> ### [`v0.51.62`](https://github.com/nesquena/hermes-webui/releases/tag/v0.51.62) [Compare Source](nesquena/hermes-webui@v0.51.61...v0.51.62) ##### What's Changed - stage-355: 11-PR full sweep batch — metadata-only cache hit fixes + skill detail fix + phone UX + escaping + display-title projection + RFC update + test fixture hardening by [@​nesquena-hermes](https://github.com/nesquena-hermes) in [#​2263](nesquena/hermes-webui#2263) - Improve phone sidebar panel navigation by [@​franksong2702](https://github.com/franksong2702) in [#​2238](nesquena/hermes-webui#2238) - fix: reconcile stale sidebar display titles by [@​dso2ng](https://github.com/dso2ng) in [#​2241](nesquena/hermes-webui#2241) - Fix Archive Session for metadata-only cache hits by [@​franksong2702](https://github.com/franksong2702) in [#​2244](nesquena/hermes-webui#2244) - Fix metadata-only cache hits in session mutation routes by [@​franksong2702](https://github.com/franksong2702) in [#​2249](nesquena/hermes-webui#2249) - \[codex] Fix blank skill detail views by [@​franksong2702](https://github.com/franksong2702) in [#​2250](nesquena/hermes-webui#2250) - docs(runtime): codify [#​1925](nesquena/hermes-webui#1925) adapter contract and migration gates by [@​franksong2702](https://github.com/franksong2702) in [#​2251](nesquena/hermes-webui#2251) - \[codex] Show skill detail API errors by [@​franksong2702](https://github.com/franksong2702) in [#​2253](nesquena/hermes-webui#2253) - \[codex] Escape model picker display text by [@​franksong2702](https://github.com/franksong2702) in [#​2255](nesquena/hermes-webui#2255) - \[codex] Fix start.sh dotenv filtering load by [@​franksong2702](https://github.com/franksong2702) in [#​2257](nesquena/hermes-webui#2257) - \[codex] Harden update-link git fixture by [@​franksong2702](https://github.com/franksong2702) in [#​2259](nesquena/hermes-webui#2259) **Full Changelog**: <nesquena/hermes-webui@v0.51.61...v0.51.62> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/470
SysAdminDoc
pushed a commit
to SysAdminDoc/hermes-webui
that referenced
this pull request
Jun 26, 2026
stage-355: 11-PR full sweep batch — metadata-only cache hit fixes + skill detail fix + phone UX + escaping + display-title projection + RFC update + test fixture hardening
bernyforce
pushed a commit
to bernyforce/hermes-webui
that referenced
this pull request
Jul 29, 2026
stage-355: 11-PR full sweep batch — metadata-only cache hit fixes + skill detail fix + phone UX + escaping + display-title projection + RFC update + test fixture hardening
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
stage-355 — full PR sweep batch (v0.51.62)
Per Nathan's "full PR sweep" trigger. Eleven non-hold non-draft PRs all → MERGE QUEUE.
+1186 / -421 across 35 files. Eleven PRs from three contributors (franksong2702 × 9, Jordan-SkyLF × 1, dso2ng × 1).
Composition
Fixed (10)
Added (1)
Docs (1)
Highlights
/api/session/archive,/api/session/pin,/api/session/rename,/api/personality/set. All 4 were silently failing when a sidebar/status preload left a_loaded_metadata_only=Truestub in the LRU and a subsequent mutation tried to save it. Each route now reloads throughSession.load(sid)before mutating, preserving the P0 DATA LOSS: metadata-only Session.save() wipes conversation history (v0.50.279+) #1558 data-loss guard.SKILL.mddirectly instead of routing through agent (which rejected absolute paths).theme-colorto sidebar chrome, and reserves bottom safe area for the composer.titleimmutable.innerHTML.Stage-355 maintainer fixes
Conflict resolution
tests/test_metadata_save_wipe_1558.py + CHANGELOG.md on #2249 merge — both #2244 and #2249 added tests at the same EOF insertion point and CHANGELOG entries. Kept both (#2244=archive test, #2249=parametrized pin/rename/personality test) since they cover complementary routes.
CHANGELOG.md cleanup — Previous v0.51.60 (stage-353) section in master had a stray "Phone-width layouts (refs #2231)" bullet that actually belongs to #2238 (this stage). Dropped from v0.51.60. Previous Unreleased section was polluted with stage-354 entries (#2228, old #2234 portion, #2236) mixed with stage-355 entries; rebuilt cleanly with proper v0.51.61 closing + new Unreleased.
Inconsistent style noted (non-blocking)
#2244 vs #2249 archive route — #2244 uses an inline fix at
/api/session/archive, #2249 uses a_ensure_full_session_before_mutation()helper on the other 3 routes. Functionally equivalent for archive's hot path (the cache replacement is idempotent since the key already exists). Will file a follow-up issue to refactor archive → helper.Verification
run-browser-tests.sh: 20/20 QA + 11/11 API checks PASSED in 104sOpus Advisor Review
SHIP all 11. No blockers.
Opus directly verified:
state.dbquery performance — NOT N+1.read_session_lineage_metadatadoes batched 500-idIN (...)chunks against PRIMARY KEY; the fix: reconcile stale sidebar display titles #2241 addition just extractsstate_titlefrom already-fetched rows ✓_sidebar_title_is_generic_webuiuses strict equality ORHermes WebUI #<digits-only>; won't false-positive on user-renamed titles like "Hermes WebUI bug investigation" ✓display_titlecollision check — no other consumer uses this field name ✓_active_skill_search_dirsfirst-match-wins, byte-identical extension set vs agent'stools/skills_tool.py✓data.success === false || data.errorcorrectly treats empty string as falsy ✓m.idandm.name; provider error message also escaped ✓mktemp → grep → source → rmpattern at start.sh:43-50 ✓.sidebar-nav .nav-tab,.panel-icon-btn,.icon-btn,.mic-btn,.voice-mode-btn;viewport-fit=cover+ safe-area insets wired ✓SESSIONS[sid] = sis a replacement so no eviction needed ✓Two non-blocker follow-ups Opus surfaced (will file after merge)
/api/session/archiveto use_ensure_full_session_before_mutation(cosmetic — functionally equivalent today)._split_summary_categoryregex — only recognizesnotice/worth knowing/worth/note/what you'll notice/users will notice. If LLM emitsCaveat:orImportant:, those bullets are silently dropped (the fallback only fires when notice_items is empty). Worth broadening the regex or falling through unrecognized prefixes into a notice bullet.Closes / refs
Closes #2243(via Fix Archive Session for metadata-only cache hits #2244 archive-session fix)Closes #2248(via Fix metadata-only cache hits in session mutation routes #2249 pin/rename/personality helper)Closes #2254(via [codex] Escape model picker display text #2255 model picker escaping)Closes #2258(via [codex] Harden update-link git fixture #2259 test fixture pin)Stats