Release notes — 2.1.0
Local playback
New LocalPlayerService plays tracks directly on-device alongside remote zone playback.
Local queue is persisted (LocalQueueTracks) and survives restarts.
Playback pipeline now supports per-track playback ranges.
Library & navigation
Library restructured into a dedicated nav stack with modular tabs and shared components.
Connection and library widgets reworked for clearer status display.
Now Playing & player
Full zone model implemented end-to-end.
Now Playing empty state added.
MiniPlayerPanel refactored; play/pause and mute callbacks now actually fire (regression fix).
Progress bar: larger 48px hit area, click lands precisely on cursor position.
Other
Settings screen.
Favorites with persistence.
Standardized item-tap callback across lists.
Design refresh across screens.