Skip to content

feat(web): load a real chat after Nuri wallet login #3

Description

@eminogrande

Problem

After a successful Nuri Connect + Passkey Wallet login, the web root renders the existing repository browser. Users see This community is empty because web/src/app/routes/index.tsx mounts ReposPage; this is not a chat screen.

Production also currently has zero channels and zero active channel memberships, so a chat UI alone would still have nothing to open.

Scope

  1. Replace the authenticated root content with a browser-native Buzz chat: channel sidebar, selected-channel timeline, empty/error/loading states, and text composer. Preserve the repository browser under /repos.
  2. Use the existing Buzz/Nostr protocol and unlocked in-memory Nuri signer: discover membership (39002) and metadata (39000), join an open channel (9021), query/subscribe to messages (9, 40002), and publish text messages (9) over NIP-42-authenticated WebSocket with relay OK handling.
  3. Provision one open production #general channel through the existing relay owner, verify a newly registered Nuri user can join/read/send/live-receive, retain /inbox, and pass web unit/type/lint/build/smoke checks.

What we are not doing

  • Full Tauri desktop UI port
  • Threads, reactions, file uploads, huddles, moderation, agent panels, or forum channels
  • Persisting the Nostr private key outside tab memory
  • Bypassing closed-relay membership or Connect verification

Security invariants

  • Continue using the nuri-expo-wallet-v1 signer already unlocked by NuriWalletGate.
  • Private key remains tab-memory-only and is best-effort zeroized on lock/pagehide.
  • NIP-42 authentication and relay membership remain mandatory.
  • Channel join and messages are signed by the user key; no server impersonation.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions