mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-25 11:10:18 +00:00
@@ -6,6 +6,7 @@
|
||||
|
||||
- Keep the default-off `HERMES_WEBUI_RUNTIME_ADAPTER=legacy-journal` chat-start path response-compatible with the legacy-direct path by not adding adapter-internal `run_id`, `status`, or `active_controls` fields to `/api/chat/start` responses. Fixes #2435.
|
||||
- Recover already-journaled visible assistant text and tool cards even when restart repair first syncs a populated Hermes core transcript into an otherwise empty WebUI sidecar. The core-sync branch now merges non-duplicate run-journal output before clearing stale stream state, closing the rare #2427 carve-out where recoverable partial output could be silently skipped. Fixes #2434.
|
||||
- Compact live Thinking cards now reuse the same timeline card across sequential tool calls, preventing repeated Thinking cards from stacking during one multi-tool turn.
|
||||
|
||||
## [v0.51.82] — 2026-05-17 — Release BF (stage-375 — 2-PR batch — table renderer pipe protection + Catppuccin appearance skin)
|
||||
|
||||
|
||||
+6
-1
@@ -7040,7 +7040,7 @@ function finalizeThinkingCard(){
|
||||
const summary=group.querySelector('.tool-call-group-summary');
|
||||
if(summary) summary.setAttribute('aria-expanded','false');
|
||||
}
|
||||
const active=group.querySelector('.agent-activity-thinking[data-thinking-active="1"]');
|
||||
const active=turn.querySelector('.agent-activity-thinking[data-thinking-active="1"]');
|
||||
if(active) active.removeAttribute('data-thinking-active');
|
||||
_syncToolCallGroupSummary(group);
|
||||
}
|
||||
@@ -7095,6 +7095,11 @@ function appendThinking(text='', options){
|
||||
}
|
||||
const thinkingText=String(text||'').trim()||'Thinking…';
|
||||
let row=blocks.querySelector('.agent-activity-thinking[data-thinking-active="1"]');
|
||||
if(!row){
|
||||
const thinkingCards=Array.from(blocks.querySelectorAll('.agent-activity-thinking'));
|
||||
row=thinkingCards.filter(el=>el.closest('.assistant-turn-blocks')===blocks).pop()||null;
|
||||
if(row) row.setAttribute('data-thinking-active','1');
|
||||
}
|
||||
if(!row){
|
||||
row=_thinkingActivityNode(thinkingText, false);
|
||||
row.setAttribute('data-thinking-active','1');
|
||||
|
||||
@@ -307,6 +307,13 @@ class TestToolCallGroupingStatic:
|
||||
assert "body.querySelector" in live_tool_fn and "data-live-tid" in live_tool_fn, (
|
||||
"tool_complete must still update its current live Activity burst by tool id."
|
||||
)
|
||||
finalize_fn = _function_body(UI_JS, "finalizeThinkingCard")
|
||||
assert "turn.querySelector('.agent-activity-thinking[data-thinking-active=\"1\"]')" in finalize_fn, (
|
||||
"Compact Thinking cards live directly in assistant-turn blocks, so finalization must clear the active marker from the whole turn, not only the tool group."
|
||||
)
|
||||
assert "thinkingCards.filter" in live_thinking_fn and "setAttribute('data-thinking-active','1')" in live_thinking_fn, (
|
||||
"Compact live thinking should reactivate the latest existing Thinking card instead of stacking a new card after every tool boundary."
|
||||
)
|
||||
close_activity_fn = _function_body(MESSAGES_JS, "_closeCurrentLiveActivityGroup")
|
||||
assert "data-live-activity-current" in close_activity_fn, (
|
||||
"Visible interim assistant boundaries should close the previous live Activity burst."
|
||||
|
||||
Reference in New Issue
Block a user