From 19307630d179c3dac62ce4a4e0d70c46dd6f3d8e Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Mon, 18 May 2026 20:24:13 -0700 Subject: [PATCH] Fix missing album art for non-Spotify sources + animate Downloads nav icon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - watchlist_scanner: fall back to album.image_url when album object has no images list (affects MusicBrainz CAA URLs, iTunes, Deezer — all use image_url on the Album dataclass, not the Spotify-style images array) - Pulse Downloads nav icon while active downloads are in progress, same pattern as watchlist scan animation --- core/watchlist_scanner.py | 2 ++ webui/static/pages-extra.js | 4 ++++ webui/static/style.css | 13 +++++++++++++ 3 files changed, 19 insertions(+) diff --git a/core/watchlist_scanner.py b/core/watchlist_scanner.py index 6f9cbfb5..9fdb967b 100644 --- a/core/watchlist_scanner.py +++ b/core/watchlist_scanner.py @@ -2233,6 +2233,8 @@ class WatchlistScanner: album_id = album.id album_release_date = album.release_date album_images = album.images if hasattr(album, 'images') else [] + if not album_images and hasattr(album, 'image_url') and album.image_url: + album_images = [{'url': album.image_url}] album_type = album.album_type if hasattr(album, 'album_type') else 'album' total_tracks = album.total_tracks if hasattr(album, 'total_tracks') else 0 album_artists = album.artists if hasattr(album, 'artists') else [] diff --git a/webui/static/pages-extra.js b/webui/static/pages-extra.js index 2329fc3b..b794ddef 100644 --- a/webui/static/pages-extra.js +++ b/webui/static/pages-extra.js @@ -2248,6 +2248,10 @@ function _updateDlNavBadge(count) { badge.classList.add('hidden'); } } + const dlBtn = document.querySelector('.nav-button[data-page="active-downloads"]'); + if (dlBtn) { + dlBtn.classList.toggle('nav-downloads-active', count > 0); + } } function _adlRender() { diff --git a/webui/static/style.css b/webui/static/style.css index b062f60f..a17d2abd 100644 --- a/webui/static/style.css +++ b/webui/static/style.css @@ -449,6 +449,19 @@ body { color: rgba(var(--accent-rgb), 0.7); } +.nav-button.nav-downloads-active .nav-icon { + animation: watchlist-scan-glow 1.2s ease-in-out infinite; +} + +.nav-button.nav-downloads-active .nav-svg { + animation: nav-downloads-svg 1.2s ease-in-out infinite; +} + +@keyframes nav-downloads-svg { + 0%, 100% { opacity: 0.7; transform: translateY(0); } + 50% { opacity: 1; transform: translateY(1px); filter: drop-shadow(0 0 3px rgba(var(--accent-rgb), 0.8)); } +} + .nav-button.nav-watchlist-scanning .nav-icon { animation: watchlist-scan-glow 1.6s ease-in-out infinite; }