soulsync/core
Broque Thomas b194e1e15b Add discovery artist blacklist — block artists from all discovery playlists
- New discovery_artist_blacklist table with NOCASE name matching
- Filter blacklisted artists from all 6 discovery pool queries, hero
  endpoint, and recent releases via SQL subquery and Python set check
- Name-based filtering means one block covers all sources (Spotify/iTunes/Deezer)
- Hover any discovery track row → ✕ button to quick-block that artist
- 🚫 button on Discover hero opens management modal with search-to-add
  (powered by enhanced search) and list of blocked artists with unblock
- CRUD API: GET/POST/DELETE /api/discover/artist-blacklist
- Updated changelogs
2026-04-01 23:35:56 -07:00
..
repair_jobs Add metadata cache maintenance and health monitoring 2026-03-30 07:40:20 -07:00
acoustid_client.py Helper V2 complete + enrichment worker fixes 2026-03-26 12:20:58 -07:00
acoustid_verification.py Skip AcoustID verification for high-confidence cross-language matches 2026-03-29 20:04:41 -07:00
album_consistency.py Add Picard-style MB release preflight for album downloads 2026-03-23 12:42:29 -07:00
audiodb_client.py Fix enrichment overwriting manual match status (#221) 2026-03-30 11:07:48 -07:00
audiodb_worker.py Fix enrichment overwriting manual match status (#221) 2026-03-30 11:07:48 -07:00
automation_engine.py Fix automation signal chain: forward event data (playlist_id) to action handlers 2026-03-23 08:51:52 -07:00
database_update_worker.py Fix deep scan skipping file path updates for existing tracks 2026-03-18 13:03:01 -07:00
deezer_client.py Fix missing year and track numbers when Deezer metadata cache is stale 2026-03-27 11:24:36 -07:00
deezer_download_client.py Fix Deezer download crash: config_manager not in scope 2026-03-24 13:12:23 -07:00
deezer_worker.py Apply manual match protection to all enrichment workers (#226) 2026-03-31 08:24:30 -07:00
download_orchestrator.py Skip slskd connection check when Soulseek is not an active source 2026-03-31 12:37:14 -07:00
genius_client.py Increase Genius API interval from 1.5s to 2s to reduce 429 rate limits 2026-04-01 08:42:55 -07:00
genius_worker.py Fix enrichment overwriting manual match status (#221) 2026-03-30 11:07:48 -07:00
hifi_client.py Add per-source quality fallback toggle for streaming downloads (#187) 2026-03-24 11:42:47 -07:00
hydrabase_client.py Add missing _get_artist_image_from_albums to HydrabaseClient 2026-03-23 17:54:21 -07:00
hydrabase_worker.py Use nonces and drain interleaved stats in Hydrabase 2026-02-24 19:16:14 -08:00
itunes_client.py Add collaborative album artist handling with per-source resolution 2026-03-27 13:39:27 -07:00
itunes_worker.py Apply manual match protection to all enrichment workers (#226) 2026-03-31 08:24:30 -07:00
jellyfin_client.py Add Listening Stats page with media server play data integration 2026-03-22 13:18:14 -07:00
lastfm_client.py Add scrobbling to Last.fm/ListenBrainz + update What's New 2026-03-22 14:38:53 -07:00
lastfm_worker.py Apply manual match protection to all enrichment workers (#226) 2026-03-31 08:24:30 -07:00
listenbrainz_client.py Add scrobbling to Last.fm/ListenBrainz + update What's New 2026-03-22 14:38:53 -07:00
listenbrainz_manager.py Fix per-profile ListenBrainz playlist cache scoping and stale data recovery 2026-03-14 21:11:59 -07:00
listening_stats_worker.py Increase stats page top artists/albums/tracks from 10 to 25 2026-03-22 16:39:53 -07:00
lyrics_client.py Fix .lrc files written without timestamps for plain lyrics 2026-03-30 13:28:41 -07:00
matching_engine.py Fix Japanese/CJK text mangled in Soulseek search queries 2026-03-30 18:28:25 -07:00
media_scan_manager.py Fix automated scans for non-Plex servers & incremental scan performance 2026-03-12 11:17:32 -07:00
metadata_cache.py Expose MusicBrainz cache in UI — browse, clear, and unified health display 2026-04-01 23:12:16 -07:00
metadata_service.py Complete Hydrabase as selectable fallback metadata source 2026-03-20 14:18:10 -07:00
musicbrainz_client.py feat(ui): add MusicBrainz enrichment status UI with real-time monitoring 2026-02-03 15:20:04 -08:00
musicbrainz_service.py Add metadata cache maintenance and health monitoring 2026-03-30 07:40:20 -07:00
musicbrainz_worker.py Apply manual match protection to all enrichment workers (#226) 2026-03-31 08:24:30 -07:00
navidrome_client.py Increase Navidrome API timeout from 10s to 60s 2026-03-31 12:44:40 -07:00
personalized_playlists.py Add discovery artist blacklist — block artists from all discovery playlists 2026-04-01 23:35:56 -07:00
plex_client.py Add Listening Stats page with media server play data integration 2026-03-22 13:18:14 -07:00
plex_scan_manager.py fix logging issue 2025-08-09 13:17:11 -07:00
qobuz_client.py Add per-source quality fallback toggle for streaming downloads (#187) 2026-03-24 11:42:47 -07:00
qobuz_worker.py Apply manual match protection to all enrichment workers (#226) 2026-03-31 08:24:30 -07:00
repair_worker.py Fix library maintenance path fixes failing silently (#207) 2026-03-29 16:25:36 -07:00
seasonal_discovery.py Fix seasonal playlists not appearing when Deezer is active source 2026-03-18 10:28:54 -07:00
soulid_worker.py Rebuild artist SoulID: track-verified canonical ID from Deezer + iTunes 2026-03-23 18:34:36 -07:00
soulseek_client.py Enforce FLAC bit depth preference and prioritize audio quality in sorting 2026-03-25 15:59:22 -07:00
spotify_client.py Route all Spotify search calls through cached methods 2026-03-31 22:18:02 -07:00
spotify_public_scraper.py Add Spotify Link tab for public playlist/album scraping without API credentials 2026-03-15 21:25:05 -07:00
spotify_worker.py Apply manual match protection to all enrichment workers (#226) 2026-03-31 08:24:30 -07:00
tag_writer.py Fix OPUS files losing all metadata during import/post-processing 2026-03-28 09:37:12 -07:00
tidal_client.py Fix Tidal playlists showing 0 tracks and broken auto-mirror 2026-03-31 09:33:52 -07:00
tidal_download_client.py Add per-source quality fallback toggle for streaming downloads (#187) 2026-03-24 11:42:47 -07:00
tidal_worker.py Apply manual match protection to all enrichment workers (#226) 2026-03-31 08:24:30 -07:00
watchlist_scanner.py Ensure all watchlist scanner album fetches bypass cache 2026-03-31 22:25:25 -07:00
web_scan_manager.py Fix automated scans for non-Plex servers & incremental scan performance 2026-03-12 11:17:32 -07:00
wishlist_service.py Fix wishlisted tracks showing 'Unknown Album' with no cover art 2026-03-18 14:23:53 -07:00
youtube_client.py Strip '- Topic' suffix from YouTube auto-generated channel names (#231) 2026-03-31 21:06:05 -07:00