Skip to content

[006] Filter facets (genre/language) only reflect the loaded page #74

Description

@PeterOnCode

Follow-up from the PR #73 review (deferred — not a merge blocker).

Problem

app/pages/library.vue derives the genre/language filter-bar options from items.value (the currently loaded page) only:

const genreOptions = computed(() => [...new Set(items.value.map(i => i.metadata?.genre)...)])
const languageOptions = computed(() => [...new Set(items.value.flatMap(i => i.metadata?.languages ?? []))])

With server-side pagination, genre/language values that exist elsewhere in the library are absent from the menus, so a user can't narrow the whole library by a value that doesn't happen to appear on the current page. (The chosen value does filter the whole library server-side — it just may not be offered.)

This is a documented intentional default today, not a regression.

Suggested fix

Expose a lightweight server endpoint for the library's distinct genres/languages (independent of the current page), or compute facets from the full matching set, and feed those into LibraryFilterBar.

Notes

  • Severity: medium (UX completeness).
  • Source: Codex headless review of PR [006] Library redesign — waveform tag-editor (WIP) #73.
  • The other five review findings are fixed on the branch (bulk-retag data-loss, date-only filter bounds, date display TZ, embeddable extra tags, fmtDuration, audio-props cache, + atomic rename/retag and post-save reload).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions