Movie detail page at /movies/{id} #149

Closed
opened 2026-08-23 19:41:59 +01:00 by naps62-yolo · 0 comments
Owner

Depends on: #146, #144

A movie has no page. /movies/{id}/releases is the only route that addresses
one, and it is a release deck with a title above it — there is nowhere to see
what the film is, what is on disk, or why it was picked.

Add /movies/{id}, holding, roughly:

[backdrop]
  Dune: Part Two  (2024)          ★ 8.2 (4,821)      [main] [available]
  166 min · Science Fiction, Adventure
  "Long live the fighters."

  overview paragraph

  [▶ Trailer]   [TMDB] [IMDb] [Rotten Tomatoes]

  Cast
  [photo] [photo] [photo] ...   (10, each linking out to TMDB)

  On disk
  Dune Part Two (2024) [tmdbid-693134] - [2160p][WEB-DL][HDR10].mkv   38.4 GB

  Releases
  <the §9.3 three-bucket deck>
  • Everything above "Releases" comes from GET /api/movies/{id}/metadata (#146)
    — one request. Images hotlink image.tmdb.org per §9.6; w1280 for the
    backdrop, w342 for the poster, w185 for a cast photo is the right order of
    magnitude.
  • The trailer button uses the key already in the metadata response. It does not
    call #144 — that endpoint exists for rows which have no detail fetch behind
    them. Hide the button when there is no trailer rather than showing a dead one.
  • The Rotten Tomatoes link is a search URL built from the title and year in the
    browser, per §9.6. It is not a resolved title page and must not be presented
    as one.
  • On disk lists the imported files with their §7.4 attribute tags and the
    §5.7 waiver label where one applies, reusing waiverLabel from
    web/src/library.ts rather than restating its wording.
  • The controls the movie already has — wanted, blocked, root, remove, manual
    search — move onto this page rather than being duplicated.
  • The §9.3 deck becomes a section of this page. /movies/{id}/releases keeps
    resolving
    : it lands on this page with the deck section in view. Existing
    links and anything the operator has bookmarked keep working, and #148 links
    library rows here.

Non-goal: the deck itself does not change. Its buckets, chips, score heat and
rejection rules are §9.3 and they are finished — this issue moves it, it does
not redesign it.

Goes through the impeccable skill before any markup, per CLAUDE.md.

Do not start until blitz/tv-tracking is on main. Sequencing with #150 also
matters: both build a title detail page, and whichever lands first sets the
shared shape the other follows.

Depends on: #146, #144 A movie has no page. `/movies/{id}/releases` is the only route that addresses one, and it is a release deck with a title above it — there is nowhere to see what the film is, what is on disk, or why it was picked. Add `/movies/{id}`, holding, roughly: ``` [backdrop] Dune: Part Two (2024) ★ 8.2 (4,821) [main] [available] 166 min · Science Fiction, Adventure "Long live the fighters." overview paragraph [▶ Trailer] [TMDB] [IMDb] [Rotten Tomatoes] Cast [photo] [photo] [photo] ... (10, each linking out to TMDB) On disk Dune Part Two (2024) [tmdbid-693134] - [2160p][WEB-DL][HDR10].mkv 38.4 GB Releases <the §9.3 three-bucket deck> ``` - Everything above "Releases" comes from `GET /api/movies/{id}/metadata` (#146) — one request. Images hotlink `image.tmdb.org` per §9.6; `w1280` for the backdrop, `w342` for the poster, `w185` for a cast photo is the right order of magnitude. - The trailer button uses the key already in the metadata response. It does not call #144 — that endpoint exists for rows which have no detail fetch behind them. Hide the button when there is no trailer rather than showing a dead one. - The Rotten Tomatoes link is a search URL built from the title and year in the browser, per §9.6. It is not a resolved title page and must not be presented as one. - **On disk** lists the imported files with their §7.4 attribute tags and the §5.7 waiver label where one applies, reusing `waiverLabel` from `web/src/library.ts` rather than restating its wording. - The controls the movie already has — wanted, blocked, root, remove, manual search — move onto this page rather than being duplicated. - The §9.3 deck becomes a section of this page. **`/movies/{id}/releases` keeps resolving**: it lands on this page with the deck section in view. Existing links and anything the operator has bookmarked keep working, and #148 links library rows here. Non-goal: the deck itself does not change. Its buckets, chips, score heat and rejection rules are §9.3 and they are finished — this issue moves it, it does not redesign it. Goes through the `impeccable` skill before any markup, per CLAUDE.md. **Do not start until `blitz/tv-tracking` is on main.** Sequencing with #150 also matters: both build a title detail page, and whichever lands first sets the shared shape the other follows.
naps62-yolo added this to the Rich metadata milestone 2026-08-23 19:41:59 +01:00
naps62-yolo added the area/webdifficulty/moderatephase/6-tvtype/feature labels 2026-08-23 19:41:59 +01:00
naps62-yolo added a new dependency 2026-08-23 19:42:42 +01:00
naps62-yolo added a new dependency 2026-08-23 19:42:42 +01:00
naps62-yolo added phase/5-ui and removed phase/6-tv labels 2026-08-23 19:42:56 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: yolo/arr#149