This release includes 1 security fix for security teams reviewing exposed deployments.
Affected surfaces
ReleasePort's take
Light signalVersion 2.5.4 of SoulSync adds the _redact_url_secrets helper to strip Plex, Jellyfin, and Navidrome tokens from app.log.
Why it matters: Prevents sensitive third‑party token leakage in logs; adopt immediately for any environment logging these credentials.
Summary
AI summarySecurity fix prevents Plex/Jellyfin/Navidrome token leakage in logs.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Medium |
_redact_url_secrets helper removes Plex/Jellyfin/Navidrome tokens from app.log. _redact_url_secrets helper removes Plex/Jellyfin/Navidrome tokens from app.log. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
T2Tunes-backed Amazon Music download source with FLAC, Opus, and Dolby Atmos fallback. T2Tunes-backed Amazon Music download source with FLAC, Opus, and Dolby Atmos fallback. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Full ASIN enrichment worker for artists, albums, and tracks in Amazon Music. Full ASIN enrichment worker for artists, albums, and tracks in Amazon Music. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Library badges added to artist cards, hero section, and enhanced view. Library badges added to artist cards, hero section, and enhanced view. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Match status chips with click-to-rematch functionality for Amazon Music. Match status chips with click-to-rematch functionality for Amazon Music. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
ASINs in Amazon Music link to music.amazon.com. ASINs in Amazon Music link to music.amazon.com. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Scoped Amazon download source and enricher correctly, not a metadata source. Scoped Amazon download source and enricher correctly, not a metadata source. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
New automation action syncs discover-page playlists to active media server. New automation action syncs discover-page playlists to active media server. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Automation builder includes per-kind/variant multi-select picker for playlist config. Automation builder includes per-kind/variant multi-select picker for playlist config. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
All 8 discover-page playlist types unified under one storage layer with stable identity and per-playlist configuration. All 8 discover-page playlist types unified under one storage layer with stable identity and per-playlist configuration. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
REST endpoints for personalized playlists introduced at `/api/personalized/*`. REST endpoints for personalized playlists introduced at `/api/personalized/*`. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Performance | Medium |
Dashboard Bento redesign with responsive breakpoints and cursor-following accent blob. Dashboard Bento redesign with responsive breakpoints and cursor-following accent blob. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Bugfix | Medium |
Fixed Daily Mix to return honest discovery-only results instead of empty library half. Fixed Daily Mix to return honest discovery-only results instead of empty library half. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Bugfix | Medium |
AcoustID multi-candidate suppression, duration guard, and multi-value retag implemented (#587). AcoustID multi-candidate suppression, duration guard, and multi-value retag implemented (#587). Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Bugfix | Medium |
Resolved live recording false-quarantine issue (#607). Resolved live recording false-quarantine issue (#607). Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Bugfix | Medium |
Fixed quarantine modal apostrophe XSS vulnerability (#608). Fixed quarantine modal apostrophe XSS vulnerability (#608). Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Bugfix | Medium |
Removed LYRICS tag during retag process. Removed LYRICS tag during retag process. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Bugfix | Medium |
Corrected track number writing from "6/0" to proper format. Corrected track number writing from "6/0" to proper format. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Bugfix | Medium |
Fixed dashboard activity display from "NaNmo ago" to accurate timing. Fixed dashboard activity display from "NaNmo ago" to accurate timing. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Automation action handlers extracted from `web_server.py` into `core/automation/handlers/`. Automation action handlers extracted from `web_server.py` into `core/automation/handlers/`. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Refactor | Medium |
_pipeline_shared logic moved to eliminate duplication between mirrored and personalized pipelines. _pipeline_shared logic moved to eliminate duplication between mirrored and personalized pipelines. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Refactor | Medium |
Moved log calls for tokens to DEBUG level using _redact_url_secrets. Moved log calls for tokens to DEBUG level using _redact_url_secrets. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Reorganized embedded-tag mode for clarity (#592). Reorganized embedded-tag mode for clarity (#592). Source: llm_adapter@2026-05-21 Confidence: low |
— |
Full changelog
v2.5.4 Release — dev → main
Summary
-
Amazon Music — T2Tunes-backed download source (24-bit/48kHz FLAC primary, Opus 320kbps / Dolby Atmos EAC3 fallback). Full enrichment worker with ASIN matching for artists/albums/tracks, artist thumbnail backfill, enrichment orb + rate-limit gauge on dashboard. Library badges on artist cards, hero section, and enhanced view. Match status chips with click-to-rematch. Album/track ASINs link to music.amazon.com. Scoped correctly as download source + enricher only — not a metadata source (T2Tunes has no discography API).
-
Personalized Playlist Pipeline — new automation action that syncs discover-page playlists (Hidden Gems, Time Machine, Fresh Tape, The Archives, Seasonal Mix, Daily Mix, etc.) to your active media server and queues missing tracks for download. Auto-refreshes stale snapshots after watchlist scan completes. Configurable per-kind/variant multi-select picker in the automation builder.
-
Personalized Playlists Overhaul — all 8 discover-page playlist types unified under one storage layer. Playlists now have stable identity, persistent track snapshots, explicit refresh, and per-playlist config (limit, diversity caps, popularity bounds, recency window). REST endpoints under
/api/personalized/*. Daily Mix fixed (was returning empty library half, now honestly discovery-only). -
Dashboard Bento Redesign — full bento grid layout with responsive breakpoints (3-col → 2-col → single). Cursor-following accent blob with lag + pulse. Cards darkened for contrast. Respects "reduce visual effects" setting.
-
Automation Handlers Extraction — all automation action handlers lifted out of
web_server.pyintocore/automation/handlers/. Shared pipeline sync/wishlist logic in_pipeline_sharedeliminates duplication between mirrored and personalized pipelines. -
Security: Token Leak Fixes — Plex/Jellyfin/Navidrome tokens were landing in
app.logvia artwork URLs and artist-endpoint debug lines. Fixed with_redact_url_secretshelper (covers both plain and URL-encoded forms) + moved log calls to DEBUG. Wipe existingapp.logif affected. -
Bug fixes — AcoustID multi-candidate suppression + duration guard + multi-value retag (#587), quarantine modal apostrophe XSS (#608), live recording false-quarantine (#607), reorganize embedded-tag mode (#592), retag stripping LYRICS tag, track number writing "6/0", dashboard activity "NaNmo ago".
Changed files (highlights)
| Area | Files |
|---|---|
| Amazon download + metadata | core/amazon_client.py, core/amazon_download_client.py |
| Amazon enrichment | core/amazon_worker.py |
| Amazon UI | webui/static/library.js, api-monitor.js, enrichment.js, worker-orbs.js, core.js, style.css, amazon.svg |
| Personalized playlists | core/personalized/generators/*, core/personalized/manager.py |
| Personalized pipeline | core/automation/handlers/_pipeline_shared.py, handlers/personalized_pipeline.py |
| Automation extraction | core/automation/handlers/* |
| Dashboard | webui/static/api-monitor.js, style.css |
| Security | web_server.py (_redact_url_secrets), core/discovery/sync.py |
| AcoustID | core/matching/acoustid_candidates.py, core/matching/version_mismatch.py, core/tag_writer.py |
| Reorganize | core/library/reorganize_tag_source.py |
| DB | database/music_database.py (amazon_id columns, watchlist_artists.amazon_artist_id) |
| Registry | core/metadata/registry.py (Amazon removed from metadata source priority) |
Security Fixes
- CVE‑2025‑XXXXX — Plex/Jellyfin/Navidrome tokens no longer appear in app.log; fixed via _redact_url_secrets helper and log level change. Existing logs should be wiped.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Related context
Related tools
Beta — feedback welcome: [email protected]