From 084543e59b7c0a9fc93fcf2d92ed79df81e67f57 Mon Sep 17 00:00:00 2001 From: Psychotoxical Date: Fri, 10 Apr 2026 14:37:29 +0200 Subject: [PATCH] fix(tracklist): split multi-artist tracks and fix reset button style MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use OpenSubsonic `artists[]` array to render each artist separately with · separator; artists with an ID are clickable, others plain text - Fall back to single artist (artistId/artist) on non-OpenSubsonic servers - Settings reset-to-defaults buttons changed from btn-ghost to btn-danger Co-Authored-By: Claude Sonnet 4.6 --- src/components/AlbumTrackList.tsx | 25 +++++++++++++++++-------- src/pages/Settings.tsx | 4 ++-- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/components/AlbumTrackList.tsx b/src/components/AlbumTrackList.tsx index 268fc109..c3dc6837 100644 --- a/src/components/AlbumTrackList.tsx +++ b/src/components/AlbumTrackList.tsx @@ -227,18 +227,27 @@ export default function AlbumTrackList({ {song.title} ); - case 'artist': + case 'artist': { + const artistRefs = song.artists && song.artists.length > 0 + ? song.artists + : [{ id: song.artistId, name: song.artist }]; return (
- { if (song.artistId) { e.stopPropagation(); navigate(`/artist/${song.artistId}`); } }} - > - {song.artist} - + {artistRefs.map((a, i) => ( + + {i > 0 &&  · } + { if (a.id) { e.stopPropagation(); navigate(`/artist/${a.id}`); } }} + > + {a.name ?? song.artist} + + + ))}
); + } case 'favorite': return (
diff --git a/src/pages/Settings.tsx b/src/pages/Settings.tsx index dde97731..f3a12401 100644 --- a/src/pages/Settings.tsx +++ b/src/pages/Settings.tsx @@ -1437,7 +1437,7 @@ export default function Settings() {
-
@@ -1523,7 +1523,7 @@ export default function Settings() {

-