Skip to content

Fix stale rendering and shutdown race on terminal resize#39

Open
reisub wants to merge 1 commit into
pcharbon70:developfrom
reisub:fix-resize-events
Open

Fix stale rendering and shutdown race on terminal resize#39
reisub wants to merge 1 commit into
pcharbon70:developfrom
reisub:fix-resize-events

Conversation

@reisub

@reisub reisub commented May 25, 2026

Copy link
Copy Markdown

Hey there, thanks for the great lib - definitely fills a gap in the Elixir world!

I'm working on a TUI app and I ran into an issue where resizing the terminal window doesn't correctly re-render the UI if there hasn't been an update after the resize.

I'm not super familiar with the codebase, so this is a Claude assisted fix which I've iterated on and confirmed that it fixes the issue I ran into.

Changes:

Drain the message queue between broadcasting Resize and rendering, so the first frame after a resize reflects updated component state instead of the previous frame's.

Replace the unconditional backend.clear with the diff renderer's erase cells when a buffer_manager is in play, falling back to a real clear for buffer-less backends.

Skip the post-resize render if a component's update returned :quit so we don't paint into a backend that's about to be torn down.

Drain the message queue between broadcasting Resize and rendering, so the
first frame after a resize reflects updated component state instead of
the previous frame's. Replace the unconditional backend.clear with the
diff renderer's erase cells when a buffer_manager is in play, falling
back to a real clear for buffer-less backends. Skip the post-resize
render if a component's update returned :quit so we don't paint into a
backend that's about to be torn down.
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