What's new in v4.9.0
This release focuses on making the download chain honest and reliable. Previously, dead proxy endpoints were recycled every 5 minutes and always reported as healthy; so every failed download silently paid a 30–90 second tax on unreachable sources before falling through to Soulseek. That tax is now gone.
Source health engine (core)
Dead proxies are now permanently flagged. A 403, 401, 429, or Cloudflare/captcha challenge page from a proxy endpoint now triggers blacklisting immediately (previously these were counted as successes and the endpoint was never penalised). After 3 consecutive failures the endpoint is marked dead and never revived during the session. A successful response resets the counter.
This fixes the root cause of the long wait before Soulseek kicks in: IsAvailable() for Qobuz and Amazon now returns false when all their proxy endpoints are dead, so the orchestrator skips them instantly instead of timing out.
Panic isolation in the orchestrator. Each source in the fallback chain is now wrapped in its own recover(). A panic in one source no longer aborts the rest of the chain; the remaining sources are always attempted. Skipped-unavailable sources are also recorded in the download summary.
Source Health panel (Settings → Status)
A new Source Health section in the Status tab lets you probe the real capability of each source on demand. Click Check Sources to run concurrent live probes (bounded to 8 s per source):
- Qobuz / Amazon: real HTTP requests through the proxy pool, same path as an actual download
- Soulseek: instant availability check (no network probe; avoids ban risk)
Results show online, degraded, or dead with latency and a human-readable reason. No background polling.
One-click sldl installer (Settings → Soulseek)
When sldl is not found on your system, a new Install sldl button appears in the Soulseek settings section. It downloads the pinned release of sockseek for your platform, extracts and renames the binary to sldl, sets permissions, and re-initialises the Soulseek source without requiring a restart. A progress bar tracks the download and extraction.
Install location: ~/.local/share/flacidal/ (Linux/macOS) · %APPDATA%\flacidal\ (Windows)
Test coverage
First Go test suite for the download orchestration chain:
endpoint_pool_test.go: 403 triggers blacklist, dead endpoint never revives,markHealthyresets the counter, challenge page detectiondownload_orchestrator_test.go: panic isolation, unavailable source recorded in tried list,skipSourcesrespectedsource_soulseek_test.go:parseSldlOutputcorrectly treats a transient "Failed to connect" followed by "Succeeded" as a success (covers the v4.8.6 regression)
Upgrade notes
No configuration changes required. If you use Soulseek, the Install sldl button replaces the previous manual download step; your existing binary at the default path is detected and left untouched.