fix: eliminate Rich live table flicker during ade run#116
Open
clkao wants to merge 1 commit intodbt-labs:mainfrom
Open
fix: eliminate Rich live table flicker during ade run#116clkao wants to merge 1 commit intodbt-labs:mainfrom
clkao wants to merge 1 commit intodbt-labs:mainfrom
Conversation
Instead of pushing a new Table to Live.update() on every task update, pass a _TableRenderable that Live polls on its refresh timer. This decouples update frequency from render frequency, eliminating flicker from redundant redraws. Refresh rate lowered from 4hz to 2hz. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Liveauto-refresh timer with manual debounced refresh to eliminate table flicker duringade runtime.sleep(0.5)initialization delay that was only needed for the background timerApproach
The
RichTaskLoggerpreviously usedLive(refresh_per_second=4)which redraws the entire table by erasing and reprinting on every tick, even when no data changed. This caused visible flicker.Now uses
auto_refresh=Falsewith_live.refresh()called manually fromupdate_task_from_dict(), debounced to 200ms intervals. Allrefresh()calls happen outsideself._lockto avoid deadlock (sincerefresh()→_create_table()→ acquires the same lock). A finalrefresh()instop()ensures the last state is displayed.Test plan
ade runwith multiple concurrent tasks and verify table no longer flickers🤖 Generated with Claude Code