mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
Three scroll-anchor gaps surfaced by the 1.1 default text scale (all app-side; no test tolerances changed): - Prepend drift: after the older-history re-pin, prepended rows above the viewport realize their content-visibility intrinsic-size estimates a few frames later. No scroll event fires for that shrink and native scroll anchoring has no anchor node above the viewport, so the reading row drifted ~30px (scales with root font size — 1.1 pushed it past the 28px e2e budget). The content ResizeObserver now re-pins mid-history message anchors (it only handled at-bottom), and onScroll swallows the echoes of our own anchor-holding writes instead of re-capturing the drifted position as the new anchor. - Stranded bottom jump: the scroll-to-latest pill's smooth jump computes its animation target from metrics at call time; rows realizing their true heights mid-flight make that target stale, the engine settles ~52px above the real floor, and then emits no further scroll events — an event-driven settle guard can never issue the final corrective write. The settle guard is now a rAF loop outside the event stream: hands-off while the position is moving, corrective pin once it holds still short of the true floor, disarmed at the floor, on trusted user input, or a hard time cap. - Anchor-blind system rows: SystemRow rendered no data-message-id, so in a young channel whose only rows are system events computeAnchor found nothing and fell through to at-bottom — a user who scrolled up never got the scroll-to-latest pill and was yanked down by the next arrival. System rows now carry their message id. Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
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