mirror of https://github.com/Nezreka/SoulSync.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.3 KiB
2.3 KiB
Summary
Adds a new Manual Library Match tool that lets users map a wishlist/sync source track to an existing library track. Once saved, SoulSync can treat that source track as already owned/found instead of repeatedly trying to download it.
What Changed
- Added a centralized Manual Library Match tool on the Tools page and a shortcut from the Sync page.
- Added side-by-side source-track and library-track search UI, plus an existing matches table with removal support.
- Added
manual_library_track_matchespersistence with profile/source/source-track scoping. - Added backend search/list/save/delete endpoints for manual matches.
- Integrated manual matches into download analysis so matched source tracks are marked found and skipped.
- Preserved the distinction between wishlist internal force mode and explicit user Force Download All:
- Wishlist/internal
force_download_allstill honors manual matches. - User-facing Force Download All ignores manual matches and downloads anyway.
- Wishlist/internal
- Updated wishlist cleanup so manual matches are removed from the wishlist through:
- manual wishlist cleanup,
- automatic cleanup after DB update,
- wishlist download analysis.
- Prevented manually matched source tracks from being re-added to the wishlist in the common database add path.
- Polished the Tools page card so Manual Library Match visually matches the Discovery Pool tool card.
Behavior
- Manual match saved:
source + source_track_id + profile_id -> library_track_id
- Wishlist cleanup:
- removes the item if a manual match exists.
- Wishlist add:
- skips inserting the item if a manual match already exists, returning a harmless success/no-op.
- Wishlist download:
- checks manual match first, marks found, skips download, and attempts wishlist removal.
- Normal download with Force Download All off:
- checks manual match before normal library matching.
- Normal download with Force Download All on:
- skips manual matches and downloads selected tracks intentionally.
Tests
Verified by user:
./.venv/bin/python -m pytest tests/test_manual_library_match.py tests/downloads/test_downloads_master.py
Result:
43 passed in 10.29s
Additional local verification:
py_compile passed for touched Python files
node --check passed for touched JS