Skip to content

Add expandable media shelves#29

Merged
Shoshuo merged 1 commit into
Shoshuo:mainfrom
Boanta-C:feature/expandable-media-shelves
May 7, 2026
Merged

Add expandable media shelves#29
Shoshuo merged 1 commit into
Shoshuo:mainfrom
Boanta-C:feature/expandable-media-shelves

Conversation

@Boanta-C

@Boanta-C Boanta-C commented May 6, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Adds expandable shelves to the Radarr and Sonarr shelf views. Collapsed shelves keep the existing horizontal scrolling behavior while expanded shelves wrap items into multiple rows so larger groups can be easily browsed.

Type of change

Definition of Done checklist

  • The feature works end-to-end, tested manually in a running container
  • No console.log, dd(), var_dump, TODO, FIXME leftover
  • Comments are in English
  • Zero credentials in code, commits, logs, or docs
  • At least one unit test for new business logic - N/A
  • If this is a bug fix: a regression test that reproduces the bug is included - N/A
  • make check passes locally
  • If an entity was modified: a new migration is committed - N/A
  • CHANGELOG.md updated under [Unreleased]
  • README.md updated if user-facing behaviour changed - N/A

Notes for the reviewer

Verified:

  • Radarr shelves collapse/expand correctly
  • Sonarr shelves collapse/expand correctly
  • Poster clicks still open details
  • Filters/search continue to rebuild shelves correctly
  • Other view modes are unaffected

@Shoshuo
Shoshuo merged commit d1a56b4 into Shoshuo:main May 7, 2026
1 check passed
@Shoshuo

Shoshuo commented May 7, 2026

Copy link
Copy Markdown
Owner

Code looks good, follows the Turbo-safe patterns we use everywhere (onclick = ... instead of addEventListener, var, no const/let). CSS isolated under new classes, CHANGELOG entry under [Unreleased], no console.log, no creds. Tested locally on both Radarr and Sonarr shelves, works as advertised.

Two minor things, not blocking the merge:

  • The toggle rebuilds the full shelf on every click (filmsShelfBuilt = false; buildFilmsShelf()), would be slightly nicer to just toggle the is-expanded class. Pure perf, doesn't change UX.
  • No tests. Fair enough for pure JS UI, but if you ever come back to this area a Playwright test that opens/collapses a shelf would lock the behaviour in.

Merging this in. Heads-up: I have a v1.1.0 multi-instance refactor sitting on a private mirror that touches films.html.twig and series.html.twig too, so when I push that to GitHub there'll be a small merge conflict on these two files. Nothing on your end to do, I'll resolve it on my side.

Thanks for the first community PR on Prismarr, really appreciated that ! dont hesitate if you want to send more <3

@Boanta-C
Boanta-C deleted the feature/expandable-media-shelves branch May 8, 2026 08:19
Shoshuo added a commit that referenced this pull request May 11, 2026
The [Unreleased] section was carrying only two short entries (the
expandable shelves PR and the Languages dense-table layout) while the
real release content — Phase A→C multi-instance, the 12 Tier 1+2 fixes,
the bug 13/14/15 audit follow-ups, the JSON coerce + prismarrBytes hoist
fixes, the security hardening and the new test coverage — sat in the
git log only. A user reading the public CHANGELOG would have no clue
the upcoming version is the multi-instance release.

Filled in the section with the full picture, organised per Keep-a-
Changelog category:

  Added       — multi-instance Radarr/Sonarr (#21), AdminInstancesController
                CRUD, dynamic sidebar, slug-aware routing, per-instance
                circuit breaker, expandable shelves (PR #29).

  Changed     — Languages dense-table layout, Quick-Add modal current
                instance routing, bulk-edit / library-import / add-from-
                collection follow current instance, Sonarr manual import
                via downloadId with grouped UX, calendar uses Sonarr local
                airDate (#26), TorrentResolver multi-title +
                transliteration, topbar health badge per-instance, queue
                card collapse on series.

  Fixed       — 10 admin sub-pages legacy URLs, Sonarr indexers/
                notifications Twig ~ leak, films rename modal slug-aware,
                Quick-Add cross-service slug, home redirect 500 on
                slug-aware preference, Sonarr request() bare-string
                response, prismarrBytes head hoist, queue badge contrast,
                calendar TZ off-by-one (#26), TorrentResolver missing
                slug.

  Security    — sanitizeLogBody scrubbing magnet/api_key/JSON apiKey,
                jsonClientError sanitised bulk endpoints, showPageBanner
                XSS split safe-text vs explicit-html.

  Tests       — 322 / 710 (was 273 / 565) — ServiceInstanceProvider,
                MultiInstanceBinderSubscriber, ServiceHealthCache slug,
                TorrentResolver multi-title/transliteration/robustness,
                SonarrClient::manualImportFromQueueItems edge cases.

  Migrations  — Version20260503000000.php Big Bang seed +
                cleanup, transparent upgrade.

Also fixed the footer compare links: [Unreleased] now points at
v1.0.6...HEAD (was stuck on v1.0.3) and the missing v1.0.4 / v1.0.5 /
v1.0.6 entries are added so the per-version diffs are clickable.
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.

2 participants