Release: web UX overhaul + Android native port + server polish #59

Merged
bvandeusen merged 298 commits from dev into main 2026-06-01 16:11:21 -04:00
2 changed files with 18 additions and 20 deletions
Showing only changes of commit eb4537c013 - Show all commits
@@ -70,56 +70,56 @@ private fun NavGraphBuilder.inShellTopLevel(
) {
composable<Home> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
HomeScreen(navController = navController)
}
}
}
composable<Library> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
LibraryScreen(navController = navController)
}
}
}
composable<Search> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
SearchScreen(navController = navController)
}
}
}
composable<Discover> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
DiscoverScreen(navController = navController)
}
}
}
composable<Playlists> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
PlaylistsListScreen(navController = navController)
}
}
}
composable<Settings> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
SettingsScreen(navController = navController)
}
}
}
composable<Admin> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
AdminLandingScreen(navController = navController)
}
}
}
composable<Requests> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
RequestsScreen(navController = navController)
}
}
@@ -150,42 +150,42 @@ private fun NavGraphBuilder.inShellDetail(
) {
composable<AlbumDetail> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
AlbumDetailScreen(navController = navController)
}
}
}
composable<ArtistDetail> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
ArtistDetailScreen(navController = navController)
}
}
}
composable<PlaylistDetail> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
PlaylistDetailScreen(navController = navController)
}
}
}
composable<AdminRequests> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
AdminRequestsScreen(navController = navController)
}
}
}
composable<AdminQuarantine> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
AdminQuarantineScreen(navController = navController)
}
}
}
composable<AdminUsers> {
WithAnimatedScope {
ShellScaffold(navController = navController, onExpandPlayer = expandPlayer) {
ShellScaffold(onExpandPlayer = expandPlayer) {
AdminUsersScreen(navController = navController)
}
}
@@ -12,7 +12,6 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavHostController
import com.fabledsword.minstrel.connectivity.ui.ConnectionErrorBanner
import com.fabledsword.minstrel.player.ui.MiniPlayer
import com.fabledsword.minstrel.player.ui.PlaybackErrorViewModel
@@ -38,14 +37,13 @@ import com.fabledsword.minstrel.shared.widgets.trackactions.TrackActionsViewMode
* back-only AppBar.
*
* [onExpandPlayer] is the navigate-to-NowPlaying callback passed
* through to MiniPlayer's tap-handler. [navController] is kept on
* the signature for future shell-level navigation needs (banner taps
* etc.); MiniPlayer itself no longer carries a kebab so doesn't need
* nav callbacks any more.
* through to MiniPlayer's tap-handler. No NavHostController parameter
* because nothing inside the shell currently navigates - if a banner
* (UpdateBanner / VersionTooOldBanner / ConnectionErrorBanner) ever
* grows tap-to-navigate, plumb a NavHostController in at that point.
*/
@Composable
fun ShellScaffold(
navController: NavHostController,
onExpandPlayer: () -> Unit,
modifier: Modifier = Modifier,
trackActionsViewModel: TrackActionsViewModel = hiltViewModel(),