What's Changed
- improve debug devex by @ThatOneCalculator in #807
- fix: set icon in media control notification by @ThatOneCalculator in #806
- Add manual lyrics search flow when lyrics are not found by @adlifarizi in #809
- fix: move hardcoded strings for errors to string resources by @ThatOneCalculator in #840
- Added persistent shuffle feature by @ryan7zoom in #855
- Optim/phase 3 by @theovilardo in #871
- Fix pause playback when headphones are disconnected by @adlifarizi in #852
- Optim/player view model migration phase 7 by @theovilardo in #887
- Impl/beta 5.3 new scan system by @theovilardo in #908
- Fix/unified player sheet lagging recomposition fix by @theovilardo in #921
- Impl/lyrics sheet redesign by @theovilardo in #935
- Impl/genre screen redesign by @theovilardo in #942
- Integrate artist image fetching and refine UI component styling by @theovilardo in #946
- Impl/expressive scrollbar by @theovilardo in #951
- Impl/genre features by @theovilardo in #968
- Little fixes everywhere by @theovilardo in #975
- Enhance Google Cast integration, media server reliability, and player… by @theovilardo in #976
- Impl/multi selection lists by @theovilardo in #979
- Little fixes everywhere 2 by @theovilardo in #987
- Impl/new color engine by @theovilardo in #993
- Add data transfer tools, lyrics improvements, and navigation UX updates by @lostf1sh in #992
- Refine player seek bar, equalizer controls, and duration reconciliation by @theovilardo in #994
- Little fixes everywhere 3 by @theovilardo in #999
- Implement Recently Played system and expressive UI refinements by @theovilardo in #1003
- Refine full player expansion logic and enhance placeholder customization by @theovilardo in #1008
- Optim/unified player sheet new by @theovilardo in #1010
- Optim/unified player sheet arch redesign by @theovilardo in #1013
- fix: Prevent crash when no CastContext shared instance found by @LarveyOfficial in #1015
- Optim/unified player sheet arch redesign by @theovilardo in #1022
- Optim/general optimizations by @theovilardo in #1028
- feat: enhance player UI, library loading states, and performance conf… by @theovilardo in #1030
- Fix/queue issues by @theovilardo in #1033
- Fix/shuffle queue anchored algorithm by @theovilardo in #1036
- Optim/optimize resource consumption by @theovilardo in #1037
- Little fixes everywhere 5 by @theovilardo in #1038
- Implement a modernized, modular backup and restore system (v3) using … by @theovilardo in #1039
- perf: optimize playback state updates and recomposition frequency by @theovilardo in #1044
- Fix/release r8 build fix by @theovilardo in #1053
- Fix/ups view quality by @theovilardo in #1065
- feat(equalizer): stabilize audio effects and improve state persistence by @theovilardo in #1073
- feat: implement "start at zero" shuffle and refine playback logic by @theovilardo in #1075
- Added Haptics to Reorder Library Tabs sheet and to all the toggles in… by @Ayaanh001 in #1041
- Feature/telegram cloud sync by @Dv1101 in #1076
- Added BackHandler support to SettingsCategoryScreen by @lostf1sh in #1083
- Offline Connectivity Check, Misc DB Bug Fixes, Upstream Master Changes by @Dv1101 in #1091
- feat(netease): stabilize cloud sync, rebuild restore, and pre-push test regressions by @lostf1sh in #1104
- Test/telegram streaming integration by @theovilardo in #1107
- Impl/gdrive streaming by @theovilardo in #1115
- Impl/redesign artist detail screen by @theovilardo in #1117
- Fix/collapsible top bar colors by @theovilardo in #1124
- Feature: Improved Lyrics Animation (Experimental) by @Dv1101 in #1126
- feat: overhaul Telegram dashboard and Device Capabilities UI with exp… by @theovilardo in #1129
- Impl/artist screen improvements by @theovilardo in #1135
- feat: implement JAudioTagger fallback for improved metadata extraction by @theovilardo in #1141
- Impl/quick settings tiles by @theovilardo in #1145
- feat(telegram): refine dashboard empty state and FAB visibility by @theovilardo in #1146
- Changed the format from minutes to hh:mm:ss by @Ayaanh001 in #1150
- feat: implement customizable collage patterns for the Home screen by @theovilardo in #1154
- feat(Telegram): Improve channel search UX and state management by @Ayaanh001 in #1153
- fix: Restore search query on back navigation and show artist images in search results by @Ayaanh001 in #1157
- Impl/queue sheet dismiss gestures imprv by @theovilardo in #1158
- feat: centralize player sheet back handling and implement predictive … by @theovilardo in #1159
- refactor: replace
navController.navigatewithnavigateSafelyacro… by @theovilardo in #1160 - feat: Introduce new widget styles with dynamic theming by @adlifarizi in #1155
- fix: refine UI components and slider behavior by @theovilardo in #1161
- perf: improve artwork handling and adjust crossfade defaults by @theovilardo in #1163
- Impl/account management by @theovilardo in #1169
- refactor(ui): improve
ExpressiveScrollBarindicator shape and anima… by @theovilardo in #1173 - feat: implement remote-controlled Play Store announcement dialog by @theovilardo in #1176
- feat(Telegram): Redesigned phone auth UI with smart country code input by @Ayaanh001 in #1177
- Optim/stablestate monolitic fix by @theovilardo in #1180
- feat: Sync Netease Cloud playlists to app playlists system by @serein-213 in #1182
- Telegram login screen merged with Theo's new changes by @Ayaanh001 in #1181
- fix: Correct song ID format in Netease playlist sync by @serein-213 in #1183
- refactor: replace blocking I/O with cached preference in
MusicServiceby @theovilardo in #1184 - Batch playlist selection, NetEase sync de-dup, and source tagging by @serein-213 in #1186
- perf: migration to lifecycle-aware state collection in Compose by @theovilardo in #1192
- perf: optimize
LibraryScreenstate management and recompositions by @theovilardo in #1193 - Fix: Resolve ForegroundServiceStartNotAllowedException in MusicService by @serein-213 in #1198
- updated toggle design and row icons position in surface by @Ayaanh001 in #1196
- Add discrete steps to crossfade slider by @adlifarizi in #1199
- feat: optimize folder and genre loading performance by @theovilardo in #1201
- fix: resolve state synchronization in
ReorderTabsSheetby @adlifarizi in #1202 - feat: unify playlist cover rendering and improve search results by @Ayaanh001 in #1204
- Quick wins 1 by @theovilardo in #1208
- perf: optimize player sheet by reducing recompositions during gestures by @theovilardo in #1212
- fix: improve genre deduplication and unknown genre handling by @theovilardo in #1214
- feat: enhance NetEase and Telegram login with robust error handling a… by @theovilardo in #1218
- Impl/album multi selection features by @theovilardo in #1220
- feat: implement Android Auto support via Media3 MediaLibraryService by @theovilardo in #1223
- Refactor: Ensure valid song ID for metadata editing by @theovilardo in #1224
- fix: implement pagination in
onGetSearchResultand update error han… by @theovilardo in #1225 - fix: synchronize scroll-to-top behavior with sort order updates in Li… by @theovilardo in #1228
- ui: update favorite button to outline for non-favorite song by @adlifarizi in #1229
- perf: optimize artist list loading performance by @serein-213 in #1213
- perf: eliminate blank-screen flash on startup & defer TDLib native library load off main thread by @serein-213 in #1237
- feat: smooth orientation transition animation + MusicService widget update performance by @serein-213 in #1236
- feat(Telegram): implement app playlist management for Telegram channels by @serein-213 in #1231
- perf: eliminate blocking coroutine anti-patterns and reduce CPU overhead by @serein-213 in #1238
- perf: reduce APK size with ABI splits, downloadable fonts, and SDK cleanup by @serein-213 in #1239
- perf: Optimize bottom navigation bar responsiveness and transition speed by @serein-213 in #1244
- perf: optimize detail screens (Genre, Album, Artist) performance by @serein-213 in #1247
- perf: optimize main thread performance for library and queue updates by @serein-213 in #1250
- Impl/wearos support by @theovilardo in #1252
- Debug/workflow by @Sincere-Bhattarai in #1254
- Impl/cast bottom sheet redesign by @theovilardo in #1257
- Fix/ai playlist generation fix by @theovilardo in #1258
- feat: enhance audio compatibility and URI handling in player engine by @theovilardo in #1259
- ui: adjust header height and title padding on Equalizer screen by @theovilardo in #1260
- Fix/watch transfer logic by @theovilardo in #1283
- fix: improve audio pipeline for surround formats and noisy handling by @adlifarizi in #1284
- feat: refine wear-to-phone playback logic and browsing limits by @theovilardo in #1285
- feat: refactor lyrics storage and optimize song metadata management by @theovilardo in #1286
- Fix/bottom sheet overscroll temp by @theovilardo in #1290
- feat: complete optimization master refactors + migration hardening by @lostf1sh in #1289
- ui: standardize favorite button styling by @adlifarizi in #1292
- feat: add retry logic and robust error handling for widget artwork lo… by @theovilardo in #1293
- feat(ui): implement back press handling for multi-selection in Library by @theovilardo in #1297
- feat: implement Telegram Cloud playlist visibility toggle in Library by @theovilardo in #1298
- ui: refine selection index display in selection mode by @adlifarizi in #1296
- feat: Add QQ Music integration with encrypted API, playlist sync, stream proxy, and code quality improvements by @serein-213 in #1300
- Animated Lyrics Optimize, Blur Toggle and Strength Added, Fixed padding issue by @Dv1101 in #1301
- fix: handle multi-song deletion UI update and parse track numbers correctly by @adlifarizi in #1303
- Impl/wear bt devices control by @theovilardo in #1306
- Fix/files tab navigation by @theovilardo in #1309
- fix: resolve Sleep Timer UI bugs (repeat mode flicker, EOT timer, Play Count) by @serein-213 in #1311
- Fix: Resolve background overheating and memory leak in MusicService by @serein-213 in #1312
- feat(ui): implement smooth height transitions for
CastBottomSheetp… by @theovilardo in #1313 - refactor: replace QuickJS with WebView-based signer for QQ Music sign… by @theovilardo in #1314
- feat: refactor
StreamingProviderSheetand enhance provider card UI by @theovilardo in #1315 - feat: enhance QQ Music login experience with improved WebView control… by @theovilardo in #1316
- feat: enhance Daily Mix section with song actions and improved UI by @theovilardo in #1318
- feat: update DailyMixSection visual style by @theovilardo in #1320
- feat: refactor album art retrieval and caching strategy by @theovilardo in #1327
- Fix/album artist screen crash by @theovilardo in #1328
- feat: implement persistent playback queue restoration by @theovilardo in #1329
- feat: refactor Brick Breaker easter egg into a dedicated screen by @theovilardo in #1331
- Impl/backup restore improvements by @theovilardo in #1332
- feat: implement pagination and deep track synchronization for Netease… by @theovilardo in #1334
- fix: improve Bluetooth state handling and permission safety in Connec… by @theovilardo in #1337
- Fix/listening stats update by @theovilardo in #1339
- feat: implement pull-to-refresh and improve refresh state handling in… by @theovilardo in #1340
- Fix/library sorting scroll bug by @theovilardo in #1341
- Add intent filters for music widgets by @ClGratton in #1346
- fix: fix SecurityException by adding Bluetooth permission checks in ConnectivityStateHolder by @serein-213 in #1345
- feat: Add Navidrome/Subsonic integration with Unified Library support by @serein-213 in #1343
- fix: library shuffle button behavior by @adlifarizi in #1319
- style: update Netease icon on Accounts screen to match Cloud Streaming sheet by @serein-213 in #1344
- fix: reset refreshing state in StatsViewModel by @theovilardo in #1347
- Update CHANGELOG.md by @theovilardo in #1348
- feat: refactor grayscale color scheme generation for neutral artwork by @theovilardo in #1349
- Fix widget discoverability: add DEFAULT category to MAIN intent filter by @ClGratton in #1350
- Optim/final beta 6 optimization by @theovilardo in #1351
- Polish cloud streaming theming and modernize Subsonic UI by @lostf1sh in #1354
- feat: refactor predictive back handling and update dependencies by @theovilardo in #1355
- Fix Navidrome multi-playlist sync overwrite for non-numeric playlist IDs by @serein-213 in #1356
- UI: optimize LibraryNavigationPill width and text overflow by @serein-213 in #1359
- UI: optimize startup flicker and transition animations by @serein-213 in #1358
- Fix: correct artist online/offline identification by @serein-213 in #1357
- chore: fix Navidrome
playlist_idtype affinity and migrate database… by @theovilardo in #1361 - perf: optimize UI performance with batch color animations and layout-… by @theovilardo in #1362
- Optim/smooth scrollbar mod by @theovilardo in #1363
- feat: refine playback position synchronization and restoration logic by @theovilardo in #1365
- feat: refine playback position restoration and improve UI layout RTL … by @theovilardo in #1366
- feat: refactor player sheet theme resolution and enhance SmartImage p… by @theovilardo in #1367
- fix: improve cold start playback snapshot restoration in `PlaybackSta… by @theovilardo in #1368
- feat: optimize library song list rendering and state management by @theovilardo in #1369
- feat: enhance backup validation and restore robustness for engagement… by @theovilardo in #1370
- Fix/grdient gap issue by @theovilardo in #1372
- Add headset reconnect auto-resume setting and playback behavior by @lostf1sh in #1374
- feat: allow customizable album art size in
EnhancedSongListItemby @theovilardo in #1375 - Add animated visibility to page indicator in
PlayerScreenby @theovilardo in #1377 - Improve backup compatibility and field naming stability for database … by @theovilardo in #1378
- Update default album art size and clean up imports by @theovilardo in #1379
- Add haptic feedback to seeker and migrate playback icons to Material … by @theovilardo in #1382
- Implement various performance optimizations for the player UI, backgr… by @theovilardo in #1384
- Improve backup/restore progress dialog UI and visibility by @theovilardo in #1385
- Update README.md by @theovilardo in #1386
- Hide creation mode selector in playlist edit flow by @lostf1sh in #1391
- Fix/setup permission flow by @theovilardo in #1393
- Implement optimistic UI for full player carousel transitions by @theovilardo in #1396
- Add support for granting artwork URI permissions to external media co… by @theovilardo in #1398
- Ensure critical preferences are preserved during cleanup and backup r… by @theovilardo in #1399
- Add trusted media item resolution for secure artwork URI granting by @theovilardo in #1400
- Improve scrollbar accuracy in
ExpressiveScrollBarusing axis observ… by @theovilardo in #1401 - Fix/recently played tabs design by @theovilardo in #1402
- Implement lyric sync offset for seek-to-line functionality by @theovilardo in #1403
- Defer
recentlyPlayedSongsupdates onHomeScreenuntil off-screen by @theovilardo in #1404
New Contributors
- @ThatOneCalculator made their first contribution in #807
- @ryan7zoom made their first contribution in #855
- @LarveyOfficial made their first contribution in #1015
- @Dv1101 made their first contribution in #1076
- @Sincere-Bhattarai made their first contribution in #1254
- @ClGratton made their first contribution in #1346
Full Changelog: 0.5.0-beta...0.6.0-beta