From 8e96dd0784428d98c742b6748175d8d172cf0728 Mon Sep 17 00:00:00 2001 From: Alex Gustafsson Date: Sun, 18 Jan 2026 19:15:53 +0100 Subject: [PATCH] feat(ui): add composer field to table views (#4857) * feat(ui): Add composer field to datatables In order to make the UI a bit more useful for classical music, where the recorded artist isn't the composer of the work, add the composer field to the song and album datatables. To not affect existing users, the field is default off. * Fix typo * Remove composer field for albums Albums can have more than one composer. Showing all or just one of them in a list doesn't really make sense. * Format code --- resources/i18n/sv.json | 1 + ui/src/album/AlbumSongs.jsx | 4 ++++ ui/src/i18n/en.json | 1 + ui/src/song/SongList.jsx | 2 ++ 4 files changed, 8 insertions(+) diff --git a/resources/i18n/sv.json b/resources/i18n/sv.json index 30bf89ec..a9383107 100644 --- a/resources/i18n/sv.json +++ b/resources/i18n/sv.json @@ -10,6 +10,7 @@ "playCount": "Spelningar", "title": "Titel", "artist": "Artist", + "composer": "Kompositör", "album": "Album", "path": "Sökväg", "genre": "Genre", diff --git a/ui/src/album/AlbumSongs.jsx b/ui/src/album/AlbumSongs.jsx index d705617e..8a7fd2ae 100644 --- a/ui/src/album/AlbumSongs.jsx +++ b/ui/src/album/AlbumSongs.jsx @@ -108,6 +108,9 @@ const AlbumSongs = (props) => { /> ), artist: isDesktop && , + composer: isDesktop && ( + + ), duration: , year: isDesktop && ( { columns: toggleableFields, omittedColumns: ['title'], defaultOff: [ + 'composer', 'channels', 'bpm', 'year', diff --git a/ui/src/i18n/en.json b/ui/src/i18n/en.json index 2a04b812..600fa74a 100644 --- a/ui/src/i18n/en.json +++ b/ui/src/i18n/en.json @@ -10,6 +10,7 @@ "playCount": "Plays", "title": "Title", "artist": "Artist", + "composer": "Composer", "album": "Album", "path": "File path", "libraryName": "Library", diff --git a/ui/src/song/SongList.jsx b/ui/src/song/SongList.jsx index f067e11d..98684132 100644 --- a/ui/src/song/SongList.jsx +++ b/ui/src/song/SongList.jsx @@ -145,6 +145,7 @@ const SongList = (props) => { return { album: isDesktop && , artist: , + composer: , albumArtist: , trackNumber: isDesktop && , playCount: isDesktop && ( @@ -192,6 +193,7 @@ const SongList = (props) => { resource: 'song', columns: toggleableFields, defaultOff: [ + 'composer', 'channels', 'bpm', 'playDate',