# UI polish: navigation, pause, artwork, scrollability **Date:** 2026-03-09 ## Task description Five UI/UX improvements after manual testing. ## Changes made ### 1. Auto-navigate to Now Playing on station tap (StationListScreen.kt) - `onPlay` callback now calls `onNavigateToNowPlaying()` immediately after `viewModel.playStation()`. ### 2. Auto-navigate back to station list on stop (NowPlayingScreen.kt) - `LaunchedEffect(playbackState)` watches for `PlaybackState.Idle` and calls `onBack()`. - Removed the "Nothing playing" dead-end screen. ### 3. Pause/resume support - **PlaybackState.kt**: Added `Paused(station, metadata, sessionStartedAt)` state. - **RadioController.kt**: Added `pause()` method sending `ACTION_PAUSE`. - **RadioPlaybackService.kt**: `handlePause()` sets `pauseRequested = true` and stops engine. In `handlePlay`'s finally block, if paused: updates state to `Paused`, keeps listening session alive, doesn't cleanup service. On resume (ACTION_PLAY with same station while paused), reuses the session. - **NowPlayingViewModel.kt**: Added `pause()` and `resume()`. Session timer keeps ticking during pause. - **NowPlayingScreen.kt**: Transport controls adapt to state — paused shows large play/resume button + stop; playing shows skip-ahead + pause + stop. ### 4. Artwork in mini player and station list - **MiniPlayer.kt**: Shows 40dp rounded artwork thumbnail from ICY StreamUrl or station's `defaultArtworkUrl`. Shows "Paused"/"Reconnecting..." subtitle as appropriate. - **StationListScreen.kt**: Station rows show a 36dp circular artwork thumbnail from `defaultArtworkUrl` (EXTIMG) when available. ### 5. Scrollability / drag-n-drop readiness - LazyColumn was already scrollable. Added `padding(vertical = 4.dp)` to station rows for better touch targets. All items have stable keys (`station.id`, `"playlist_header_${playlist.id}"`) ready for reorderable integration. ## Files changed - `app/src/main/java/.../service/PlaybackState.kt` - `app/src/main/java/.../service/RadioController.kt` - `app/src/main/java/.../service/RadioPlaybackService.kt` - `app/src/main/java/.../ui/screens/nowplaying/NowPlayingScreen.kt` - `app/src/main/java/.../ui/screens/nowplaying/NowPlayingViewModel.kt` - `app/src/main/java/.../ui/screens/stationlist/StationListScreen.kt` - `app/src/main/java/.../ui/components/MiniPlayer.kt`