v4.10.0 - Endpoint revival backoff, self-host priority pool & cascade transparency
New features
- Endpoint revival backoff: dead proxy endpoints are no longer permanently blacklisted for the session. A dead endpoint enters a backoff queue and re-enters the pool as a probation candidate, starting at 5 minutes and doubling on each failed revival up to a 2 hour cap; a successful download from a probation endpoint resets it. A
200 OKon metadata routes no longer counts as healthy on its own either: a response body containing the "upstream api error" signature of a proxy with banned upstream credentials now triggers immediate blacklisting instead of a 30 to 90 second stall before falling through to Soulseek. - Self-host priority endpoints (Settings > Sources): the single custom endpoint fields for Tidal and Qobuz became multi-line lists, tried in order before the public pool, which stays as a fallback rather than being removed. Existing single custom endpoint values migrate automatically into the new lists.
- Per-endpoint health panel (Settings > Status): each proxy endpoint now shows its own state badge (live, probation, blacklisted, or dead), last-request latency, and revival count. Health is read from in-memory pool snapshots, no network requests, which also fixes a Linux crash where live HTTP probes conflicted with WebKitGTK's signal handling.
- Queue cascade badges: a verdict badge (Lossless, Likely upscaled, or Upscaled) on Soulseek and Bandcamp downloads, the sources where bit-perfect lossless can't be guaranteed at the protocol level; Tidal, Qobuz, and Amazon aren't analyzed since they're lossless by construction. A cascade badge shows every source that was tried before the one that succeeded.
- Home page empty state now shows source chips (Tidal HiFi, Qobuz, Bandcamp, Soulseek P2P, Spotify), and the placeholder typewriter includes Spotify and Bandcamp example URLs.
Full Changelog: v4.9.0...v4.10.0