diff options
| author | Adam Soltys <[email protected]> | 2026-09-26 07:31:09 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-09-26 07:31:09 -0700 |
| commit | 9b49a11710dfb9ded1cf3297696c32ffc64bf7e8 (patch) | |
| tree | 15ddfc197d366833ce232af8c4ab201a5e22dc7b /src/debug.js | |
| parent | 1c388b3897ddd36c07f70b2b7f28467fd169e924 (diff) | |
| download | coinosv3-9b49a11710dfb9ded1cf3297696c32ffc64bf7e8.tar.gz coinosv3-9b49a11710dfb9ded1cf3297696c32ffc64bf7e8.zip | |
Feed: only the rows near the viewport are in the DOM, however far you scroll.
A long scroll left hundreds of rows mounted, and every repaint (a zap
count, a profile landing, the thirty-second sync) rebuilt and diffed all
of them — the slowdown deep in the feed. Rows beyond two and a half
screens either side of the viewport are now replaced by a spacer at their
measured height, so the page keeps its length (scrollbar, Back, arrival
anchoring behave as before) while a repaint touches a few dozen rows.
After svelte-virtual-list: measure after paint, estimate unmeasured rows
at the running average, hold the reader's row still when a measurement
corrects an estimate. Applies to the profile notes list too.
Tests: feed-window-dom (120 posts, 27,800px page, 12–24 rows mounted,
anchor held, spacers both sides); feed-live looks at the top after
scrolling up; the moderation test's stub relay no longer lets real posts in.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
Diffstat (limited to 'src/debug.js')
0 files changed, 0 insertions, 0 deletions
