feat(mobile): websocket streaming with real-time messaging - #323
Merged
Conversation
Add robust websocket infrastructure to the mobile app, mirroring the desktop's Nostr NIP-01/NIP-42 architecture. This enables real-time messaging, typing indicators, and presence — the foundation for all future mobile features. Core infrastructure: - RelaySocket: low-level websocket + NIP-42 AUTH handshake with challenge/response signing and auth_token support - RelaySession: subscription manager with history fetch (REQ/EOSE), live subscriptions, 16ms event batching, exponential backoff reconnect (1s→30s), and replay with since:lastSeen-5s - AppLifecycleProvider: disconnect on background (30s grace), reconnect on foreground/network restore via connectivity_plus - NostrEvent/NostrFilter models and EventKind constants Feature providers: - ChannelMessagesProvider: per-channel message list with history + live updates, pagination via fetchOlder() - ChannelTypingProvider: per-channel typing indicators (8s TTL) - SendMessageProvider: signs events with user's nsec, POSTs to relay - UserCacheProvider: batched profile lookups for names/avatars - ChannelsProvider migrated from 30s polling to hybrid HTTP + live Channel detail page: - Message list with avatars, display names, timestamps - Typing indicator bar - Compose bar with send button Pairing changes (desktop + mobile): - Desktop includes nsec in pairing payload for NIP-42 signing - Mobile stores nsec in FlutterSecureStorage - Removed debug-mode auth bypass (pairing flow is now required) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… preloading
- Filter message list to display events only (kind 9/40002) before
computing author grouping — fixes non-message events (reactions,
system) breaking the showAuthor logic
- Preload channel member profiles on channel open via /api/channels/{id}/members
so @mentions resolve reliably for bots and other users
- Read user cache at send time (not construction time) to avoid stale
snapshots missing freshly loaded profiles
- Match @mentions against first name of multi-word display names
- Fix sign-out dialog using deactivated widget context
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
kaalph
pushed a commit
to kaalph/buzz
that referenced
this pull request
Aug 21, 2026
# By Wes (12) and others # Via GitHub * main: (26 commits) feat(mobile): websocket streaming with real-time messaging (block#323) feat(markdown): add image/video preview, lightbox, and multi-image gallery (block#316) feat(composer): add rich text editor with formatting and mentions (block#310) feat(mobile): align design language with desktop and polish UI (block#321) fix: lock file registry (block#318) feat(mobile): QR/code pairing flow with security hardening (block#317) feat: Sprout Huddles — voice conversations with AI agents (block#299) feat(mobile): add channel list with relay integration (block#315) feat: add change member role in channel sidebar (block#313) feat(desktop): deterministic nested thread panels (block#308) fix: show private channels in channel browser when user is a member (block#311) Replace inline channel creation with dialog (block#312) chore: improve chat message layout to left-aligned design (block#309) Add edit dialog for managed agents with relay profile sync (block#277) fix(ci): build relay with optimized profile to fix flaky e2e tests (block#307) Update actions/checkout action to v6 (block#305) Update dependency @tanstack/react-query to v5.98.0 (block#304) Update dependency @playwright/test to v1.59.1 (block#303) Update react monorepo to v19.2.5 (block#302) feat(mobile): scaffold Flutter app with Riverpod & Catppuccin theme (block#306) ... # Conflicts: # desktop/src-tauri/Cargo.lock # desktop/src-tauri/Cargo.toml # desktop/src-tauri/src/lib.rs # desktop/src/features/channels/ui/ChannelScreen.tsx
kaalph
pushed a commit
to kaalph/buzz
that referenced
this pull request
Aug 21, 2026
# By Wes (12) and others # Via GitHub * main: (26 commits) feat(mobile): websocket streaming with real-time messaging (block#323) feat(markdown): add image/video preview, lightbox, and multi-image gallery (block#316) feat(composer): add rich text editor with formatting and mentions (block#310) feat(mobile): align design language with desktop and polish UI (block#321) fix: lock file registry (block#318) feat(mobile): QR/code pairing flow with security hardening (block#317) feat: Sprout Huddles — voice conversations with AI agents (block#299) feat(mobile): add channel list with relay integration (block#315) feat: add change member role in channel sidebar (block#313) feat(desktop): deterministic nested thread panels (block#308) fix: show private channels in channel browser when user is a member (block#311) Replace inline channel creation with dialog (block#312) chore: improve chat message layout to left-aligned design (block#309) Add edit dialog for managed agents with relay profile sync (block#277) fix(ci): build relay with optimized profile to fix flaky e2e tests (block#307) Update actions/checkout action to v6 (block#305) Update dependency @tanstack/react-query to v5.98.0 (block#304) Update dependency @playwright/test to v1.59.1 (block#303) Update react monorepo to v19.2.5 (block#302) feat(mobile): scaffold Flutter app with Riverpod & Catppuccin theme (block#306) ... # Conflicts: # desktop/src-tauri/Cargo.lock # desktop/src-tauri/Cargo.toml # desktop/src-tauri/src/lib.rs # desktop/src/features/channels/ui/ChannelScreen.tsx
BradGroux
pushed a commit
to BradGroux/buzz
that referenced
this pull request
Aug 23, 2026
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
@rick hello) — verify bot respondsflutter analyze— 0 issuesflutter test— all 33 tests pass🤖 Generated with Claude Code