1.5.0
What's Changed
- refactor: move theme controls to a dedicated settings page by @BruceZhang1993 in #81
- refactor: extract low-risk FuoPlayerController modules by @BruceZhang1993 in #82
- [feat] Add sleep timer support to playback by @BruceZhang1993 in #84
- fix: prioritize recording identity in smart replacement by @BruceZhang1993 in #85
- refactor: split FuoPlayerController responsibilities by @BruceZhang1993 in #83
- refactor: extract playback timer and lyrics controllers by @BruceZhang1993 in #87
- refactor: establish app architecture boundaries by @BruceZhang1993 in #91
- refactor: apply P0 architecture boundaries by @BruceZhang1993 in #92
- refactor: decouple search and recognition from FuoPlayerController by @BruceZhang1993 in #93
- refactor: establish P0 runtime architecture boundaries by @BruceZhang1993 in #94
- refactor: remove Search/Recognition app-shell compat by @BruceZhang1993 in #95
- refactor: establish dedicated playback runtime by @BruceZhang1993 in #96
- refactor: migrate player UI to playback session by @BruceZhang1993 in #97
- refactor: move playback orchestration out of controller by @BruceZhang1993 in #98
- refactor: remove playback UI controller bridge by @BruceZhang1993 in #99
- refactor: complete playback UI ownership migration by @BruceZhang1993 in #100
- refactor: close P1 bridges and seed P2 ownership by @BruceZhang1993 in #101
- refactor: migrate low-risk app ownership by @BruceZhang1993 in #102
- refactor: migrate local music feature ownership by @BruceZhang1993 in #103
- refactor: complete P2 feature ownership migration by @BruceZhang1993 in #104
- refactor: extract search feature module by @BruceZhang1993 in #105
- refactor: extract offline library feature modules by @BruceZhang1993 in #106
- refactor: extract provider catalog and auth feature modules by @BruceZhang1993 in #107
- refactor: extract provider detail feature module by @BruceZhang1993 in #108
- refactor: extract settings and onboarding feature modules by @BruceZhang1993 in #109
- fix: load mine content after startup state is ready by @BruceZhang1993 in #110
- fix: separate user playback selection from resume session by @BruceZhang1993 in #111
- fix: prevent startup queue restore from overriding new playback by @BruceZhang1993 in #112
- fix: make active playback replacement transactional by @BruceZhang1993 in #113
- refactor: extract home feature module by @BruceZhang1993 in #114
- refactor: establish p4 contract boundaries by @BruceZhang1993 in #115
- refactor: split provider api and runtime boundaries by @BruceZhang1993 in #116
- feat: support BYD instrument lyrics by @BruceZhang1993 in #117
- refactor: complete P4 architecture boundaries by @BruceZhang1993 in #118
- refactor: start P5 provider modularization with Bilibili by @BruceZhang1993 in #119
- fix: refine app bar and snackbar spacing by @BruceZhang1993 in #120
- fix: refresh BYD instrument music session by @BruceZhang1993 in #121
- feat: backup and restore provider credentials by @BruceZhang1993 in #122
- feat: add provider resource favorite actions by @BruceZhang1993 in #123
- feat: add manual lyric association by @BruceZhang1993 in #124
- fix: keep smart replacement from advancing multipart sources by @BruceZhang1993 in #125
- fix: restore QQ Music followed artists by @BruceZhang1993 in #127
- feat: refine manual lyrics association and alignment by @BruceZhang1993 in #126
- refactor: migrate business state off Compose snapshots by @BruceZhang1993 in #129
- refactor: extract playback feature boundary by @BruceZhang1993 in #130
- refactor: retire provider aggregate and own replacement policy in playback by @BruceZhang1993 in #131
- fix: keep Mine page at top after initial load by @BruceZhang1993 in #132
- refactor: decompose app shell architecture by @BruceZhang1993 in #133
- feat: add listening history and statistics by @BruceZhang1993 in #134
- feat: add comprehensive multi-provider search by @BruceZhang1993 in #135
- fix: avoid implicit Gradle dependency in playback boundary check by @BruceZhang1993 in #136
- ci: share Android test workflow by @BruceZhang1993 in #137
Full Changelog: 1.4.3...1.5.0