mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
Fetched pages already mount fully into the DOM (no virtualizer since #1338; the markdown parse is paid eagerly at the deferred commit from #1022). But each row wears content-visibility:auto with a heuristic contain-intrinsic-size reserve, so offscreen rows skip layout until they scroll near the viewport — and since the estimate never exactly matches the true height, every realization during a fling changes scrollHeight and forces useAnchoredScroll to compensate mid-momentum. That estimate→true re-realization is the root the reserve heuristic only approximates away. This flag removes the root: with eagerTimelineLayout on, timeline rows opt out of content-visibility skipping entirely. The full fetched window lays out once, at exact heights, at commit time; scrolling through already-loaded history triggers zero height re-realizations and zero anchored-scroll corrections. Cost is a one-time layout of the loaded window (~50 rows/page) instead of pay-as-you-scroll. Mechanics: - preview-features.json: new eagerTimelineLayout entry (desktop), toggled in Settings → Experiments like the other preview lanes. - TimelineMessageList: rows add timeline-row-cv-eager when the flag is on. The reserve style stays on the wrapper — inert without size containment — so flag-off behavior is byte-identical to main. - utilities.css: .timeline-row-cv.timeline-row-cv-eager flips content-visibility to visible. - timeline-no-shift e2e: the wiring guard now asserts the eager path (the e2e bridge opts every preview feature in), and a new sibling spec with seedPreviewFeatures:false pins the default auto path. Portable classifier (sami/portable-classifier 5e5bd4a5, advisory per arc law — Tyler's trackpad judges): baseline at this tip scores 19 post-momentum bites @60px max (chromium) / 22 @60px (webkit); flag-ON scores 0 bites / 0.0px max on both engines, stable across repeat runs, with healthy momentum-frame populations (~226-238). Verified: typecheck, biome, 2217 unit tests, timeline-no-shift 6/6, scroll-history + overscroll-boundary + channel-window-mock-paging + live-broadcast-reply-timeline 20/20, messaging 31/31. Co-authored-by: Tyler Longwell <tlongwell@block.xyz> Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Buzz
Desktop chat shell with:
- Tauri + React + TypeScript + Vite
- Tailwind CSS
- shadcn/ui-ready shared components
- Biome (lint/format/check)
- Feature-driven frontend structure
Scripts
pnpm dev- run the web frontendpnpm tauri dev- run the desktop apppnpm build- typecheck and build frontendpnpm typecheck- TypeScript checkspnpm lint- Biome lintpnpm format- Biome format (write)pnpm check- Biome check
Structure
src/shared- reusable app-wide code (ui,lib,styles)src/features- feature modules (vertical slices)src/app- top-level app composition