Files
buzz/desktop
Will Pfleger 004afc60e0 fix(desktop): hold back DM render targets until identity resolves
useDecryptedTargetMessageEvents keyed its render disposition on
dmPeerPubkey, which is null until selfPubkey resolves. A real 2-party
DM during the cold-start pre-identity window therefore took the raw
targetMessageEvents passthrough, rendering NIP-44 v2 ciphertext on
first paint and clobbering the decrypted cache copy on id collision.
Unlike the cache path, these targets are component state merged
directly onto the rendered timeline with no [...,null] vs [...,pubkey]
bucket-orphaning to discard the raw write.

Key the hold-back on channel shape (2-party DM) instead of the
peer pubkey so a DM holds its targets back until decrypt runs,
including before identity is known. Group DMs and non-DM channels
are not peer-encrypted and still pass through synchronously.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-06-25 17:55:44 -04:00
..
2026-06-11 15:06:24 +00:00
2026-06-11 15:06:24 +00:00

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 frontend
  • pnpm tauri dev - run the desktop app
  • pnpm build - typecheck and build frontend
  • pnpm typecheck - TypeScript checks
  • pnpm lint - Biome lint
  • pnpm 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