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.9 KiB
2.9 KiB
Summary
Adds source-aware artist detail deep links so artist pages can be opened directly as /artist-detail/:source/:id, including metadata-source artists from Spotify, Deezer, iTunes, Discogs, Amazon, Hydrabase, and existing library artists.
This also fixes Discover/download modal artist links that were falling back to /artist-detail/library/<artist name> or using the wrong album/card ID as an artist ID.
What Changed
- Added canonical artist detail routes in the SPA:
/artist-detail/library/<library_artist_id>/artist-detail/spotify/<spotify_artist_id>/artist-detail/deezer/<deezer_artist_id>/artist-detail/itunes/<itunes_artist_id>- plus other supported metadata sources.
- Preserved legacy
/artist-detail/<id>behavior as a library fallback. - Updated shell routing and deep-link activation so refresh/direct navigation works for nested artist-detail URLs.
- Updated artist detail navigation to carry
artistSourcethrough the SPA instead of relying only on artist name/id. - Improved source-only artist detail loading so provider-fetched artist names are used when the URL only contains the source ID.
- Prevented source-only artist pages from running library-only ownership/enhancement checks.
- Treats unknown ownership on source-only discographies as missing/clickable instead of leaving cards stuck on "still checking ownership."
- Uses release artwork as a generic artist-detail hero fallback when an artist portrait is missing or fails to load.
- Preserved source/artist IDs from Discover album modals, seasonal albums, cached discovery albums, recent releases, and download modal hero links.
- Prevented modal artist links from falling back to fake library routes when a real source artist ID is unavailable.
- Returned seasonal album
sourcefrom cached seasonal album rows so seasonal modal links retain their provider context.
Behavior
- Clicking a Spotify artist result can now land on:
/artist-detail/spotify/2YZyLoL8N0Wb9xBt1NhZWg
- Clicking a Deezer artist result can now land on:
/artist-detail/deezer/525046
- Existing library artist links continue to resolve through the library path.
- If a source artist resolves to an existing library artist, the page upgrades to the library-backed artist and keeps library-only tools/checks available.
- If a source artist is not in the library, the page shows source discography as missing/clickable and skips library-only endpoints.
- If a modal lacks a trustworthy source artist ID, it shows a warning instead of navigating to an invalid library artist URL.
Tests
Frontend route tests:
cd webui
npm.cmd test -- --run src/platform/shell/route-manifest.test.ts src/platform/shell/bridge.test.ts
Result:
2 test files passed
10 tests passed
Recommended backend verification:
./.venv/bin/python -m pytest tests/test_spa_deep_linking.py tests/metadata/test_artist_source_detail.py