* [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
* [bugfix/feature]: Improve ratings
Fix: add preventDefault/stopPropagation to prevent scrolling to top in queue
Feat: instead of double click for clear, click on same value
* 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>
* In the fullscreen player use dynamic resolution for the main image
* Use ceil instead of round
* Add types and lint
---------
Co-authored-by: Jeff <42182408+jeffvli@users.noreply.github.com>
* add opacity
* add background for song metadata
* Add padding and border radius to opacity elements
* Remove font-weight transition on active lyrics (#233)
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com>