mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-07-18 21:50:55 +00:00
fix: stabilize transparent stream thinking scrollbar
This commit is contained in:
@@ -4223,6 +4223,7 @@ body.resizing .sidebar{transition:none!important;}
|
||||
.transparent-event-row .thinking-card.open .thinking-card-body{
|
||||
border-top-color:transparent;
|
||||
padding:0 0 3px;
|
||||
scrollbar-gutter:stable;
|
||||
}
|
||||
.transparent-event-row .tool-card-detail > *,
|
||||
.transparent-event-row .thinking-card-body > *{min-height:0;}
|
||||
|
||||
@@ -11055,6 +11055,7 @@ function _rehydrateTransparentLiveRow(existing, node, preservedState){
|
||||
if(!existing) return;
|
||||
if(node && Object.prototype.hasOwnProperty.call(node, '_tcData')) existing._tcData = node._tcData;
|
||||
else if(Object.prototype.hasOwnProperty.call(existing, '_tcData')) delete existing._tcData;
|
||||
try{ delete node._tcData; }catch(_){}
|
||||
const header = existing.querySelector ? existing.querySelector('.tool-card-header,.thinking-card-header') : null;
|
||||
if(header){
|
||||
if(typeof _wireTransparentHeaderToggle === 'function') _wireTransparentHeaderToggle(header);
|
||||
@@ -11075,6 +11076,26 @@ function _rehydrateTransparentLiveRow(existing, node, preservedState){
|
||||
}
|
||||
}
|
||||
|
||||
function _refreshTransparentThinkingLiveRow(existing, node){
|
||||
if(!existing || !node || !existing.querySelector || !node.querySelector) return false;
|
||||
const existingType = String(existing.getAttribute('data-event-type') || '');
|
||||
const nodeType = String(node.getAttribute('data-event-type') || '');
|
||||
const existingIsThinking = existingType === 'thinking' || (existing.classList&&existing.classList.contains('transparent-thinking-event'));
|
||||
const nodeIsThinking = nodeType === 'thinking' || (node.classList&&node.classList.contains('transparent-thinking-event'));
|
||||
if(!existingIsThinking || !nodeIsThinking) return false;
|
||||
const existingPre = existing.querySelector('.thinking-card-body pre');
|
||||
const nodePre = node.querySelector('.thinking-card-body pre');
|
||||
if(!existingPre || !nodePre) return false;
|
||||
const nextText = String(nodePre.textContent || '');
|
||||
if(existingPre.textContent !== nextText) existingPre.textContent = nextText;
|
||||
const nodePreview = node.querySelector('.transparent-event-thinking-preview');
|
||||
const previewText = nodePreview ? String(nodePreview.textContent || '') : nextText;
|
||||
if(typeof _decorateTransparentEventRow === 'function'){
|
||||
_decorateTransparentEventRow(existing,{type:'thinking',text:nextText,preview:previewText});
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function _refreshTransparentLiveRow(existing, node){
|
||||
if(!existing || !node || !existing.getAttribute) return node;
|
||||
if(existing===node) return existing;
|
||||
@@ -11093,6 +11114,10 @@ function _refreshTransparentLiveRow(existing, node){
|
||||
existing.setAttribute(name, value);
|
||||
}
|
||||
existing.className = node.className || '';
|
||||
if(_refreshTransparentThinkingLiveRow(existing, node)){
|
||||
_rehydrateTransparentLiveRow(existing, node, preservedState);
|
||||
return existing;
|
||||
}
|
||||
const newHtml = node.innerHTML || '';
|
||||
const htmlChanged = existing.innerHTML !== newHtml;
|
||||
if(htmlChanged) existing.innerHTML = newHtml;
|
||||
|
||||
Reference in New Issue
Block a user