soulsync/core
BoulderBadgeDad 405b0988d6 Cover Art Filler: skip files that already have art (keep apply purely additive)
Verification found a non-additive edge: embed_album_art_metadata uses FLAC
add_picture(), which APPENDS — so applying to an album where some tracks already
had art would have added a duplicate embedded picture. The apply now checks each
file and skips any that already carry art (shared _audio_has_art helper), so it
only ever ADDS art to files missing it. Test covers the skip (no re-embed).
2026-06-03 22:17:20 -07:00
..
artists
automation Merge pull request #780 from kekkokk/feature/organize-by-playlist-library 2026-06-03 20:33:18 -07:00
discovery Fix standalone mirrored playlist sync and post-sync downloads. 2026-06-04 00:24:00 +02:00
download_engine
download_plugins Fix: torrent/usenet album bundle hard-fails on 'no results' instead of falling back 2026-06-01 09:55:59 -07:00
downloads Fix #780: Deezer/non-Spotify organize-by-playlist resolved the wrong row 2026-06-03 20:41:04 -07:00
enrichment Similar Artists enrichment worker (MusicMap → match → store) for library artists 2026-06-03 15:07:49 -07:00
imports Merge pull request #780 from kekkokk/feature/organize-by-playlist-library 2026-06-03 20:33:18 -07:00
library Fix: duplicate detector kept lossy over lossless (rank format first) 2026-06-01 12:49:34 -07:00
matching
media_server
metadata Cover Art Filler: skip files that already have art (keep apply purely additive) 2026-06-03 22:17:20 -07:00
personalized
playback Player: log SoulSync web-player plays (recently-played + smart-radio recency) 2026-05-30 15:11:46 -07:00
playlists PR #780 follow-ups: snapshot-based stale check + submit guard + dead code 2026-06-03 20:45:17 -07:00
radio Player revamp Phase 2: smart radio ranking (play-count + popularity) 2026-05-30 08:47:18 -07:00
repair_jobs Cover Art Filler: detect missing art ON DISK + actually write it to files 2026-06-03 22:12:56 -07:00
search Basic search: visual overhaul + per-source picker in hybrid mode 2026-05-28 10:22:07 -07:00
stats
streaming Player revamp Phase 3a: extract stream state into testable per-session store 2026-05-30 08:59:15 -07:00
sync #766 follow-on: source rows borrow their matched server track's cover 2026-06-02 11:08:35 -07:00
text Fix #768: playlist sync editor refusing to match certain tracks 2026-06-02 10:16:21 -07:00
torrent_clients Fix: qBittorrent 5.2.0+ login probe fails (HTTP 204 not handled) 2026-06-03 21:43:11 -07:00
usenet_clients Fix: Usenet bundle stuck at 99%/100% — SAB reports post-processing in History as non-terminal (#721) 2026-05-29 00:49:02 -04:00
watchlist
webui
wishlist Fix organize-by-playlist downloads: library entries, wishlist, and stale Spotify cache 2026-06-03 10:26:32 +02:00
workers
acoustid_client.py AcoustID: report errors honestly instead of masking them as 'Skipped' 2026-05-31 20:10:31 -07:00
acoustid_verification.py AcoustID: report errors honestly instead of masking them as 'Skipped' 2026-05-31 20:10:31 -07:00
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
amazon_outage.py Fix #759: Amazon enrichment floods when its public proxy is down 2026-06-01 13:10:51 -07:00
amazon_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
api_call_tracker.py
archive_pipeline.py
artist_source_detail.py
artist_source_lookup.py Source IDs: add canonical registry, adopt at the highest-value sites 2026-05-29 12:19:59 -07:00
audiodb_client.py
audiodb_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
auto_import_worker.py
automation_engine.py Wire automation engine through next_run_at + register monthly_time (PR 2/4) 2026-05-27 12:03:41 -07:00
connection_detect.py
connection_test.py
database_update_worker.py
db_integrity.py DB backups: verify integrity + never evict the last good backup 2026-05-30 21:13:04 -07:00
debug_info.py
deezer_client.py
deezer_download_client.py
deezer_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
discogs_client.py Discogs: strip artist disambiguation suffixes at every name surface (#634) 2026-05-27 09:05:47 -07:00
discogs_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
download_orchestrator.py
genius_client.py
genius_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
genre_filter.py
hifi_client.py
hydrabase_client.py
hydrabase_worker.py
image_cache.py Image cache: reject truncated downloads instead of caching broken covers (#750) 2026-05-30 17:45:01 -07:00
itunes_client.py
itunes_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
jellyfin_client.py
lastfm_client.py
lastfm_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
library_reorganize.py Canonical album version — Stage 3: Reorganizer prefers pinned canonical (read) 2026-06-02 11:45:31 -07:00
lidarr_download_client.py
listenbrainz_client.py
listenbrainz_manager.py Auto-Sync: fix LB pipelines stuck on "Refreshing:" for 5+ minutes 2026-05-27 18:04:55 -07:00
listening_stats_worker.py
lyrics_client.py
matching_engine.py Fix: duplicate tracks in albums with Japanese / CJK titles (#722) 2026-05-28 08:53:43 -07:00
metadata_service.py
musicbrainz_client.py MusicBrainz manual search: field-scope the artist in non-strict mode (#754) 2026-05-31 10:05:24 -07:00
musicbrainz_search.py Fix: MusicBrainz artist discography capped at 25 releases 2026-05-28 12:00:05 -07:00
musicbrainz_service.py
musicbrainz_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
navidrome_client.py Fix #766: Navidrome album covers blank in the sync editor (+ other modals) 2026-06-02 11:01:28 -07:00
personalized_playlists.py
plex_client.py
prowlarr_client.py
qobuz_client.py
qobuz_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
reorganize_queue.py
reorganize_runner.py
repair_worker.py Cover Art Filler: detect missing art ON DISK + actually write it to files 2026-06-03 22:12:56 -07:00
replaygain.py
runtime_state.py
seasonal_discovery.py
similar_artists_worker.py Lint: fix ruff B905 (zip strict=) + S110 (try/except/pass) in similar-artists worker + perf endpoint 2026-06-03 16:35:19 -07:00
socketio_cors.py
soulid_worker.py
soulseek_client.py Album bundle: fall back to per-track when the chosen folder yields nothing 2026-05-29 19:46:52 -07:00
soulsync_client.py
soundcloud_client.py
source_ids.py Source IDs: add canonical registry, adopt at the highest-value sites 2026-05-29 12:19:59 -07:00
spotify_client.py
spotify_public_api.py SpotipyFree integration confirmed working (236 tracks live); deps + meta tweak 2026-06-02 22:50:04 -07:00
spotify_public_scraper.py Diagnostics: route public-fetch logs to soulsync namespace + log HTTP status 2026-06-02 22:09:51 -07:00
spotify_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
tag_writer.py Embed highest-resolution album art across all art paths 2026-05-28 13:21:53 -07:00
tidal_client.py
tidal_download_client.py
tidal_worker.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
watchlist_scanner.py
web_scan_manager.py
wishlist_service.py
worker_utils.py Enrichment manager: 'process this group first' + refined hero header 2026-06-02 19:45:04 -07:00
youtube_client.py