What's New in Beta 7
Audio Playback Fixes
This release resolves the audio dropout issues reported since recent Music Assistant beta updates (#99). Audio would stop playing after pausing or skipping tracks while the UI still showed playback as active, requiring users to repeatedly press play/pause/skip to recover.
Root causes identified and fixed:
-
AudioTrack hardware/software state desync -- When a track transition happened while paused, the audio hardware stayed paused even though the software flag was cleared. The player reported "playing" but no sound came out.
clearBuffer()now correctly unpauses the AudioTrack hardware, andresume()checks the actual hardware state as a safety net. -
Redundant stream/start teardown -- The server sends
stream/startmessages for format updates mid-stream. The Android player was tearing down and rebuilding the entire audio pipeline on every one of these, clearing the buffer and interrupting playback. Now matches the CLI behavior: format-only updates are handled without disrupting playback. -
Swallowed group/update messages -- Identical consecutive
group/updatemessages were being deduplicated, which could suppress critical "playing" state notifications after track transitions. Every message is now dispatched. -
Artwork-only stream/end killing audio -- The server can send
stream/endtargeting only artwork or visualizer roles. The Android player was incorrectly treating these as full stream ends and stopping audio. Now filters by theplayer@v1role, matching CLI behavior.
Progress Bar Fixes
-
Position jumping after pause/resume -- The seekbar would jump forward by the entire pause duration on resume, then snap back when the next server update arrived. The interpolation anchor timestamp is now reset when playback actually starts.
-
Stale position timestamps -- Unrelated state broadcasts (volume changes, connection events) were re-stamping the position anchor time, causing the progress bar to drift between updates. Now uses the stored timestamp from when position was actually updated.
-
Metadata dedup suppressing speed changes -- A quick pause/resume at the same second could suppress the playback speed update (1000 to 0 and back), leaving the progress bar interpolating in the wrong direction.
UI Improvements
- Connection status indicator in the top bar
- 48dp minimum touch targets for all interactive elements
- BottomNav for tablets in portrait orientation
- Constrained server list width on tablets and TV
- Empty state for home screen with hidden empty sections
- Secondary actions visible in landscape Now Playing layout
- Skip-next button added to landscape side mini player
- Increased TV top bar height and progress bar thickness
- Increased head unit Up Next touch targets to 76dp
- Device Volume label on volume slider
- Standardized play button size across tablet orientations
- Improved opacity/contrast on group label and metadata text
- Increased carousel end padding for scroll affordance
Other Fixes
- Restrict RemoteConnection ID validation to ASCII characters
- Skip dev build CI for non-Android changes