mirror of
https://github.com/block/buzz.git
synced 2026-10-31 22:41:12 +00:00
The channel-scoped observer archive (`archiveEventsByChannel`) grew only by explicit paged loads from SQLite and was never evicted, so a long session that visits many channels retains every channel's full scroll-back for the lifetime of the app — a renderer memory leak behind the v0.5.9 lag. Bound it to MAX_RETAINED_ARCHIVE_CHANNELS distinct channels via an LRU policy that evicts whole channels (every agent entry for a channel goes together). Channels with a mounted panel are pinned (refcounted) and never evicted; an evicted channel re-hydrates from SQLite on revisit, so eviction is a cache miss, not data loss. A post-unmount fence stops an in-flight page from resurrecting an evicted channel after its pin is released. Co-authored-by: Will Pfleger <pfleger.will@gmail.com> Signed-off-by: Will Pfleger <pfleger.will@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