From cc6a8e247661c4a1635f42b2c1faadb36a0b732e Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 27 May 2026 20:56:43 -0400 Subject: [PATCH] =?UTF-8?q?fix(android):=20cosmetic=20cleanup=20=E2=80=94?= =?UTF-8?q?=20admin=20badge,=20AdminLanding=20subtitle,=20NowPlaying=20cli?= =?UTF-8?q?p?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three small audit v3 cleanups bundled: * Bug-6 / §4.19 — AdminLanding Users card subtitle was stale ("Manage accounts") even though Invites shipped weeks ago. Now: "Manage accounts and invites" to match Flutter. * §4.22 — Account card never showed the admin badge. Flutter appends " · admin" next to the username when isAdmin. Threaded isAdmin through AccountCard and added the suffix. * Bug-4 — NowPlayingBody used Column.Center with no scroll, so on small-portrait or any landscape phone the cover + scrubber + transport + actions row clip. Added verticalScroll so users on small screens can scroll the body instead of losing affordances. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../minstrel/admin/ui/AdminLandingScreen.kt | 2 +- .../minstrel/player/ui/NowPlayingScreen.kt | 3 +++ .../minstrel/settings/ui/SettingsScreen.kt | 14 +++++++++++--- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/java/com/fabledsword/minstrel/admin/ui/AdminLandingScreen.kt b/android/app/src/main/java/com/fabledsword/minstrel/admin/ui/AdminLandingScreen.kt index f920297d..be303cd2 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/admin/ui/AdminLandingScreen.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/admin/ui/AdminLandingScreen.kt @@ -177,7 +177,7 @@ private fun SectionList(counts: AdminCounts, navController: NavHostController) { SectionCard( icon = Lucide.Users, title = "Users", - subtitle = "Manage accounts", + subtitle = "Manage accounts and invites", count = counts.users, onClick = { navController.navigate(AdminUsers) }, ) diff --git a/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt b/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt index 960cac89..0697bd27 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt @@ -4,6 +4,8 @@ package com.fabledsword.minstrel.player.ui import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.foundation.background +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -211,6 +213,7 @@ private fun NowPlayingBody( modifier = Modifier .fillMaxSize() .padding(inner) + .verticalScroll(rememberScrollState()) .padding(horizontal = 24.dp), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, diff --git a/android/app/src/main/java/com/fabledsword/minstrel/settings/ui/SettingsScreen.kt b/android/app/src/main/java/com/fabledsword/minstrel/settings/ui/SettingsScreen.kt index e2bac10c..c3d5c4fc 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/settings/ui/SettingsScreen.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/settings/ui/SettingsScreen.kt @@ -93,7 +93,11 @@ fun SettingsScreen( .padding(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp), ) { - AccountCard(username = state.username, serverUrl = state.serverUrl) + AccountCard( + username = state.username, + isAdmin = state.isAdmin, + serverUrl = state.serverUrl, + ) NavTile( icon = Lucide.ListMusic, title = "My requests", @@ -163,7 +167,7 @@ private fun NavTile( } @Composable -private fun AccountCard(username: String, serverUrl: String) { +private fun AccountCard(username: String, isAdmin: Boolean, serverUrl: String) { ElevatedCard(modifier = Modifier.fillMaxWidth()) { Column( modifier = Modifier.padding(16.dp), @@ -174,8 +178,12 @@ private fun AccountCard(username: String, serverUrl: String) { style = MaterialTheme.typography.titleMedium, color = MaterialTheme.colorScheme.onSurface, ) + val adminTag = if (isAdmin) " · admin" else "" Text( - text = if (username.isEmpty()) "Signed in" else "Signed in as $username", + text = when { + username.isEmpty() -> "Signed in" + else -> "Signed in as $username$adminTag" + }, style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurfaceVariant, )