Feat/season names in dropdown - #195
Closed
nakenyon wants to merge 892 commits into
Closed
Conversation
- Move recommend/recommendations split action to the header on both list detail and smart list detail pages. - Remove the in-toolbar recommend split controls and recommendation chips; keep hero action conditional on recommendation availability. - Keep list/smart-list filter toggle groups right-aligned by restoring auto left margin in shared mobile/desktop toolbar CSS.
- Allow list-detail filter menus to render outside the mobile toolbar by removing clipping overflow rules. - Keep view toggles right-aligned by preserving auto left margin in shared list-detail toolbar styles. - Anchor the List Detail All Types dropdown to the left on mobile so the menu stays on-screen.
- Persist reading author credits via Person/ItemPersonCredit across providers. - Render linked authors in media details and support author-aware person/history views. - Add author as a multi-filter option for books, comics, and manga with regression tests. Refs dannyvfilms#94
- Merge AniDB/Hama webhook routing with existing Plex GUID and TMDB fallback behavior. - Keep upstream provider/settings updates for Redis prefix, Steam key access, and TMDB Letterboxd links. - Preserve release-side playback/list compatibility fixes and aligned webhook regression tests.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Scope anime daily fallback to the branch where activity-local timestamp is defined. - Add a regression test for All Time statistics refresh with anime date ranges. Fixes dannyvfilms#98
- Allow public smart-list requests to apply transient filter params without mutating saved smart rules. - Render smart filter UI/JS on public list pages while keeping edit-only controls hidden. - Prevent stale HTMX responses from reverting filtered grids by syncing smart filter requests. Fixes dannyvfilms#97
- Refresh provider metadata cache when reading details have author text but missing authors_full IDs. - Backfill author credits and rebuild linked author rows after refresh to keep author names clickable. - Add regression coverage and update caching documentation for the new self-heal path. Fixes dannyvfilms#99
- add TOTP/recovery-code model, forms, views, routes, and migration for self-service recovery - update account, login, signup, and password-recover templates for authenticator-first flows and recovery-code fallback - add and update view tests for password recovery and profile authenticator management
- Reproduced dannyvfilms#101 by dropping boardgame_sort_valid before users.0068 and confirming migrate failed with UndefinedObject.\n- Replaced raw AddConstraint/RemoveConstraint in users.0067 and users.0068 with Postgres-safe if-exists/if-not-exists wrappers.\n- Verified the same migration path succeeds after the patch and users migration tests pass.\n\nRefs dannyvfilms#101
- Add check_migration_hygiene management command with strict graph and risky-op checks for fork migrations.\n- Add replay_upgrade_matrix.sh to run SQLite/Postgres upgrade replay plus drift scenario coverage for dannyvfilms#101-class failures.\n- Update AGENTS workflow, add migration sync playbook, tests, and PR checklist hard-gate items.\n\nRefs dannyvfilms#101
- Prefer explicit collection platform values over inferred item platforms for game filtering and platform options. - Apply status filtering against each item's latest aggregated status so stale sessions don't leak into In Progress results. - Add regression coverage for PlayStation 5 + In Progress with duplicate game sessions.
- Backfill invalid legacy last_search_type values to 'tv' before adding last_search_type_valid. - Add migration regression tests for normalization SQL and constraint operation flow. Fixes dannyvfilms#100
- Store filter/sort/layout query state in localStorage per user and media type. - Restore saved filters when returning to a media list without explicit query params. - Keep URL query params synchronized after HTMX list filter requests.
- Replace deprecated django.utils.timezone.utc with datetime.UTC in ABS import datetime parsing. - Add regression coverage for millisecond startedAt/finishedAt values on completed audiobook imports. Refs dannyvfilms#102
- Accept slash-containing media IDs in lists modal URL patterns. - Preserve season/episode route precedence with specific patterns first. - Add a regression test for media_view_url with a Pocket Casts gid media_id. Fixes dannyvfilms#103
- Add a scheduled Celery task that enqueues genre, runtime, episode-runtime, and credits backfill batches. - Reuse existing queue/retry helpers and add targeted credits candidate selection for bounded nightly scans. - Add task tests covering credits candidate filtering and nightly orchestration behavior.
Implements FuzzyGrim#562. Users can now create personal tags and attach them to any media item (movies, TV, games, etc.) via the detail page Actions section. Tags support include/exclude filter semantics in media list views and compose cleanly with existing status/genre/sort filters. - Add Tag and ItemTag models with case-insensitive uniqueness per user - Add tags_modal, tag_item_toggle, and tag_create views + URL patterns - Add include/exclude tag filter to media_list() view - Add tag filter UI (include + exclude) to media list dropdown - Integrate tag/tag_exclude rules into smart lists (builder + matching) - Fix smart list live preview not applying tag filter from GET params - Sync smart list membership on ItemTag save/delete via signals - Rename list form "Tags" label to "List Tags" to avoid confusion Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- add Discover routes, service layer, provider adapters, cache models, and templates - wire movie rows 1-6 with row-specific subtitle confidence display and cache/version handling - include supporting tests, admin/task/management updates, and regenerated frontend assets
- add phase/tag affinity profile fields, cache/model wiring, and migration support - retune comfort and Top Picks scoring with unrated inclusion, rewatch/seasonality handling, and debug outputs - remove movie wildcard row, adjust all-time dedupe behavior, and update discover templates/views/tests
- Add to the mobile badge so HTMX updates can target it. - Keep desktop badge on the same shared selector for unified updates. - Update handler to refresh all count badges, not just .
- Apply the standardized five-row discover layout and provider wiring beyond movies/tv/anime. - Add provider-side coming-soon sourcing and provider artwork hydration for board games and music rows. - Expand discover service/registry coverage tests for row presence, dispatch, and rendering behavior.
- Normalize Audiobookshelf cover URLs and enrich missing book metadata via provider fallback. - Persist enriched book fields on Item and expose them in local Audiobookshelf metadata responses. - Add importer tests covering relative cover paths and provider-based cover metadata enrichment. Refs dannyvfilms#102
- Preserve fork rating-scale and list admin behavior while integrating upstream admin/test refactors. - Keep list recommendation/activity admin coverage and remove duplicate admin registration paths. - Resolve remaining merge conflicts and run quick-pass validation (makemigrations check, lint, targeted tests).
The previous out-of-season penalty (-0.14) was too weak to suppress Christmas movies (e.g. The Grinch, Jack Frost) in the "Top Picks For You" and "Comfort Rewatches" rows during non-holiday months. A highly-rated Christmas movie could score ~0.46 even after the penalty, still ranking in the top results. Two changes: - Increase the out-of-season penalty from -0.14 to -0.40, which drops a full-strength holiday item from ~0.60 to ~0.20, pushing it well below typical non-holiday candidates. - Expand HOLIDAY_STRONG_TERMS to include "grinch", "krampus", and "nutcracker", and HOLIDAY_SOFT_TERMS to include "jack frost" and "santa claus", so iconic Christmas characters in titles are caught even when TMDB keyword tags are absent. https://claude.ai/code/session_01XpYeZusWXu9yNUZiZMqzVw
…al-recommendations-z6c2u Strengthen out-of-season holiday filtering in discover recommendations
…issing-start-date Fix HLTB imports without start date columns
Add support for X-Forwarded-* headers in order to deal better with reverse proxy;
…sync Fix podcast episode sync: per-show UUID uniqueness and episode creati…
The datetime auto-fill for new play records was capturing the time once
at component initialisation and reusing that stale value. For the main
track modal (mediaStatusDateHandler.js) this meant the status-change
handler always inserted the page-load time rather than the time the user
actually changed the status. For the episode track modal
(fill_track_episode.html) the time was baked in server-side via Django's
{% now %} tag, so it was frozen at page render.
Fix: call getCurrentDateTime() at the moment each field is written
(mediaStatusDateHandler.js), and replace the server-rendered default with
an Alpine x-effect that recomputes the current time whenever the episode
modal opens (fill_track_episode.html).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fix/log time on click
- derive media-list filter persistence from the hidden filter form instead of a hardcoded key list - reuse the shared serializer for localStorage sync and grid/table layout toggle URLs - add regression coverage for tag filters and shared serializer wiring
- keep the tags hover preview visible even when an item has no tags yet - make the empty preview state open the existing manage-tags modal trigger - cover the empty tag preview messaging and click-through wiring with view tests
- add inline trash-can deletion and modal refresh for library tags - restyle tag add/remove actions to match the modal action group - cover modal delete flows with tag view regressions
- return the surviving album from scrobble-time album dedupe so later track creation never uses a deleted album row - add a regression covering placeholder-to-canonical album collapse before track creation - keep the existing richer-metadata and music/track reassignment dedupe paths intact
- move list detail metadata, chips, actions, and descriptions into the media-details order for manual and smart lists - restyle smart-list chips to match regular lists and hide the smart-rules summary on public smart-list pages - cover the public header order and smart-list visibility behavior with focused list detail tests
- add focused list-detail regressions for owner views of manual and smart public lists - verify internal headers keep the same metadata, chip, action, and description order as the public layouts - preserve the editable smart-rules summary as the only intentional post-description owner-only section
- move the Hide Completed Recommendations control to the full-width dropdown pattern used elsewhere in Preferences - keep the existing user preference storage and recommendation filtering logic unchanged - add a sidebar regression covering the form submission path
- add a Home Screen settings page with persisted per-library row configuration, list search, and row-driven Home rendering - preserve legacy Home behavior by seeding seasons as upcoming, other libraries as recent, and upgrading untouched first-pass defaults automatically - remove the old planned-home preferences UI and cover the new Home configuration flow with focused regressions
- tighten the Home Screen editor into compact single-line row controls with working media-list-style menus - remove the extra Home header/edit affordances and refresh the Home Screen settings regression coverage
- skip Sonarr-seeded season and episode rows from the generic initial metadata queue - stamp Sonarr-imported season and episode items as locally seeded and add regressions
- replace the Home Load All button with horizontal infinite loading batched by offset - keep Home rows single-height with fixed-width cards and auto-fill rows until they overflow - cover the main Home row markup and batch endpoint behavior
- avoid rebuilding dynamic filter metadata when summarizing Home library rows - fast-path simple smart-rule row matching so status/search-only rows skip collection and rating scans - add focused regressions around both optimized paths
- balance the sort control gap across filtered and unfiltered rows - keep the inline filter suffix styling aligned with the row title - update Home regressions for the new header contract
- add TV and Anime progress filter states in the media list dropdown - isolate time-left cache keys by progress state - add regressions for TV, Anime, visibility, and cache separation
- add next-episode air-date sorting and fallback handling for TV, Season, and grouped Anime lists - surface the date in table and grid layouts with focused visibility regressions - widen persisted media sort choices and include the migration for the new choice
- try literal IGDB game search first, then retry with tokenized punctuation-insensitive terms - version the IGDB game search cache key to avoid stale empty results - add regressions for Shakedown Hawaii and exact punctuated queries
- switch HLTB search to the live bleed API flow - keep exact-title, platform, and Steam verification logic intact - add Iron Meat resolver and media-details regressions
- detect legacy TV/anime Home Screen rows even when the old title-sort direction differs - migrate single-row and original seeded defaults to Not Caught Up and Episode Air Date defaults - add focused regressions while preserving non-TV/anime manual direction toggles
…back state handling
- add matching left inset/offset on the horizontal home row scroll container - preserve the top hover-ring clearance so leading cards render without clipping - keep the existing empty-state paragraph formatting update in the same template
- keep library-query rows from surfacing duplicate items when a newer aggregated status no longer matches the requested filter - restore standard podcast card width on the home page and cover both behaviors with focused regressions - add the generated integrations index-rename migration expected by Django 5.2.12
- add a dedicated home-row card wrapper class so mobile grid modes can size row cards independently of media grids - update the home view assertions for the new wrapper class and commit the regenerated Tailwind output
- exclude dropped-season episodes from caught-up checks so TV progress matches time-left sorting - add regressions for dropped-season TV shows and preserve anime progress coverage
Display the actual season name (e.g. "Fantasy High", "Never Stop Blowing Up") in the season dropdown instead of the show title. Falls back to "Season X" for shows with generic season names, so existing behaviour is unchanged for those. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
Summary
Validation
Migration Sync Gate (Required for
dev->latestsync PRs)cd src && python manage.py makemigrations --mergerun for affected apps.cd src && python manage.py check_migration_hygiene --strictpassed.scripts/replay_upgrade_matrix.sh --from-tag <previous_release_tag> --to-ref latest --db sqlite,postgres --with-drift-scenariospassed.coverage run src/manage.py test app users integrations lists events --parallelpassed.Notes
Refs #101).