Skip to content

Show a Collection's own movies list on its detail page - #75

Merged
imbenjamin merged 3 commits into
developfrom
feature/collection-detail-item-grid
Aug 16, 2026
Merged

Show a Collection's own movies list on its detail page#75
imbenjamin merged 3 commits into
developfrom
feature/collection-detail-item-grid

Conversation

@imbenjamin

Copy link
Copy Markdown
Owner

What

A Collection (BoxSet) detail page previously fell through to MovieDetailView, which has no listing of the collection's contents and rendered a Play/Resume row for an item that isn't itself playable.

  • CollectionDetailView — a dedicated layout for BoxSets: hero, metadata, tabs, the new movies list, then "Included In"/"More Like This". No Play/Resume row.
  • CollectionItemList — an ordered list of the collection's movies, oldest to newest by release date. Mirrors ShowDetailView's SeasonEpisodeList (poster thumbnail with a direct-play button; title/year/duration/synopsis snippet that pushes into that movie's own detail page) but with no season picker. The text column is capped to the poster's own height (frame + clip) regardless of title length, so a 2-line title never makes the row taller than its own thumbnail.
  • AssetDetailViewModel — new collectionItems, fetched by ParentId (sorted PremiereDate ascending) alongside similar/collections in load(), and re-fetched at the end of refreshItem() so a movie played directly from the list picks up its watched/progress state once the player closes.
  • DetailTabsView — hides "Cast & Crew" when an item has no cast/crew credits, and drops the segmented picker entirely when only "About" is left (the common case for a Collection). Applies to every detail page (movie/show/collection), not just collections.

Testing

  • 419 tests, 0 failures (xcodebuild test).
  • Verified live in the Simulator against a real server: Collection pages show their movies in release order with working direct-play and navigate-to-detail taps; a 2-line-title row (Harry Potter) no longer overflows past its poster; the tab picker correctly disappears for a Collection and still shows all three tabs on a movie with cast/details.

Known issue, not addressed here

While testing this branch I hit a genuine SwiftUI freeze (~100% CPU, sustained) navigating from Home into a Show's detail page — a CPU sample shows it stuck in AttributeGraph/StackLayout recursion inside a LazyHStack rail, the same signature as a previously-fixed bug class in this codebase (PosterCard/LandscapeMediaCard's required ZStack wrapper around their NavigationLink). That wrapper is present and unmodified by this branch, and a Movie detail page loaded fine in the same session, so I wasn't able to pin down a repro tied to this branch's changes before running out of time — flagging it rather than guessing at a fix. Worth a fresh look with a clean repro.

🤖 Generated with Claude Code

A BoxSet's detail page previously fell through to MovieDetailView,
which has no listing of the collection's contents and rendered a
Play/Resume row for an item that isn't itself playable.

- CollectionDetailView: a dedicated layout for BoxSets — hero,
  metadata, tabs, the new movies list, then the "Included In"/"More
  Like This" rails. No Play/Resume row.
- CollectionItemList: an ordered list of the collection's movies,
  oldest to newest by release date, mirroring ShowDetailView's
  SeasonEpisodeList (poster thumbnail with a direct-play button,
  title/year/duration/synopsis snippet that pushes into that movie's
  own detail page) but with no season picker. The text column is
  capped to the poster's own height via frame+clip regardless of
  title length, so a 2-line title never pushes the row taller than
  its own thumbnail.
- AssetDetailViewModel: new `collectionItems`, fetched by ParentId
  (sorted by PremiereDate) alongside similar/collections in load(),
  and re-fetched at the end of refreshItem() so a movie played
  directly from the list picks up its watched/progress state once
  the player closes.
- DetailTabsView: hides the "Cast & Crew" tab when an item has no
  cast/crew credits, and drops the segmented picker entirely when
  only "About" is left (the common case for a Collection) — applies
  to every detail page (movie/show/collection), not just collections.

419 tests, 0 failures. Verified live against a real server: Collection
pages show their movies in release order with working direct-play and
navigate-to-detail taps, and the tab picker correctly disappears/
reappears depending on what data an item actually has.
@imbenjamin imbenjamin linked an issue Aug 15, 2026 that may be closed by this pull request
imbenjamin and others added 2 commits August 15, 2026 20:59
Same reasoning as this branch's TESTING.md conflict fix: a hand-copied
test count only ever drifts out of date (this one still said 409,
long stale) — CI runs and logs the real count on every push.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@imbenjamin
imbenjamin merged commit 3a0802d into develop Aug 16, 2026
2 checks passed
@imbenjamin
imbenjamin deleted the feature/collection-detail-item-grid branch August 16, 2026 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Details page for Collections

1 participant