* feat(collections): add profile-scoped display filters
* refactor(collections): dedup display-filter helpers per review
Address code-review feedback on the profile-scoped display filters
without changing behavior:
- Widen CompletedHistoryItemMap to accept ProgressCompletionStore and
drop the duplicate completedHistoryItemMapForProgress copy.
- Extract the duplicated MDBList candidate retry loop into a generic
collectionutil.FetchMDBListWithFallback helper, used by both the user
and library collection syncers, and cover it with unit tests.
- Reuse validateOptionalLibraryIDs in HandleUpdateCollection instead of
an inline positive-ID loop.
- Import the shared COLLECTION_{WATCH,MEDIA}_FILTER_OPTIONS in the
template config form rather than redefining them locally.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(collections): sanitize query_definition library_ids fallback
readSourceConfigLibraryIDs validated source_config.library_ids (finite,
positive, truncated, deduplicated) but returned the query_definition
fallback raw, so legacy rows could surface zero/negative/duplicate IDs
that the backend now rejects on save. Extract a shared sanitizer and
apply it to both paths.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* refactor(docs): This makes the agents annoying to work with
* Improve playback session handling
* Support collection source order in catalog filters
* fix(collections): address display filter review feedback
* refactor(catalog): remove duplicate collection query params
* Hide episode media scope for collection overlays
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
13 lines
594 B
SQL
13 lines
594 B
SQL
-- +goose Up
|
|
-- Personal-collection display filtering is stored as a catalog QueryDefinition
|
|
-- fragment (filter-only: match + groups, with type / watched rules), not as
|
|
-- bespoke enum columns. This migration is intentionally separate from
|
|
-- 20260623184858 because that timestamp may already be applied on live
|
|
-- databases with the legacy watch_filter / media_filter DDL.
|
|
ALTER TABLE public.user_personal_collections
|
|
ADD COLUMN IF NOT EXISTS display_query_definition jsonb;
|
|
|
|
-- +goose Down
|
|
ALTER TABLE public.user_personal_collections
|
|
DROP COLUMN IF EXISTS display_query_definition;
|