- Add race protection and packId normalization to swipe screen
- Add loading/error states to matchStore with couple_id filter
- Sync per-match unread counts in realtime
- Use useFocusEffect for data freshness on Home screen
- Wire RefreshControl to actual loading state on Matches
🤖 Generated with [Claude Code](https://claude.com/claude-code)
- Add onLongPress prop to MessageContent
- Pass delete handler to MessageContent from ChatMessages
- Enable long-press on 'Couldn't open secure message' error to show delete options
- Enable long-press on 'Secure message' pending state
- Add IV validation and key sanitization for encryption
- Add stale key repair for media decryption failures
- Block READ_MEDIA_IMAGES/VIDEO permissions (use photo picker)
- Prevent double-tap crashes in media picker
- Clear media cache on logout
- Persist versionCode/buildNumber in app.json
- Bump Android targetSdk to 35
Introduce feature_interests schema + realtime publication and surface opt-in trends in the admin dashboard. Add Jest test infrastructure/coverage for the mobile app and update push-all to run mobile checks before pushing.
Co-authored-by: Claude Code <claude@anthropic.com>