feat: M3 weighted shuffle v1 — real /api/radio with scoring #21

Merged
bvandeusen merged 262 commits from dev into main 2026-04-27 11:00:29 -04:00
Showing only changes of commit 5ce9ca9e62 - Show all commits
@@ -67,6 +67,7 @@ import com.fabledsword.minstrel.nav.ArtistDetail
import com.fabledsword.minstrel.nav.HERO_KEY_NOW_PLAYING_COVER
import com.fabledsword.minstrel.nav.LocalAnimatedContentScope
import com.fabledsword.minstrel.nav.LocalSharedTransitionScope
import com.fabledsword.minstrel.nav.NowPlaying
import com.fabledsword.minstrel.nav.Queue
import com.fabledsword.minstrel.shared.widgets.LikeButton
import com.fabledsword.minstrel.shared.widgets.trackactions.TrackActionsButton
@@ -293,13 +294,18 @@ private fun BottomActionsRow(
TrackActionsButton(
track = track,
hideQueueActions = true,
// Single atomic transaction — navigate to the detail while
// popping NowPlaying off the back stack, so there's no
// intermediate frame on the shell tab underneath (Bug-5).
onNavigateToAlbum = { id ->
navController.popBackStack()
navController.navigate(AlbumDetail(id))
navController.navigate(AlbumDetail(id)) {
popUpTo(NowPlaying) { inclusive = true }
}
},
onNavigateToArtist = { id ->
navController.popBackStack()
navController.navigate(ArtistDetail(id))
navController.navigate(ArtistDetail(id)) {
popUpTo(NowPlaying) { inclusive = true }
}
},
)
}