Skip to content

stewards: animate sidebar rows only while the list is on screen (BB-91) - #125

Merged
trotterdylan merged 1 commit into
mainfrom
bb/something-weird-about-steward-page-rendering-on-thr_t7wjjwmme6
Oct 28, 2026
Merged

trotterdylan merged 1 commit into
mainfrom
bb/something-weird-about-steward-page-rendering-on-thr_t7wjjwmme6

Conversation

@trotterdylan

Copy link
Copy Markdown
Collaborator

What

On a phone, the stewards sidebar's rows flashed over the Stewards page and over thread pages every half minute (and on every realtime refresh). The screenshot in the thread shows the PR list drawn across the effort detail.

Why

BB-91 gave each sidebar row a view-transition-name and wrapped every usePolled commit in document.startViewTransition. A view transition hoists every named element in the document into the top layer for the crossfade, hidden or not. bb's host keeps the sidebar mounted when it is closed: on a phone the drawer is a shelf under the page content marked inert (apps/app/src/components/ui/sidebar.tsx, SidebarMobilePanel), and on desktop the collapsed sidebar is inert (rail) or visibility: hidden (offcanvas). So any transition started while the list is hidden paints the rows over the page. The sidebar's own poll does that from any route; BB-94 keeping the list mounted on the Stewards page made it show there too.

How

  • usePolled takes an optional animate check and only starts a view transition when it passes.
  • The sidebar list passes "its root is on screen": no [inert] ancestor and checkVisibility({ visibilityProperty: true }) true (taken as visible where the API is missing).
  • The page and overview polls, which have no named rows, pass nothing and commit plainly.
  • DESIGN.md records the rule. Tests cover the inert and visibility-hidden cases and that the page never starts a transition.

Lane: no-review (a narrow bug fix; nothing visible changes while the sidebar is open). Merging moves the bb-server pin and stages a restart for every developer's server.

🤖 Generated with Claude Code

A view transition hoists every element with a view-transition-name into
the top layer for the crossfade, hidden or not. The host keeps the
sidebar mounted when it is closed (on a phone the drawer sits under the
page content, inert; on desktop the collapsed sidebar is inert or
visibility: hidden), so every stewards poll that wrapped its commit in
startViewTransition painted the sidebar's rows over the Stewards page
and over thread pages for the length of the crossfade. Since BB-94 the
list stays mounted on the Stewards page too, which is where it was first
seen.

usePolled now takes an optional check and starts a transition only when
it passes; the sidebar passes "its root is on screen" (no inert ancestor,
checkVisibility true), and the page and overview polls, which have no
named rows, pass nothing and commit plainly.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@trotterdylan
trotterdylan merged commit a029031 into main Oct 28, 2026
29 of 30 checks passed
@trotterdylan
trotterdylan deleted the bb/something-weird-about-steward-page-rendering-on-thr_t7wjjwmme6 branch October 28, 2026 02:37
@trotterdylan

Copy link
Copy Markdown
Collaborator Author

Merged: squashed as a029031 on main. Lane no-review; approved by the owner in the thread at c4bfd11 (the only head); checks green after a rerun of a thread-briefs flake unrelated to this change. This moves the bb-server pin and stages a restart on every developer's server.

— from bb thread thr_t7wjjwmme6

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