Files
buzz/desktop
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67dandTyler Longwell 1c01889929 Encrypted-by-default key backup UI + ncryptsec import (frontend half)
Frontend half of PLANS/NIP49_LOCAL_BACKUP_PLAN.md Rev 3 (D3):

- BackupStep: encrypted by default. The default path never invokes
  get_nsec — the webview only ever sees the finished ncryptsec1 blob
  returned by create_ncryptsec_backup. The raw key path survives behind
  an explicit 'Show raw key instead' click with its previous
  loading/error/skip semantics.
- EncryptedBackupCreator (shared by onboarding + settings): generated
  6-word passphrase default with cannot-be-recovered copy, 'choose my
  own' = min 12 chars + confirmation, create -> masked display + copy +
  'Save a copy…' via the native dialog.
- encryptedBackup.ts: pure reducer/validation model, unit-tested without
  a DOM; keyImportInput.ts: HRP classification + submit gating.
- NsecMaskedDisplay: kind='nsec'|'ncryptsec' drives labels/aria/testids;
  existing nsec call sites unchanged.
- NostrKeyImportForm: ncryptsec1 paste switches to encrypted mode
  (passphrase field, no npub preview possible), decrypt errors surface;
  raw nsec flow untouched. import_identity plumbs the optional password
  through OnboardingFlow/MachineOnboardingFlow/KeyringLockedScreen.
- ProfileSettingsCard: 'Encrypted backup' row alongside the raw reveal.
- ncryptsecSourceScan.test.mjs: TS-side source-allowlist tripwire
  mirroring the Rust scan (defense-in-depth per plan D4).
- e2e: mock bridge learns the three backup commands + ncryptsec import;
  onboarding-backup.spec.ts covers the encrypted happy path (asserting
  get_nsec is never called), custom-passphrase validation, raw fallback,
  and error/retry; onboarding.spec.ts adds encrypted-import happy path
  including a wrong-passphrase rejection.

Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
2026-07-25 22:44:03 -04: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