* [bugfix]: Fix repeated track scrobbling
This commit fixes scrobbling tracks that are repeated in the queue (either due
to a REPEAT_ONE or just enqueued multiple times). There are two extra cases:
1. The current player changes. The player alternates from 1 -> 2 -> 1 whenever playback
finishes normally, so this is a sort of epoch that can be used to detect both repeat one
and track being enqueued multiple times.
2. The current index changes. The player gets set back to 1 in a variety of cases (most often
previous/next), so the check in (1) is not enough. However, the index changing will help identify
that this is a new song.
* use unique id instead
Two bugs addressed in response to Safari changes:
1. Only handle `onEnded` for real streams, preventing `autoNext()` spam when the last track finishes
2. `.play()` is not necessarily a safe operation (if empty wave was started, can cause exception later). Catch this exception and discard it. This also only occurred when playing the last track
* initial idea for playback rate
* Add transparency to dropdown
* Move playback speed component to right controls
* Set mpv speed on startup
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
- uses a somewhat more sane way to parse lyrics and teardown timeouts
- adds 'seeked' to setCurrentTime to make detecting seeks in lyric much easier
- adds ability to fetch lyrics from genius/netease (desktop only)
- On startup, the first time a song is played, mpv will stop after playback
- This adds a loop to the queue handler to automatically retry when failing to add to the queue
* Remove 1920px max width
* Fix position of list controls menu
* Match size and color of search input
* Adjust library header sizing
* Move app menu to sidebar
* Increase row buffer on play queue list
* Fix query builder styles
* Fix playerbar slider track bg
* Adjust titlebar styles
* Fix invalid modal prop
* Various adjustments to detail pages
* Fix sidebar height calculation
* Fix list null indicators, add filter indicator
* Adjust playqueue styles
* Fix jellyfin releaseYear normalization
* Suppress browser context menu on ag-grid
* Add radius to drawer queue -- normalize layout
* Add modal styles to provider theme
* Fix playlist song list pagination
* Add disc number to albums with more than one disc
* Fix query builder boolean values
* Adjust input placeholder color
* Properly handle rating/favorite from context menu on table
* Conform dropdown menu styles to context menu
* Increase sort type select width
* Fix drawer queue radius
* Change primary color
* Prevent volume wheel from invalid values
* Add icons to query builder dropdowns
* Update notification styles
* Update scrollbar thumb styles
* Remove "add to playlist" on smart playlists
* Fix "add to playlist" from context menu
* Fix slider bar background to use theme
* Add "scrobbleAtDuration" to settings store
* Add subscribeWithSelector and playCount incrementor
* Add scrobbling API and mutation
* Add scrobble settings
* Begin support for multi-server queue handling
* Dynamically set version on auth header
* Add scrobbling functionality for navidrome/jellyfin