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 903a7961e3 - Show all commits
@@ -14,6 +14,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
@@ -28,6 +29,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavHostController
import com.fabledsword.minstrel.nav.Home
import com.fabledsword.minstrel.nav.Login
import com.fabledsword.minstrel.nav.ServerUrl
@Composable
fun LoginScreen(
@@ -55,6 +57,7 @@ fun LoginScreen(
onUsernameChange = viewModel::setUsername,
onPasswordChange = viewModel::setPassword,
onSubmit = viewModel::submit,
onChangeServerUrl = { navController.navigate(ServerUrl) },
)
}
}
@@ -65,6 +68,7 @@ private fun LoginForm(
onUsernameChange: (String) -> Unit,
onPasswordChange: (String) -> Unit,
onSubmit: () -> Unit,
onChangeServerUrl: () -> Unit,
) {
Column(
modifier = Modifier
@@ -112,6 +116,12 @@ private fun LoginForm(
)
}
SubmitButton(state = state, onSubmit = onSubmit)
TextButton(
onClick = onChangeServerUrl,
enabled = !state.isSubmitting,
) {
Text("Change server URL")
}
}
}