Skip to content

fix(board): hold scroll across live re-renders + order project lanes by recency (ready-6ec) - #237

Merged
baron-3dl merged 1 commit into
mainfrom
fix/board-scroll-stable-and-recency-order-ready-6ec
Aug 8, 2026
Merged

fix(board): hold scroll across live re-renders + order project lanes by recency (ready-6ec)#237
baron-3dl merged 1 commit into
mainfrom
fix/board-scroll-stable-and-recency-order-ready-6ec

Conversation

@baron-3dl

Copy link
Copy Markdown
Contributor

Two things a reader hit while just looking at the board.

1. The view jumped on scroll

Every live fold (setItems) / board reconcile (setBoards) does render()'s replaceChildren(), emptying #app. The page is the scroll container here (the shell grows with content — nothing scrolls internally), and emptying it clamps page scroll to 0. So a reader scrolled halfway down was yanked to the top again and again as the first-minute stream of updates arrived.

Capture the page scroll (and the panes, in case the layout is ever made pane-scrolling) before the rebuild, restore after; refocus with preventScroll. Real-browser check: page scroll 700 → 700 across a live fold.

2. Project lanes ordered by gate count

A project stale for a week floated to the top just because it carried gates (enterpriseaiframework). Gates now live in their own banner at the top, surfaced regardless of lane order — so lanes now order by most-recent activity, ties broken by name (total, stable order).

Verified

Board suite 1007 passing; tsc clean; scroll-hold confirmed in a real browser.

🤖 Generated with Claude Code

…es by recency (ready-6ec)

TWO things a reader hit while just looking at the board:

1. THE VIEW JUMPED ON SCROLL. Every live fold (setItems) and board-state
   reconcile (setBoards) does render()'s replaceChildren(), which empties #app —
   and the PAGE is the scroll container here (the shell grows with content, so
   nothing scrolls internally). Emptying it clamps the page scroll to 0, so a
   reader scrolled halfway down was yanked to the top again and again as the
   first-minute stream of updates arrived. Capture the page scroll (and the panes,
   in case the layout is ever made pane-scrolling) before the rebuild and restore
   it after; refocus with preventScroll so it cannot fight. Real-browser check:
   page scroll 700 -> 700 across a live fold.

2. PROJECT LANES WERE ORDERED BY GATE COUNT, so a project stale for a week floated
   to the top just because it carried gates (enterpriseaiframework). Gates now
   live in their own banner at the very top, surfaced regardless of lane order, so
   the lanes answer the question a scroller actually has: order by MOST-RECENT
   activity, ties broken by name for a total (stable) order.

Full board suite 1007 passing; tsc clean; scroll-hold verified in a real browser.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@baron-3dl
baron-3dl merged commit bf31717 into main Aug 8, 2026
7 checks passed
@baron-3dl
baron-3dl deleted the fix/board-scroll-stable-and-recency-order-ready-6ec branch August 8, 2026 22:22
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