fix(web): prevent message sync pill layout flicker - #52
Merged
Conversation
- Delay brief sync indicators and anchor the pill above the composer - Reset the pill when switching threads
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.
What Changed
synchronization does not briefly flash.
cannot change the virtualized timeline inset.
Why
Returning to a T3 Code tab intentionally restarts the active thread subscription
from its latest sequence. While waiting for the server's completion marker, an
existing thread briefly enters the
synchronizingstate.The sync pill previously participated in the measured composer layout. Appearing
and disappearing changed
composerOverlayHeight, which changed the virtualizedtimeline's bottom inset twice in quick succession. On scrollable threads, that
caused a visible message-text flicker.
This keeps the foreground synchronization behavior intact while preventing brief
syncs—and any longer visible sync indicator—from changing timeline geometry.
UI Changes
Before: Returning to the tab briefly displays “Syncing messages...” and
reflows a scrollable message timeline (left Chrome tab in the demo video below).
After: Repeated tab switches no longer flash or reflow the timeline (right Chrome tab in the demo video below).
Screencast.from.2026-08-18.16-12-31.webm
Testing
vp test run apps/web/src/threadSync.test.ts apps/web/src/components/chat/ThreadSyncStatusPill.test.tsxvp run --filter @t3tools/web typecheckgit diff --checkChecklist
Implemented with GPT-5.6-sol through the Codex harness in T3 Code.