Files
buzz/desktop
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7andWill Pfleger dbb0489639 fix(desktop): harden reminder decode against spec-valid and malformed input
RemindersPanel dereffed content.target unconditionally and decryptReminder
trusted JSON.parse output as ReminderContent with no validation. A note-only
reminder (no target — explicitly valid per NIP-ER) or malformed self-decrypted
plaintext crashed the 60s due-check loop or rendered fake reminders.

Make target optional, validate decrypted content fail-closed (object shape,
known status, target/note structure), and guard every target deref with a note
fallback. Mirror the relay's strict not_before parser so the client ignores
values the relay rejects, and use 16 random bytes for the d-tag to meet the
spec's 128-bit entropy MUST (randomUUID is only 122 bits).

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-06-15 22:41:26 -04:00
..
2026-06-11 15:06:24 +00: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