Mobile App
- React Native companion app with tab navigation (Dashboard, Activity, Users, Alerts)
- QR code pairing with network settings support
- Real-time session updates via Socket.io
- Push notifications with quiet hours and rate limiting
- Interactive stream map with location stats
- Plays and platform breakdown charts with victory-native
- Notification settings and preferences
- iOS/Android builds via EAS
Plex SSE
- Real-time session updates using Server-Sent Events
- Automatic fallback to polling if SSE unavailable
- Estimated progress bars for active sessions
Emby Support
- API key authentication for Emby servers
- Session tracking alongside Plex and Jellyfin
Multi-Server Architecture
- server_users table for users across multiple connected servers
- Per-server roles and access control
- Auto-sync server users and libraries on connection
Authentication
- Switch local auth to email-based login
- Plex OAuth popup auto-close
- Auto-refresh JWT tokens on 401 errors
- Longer mobile token expiry (7 days vs 1 hour)
Network Settings
- Configure external URLs for QR code pairing
- Support for reverse proxies and different networks
Push Notifications
- Server-side push notification system
- Per-channel routing
- Quiet hours and rate limiting
- User notification preferences
Session Tracking
- Improved pause duration tracking
- Better handling during server restarts
- 10s timeout to prevent polling hangs
Jellyfin Improvements
- Better session parsing for PlayMethod detection
- Pause tracking and trailer exclusion
- Image path handling
- Watch history and activity log APIs
Performance
- Database indexes for top-content queries
- Modular service layers extracted
- Split large route files into focused modules
- Parallel test execution with grouped test suites
Dependencies
- React 19, React Router v7, Tailwind CSS v4
- Zod v4, Node.js 22, pnpm 10.24
- Latest expo/react-native versions
Bug Fixes
- Fix /servers route to return all servers for owner
- Fix Jellyfin session parsing bugs
- Fix mobile access API sending empty body with JSON content-type
- Fix Docker healthcheck using IPv4 instead of localhost
- Fix nativewind metro config to load global.css
- Fix shell quoting in CI workflows
UI/Icons
- Switch mobile tab icons to lucide-react-native
- Update app icons and favicons
- Add transparent logo variants
- Increase plays chart area opacity
Testing
- Refactored tests to import production code
- Wait for CI checks in release workflow
- Coverage thresholds matching actual coverage