Skip to content

feat(music): deeper MusicBrain integration - new shelves, mix pages, artist insights, widget, genre context - #990

Merged
A-EDev merged 14 commits into
mainfrom
feat/music-brain-integrations
Aug 31, 2026
Merged

feat(music): deeper MusicBrain integration - new shelves, mix pages, artist insights, widget, genre context#990
A-EDev merged 14 commits into
mainfrom
feat/music-brain-integrations

Conversation

@A-EDev

@A-EDev A-EDev commented Aug 31, 2026

Copy link
Copy Markdown
Owner

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

  • Bug fix
  • Feature
  • Refactor or maintenance
  • Build, packaging, or CI
  • Documentation

Validation

  • ./gradlew :app:assembleGithubDebug
  • ./gradlew :app:testGithubDebugUnitTest (music engine suites incl. MusicBenchmarkTest regression floors, run before and after; 6 new tests for rediscover/rotation/genre learning)
  • ./gradlew :app:compileFossDebugKotlin, ktlintCheck
  • I manually tested the affected behavior on an Android device or emulator.

Test 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

  • New preferences/data: none — everything reads existing brain state; genre context adds an optional field to listen signals (wire-compatible, brain schema unchanged).
  • Widget: new receiver + provider XML; existing widgets untouched apart from an optional per-item intent override on the shared panel.
  • Player path: untouched except a @Volatile context-genre tag on the queue manager, cleared on every unscoped queue start.
  • Known nit (pre-existing): one stored track title carries URL-encoded plus signs ("Devil+in+Disguise") from an old write path; surfaced by the new history strip, not caused by it.
  • The change does not introduce secrets, private data, or unexpected telemetry.
  • New user-facing text uses Android string resources.
  • Dependency and lockfile changes are intentional and limited to this PR. (none)
  • Room schema changes include the required version bump and migration, or this PR does not change the Room schema.
  • Breaking changes and upgrade steps are clearly documented. (none)
Copilot AI lite review requested due to automatic review settings August 31, 2026 13:31

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions github-actions Bot added documentation Improvements or additions to documentation player Video and audio playback algorithm Recommendation engine and math ui Compose UI, theming, or Material 3 surfaces labels Aug 31, 2026
@A-EDev
A-EDev merged commit cb624d3 into main Aug 31, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

algorithm Recommendation engine and math documentation Improvements or additions to documentation player Video and audio playback ui Compose UI, theming, or Material 3 surfaces

2 participants