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 30bf89ec4..a93831079 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 d705617e1..8a7fd2ae4 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 2a04b8127..600fa74af 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 f067e11d2..98684132f 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',