diff --git a/backend/tracklist/config.go b/backend/tracklist/config.go index c6bdf9d..e1ba8d0 100644 --- a/backend/tracklist/config.go +++ b/backend/tracklist/config.go @@ -60,11 +60,16 @@ var AllColumnIDs = []ColumnID{ ColPlayCount, } -// DefaultColumns is the initial column configuration matching the -// original hardcoded layout. +// DefaultColumns is the initial column configuration. Album is in it +// (H-15): without it the three identical `Tideline / Aurora Fields / +// 00:06` rows in this app's own fixture library cannot be told apart, +// in an app that has a duplicate-detection feature. Must match +// DEFAULT_COLUMN_IDS in frontend/src/components/track-list/columns.ts, +// which is what the UI falls back to before the config arrives. var DefaultColumns = []Column{ {ID: ColTrackName}, {ID: ColArtistName}, + {ID: ColAlbum}, {ID: ColTrackLength}, } diff --git a/frontend/src/components/track-list/columns.ts b/frontend/src/components/track-list/columns.ts index 614603d..7880f96 100644 --- a/frontend/src/components/track-list/columns.ts +++ b/frontend/src/components/track-list/columns.ts @@ -249,9 +249,16 @@ export const CORE_SEARCH_COLUMN_IDS: string[] = [ 'album', ]; -/** Default column IDs matching the original hardcoded layout. */ +/** + * Default column IDs. Album is in them (H-15): without it, the three + * `Tideline / Aurora Fields / 00:06` rows in this app's own fixture + * library are indistinguishable, in an app that has duplicate + * detection. Must match `tracklist.DefaultColumns` in Go, which is what + * a fresh install actually persists. + */ export const DEFAULT_COLUMN_IDS: string[] = [ 'trackName', 'artistName', + 'album', 'trackLength', ]; diff --git a/frontend/src/store/search-store.ts b/frontend/src/store/search-store.ts index e764f90..3d6725b 100644 --- a/frontend/src/store/search-store.ts +++ b/frontend/src/store/search-store.ts @@ -19,6 +19,12 @@ const SEARCH_SCOPES: Record = { genres: 'genres', playlists: 'playlists', 'playlist-details': 'tracks in this playlist', + // Its sibling was in this map and it was not, so the box went + // disabled and unlabelled on a view that filters on the term all + // the same — typing narrowed the list under a placeholder saying + // there was nothing to search. Checked before adding: it reads + // `searchCtrl.term` in `getVisibleTracks` and says so in the page. + 'smart-playlist-details': 'tracks in this smart playlist', }; /** diff --git a/frontend/test/stores/view-stores.test.ts b/frontend/test/stores/view-stores.test.ts index c4e1b09..b189459 100644 --- a/frontend/test/stores/view-stores.test.ts +++ b/frontend/test/stores/view-stores.test.ts @@ -54,6 +54,10 @@ describe('search store', () => { 'albums', 'playlists', 'playlist-details', + // A detail view that filters on the term has to be in the map: + // this one was not, so the box was disabled and unlabelled on a + // page that narrowed its list as you typed. + 'smart-playlist-details', 'artists', 'genres', ].map((view) => {