What's New
Mini Player Improvements
- Redesigned bottom mini player — Replaced volume slider with skip controls (previous/next) and a time display for a more useful compact view
- Track progress bar — Added a thin progress indicator line at the bottom of the mini player that fills as the track plays
- Smooth progress interpolation — Mini player timer and progress bar now interpolate smoothly between server updates instead of appearing stuck
- Top/bottom position setting — The Mini Player Position setting in App Settings now works — place the mini player above or below your browse content
Bug Fixes
- Fixed home screen getting stuck on "Failed to load" after backgrounding the app
- Fixed track timer resetting to 0:00 when navigating between mini player and Now Playing
- Fixed Now Playing state being lost after returning from Settings
- Fixed WebRTC remote connections not auto-reconnecting when the app was backgrounded
- Fixed edge-to-edge navigation bar overlap in the Add Server Wizard
- Fixed debug log export crashing due to FileProvider path mismatch
- Fixed top bar title wrapping to a second line
Connectivity & Performance
- Adaptive clock sync — Convergence threshold now adapts to network jitter for more stable audio synchronization
- Remote ID input — Dashes are now automatically stripped when pasting Remote IDs
Under the Hood
- KMP restructure — Major refactor moving shared code into a Kotlin Multiplatform
:sharedmodule (protocols, models, transports, filters, MA layer) - Consolidated
ServerRepositoryintoUnifiedServerRepository - Migrated transports from OkHttp to Ktor in the shared module
- Encrypted auth tokens in storage
- Extracted hardcoded strings to resources
- Comprehensive code review fixes (18 critical, 30 high, 35 medium, 12 low priority issues)
- Added 96 new unit tests for the shared MA layer
- Added Exit App option to overflow menu