Expanded date fields (#2276)

* added missing date/year fields for other song references

* added year table column & sorting

* added navidrome track date view for grid, detail & table.

* update table column config

* Displays date & release date using formatPartialIsoDateUTC, and displays respective year field if no date present
added releaseYear player filter
Made fullscreen player show formatted date
fixed minor year/release year value mismatches
added subsonic date/year field to enable the fields in folder view for navidrome using subsonic year field

---------

Co-authored-by: Jeff <42182408+jeffvli@users.noreply.github.com>
This commit is contained in:
ermmmwafle
2026-08-03 19:54:16 -07:00
committed by GitHub
parent fd9380a149
commit 64dc3c1bc2
30 changed files with 418 additions and 81 deletions
@@ -6,7 +6,11 @@ import { generatePath, Link } from 'react-router';
import { SongPath } from '/@/renderer/features/item-details/components/song-path';
import { AppRoute } from '/@/renderer/router/routes';
import { formatDurationString, formatSizeString } from '/@/renderer/utils';
import { formatDateRelative, formatRating } from '/@/renderer/utils/format';
import {
formatDateRelative,
formatPartialIsoDateUTC,
formatRating,
} from '/@/renderer/utils/format';
import { replaceURLWithHTMLLinks } from '/@/renderer/utils/linkify';
import { normalizeReleaseTypes } from '/@/renderer/utils/normalize-release-types';
import { sanitize } from '/@/renderer/utils/sanitize';
@@ -304,7 +308,24 @@ const SongPropertyMapping: ItemDetailRow<Song>[] = [
},
{ key: 'discNumber', label: 'common.disc' },
{ key: 'trackNumber', label: 'common.trackNumber' },
{ key: 'releaseYear', label: 'filter.releaseYear' },
{
key: 'date',
label: 'filter.date',
render: (song) => (song.date ? formatPartialIsoDateUTC(song.date) : null),
},
{
label: 'filter.year',
render: (song) => (!song.date ? song.year : null),
},
{
key: 'releaseDate',
label: 'filter.releaseDate',
render: (song) => (song.releaseDate ? formatPartialIsoDateUTC(song.releaseDate) : null),
},
{
label: 'filter.releaseYear',
render: (song) => (!song.releaseDate ? song.releaseYear : null),
},
{
label: 'filter.explicitStatus',
render: (song, t) =>