From 02560e341d917b5059120bb92cdd87456fec9439 Mon Sep 17 00:00:00 2001 From: Hibryda Date: Mon, 23 Mar 2026 22:04:33 +0100 Subject: [PATCH] fix(electrobun): remove requestAnimationFrame scroll effect (was contributing to effect cycle) --- ui-electrobun/src/mainview/AgentPane.svelte | 196 +++++++++++++------- 1 file changed, 129 insertions(+), 67 deletions(-) diff --git a/ui-electrobun/src/mainview/AgentPane.svelte b/ui-electrobun/src/mainview/AgentPane.svelte index e8b06b4..e8ff935 100644 --- a/ui-electrobun/src/mainview/AgentPane.svelte +++ b/ui-electrobun/src/mainview/AgentPane.svelte @@ -1,8 +1,7 @@ @@ -107,8 +110,13 @@ {fmtTokens(tokens)} tok {fmtCost(costUsd)} - {#if status === 'running' && onStop} - + {/if} {#if expandedTools.has(msg.id)} - + {/if} - - {:else if msg.role === 'tool-result'} + {:else if msg.role === "tool-result"}
{#if !isFirst}
{/if}
@@ -189,7 +197,9 @@
result - {msg.content} + {msg.content}
@@ -208,7 +218,7 @@ {model} {provider} {contextPct} - placeholder={t('agent.prompt.placeholder')} + placeholder={t("agent.prompt.placeholder")} onSend={handleSend} onInput={(v) => (promptText = v)} /> @@ -246,23 +256,49 @@ flex-shrink: 0; } - .dot-success { background: var(--ctp-green); } - .dot-progress { background: var(--ctp-peach); } - .dot-error { background: var(--ctp-red); } - .dot-idle { background: var(--ctp-overlay1); } - .dot-thinking { background: var(--ctp-mauve); } - .dot-system { background: var(--ctp-overlay0); } + .dot-success { + background: var(--ctp-green); + } + .dot-progress { + background: var(--ctp-peach); + } + .dot-error { + background: var(--ctp-red); + } + .dot-idle { + background: var(--ctp-overlay1); + } + .dot-thinking { + background: var(--ctp-mauve); + } + .dot-system { + background: var(--ctp-overlay0); + } - .strip-label { color: var(--ctp-subtext1); font-weight: 500; } - .strip-model { color: var(--ctp-overlay1); margin-left: 0.25rem; } - .strip-spacer { flex: 1; } - .strip-tokens { color: var(--ctp-overlay1); } + .strip-label { + color: var(--ctp-subtext1); + font-weight: 500; + } + .strip-model { + color: var(--ctp-overlay1); + margin-left: 0.25rem; + } + .strip-spacer { + flex: 1; + } + .strip-tokens { + color: var(--ctp-overlay1); + } .strip-sep { - width: 1px; height: 0.75rem; + width: 1px; + height: 0.75rem; background: var(--ctp-surface1); margin: 0 0.125rem; } - .strip-cost { color: var(--ctp-text); font-weight: 500; } + .strip-cost { + color: var(--ctp-text); + font-weight: 500; + } .strip-stop-btn { display: flex; @@ -277,7 +313,9 @@ border-radius: 0.2rem; color: var(--ctp-red); cursor: pointer; - transition: background 0.12s, color 0.12s; + transition: + background 0.12s, + color 0.12s; flex-shrink: 0; } @@ -312,9 +350,16 @@ gap: 0; /* No gap — timeline lines must connect between rows */ } - .messages-scroll::-webkit-scrollbar { width: 0.25rem; } - .messages-scroll::-webkit-scrollbar-track { background: transparent; } - .messages-scroll::-webkit-scrollbar-thumb { background: var(--ctp-surface1); border-radius: 0.25rem; } + .messages-scroll::-webkit-scrollbar { + width: 0.25rem; + } + .messages-scroll::-webkit-scrollbar-track { + background: transparent; + } + .messages-scroll::-webkit-scrollbar-thumb { + background: var(--ctp-surface1); + border-radius: 0.25rem; + } /* ── Gradient fade ────────────────────────────────────────── */ .scroll-fade { @@ -338,14 +383,25 @@ } /* ── Message row ──────────────────────────────────────────── */ - .msg-row { display: flex; flex-direction: column; } - - @keyframes fadeIn { - from { opacity: 0; transform: translateY(8px); } - to { opacity: 1; transform: translateY(0); } + .msg-row { + display: flex; + flex-direction: column; } - .msg-animated { animation: fadeIn 0.3s ease-in-out; } + @keyframes fadeIn { + from { + opacity: 0; + transform: translateY(8px); + } + to { + opacity: 1; + transform: translateY(0); + } + } + + .msg-animated { + animation: fadeIn 0.3s ease-in-out; + } /* ── User bubble (left-aligned inline block) ─────────────── */ .user-bubble { @@ -478,7 +534,9 @@ line-height: 1.4; } - .tool-result-content { color: var(--ctp-teal); } + .tool-result-content { + color: var(--ctp-teal); + } /* ── Thinking content ──────────────────────────────────────── */ .thinking-content { @@ -528,7 +586,9 @@ } .show-more-btn:hover, - .collapse-btn:hover { color: var(--ctp-lavender); } + .collapse-btn:hover { + color: var(--ctp-lavender); + } .collapse-btn { display: block; @@ -545,5 +605,7 @@ } .resize-handle:hover, - .resize-handle.dragging { background: var(--ctp-surface1); } + .resize-handle.dragging { + background: var(--ctp-surface1); + }