Skip to content

Commit 17d6bfc

Browse files
committed
v0.8.10: frontend perf — batched rendering, DOM pruning, event delegation
Fixes 4 critical performance issues: 1. 🔴 innerHTML += → insertAdjacentHTML('beforeend', ...) Avoids full element re-parsing on every token. Tokens are buffered via requestAnimationFrame and rendered in batches — O(n²) -> O(n). 2. 🔴 No message cap → pruneMessages() at 100 DOM nodes Keeps the message container bounded. After 100 messages+tool blocks, oldest nodes are removed. Prevents unbounded memory growth. 3. 🔴 scrollBottom() per event → throttled via requestAnimationFrame Coalesces multiple scroll calls into one layout pass per frame. Eliminates forced-reflow chains from rapid token bursts. 4. 🔴 Per-item event listeners → event delegation Tool-block collapse and session-item click use a single delegated listener on the parent (#messages, #session-list, #completion). Zero listener allocation during streaming or session reloads. Plus: - Debounced @ completion (150ms instead of 10ms timer per keystroke) - contain: content on #messages to isolate layout scope - textContent for tool results (no HTML parse needed)
1 parent 81b1e88 commit 17d6bfc

1 file changed

Lines changed: 180 additions & 100 deletions

File tree

0 commit comments

Comments
 (0)