feat(sessions): auto-summarize session titles after first exchange (fixes #495) — v0.50.57 - #557
Merged
Merged
Conversation
BUG-1 (CRITICAL): messages.js line 522 — mismatched quote in
setComposerStatus('Reconnecting…') caused JS syntax error on the
reconnect path.
BUG-2 (HIGH): messages.js line 491 — broken template literal
'\\n\\n*{d.hint}*' restored to '\n\n*${d.hint}*'. Error hint
text was non-functional (missing $ prefix and escaped newlines).
BUG-3 (HIGH): messages.js — showApprovalCard(pending, pendingCount),
_approvalCurrentId, and approval_id in respondApproval() were removed,
regressing the simultaneous approval queue fix from PR #546. Restored
all three, including the '1 of N pending' counter and poll passthrough.
BUG-4 (LOW): api/streaming.py — MiniMax thinking delimiter regex
missing closing pipe: <|channel> -> <|channel|> in both
_strip_thinking_markup() and _looks_invalid_generated_title().
ALSO: test_issue487b.py docstring changed to raw string to fix
DeprecationWarning for invalid escape sequence '\s'.
…ixes #495) — PR #535 After the first user/assistant exchange, generates a concise session title in a background daemon thread using the first user message + first visible assistant reply as input. Title updates live in the UI via a new 'title' SSE event. The stream now terminates with 'stream_end' instead of 'done' so the title generation thread has time to finish before the client disconnects. Provisional titles (first-message substrings) are replaced; manual renames are preserved; generation only runs once per session (llm_title_generated flag). Includes MiniMax token budget handling and a local heuristic fallback. Additional fixes applied in agent review: - messages.js: fix JS syntax error (mismatched quote in setComposerStatus) - messages.js: fix broken template literal in error hint rendering - messages.js: restore approval queue multi-slot fix (approval_id, pendingCount, _approvalCurrentId) that was accidentally removed - api/streaming.py: fix MiniMax thinking delimiter regex (<|channel|>) - tests/test_issue487b.py: fix DeprecationWarning (raw string docstring) Co-authored-by: franksong2702 <franksong2702@users.noreply.github.com>
nesquena-hermes
pushed a commit
that referenced
this pull request
Apr 16, 2026
…ad of generic 'Custom' When a custom_providers entry in config.yaml has a 'name' field (e.g. 'Agent37'), the web UI model picker now uses that name as the group header instead of the generic 'Custom' label. Previously all custom_providers entries were bucketed under 'custom' which rendered as 'Custom' in the dropdown optgroup — losing the named identity the user set up during onboarding. Changes: - Track named custom providers as 'custom:<slug>' keys internally so multiple named providers can coexist as separate groups - When building model groups, emit each named provider under its own display name (e.g. 'Agent37') rather than falling through to the generic label - Unnamed entries (no 'name' field) still fall back to the 'Custom' group - When all entries are named, the bare 'Custom' bucket is suppressed Adds 7 tests covering single named provider, multiple named providers, multiple models in same named provider, unnamed fallback, and mixed cases. Fixes #557
JKJameson
pushed a commit
to JKJameson/hermes-webui
that referenced
this pull request
Apr 25, 2026
…ad of generic 'Custom' When a custom_providers entry in config.yaml has a 'name' field (e.g. 'Agent37'), the web UI model picker now uses that name as the group header instead of the generic 'Custom' label. Previously all custom_providers entries were bucketed under 'custom' which rendered as 'Custom' in the dropdown optgroup — losing the named identity the user set up during onboarding. Changes: - Track named custom providers as 'custom:<slug>' keys internally so multiple named providers can coexist as separate groups - When building model groups, emit each named provider under its own display name (e.g. 'Agent37') rather than falling through to the generic label - Unnamed entries (no 'name' field) still fall back to the 'Custom' group - When all entries are named, the bare 'Custom' bucket is suppressed Adds 7 tests covering single named provider, multiple named providers, multiple models in same named provider, unnamed fallback, and mixed cases. Fixes nesquena#557
JKJameson
pushed a commit
to JKJameson/hermes-webui
that referenced
this pull request
Apr 25, 2026
…ad of generic 'Custom' — PR nesquena#558 Named custom_providers entries (those with a 'name' field) now get their own dropdown group using the configured name (e.g. 'Agent37') instead of the generic 'Custom' label. Unnamed entries still fall back to 'Custom'. Closes nesquena#557.
SysAdminDoc
pushed a commit
to SysAdminDoc/hermes-webui
that referenced
this pull request
Jun 26, 2026
…ad of generic 'Custom' When a custom_providers entry in config.yaml has a 'name' field (e.g. 'Agent37'), the web UI model picker now uses that name as the group header instead of the generic 'Custom' label. Previously all custom_providers entries were bucketed under 'custom' which rendered as 'Custom' in the dropdown optgroup — losing the named identity the user set up during onboarding. Changes: - Track named custom providers as 'custom:<slug>' keys internally so multiple named providers can coexist as separate groups - When building model groups, emit each named provider under its own display name (e.g. 'Agent37') rather than falling through to the generic label - Unnamed entries (no 'name' field) still fall back to the 'Custom' group - When all entries are named, the bare 'Custom' bucket is suppressed Adds 7 tests covering single named provider, multiple named providers, multiple models in same named provider, unnamed fallback, and mixed cases. Fixes nesquena#557
SysAdminDoc
pushed a commit
to SysAdminDoc/hermes-webui
that referenced
this pull request
Jun 26, 2026
…ad of generic 'Custom' — PR nesquena#558 Named custom_providers entries (those with a 'name' field) now get their own dropdown group using the configured name (e.g. 'Agent37') instead of the generic 'Custom' label. Unnamed entries still fall back to 'Custom'. Closes nesquena#557.
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.
feat(sessions): auto-summarize session titles — v0.50.57
PR #535 by @franksong2702. Full review completed — 4 bugs found and fixed on branch (maintainer edits enabled), all verified.
1312/1312 tests pass (10 new). QA harness 20/20. Browser API sanity 11/11. JS syntax clean (node --check). Zero JS errors in browser test.
Bugs fixed during review
messages.js— JS syntax error: mismatched quote insetComposerStatus('Reconnecting…')(would crash reconnect path)messages.js— broken template literal\\n\\n*{d.hint}*restored to\n\n*${d.hint}*(error hint text was non-functional)messages.js—showApprovalCard(pending, pendingCount),_approvalCurrentId, andapproval_idinrespondApprovalwere removed, regressing PR fix: queue simultaneous approval requests per session (fixes #527) #546 approval queue fix — restoredapi/streaming.py— MiniMax thinking delimiter regex fixed:<|channel>→<|channel|>Closes #495.