- Login screen (server URL, username, password) that verifies against the
server with an OpenSubsonic ping before saving.
- Credentials stored encrypted with an Android Keystore AES-GCM key in
DataStore, excluded from backups. Subsonic token auth (salted md5), so the
password is never sent.
- Album grid with cover art (Coil), A-Z, paged 100 at a time, pull to
refresh, sign out.
- Layered packages (model, data/auth, data/subsonic, data/library, ui) with
a manual AppContainer, ready for Media3, Android Auto and the brain service.
- Kotlin 2.4.10 and current AndroidX/OkHttp/Retrofit; fix stray "cla" typo
in the template MainActivity.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>