mirror of
https://github.com/block/buzz.git
synced 2026-11-02 23:41:08 +00:00
markThreadRead/markMessageRead route through markChannelRead with a synthetic thread:<root>/msg:<id> key, so its clearObserved prune looks up latestByChannelRef under that key — never the real channel — and the real channel's observed refs survive a read that covers their last badge event. The count stays correct (markers are evaluated per event), but the channel stays permanently eligible for recount, a latent liability. A new lazy prune effect, driven off the unread memo's own output, drops those dead refs when the channel is no longer counted unread. Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co> 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