From 0ca2bf109d38cf44b3dadda947d1a750dd1f7c03 Mon Sep 17 00:00:00 2001 From: rene Date: Sun, 29 Mar 2026 11:10:50 +0200 Subject: [PATCH] Fix: ESC[2J aus Frame-Rendering entfernt verhindert Scrollback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ESC[2J schiebt in iTerm2 den Bildschirminhalt bei jedem Aufruf in den Scrollback-Puffer – 10x/Sekunde. Da render() ohnehin jede Zelle überschreibt, genügt ESC[H (Cursor-Home). --- asciiquarium_ng.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/asciiquarium_ng.py b/asciiquarium_ng.py index 0a9fa86..7b7f3fa 100755 --- a/asciiquarium_ng.py +++ b/asciiquarium_ng.py @@ -121,10 +121,9 @@ class Canvas: self._ck[row][col] = ck def render(self) -> str: - # \033[2J clears the entire terminal (not just our canvas width), - # preventing stale characters when the terminal is wider than self.cols - # or after a resize. The full-canvas overwrite below keeps flicker minimal. - parts = ["\033[2J\033[H", RESET] + # \033[H homes the cursor; every cell is rewritten below so \033[2J is + # not needed and would push content into the scrollback on every frame. + parts = ["\033[H", RESET] sentinel = object() last_ck: object = sentinel for r in range(self.rows):