diff options
| author | user <user@clank> | 2026-07-26 09:32:49 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-12 19:34:35 +0200 |
| commit | 84483b6d6020eee944ada9822c5d6229dc567e04 (patch) | |
| tree | 956db77c19c50c7840be631970d7cac3bae65509 /cli/src | |
| parent | add obnoxious-working: loud spinners + sl0p-swag status messages (diff) | |
| download | sl0ppi-84483b6d6020eee944ada9822c5d6229dc567e04.tar.gz sl0ppi-84483b6d6020eee944ada9822c5d6229dc567e04.tar.xz sl0ppi-84483b6d6020eee944ada9822c5d6229dc567e04.zip | |
slop-tool-boxes: stop full-redraw flicker on tall, top-clipped active boxes
An in-flight tool box taller than the viewport (top scrolled off-screen)
flickered violently the whole time it was active. Cause: the working spinner
(and pi's default spinner) drive ui.requestRender() at ~10-16fps, and the
active call slot recomputed a wall-clock pulse color every render, recoloring
the TOP border. tui.js falls back to a full-screen redraw when the first
changed line is above the viewport (firstChanged < prevViewportTop), so every
spinner tick = one full clear+repaint.
Fix: once the result slot is streaming (box can be tall), freeze the call
slot pulse color, caching built lines per (width, inner). The header/command
is static, so the top border is byte-identical between render ticks and never
triggers an above-viewport change. The pre-output phase (box still fully
visible) keeps the live pulse + ticking runtime; the result slot still pulses
its in-viewport bottom border. NOTES.md documents this as flicker #4.
Confirmed by repro: massive flicker with the fix reverted, calm with it in.
Diffstat (limited to 'cli/src')
0 files changed, 0 insertions, 0 deletions
