Resolves#403.
This PR introduces a startup check for Navidrome that tries a simple API request (/songs) before loading homepage.
If the check fails, Navidrome API will fallback to trying saved password (if available).
Notes:
- It might also be worthwhile to do a periodic poll?
* Add customizable resolution for the fullscreen player image
---------
Co-authored-by: iiPython <ben@iipython.dev>
Co-authored-by: Benjamin <iipython@proton.me>
Supports running Feishin solely using web audio (useful for clients with problems with MPV).
Also moves save/restore queue to utils, as MPV object is now optional
* Add a button size setting
* Reduce setting size and add px suffix
* Looks like I don't need || inside of control-settings
* Update translation
* Bump settings version to 7
* [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
* [enhancement]: support clearing query and http cache
- Adds the ability to invalidate all queries (useful for forcing refresh, and clearing lyrics which are cached forever)
- [Desktop only] adds the ability to clear the Electron HTTP cache (e.g. cached images)
* use clearer language
* move cache settings to general
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