fix(mobile): 6 bug fixes — QR, resume, bots, typing, errors, keyboard#397
Merged
wesbillman merged 3 commits intomainfrom Apr 24, 2026
Merged
fix(mobile): 6 bug fixes — QR, resume, bots, typing, errors, keyboard#397wesbillman merged 3 commits intomainfrom
wesbillman merged 3 commits intomainfrom
Conversation
…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>
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
NSCameraUsageDescription(iOS) andCAMERApermission (Android). AddederrorBuilderfor graceful permission-denied state._init()merges with existing state to prevent pagination race.currentPubkeyfrom typing entries in both channel and thread views.debugPrintfor dev builds.MediaQuery.viewInsetsOf(context).bottompadding to browse channels ListView.Notable review NITs (not fixed)
_DetailConnectionBannersays "Reconnecting…" for both connecting and reconnecting states?.vs.inconsistency between channel and thread typing filters (both null-safe)Test plan
🤖 Generated with Claude Code