mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
The 78f81e89 `topAlignIntro` flag force-painted the channel intro flush
to the viewport top whenever the intro showed, dropping the bottom-pin
(`min-h-full` + `mt-auto`). That's a different flavor of the step-5 lie:
it asserts "this is the top" before the top is determined — during
first-load the list is still streaming in from the bottom and where the
top sits isn't knowable yet.
The intro already lives in-flow ABOVE the virtualized list and
`scrollMargin` already accounts for its height, so a bottom-anchored
list naturally scrolls the intro off the top. The fix is purely to
unwind the flush-top CSS: the intro shares the bottom-pin like the DM
intro / generic empty, so the intro+list block fills the container and
pins to the bottom, leaving the intro scrolled off-top until the user
scrolls up to it or the top naturally loads in. The header is then
EARNED by reaching the genuine top, not painted up front.
Main timeline only; DM intro + generic empty untouched.
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