Repository navigation
feat(web): find, filter, and sort the Watchlist and History - #11
Merged
danielrpof merged 142 commits intoOct 13, 2026
Merged
Conversation
- two LEFT JOIN LATERAL ... LIMIT 1 joins in ListWatchlist and GetWatchlistEntry - upcoming decided in Postgres at the date's own precision against UTC today - Entry.LatestReleaseDate / NextReleaseDate as always-present nullable JSON keys
- table of subtests for precision, event types, age, null dates and UTC-year boundary - ProjectionParity now seeds releases and asserts both fields across Add/Update/UpdateNote
- add latest_release_date/next_release_date to WatchlistEntry - add formatReleaseDate (string-only, no Date construction) - render latest-release line and conditional Upcoming segment
…oute comment - formatReleaseDate table over year, year-month, full date, malformed - makeEntry builder for later Phase 25 plans - upcoming-only and literal-markup route tests - replace outdated Phase 06 module comment
- EXISTS over artist_tags in ListEvents and HasOlderEvents - events.ListParams.TagID passed to both queries - tag_id parsing with fixed invalid tag_id 400 - tracer test over two artists with no watchlist rows
…tion - retention holds on first page, every cursor page, and has_older_events - tag_id composes with artist_id and event_type; unknown id yields empty page - tag_id validation cases and TagID reaching both queries
- pure watchlistView fold/match/select helpers, kept out of api.ts - useUrlParams as the single URL writer (preventScrollReset always on) - Your artists section, name filter toolbar, debounced q write
- toolbar clear x and Esc cases fail until implemented
…, sticky cards - Clear filters resets q/tags/muted/custom in one push and keeps sort - count announcements debounced 500ms through the route status region - in-card edits, adds, and Undo restores join the sticky set (G4)
- listEvents sends tag_id; sortTagsByName helper - Tag combobox after Event type, one GET /tags per mount - Load more carries the selected tag
… labels - Loading tags / Tag unavailable trigger labels - listbox max height, scrollIntoView, trigger truncation - sortTagsByName collation and id tie-break
- listbox max-h-72 with scroll, highlighted option scrolled into view - trigger max-w-64 with truncated, titled label - Loading tags / Tag unavailable labels when a selected tag can't be named
- precedence: retention, tag, filtered, unfiltered - Show all tags clears only the tag and refocuses the Tag trigger
- six sort modes with id-ascending tie-break and null-last latest release - sort follows the URL (push) and clears sticky cards
…ment - comparator tables for all six modes - invalid sort cleanup, sort announcement, Clear filters keeps sort
- unknown or default sort is dropped from the URL with replace - sort change cancels the pending count message and announces Sorted by
- parseHistoryParams/canonicalHistoryParams for artist, type, tag - filters read via useUrlParams; changes and Show all tags push
25-20: focus relocation is keyboard-only (click detail === 0); mouse-click no-move tests; route tests cited by name. 25-21: race exception sourced from the 2026-10-12 UAT waiver. 25-19: note why CONTEXT stays unchanged. UAT checks now baseline on 1cb2a7b.
…leaves - anchorCandidates lists every sibling card nearest-first, next before previous - hook and route tests cover a run of adjacent leaving cards (G-25-11)
…ard toggle removes the card - TagChips passes click detail === 0 as viaKeyboard; chip label gains data-chip-label - useScrollAnchor reports the surviving card via useEffectEvent when a keyboard capture's focus is lost - route focuses the fallback card's pressed chip label with preventScroll
- heading gets tabIndex -1 and a ref as the no-survivor focus target - tests pin the heading fallback, the run-of-leavers target, and the hook's keyboard-only gates
…hint - sr-only hint span with a per-row useId id, aria-describedby on the button - wrapper title and 40% cap unchanged; no visual change
- fallback anchor, keyboard focus move, and Deezer button description - superseded hashed assets removed
Coverage
head b36b27b · 2026-10-13T02:33:07Z |
Clears CVE-2026-78667, CVE-2026-78669 and CVE-2026-97031 flagged by Trivy in usr/local/bin/server.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.