- Add peripheral state checks before all write operations
- Fix 'can only accept commands while connected' errors
- Check characteristic write properties to avoid ATT errors
- Preserve original timestamps in store-and-forward messages
- Only log crypto errors once per peer to reduce noise
- Store-and-forward now correctly maintains message ordering
The timestamp preservation ensures messages appear in the correct
chronological order even when delivered later via store-and-forward.
- Single tap logo shows comprehensive app info and features
- Triple tap logo triggers panic mode (instant data wipe)
- Implement adaptive Bluetooth scanning based on battery level
- Remove hardcoded development team ID for security
- Fix store-and-forward description (12h for all, indefinite for favorites)
- Add technical debt remediation plan
- Fix macOS compatibility issues with navigation
- Fix mic button gesture handling by removing Button wrapper
- Use direct gesture on ZStack for more reliable touch detection
- Add debug logging for recording start/stop
- Fix notification delivery on iOS
- Change from checking .background to checking != .active
- Notifications now work when app is inactive or background
- Add NSUserNotificationsUsageDescription to Info.plist
- Improve voice note fragment transmission
- Reduce fragment size from 400 to 200 bytes for better reliability
- Simplify fragment timing from batch-based to linear 100ms delays
- Lower packet size threshold from 512 to 400 bytes for fragmentation
- Add peripheral connection state checking before writes
- Better error logging throughout transmission pipeline
- Add comprehensive debug logging for troubleshooting
- Log audio file size and duration
- Log peripheral connection states during broadcast
- Log fragment send progress with timing info
- Add favorites functionality for peers with persistent storage
- Star icon to toggle favorites in sidebar
- Favorites appear at top of peer list
- Storage persists across app launches using peer ID
- Add local notifications for mentions and private messages
- Notifications appear when app is in background
- Separate notification types for mentions vs private messages
- Request notification permissions on app launch
- Fix sidebar header alignment to match main toolbar (44pt)
- Add background color to sidebar header for visual consistency
- Improve voice note fragment transmission
- Send fragments in batches of 5 with delays to prevent congestion
- Better logging to debug fragment transmission issues
- Reduce delay between fragments from 50ms to batch-based timing
- Fix other UI issues
- Ensure mic recording ripples originate from mic button
- Update sidebar to swipe from right edge smoothly
- Implemented compact binary encoding for packets and messages
- Reduced packet size significantly (13-byte fixed header + variable payload)
- Optimized for BLE's limited MTU with smaller message sizes
- Added BinaryProtocol.swift with encode/decode functions
- Updated all message types to use binary serialization
- Maintains all existing functionality with better performance