Skip to content

fix: terminal flicker regression — viewport clear inside dimension guard#51

Open
TeigenZhang wants to merge 1 commit intoArk0N:masterfrom
TeigenZhang:fix/terminal-flicker-regression
Open

fix: terminal flicker regression — viewport clear inside dimension guard#51
TeigenZhang wants to merge 1 commit intoArk0N:masterfrom
TeigenZhang:fix/terminal-flicker-regression

Conversation

@TeigenZhang
Copy link
Copy Markdown
Contributor

Summary

  • Move viewport clear (\x1b[3J\x1b[H\x1b[2J) inside the dimension-change guard — previously every resize event cleared the screen even at identical dimensions, causing visible flicker with no Ink redraw to repaint
  • Sync _lastResizeDims in sendResize() to prevent redundant viewport clears after restoreTerminalSize()
  • Add didScroll tracking to touch events so tap-without-scroll refocuses xterm's hidden textarea, fixing mobile keyboard input routing

Test plan

  • Desktop: resize browser window, verify no flicker during/after resize
  • Mobile: rotate device, verify terminal redraws cleanly without blank flash
  • Mobile: tap terminal area (no scroll), verify keyboard input works
  • Run restoreTerminalSize (Ctrl+Shift+R), verify no double-clear flicker

🤖 Generated with Claude Code

…on guard

Three fixes from the WIP flicker branch that were lost during master merges:

1. Move viewport clear (\x1b[3J\x1b[H\x1b[2J) inside the dimension-change
   guard so it only fires when cols/rows actually change. Previously every
   resize event cleared the screen even at identical dimensions, causing
   visible flicker with no subsequent Ink redraw to repaint.

2. Sync _lastResizeDims in sendResize() so restoreTerminalSize() doesn't
   trigger a redundant viewport clear on the next throttledResize tick.

3. Add didScroll tracking to touch events — tap (no scroll) now refocuses
   xterm's hidden textarea, fixing mobile keyboard input routing after
   tapping the terminal area.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant