fix: stabilize transparent stream thinking scrollbar

This commit is contained in:
Stacey2911
2026-07-04 09:29:07 +10:00
parent badb93d472
commit 82a76eda4b
5 changed files with 982 additions and 2 deletions
+1
View File
@@ -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;}
+25
View File
@@ -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;