From 45df497ee6d9efa3419ff09808c6250f09053981 Mon Sep 17 00:00:00 2001 From: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Date: Sun, 18 Jan 2026 17:19:30 -0800 Subject: [PATCH] natural numeric sort for tag and disable disc/track total for nd track filter --- src/renderer/api/jellyfin/jellyfin-controller.ts | 4 +++- src/renderer/api/navidrome/navidrome-controller.ts | 12 +++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/renderer/api/jellyfin/jellyfin-controller.ts b/src/renderer/api/jellyfin/jellyfin-controller.ts index f4066bea9..0fdc1c3d0 100644 --- a/src/renderer/api/jellyfin/jellyfin-controller.ts +++ b/src/renderer/api/jellyfin/jellyfin-controller.ts @@ -1251,7 +1251,9 @@ export const JellyfinController: InternalControllerEndpoint = { tags.push({ name: 'Tags', options: res.body.Tags.sort((a, b) => - a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase()), + a + .toLocaleLowerCase() + .localeCompare(b.toLocaleLowerCase(), undefined, { numeric: true }), ).map((tag) => ({ id: tag, name: tag })), }); } diff --git a/src/renderer/api/navidrome/navidrome-controller.ts b/src/renderer/api/navidrome/navidrome-controller.ts index b51da1596..9a136ec24 100644 --- a/src/renderer/api/navidrome/navidrome-controller.ts +++ b/src/renderer/api/navidrome/navidrome-controller.ts @@ -59,19 +59,17 @@ const EXCLUDED_ALBUM_TAGS = new Set([ 'asin', 'barcode', 'copyright', - 'disctotal', 'encodedby', 'isrc', 'key', 'language', 'musicbrainz_workid', 'script', - 'tracktotal', 'website', 'work', ]); -const EXCLUDED_SONG_TAGS = new Set([]); +const EXCLUDED_SONG_TAGS = new Set(['disctotal', 'tracktotal']); // Tags that use IDs as values as opposed to the tag value const ID_TAGS = new Set(['albumversion', 'mood']); @@ -747,7 +745,7 @@ export const NavidromeController: InternalControllerEndpoint = { const { apiClientProps } = args; if (!hasFeature(apiClientProps.server, ServerFeature.TAGS)) { - return { boolTags: undefined, enumTags: undefined, excluded: { album: [], song: [] } }; + return { excluded: { album: [], song: [] } }; } const res = await ndApiClient(apiClientProps).getTagList({ @@ -783,7 +781,11 @@ export const NavidromeController: InternalControllerEndpoint = { name: data[0], options: data[1] .sort((a, b) => - a.name.toLocaleLowerCase().localeCompare(b.name.toLocaleLowerCase()), + a.name + .toLocaleLowerCase() + .localeCompare(b.name.toLocaleLowerCase(), undefined, { + numeric: true, + }), ) .map((option) => ({ id: option.id, name: option.name })), }))