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.