This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch fix-bsu-esu
in repository terminology.

View the commit online.

commit 9512377b85253baba0337a88b0919c75570c08a5
Author: [email protected] <[email protected]>
AuthorDate: Thu May 14 18:01:56 2026 -0600

    fix(termio): defer renders during mode 2026 synchronized output
    
    Suppress pty change callbacks in _smart_pty_change() when
    sync_output.active is true (between DECSET 2026 BSU and ESU markers).
    _sync_output_end() already fires cb.change.func on ESU or the 150ms
    watchdog, which re-enters here with sync_output.active == FALSE and
    queues the single coalesced frame.
    
    The previous snapshot/accessor approach was fragile: termio_internal_render
    reads pty state far beyond rows+cursor (block.active, selection, scroll
    region, backlog, circular_offset, link state, attrs), none of which was
    snapshotted. With high-frequency BSU/ESU pairs and full-region clears
    (observed in Claude Code / Ink TUI), mid-burst mutations leaked into
    rendered frames, causing visible artifacts. The snapshot machinery is
    retained as a defensive safety net for forced-render paths (resize,
    focus changes, explicit _smart_apply() calls) that can fire mid-sync.
    
    Fixes rendering glitches when running Claude Code inside terminology.
    
    Co-Authored-By: Claude Haiku 4.5 <[email protected]>
---
 src/bin/termio.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/bin/termio.c b/src/bin/termio.c
index 77bca231..4392f1e6 100644
--- a/src/bin/termio.c
+++ b/src/bin/termio.c
@@ -3666,6 +3666,10 @@ _smart_pty_change(void *data)
 
 // if scroll to bottom on updates
    if (sd->jump_on_change) sd->scroll = 0;
+   /* Mode 2026: suppress renders between BSU and ESU. _sync_output_end will
+    * fire cb.change.func on ESU (or watchdog), which re-enters here with
+    * sync_output.active == FALSE and queues the single coalesced frame. */
+   if (sd->pty->sync_output.active) return;
    termio_smart_update_queue(sd);
 }
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to