Repository navigation
feat: catalog cards show your library status, plus the grid, tab and footer key layout pass - #41
Merged
Merged
Conversation
…and skeletons Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A page holds 20 titles, which fills every row at two and four columns, so the grid steps from 2 to 4 at md and never goes wider. It is capped at 1200px and centred; POSTER_SIZES and the eager poster counts follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The selected SHOWS | MOVIES tab and Library link use a new glass-selected-personal utility: the glass-selected stack tinted from --color-score-personal, with dark text-on-personal at 6.3:1 or better. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The per tab BadgeLegend under the library grids is gone. IconKey, a static Server Component, is the footer's first row everywhere, centred under a hairline, and always lists every card mark in a fixed order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Library pages draw one row instead of 20 cards, so a short list no longer collapses on load. Catalog and search skeletons reserve the pagination row and size captions with h-[1lh]; the detail and season skeletons mirror their real layouts line for line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The key lists each two state mark as action then done, so the filled watched check joins its outline the way Planned joins Plan. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Move ReleasePill and releaseDateFor into dated-pill.tsx and export UpcomingShowPill, so the catalog cards can reuse the Upcoming copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
classifyMovie only ever asked whether watched_at was set. Taking a boolean lets the catalog grid read, which carries no timestamp, place a movie through the same function as the library pages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A client button that unmarks a watched movie from a grid card, with the movie page's score-removed toast and Undo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Movie cards on /movies and /search read every grid movie's state in one query and show it as the library page does: the personal score and the watched mark on a watched movie, the release pill on a planned unreleased one, and the plan bookmark otherwise. The badge falls back to the TMDB rating while the state streams in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
getShowGridStatus classifies the tracked shows of one catalog grid with the library pages' own reads and classifier, adding the calculated show rating for shows on Watched. A failed read leaves the card plain rather than wrong. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Show cards on /shows and /search keep the Stop tracking bookmark and add what the show's library page shows: the next episode date on Upcoming, and the show rating with Finished or Caught up on Watched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…and shows Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ing per slot Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rom the plans Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch was successfully deployed
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.
What
Two changes in one PR:
/movies,/showsand/searchnow shows a title the way its library page (Watchlist, Upcoming or Watched) does.Why
Until now, a movie you had watched and scored showed on
/movieswith the TMDB rating and an empty Plan bookmark, while/watchedshowed your score. Catalog cards only knew whether a movie was planned or a show was tracked.Changes (catalog cards)
Movies
Tracked shows (the Stop tracking bookmark stays on every one)
/searchit reads "2019 · Finished".How it works
classifyMovie,classifyShow) with the samerequestTodayUtc(), so a card can never disagree with its library page.getMovieGridStatesreads the state of every movie on a grid in one query.getShowGridStatusreads the tracked set, then, for tracked shows only, the watched regular episodes, the cached TMDB details and the ratings of shows on Watched.SearchResultnow carries the moviereleaseDate.ReleasePillandUpcomingShowPillare shared between the library pages and the catalog cards.classifyMovienow takes awatchedboolean instead of a timestamp.card-bookmark.tsxandshow-card-bookmark.tsxare replaced bymovie-card-slots.tsxandshow-card-slots.tsx.Security
Every new read uses the session user, filters on
user_idexplicitly as well as through RLS, and never runs insideuse cache. The unmark goes through the existingsetMovieWatchedServer Action. There is no schema change.Test
pnpm typecheck,pnpm lint:ci(no errors, 3 old informational notes) andpnpm test(2163 tests in 129 files) all pass.pnpm buildsucceeds, and/movies,/showsand/searchare still partly prerendered./searchshows the score and the watched mark. Unmarking switches it to TMDB 8.3 and the Plan bookmark, and Undo restores both./watched?type=tv. Checked at 375px too.🤖 Generated with Claude Code