From 07c16dca5827e000dfa58f106a65f6c042e9df24 Mon Sep 17 00:00:00 2001 From: Vito Sansevero Date: Wed, 28 Oct 2026 20:00:49 -0700 Subject: [PATCH] fix(library): let saved-view defaults fill the missing #444 filters libraryViewState passed `?? 'all'` and `?? ''` fallbacks that normalizeViewState already applies to an undefined value. The redundant branches were never taken in the page, which dropped saved-views.mjs below its 95% branch floor. A unit now covers a shelf without the new filters. Refs #444 --- tests/js/workspace-saved-views.test.js | 5 +++++ web/js/workspace/saved-views.mjs | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/js/workspace-saved-views.test.js b/tests/js/workspace-saved-views.test.js index 9a281fe2..172142d2 100644 --- a/tests/js/workspace-saved-views.test.js +++ b/tests/js/workspace-saved-views.test.js @@ -231,3 +231,8 @@ test('a Library view keeps untagged, and untagged never travels with tags (#444) assert.equal(libraryViewState(shelf).tag_mode, 'untagged'); assert.deepEqual(libraryFilters(libraryViewState(shelf)), shelf); }); + +test('a shelf without the #444 filters saves their defaults', async () => { + const { libraryViewState } = await source; + assert.deepEqual(libraryViewState({ text: '', category: '', sort: 'newest', tags: [] }), LIBRARY_DEFAULTS); +}); diff --git a/web/js/workspace/saved-views.mjs b/web/js/workspace/saved-views.mjs index fa370575..93c9dccd 100644 --- a/web/js/workspace/saved-views.mjs +++ b/web/js/workspace/saved-views.mjs @@ -121,7 +121,8 @@ export function libraryFilters(state) { } export function libraryViewState(filters) { return normalizeViewState('library', { q: filters.text, category: filters.category, sort: filters.sort, tags: filters.tags, - tag_mode: filters.tagMode ?? 'all', folder: filters.folder ?? '' }); + // A filter the shelf lacks (undefined) takes its key's default in normalizeViewState. + tag_mode: filters.tagMode, folder: filters.folder }); } /**