feat(music): deeper MusicBrain integration - new shelves, mix pages, artist insights, widget, genre context - #990
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Deepens the MusicBrain integration shipped in #985: the engine now feeds more surfaces and learns from more of them.
New shelves (zero network) — Rediscover (loved artists gone quiet for 3+ weeks, best track each) and a time-of-day rotation (tracks you actually play in the current time bucket), both rendered purely from stored meta and gated so they hide rather than pad when thin. From artists you love collects your top artists' latest albums/singles from the already-cached artist pages. Daily Mixes open as playlist pages (play all / shuffle / save to library) via the same synthesized-details route community playlists use — a fresh ViewModel deterministically rebuilds the mix. Artist pages gain a "Your history" strip (plays, liked, your most-played tracks of that artist) and "In your rotation" badges on fans-also-like artists the brain already knows. On Repeat home-screen widget joins the Glance family (rows open the Music tab). Genre provenance: plays started from genre rows and mood chips stamp that context into listen signals, which activates the ranker's context terms, reorders the mood chips by habit, and adds a Genres card to the Control Center. Ranking: Speed dial, Listen again, Recommended, music videos and long listens now pass through the brain; section order is anchored by brain maturity (charts-led when cold, taste-led when mature).
All artist matching reuses the dual key forms from #985; every new shelf participates in the reactive hidden-artists filter.
Related issue
—
Change type
Validation
./gradlew :app:assembleGithubDebug./gradlew :app:testGithubDebugUnitTest(music engine suites incl.MusicBenchmarkTestregression floors, run before and after; 6 new tests for rediscover/rotation/genre learning)./gradlew :app:compileFossDebugKotlin,ktlintCheckTest device and Android version: POCO, Android 16 (HyperOS)
Device pass: brain-ranked Speed dial visibly reordered to top artists; rotation shelf renders in its bucket and hides outside it; Rediscover correctly gated (no 3-week-stale artists yet on this brain); "From artists you love" renders; Daily Mix header opens a 14-song playlist page and plays as a queue; artist page shows "Your history — Played 4 times" with the most-played track; no crashes in logcat across the pass. Widget added to the registry and manifest (compile-verified; add-to-home-screen is a manual step).
Risk and compatibility
@Volatilecontext-genre tag on the queue manager, cleared on every unscoped queue start.