Plex browsing, stem mixer with presets, shuffle, repeat all/one, playback
speed, queue, waveform seek. stemserve serves web/ at / without the token.
stemserve image now builds from the repo root.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replaces the chain of dialogs (each waited ~450 ms for the last to close)
with one sheet: Plex | Stem tabs, inline new-playlist name field, playlist
rows with art, and mix chips for stem playlists. One "Add to Playlist…"
menu entry now covers both kinds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Playlists tab splits into Plex and Stem. Plex playlists are unchanged and
now show their custom poster when one is set.
- Stem playlists live on the device; each song keeps its own mix. Add from
any song or collection menu, or copy a whole Plex playlist.
- Queue items can carry a mix, which wins over the song's saved mix.
- Softness slider under the Vocals picker in lyrics when set to Soft.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Plexamp-style sort menu on each library list: pick a field, pick it again
to flip direction. Choice is saved per screen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Shuffle used only the pages loaded so far (the A and B songs). It now
asks Plex for 1000 random tracks from the whole library.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Mini player floats as a solid card and every screen leaves room for it,
so it no longer covers the bottom of lists
- More space between title and scrubber; panel switches animate
- Play button no longer spins forever after changing tracks: the engine
now always reports buffering on load
- Springier button presses and play/pause symbol transitions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SwiftUI port of the Android app under ios/, with CarPlay browse and
Now Playing, Siri play-media intents, and a build-ipa.sh script that
makes an unsigned IPA for sideloading. README gets an iOS section and
the vibecoded disclaimer.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>