soulsync/core
BoulderBadgeDad 4b8ddad9ff fix: stop the Tidal token-refresh loop (regression from #949)
#949 moved the "token still valid -> return True" short-circuit in TidalClient.is_authenticated()
into the boot-phase branch ONLY, so after boot every call fell through to the silent refresh
regardless of whether the token was actually expired. With multiple workers polling Tidal every
few seconds, that produced a constant "access token expired -> refresh -> success" loop (wolf39us
logs) — needless token churn, not an actual auth problem.

Restored the valid-token short-circuit on the post-boot path. The download client is unaffected
(it defers the tidalapi session differently, no manual expiry loop).

3 regression tests: valid token post-boot does NOT refresh, expired token still does, valid token
during boot returns True without probing.
2026-06-29 11:18:00 -07:00
..
artists
automation Remove old auto-acting Quality Scanner tool (replaced by Quality Upgrade Finder job) 2026-06-13 12:14:45 -07:00
blocklist
credentials
diagnostics
discovery Listening Mix: source-independent track fetch (Deezer public fallback) 2026-06-25 10:37:16 -07:00
download_engine lint: add strict=True to engine search zip() (B905) 2026-06-25 16:41:00 -07:00
download_plugins feat(quality): source mappers + populate real quality on streaming results 2026-06-14 12:27:03 +02:00
downloads downloads: make the "file not found" failure actionable instead of opaque 2026-06-28 15:32:47 -07:00
enrichment #868: disambiguate same-name artists by owned-catalog overlap during enrichment 2026-06-13 14:57:17 -07:00
exports playlist export: opt-in confident-search backfill for the unmatched tail (#945, increment 7) 2026-06-28 23:02:08 -07:00
imports import: async staging scan so a large library doesn't time out the page (#947, phase 1 backend) 2026-06-29 09:24:41 -07:00
library jellyfin scan: page the bulk fetch so the no-progress watchdog can't false-stall 2026-06-28 13:41:38 -07:00
maintenance
matching
media_server
metadata Merge pull request #949 from HellRa1SeR/fix/docker-spotify-boot-hang 2026-06-29 10:55:39 -07:00
personalized SoulSync Discovery sync tab: list all kinds + Listening Mix generator 2026-06-25 11:38:41 -07:00
playback
playlists #901: give file-import playlist tracks a stable id so manual matches stick 2026-06-22 08:53:24 -07:00
quality lossy copy: support all lossless formats, not just FLAC (#941) 2026-06-28 12:13:05 -07:00
radio
repair_jobs lossy copy: support all lossless formats, not just FLAC (#941) 2026-06-28 12:13:05 -07:00
search
security
stats
streaming
sync Sync wishlist re-add: skip wing-it stubs (match the sync), no clickable button 2026-06-24 16:51:43 -07:00
text Cover art: a sequel digit glued to a CJK title ('…サウンドトラック2') now blocks the wrong-album match 2026-06-18 08:24:54 -07:00
torrent_clients
usenet_clients NZBGet: import from the final location, not the incomplete '….#NZBID' dir 2026-06-18 12:47:19 -07:00
watchlist watchlist history: record automatic scans too (#933) 2026-06-27 00:42:58 -07:00
webui
wishlist wishlist: render library-sourced art (album + artist) — fix blank wishlist images 2026-06-27 17:35:28 -07:00
workers
acoustid_client.py
acoustid_verification.py
album_consistency.py
amazon_client.py Fix #759: Amazon enrichment floods when its public proxy is down 2026-06-01 13:10:51 -07:00
amazon_download_client.py Download clients: don't crash init when the download path can't be created 2026-06-24 21:00:32 -07:00
amazon_outage.py
amazon_worker.py
api_call_tracker.py
archive_pipeline.py
artist_source_detail.py
artist_source_lookup.py Fix artist-detail showing wrong artist when a source id is duplicated 2026-06-05 07:24:51 -07:00
audiodb_client.py
audiodb_worker.py
auto_import_worker.py #889: FIX data loss — re-identify to the same release no longer deletes the file 2026-06-18 17:13:46 -07:00
automation_engine.py
boot_phase.py Defer all provider API probes during boot to prevent startup hangs. 2026-06-29 12:17:44 -04:00
connection_detect.py
connection_test.py Spotify (no-auth): report connected + 'Spotify (no-auth)' test result instead of a Deezer fallback 2026-06-13 10:16:23 -07:00
database_update_health.py #859: DB-update stall watchdog + UI self-heal (no more wedged 'Starting...' / frozen bar) 2026-06-12 19:38:30 -07:00
database_update_worker.py
db_integrity.py
debug_info.py
deezer_client.py Lint: log instead of bare except-pass in two best-effort paths (ruff S110) 2026-06-21 22:47:11 -07:00
deezer_download_client.py Merge pull request #949 from HellRa1SeR/fix/docker-spotify-boot-hang 2026-06-29 10:55:39 -07:00
deezer_worker.py #868: disambiguate same-name artists by owned-catalog overlap during enrichment 2026-06-13 14:57:17 -07:00
discogs_client.py
discogs_worker.py
download_orchestrator.py Download clients: don't crash init when the download path can't be created 2026-06-24 21:00:32 -07:00
genius_client.py
genius_worker.py
genre_filter.py
hifi_client.py Download clients: don't crash init when the download path can't be created 2026-06-24 21:00:32 -07:00
hydrabase_client.py
hydrabase_worker.py
image_cache.py
itunes_client.py #918 follow-up: self-heal stale truncated iTunes album-tracks cache 2026-06-24 09:37:14 -07:00
itunes_worker.py #868: disambiguate same-name artists by owned-catalog overlap during enrichment 2026-06-13 14:57:17 -07:00
jellyfin_client.py jellyfin scan: page the bulk fetch so the no-progress watchdog can't false-stall 2026-06-28 13:41:38 -07:00
lastfm_client.py
lastfm_worker.py
library_reorganize.py library reorganize: add a rename-only executor (#875) — core + tests 2026-06-28 18:52:42 -07:00
lidarr_download_client.py Download clients: don't crash init when the download path can't be created 2026-06-24 21:00:32 -07:00
listenbrainz_client.py #903: re-export updates the same ListenBrainz playlist in place (no duplicates) 2026-06-22 22:36:29 -07:00
listenbrainz_manager.py
listening_stats_worker.py stats: normalize image URLs at cache-build time, not per /api/stats/cached read (#935) 2026-06-28 09:32:48 -07:00
lyrics_client.py
matching_engine.py
metadata_service.py Fix Docker boot hang when Spotify is the configured primary source. 2026-06-29 12:08:03 -04:00
musicbrainz_client.py
musicbrainz_search.py
musicbrainz_service.py #868: disambiguate same-name artists by owned-catalog overlap during enrichment 2026-06-13 14:57:17 -07:00
musicbrainz_worker.py #868: disambiguate same-name artists by owned-catalog overlap during enrichment 2026-06-13 14:57:17 -07:00
navidrome_client.py Multi-disc (#927): capture real disc number at media-server scan time 2026-06-25 15:40:17 -07:00
personalized_playlists.py Popular Picks: fix empty result for deezer (popularity threshold scale mismatch) 2026-06-25 16:30:52 -07:00
plex_client.py Align playlists: add Plex support + cover art + modal redesign 2026-06-24 13:12:09 -07:00
profile_context.py
prowlarr_client.py
qobuz_client.py Merge pull request #949 from HellRa1SeR/fix/docker-spotify-boot-hang 2026-06-29 10:55:39 -07:00
qobuz_worker.py
reorganize_queue.py library reorganize: wire rename-only mode through the queue (#875) 2026-06-28 19:08:42 -07:00
reorganize_runner.py library reorganize: wire rename-only mode through the queue (#875) 2026-06-28 19:08:42 -07:00
repair_worker.py lossy copy: support all lossless formats, not just FLAC (#941) 2026-06-28 12:13:05 -07:00
replaygain.py
runtime_state.py fix(post-processing): prevent double-claim race that fails imported tracks 2026-06-25 21:03:33 +02:00
seasonal_discovery.py
similar_artists_worker.py
socketio_cors.py
soulid_worker.py
soulseek_client.py feat(quality): make every audio format controllable via ranked targets 2026-06-24 23:01:20 +02:00
soulsync_client.py
soundcloud_client.py Download clients: don't crash init when the download path can't be created 2026-06-24 21:00:32 -07:00
source_ids.py
spotify_client.py Merge pull request #949 from HellRa1SeR/fix/docker-spotify-boot-hang 2026-06-29 10:55:39 -07:00
spotify_free_metadata.py
spotify_public_api.py
spotify_public_scraper.py
spotify_token_cache.py
spotify_worker.py #887: Spotify enrichment shows 'Running (Spotify Free)' for no-auth users, not 'Not Authenticated' 2026-06-18 13:00:33 -07:00
tag_writer.py
tidal_client.py fix: stop the Tidal token-refresh loop (regression from #949) 2026-06-29 11:18:00 -07:00
tidal_download_client.py Defer all provider API probes during boot to prevent startup hangs. 2026-06-29 12:17:44 -04:00
tidal_worker.py
ui_appearance.py ui appearance: default worker orbs OFF on Firefox for first-time users 2026-06-28 16:50:22 -07:00
watchlist_scanner.py watchlist: don't fuse different editions as the same album (Sokhi: Expedition 33) 2026-06-26 20:38:10 -07:00
web_scan_manager.py
wishlist_service.py
worker_utils.py #868: disambiguate same-name artists by owned-catalog overlap during enrichment 2026-06-13 14:57:17 -07:00
youtube_client.py youtube: use pasted cookies.txt instead of passing 'custom' as a browser to yt-dlp 2026-06-27 23:47:38 -07:00
youtube_cookies.py #902: YouTube Liked Music sync — paste a cookies.txt (server/Docker auth) 2026-06-22 14:41:04 -07:00
youtube_track_meta.py #863: derive YouTube track artist from music fields / -Topic channel / 'Artist - Title' instead of the playlist owner 2026-06-12 20:14:55 -07:00