* Fixed bad smart playlist field s
* first try to add playlist highlight
* Simplified calls
* Now works for grids too.
* Derive the playlist highlight from the currently-playing track's origin instead of a stale global field.
* addressed comments
* fix(player): step correctly when seeking rapidly
mediaSkipBackward/mediaSkipForward compute the new target relative to
the timestamp store, which is only refreshed by a ~500ms engine poll.
Rapid presses within that window all read the same stale position and
recompute the same target, so the time appears stuck until the poll
catches up.
Update the timestamp store immediately when a seek is issued so
subsequent presses compute from the new position; the poll then just
reconciles to the same value. Also applied to mediaSeekToTimestamp so
absolute seeks reflect in the UI without the poll lag.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(player): unify seek comments per review
Use one canonical explanation in mediaSkipBackward and have
mediaSeekToTimestamp/mediaSkipForward reference it.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
- switch to single web player instance for loop instead of dual-player
- this fixes the issue, but does have a breaking change if using the crossfade player
* fix(player): stop radio before starting track playback
When internet radio is streaming, clicking a track to play does nothing
because the MPV engine guards check currentStreamUrl and bail early.
Stop the radio stream before setting up the new queue on Play.NOW and
Play.SHUFFLE so the audio engine proceeds normally.
Fixes#2038
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: correct import ordering for lint
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>