Skip to content

fix(mobile): 6 bug fixes — QR, resume, bots, typing, errors, keyboard#397

Merged
wesbillman merged 3 commits intomainfrom
mobile-bug-fixes
Apr 24, 2026
Merged

fix(mobile): 6 bug fixes — QR, resume, bots, typing, errors, keyboard#397
wesbillman merged 3 commits intomainfrom
mobile-bug-fixes

Conversation

@wesbillman
Copy link
Copy Markdown
Collaborator

@wesbillman wesbillman commented Apr 24, 2026

Summary

  • QR scanner crash on device: Added NSCameraUsageDescription (iOS) and CAMERA permission (Android). Added errorBuilder for graceful permission-denied state.
  • Empty screen on app resume: Messages cached in-memory across reconnects — shows stale content + "Reconnecting…" banner instead of a spinner. _init() merges with existing state to prevent pagination race.
  • Bots missing from channel members: Members sheet now shows "People" and "Bots" sections with counts. Bots get remove-from-channel only (no lifecycle controls — agents run remotely).
  • Self-typing indicator: Filtered currentPubkey from typing entries in both channel and thread views.
  • Unhelpful null error on login without VPN: Mapped raw exceptions to human-friendly messages. Added debugPrint for dev builds.
  • Search sheet behind keyboard: Added MediaQuery.viewInsetsOf(context).bottom padding to browse channels ListView.

Notable review NITs (not fixed)

  • _DetailConnectionBanner says "Reconnecting…" for both connecting and reconnecting states
  • Minor ?. vs . inconsistency between channel and thread typing filters (both null-safe)

Test plan

  • QR scanner: test on real iOS and Android devices — verify permission prompt appears, denied state shows friendly message
  • Resume: background app for 30+ seconds, reopen — should show cached messages with reconnecting banner
  • Members: open a channel with bots — verify People/Bots sections appear with correct counts
  • Typing: type in a channel on mobile — verify own name does NOT appear in typing indicator
  • VPN error: disconnect VPN, attempt pairing — verify friendly error message instead of null check crash
  • Search keyboard: open search sheet, type — verify results scroll above keyboard

🤖 Generated with Claude Code

wesbillman and others added 3 commits April 24, 2026 09:52
…mbers, typing self-filter, friendly errors, keyboard insets

1. QR scanner crash: add NSCameraUsageDescription to Info.plist, CAMERA
   permission to AndroidManifest, and errorBuilder for denied state.
2. Empty screen on resume: preserve last-known messages in provider so
   the UI shows cached content while reconnecting instead of a spinner.
   Add reconnecting banner to channel detail page.
3. Bots missing from members: show bots in a separate section with
   People/Bots headers and counts, matching desktop behavior.
4. Self-typing indicator: filter out current user's pubkey from typing
   entries in both channel and thread views.
5. Null error on VPN disconnect: catch SocketException and map raw
   exceptions to human-friendly messages in the pairing flow.
6. Search sheet behind keyboard: add bottom padding using
   MediaQuery.viewInsetsOf to the browse channels ListView.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…d height

Replace the fragile `SizedBox(height: bots.isEmpty ? 280 : 360)` with a
`ConstrainedBox(maxHeight: 400)` so the sheet adapts to content size
rather than using arbitrary fixed heights.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…add debug logging

BLOCK: _init() now merges fresh history with existing state instead of
replacing it, preventing a race where fetchOlder() results are discarded.
Added _initInFlight guard to block pagination while init is in flight.

CHANGE: Removed dead `on SocketException` catch (PairingSocket swallows
it internally). Added 'Failed to connect' and null-check patterns to
_friendlyErrorMessage. Added debugPrint before friendly error mapping
so dev builds surface the root cause.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@wesbillman wesbillman merged commit 353729a into main Apr 24, 2026
13 checks passed
@wesbillman wesbillman deleted the mobile-bug-fixes branch April 24, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant