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 dd7c5544bf - Show all commits
@@ -131,34 +131,42 @@ fun SettingsScreen(
}
}
if (showSignOutConfirm) {
AlertDialog(
onDismissRequest = { showSignOutConfirm = false },
title = { Text("Sign out?") },
text = {
Text(
"Sign out of this server? Your downloaded music and " +
"settings on this device will be removed.",
)
},
confirmButton = {
Button(
onClick = {
showSignOutConfirm = false
viewModel.signOut()
},
colors = ButtonDefaults.buttonColors(
containerColor = MaterialTheme.colorScheme.errorContainer,
contentColor = MaterialTheme.colorScheme.onErrorContainer,
),
) { Text("Sign out") }
},
dismissButton = {
TextButton(onClick = { showSignOutConfirm = false }) { Text("Cancel") }
SignOutConfirmDialog(
onConfirm = {
showSignOutConfirm = false
viewModel.signOut()
},
onDismiss = { showSignOutConfirm = false },
)
}
}
@Composable
private fun SignOutConfirmDialog(onConfirm: () -> Unit, onDismiss: () -> Unit) {
AlertDialog(
onDismissRequest = onDismiss,
title = { Text("Sign out?") },
text = {
Text(
"Sign out of this server? Your downloaded music and " +
"settings on this device will be removed.",
)
},
confirmButton = {
Button(
onClick = onConfirm,
colors = ButtonDefaults.buttonColors(
containerColor = MaterialTheme.colorScheme.errorContainer,
contentColor = MaterialTheme.colorScheme.onErrorContainer,
),
) { Text("Sign out") }
},
dismissButton = {
TextButton(onClick = onDismiss) { Text("Cancel") }
},
)
}
@Composable
private fun NavTile(
icon: ImageVector,