From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Web Agent Date: Fri, 16 Oct 2026 12:46:28 +0200 Subject: [PATCH 2/3] feat(renderer): don't move unchanged lines by scrolling The renderer moves lines that haven't changed by scrolling a region of the screen (SetScrollOptim), everywhere but on Windows. Graphics that a program places over the cells sit in those regions. A terminal may move them with the scrolled lines, or not, and a program that places them again after each frame then moves them twice per row scrolled, which shows as jitter. This turns the optimization off on every platform, so unchanged lines are redrawn instead. Rows under such graphics are usually blank, so redrawing them costs little. --- cursed_renderer.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cursed_renderer.go b/cursed_renderer.go index 0ad3e60..c029e63 100644 --- a/cursed_renderer.go +++ b/cursed_renderer.go @@ -5,7 +5,6 @@ import ( "fmt" "image/color" "io" - "runtime" "strings" "sync" @@ -651,7 +650,7 @@ func reset(s *cursedRenderer) { } scr.SetBackspace(s.backspace) scr.SetMapNewline(s.mapnl) - scr.SetScrollOptim(runtime.GOOS != "windows") // disable scroll optimization on Windows due to bugs in some terminals + scr.SetScrollOptim(false) s.scr = scr }