From 19b7c8ec061256172b0e4e1c13589865a6c4d7bc Mon Sep 17 00:00:00 2001 From: Psychotoxical Date: Tue, 14 Apr 2026 22:38:41 +0200 Subject: [PATCH] fix(favorites): correct post-merge issues from PR #184 - btn-sm: add global .btn-sm modifier to theme.css (was only scoped inside device-sync) - year filter: exclude songs without year metadata when filter is active - showing count: only render "X of Y" label when a filter is actually active Co-Authored-By: Claude Sonnet 4.6 --- src/pages/Favorites.tsx | 18 ++++++++++-------- src/styles/theme.css | 6 ++++++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/pages/Favorites.tsx b/src/pages/Favorites.tsx index 20fdead2..fdc840ad 100644 --- a/src/pages/Favorites.tsx +++ b/src/pages/Favorites.tsx @@ -228,9 +228,9 @@ export default function Favorites() { if (!hasMatchingGenre) return false; } - // Year range filter - if (s.year !== undefined) { - if (s.year < yearRange[0] || s.year > yearRange[1]) return false; + // Year range filter — only applied when range is non-default; songs without year are excluded + if (yearRange[0] !== MIN_YEAR || yearRange[1] !== CURRENT_YEAR) { + if (s.year === undefined || s.year < yearRange[0] || s.year > yearRange[1]) return false; } return true; @@ -316,11 +316,13 @@ export default function Favorites() { {/* Title Row with showing X of Y indicator */}

{t('favorites.songs')}

- - {selectedArtist - ? t('favorites.showingFiltered', { filtered: visibleSongs.length, total: songs.filter(s => starredOverrides[s.id] !== false).length, artist: selectedArtist }) - : t('favorites.showingCount', { filtered: visibleSongs.length, total: songs.filter(s => starredOverrides[s.id] !== false).length })} - + {(selectedArtist || selectedGenres.length > 0 || yearRange[0] !== MIN_YEAR || yearRange[1] !== CURRENT_YEAR) && ( + + {selectedArtist + ? t('favorites.showingFiltered', { filtered: visibleSongs.length, total: songs.filter(s => starredOverrides[s.id] !== false).length, artist: selectedArtist }) + : t('favorites.showingCount', { filtered: visibleSongs.length, total: songs.filter(s => starredOverrides[s.id] !== false).length })} + + )}
{/* Action Buttons */} diff --git a/src/styles/theme.css b/src/styles/theme.css index b37acdab..ffc0f023 100644 --- a/src/styles/theme.css +++ b/src/styles/theme.css @@ -3711,6 +3711,12 @@ body.psy-dragging * { transform: translateY(0); } +.btn-sm { + padding: 3px 8px; + font-size: 12px; + gap: var(--space-1); +} + /* ─── Input ─── */ .input { width: 100%;