Skip to content

[SeerrNG #595] Large screens, list retry, clearer address names and a bug pass - #1

Closed
ncbudd wants to merge 2 commits into
mainfrom
seerrng-pr-595
Closed

ncbudd wants to merge 2 commits into
mainfrom
seerrng-pr-595

Conversation

@ncbudd

@ncbudd ncbudd commented Nov 7, 2026

Copy link
Copy Markdown
Owner

Mirror of snapetech-org/seerrng#595 so testers can read and try it here. Only the lumen/ part is mirrored; the SeerrNG PR also updates the install guide at docs/using-seerr/lumen.md.

Don't merge this here: it closes once SeerrNG merges #595 and the sync brings it into lumen/.


Three commits on top of main (d48de130).

1. Use the full width of large screens

The page stopped at 1320px and posters stayed 164px wide, so a wide monitor showed a narrow column with empty space on both sides. Past 1600px the content now grows with the window (up to 1680, 2400 and 3200px), and posters, feature cards and genre tiles grow with it. Nothing changes below 1600px except the gutter fix below.

The base --gutter was defined in lumen.css, which loads after app.css. It silently overrode app.css's 32px (tablet) and 40px (desktop) gutters, so every screen got 20px. It now lives in app.css with the other layout tokens, so those gutters apply as designed.

2. Clearer address names, and a working "open full SeerrNG" link

New name Old name (still works) What it is
SEERR_INTERNAL_URL SEERR_URL How the Lumen container reaches SeerrNG
SEERR_BROWSER_URL SEERR_FULL_URL The address people open full SeerrNG at

deploy/05-lumen-env-aliases.envsh maps the new names before nginx renders its templates. When both are set, the new name wins. The compose files, README and install guide now use the new names, with a note that the old ones still work.

"Open full SeerrNG" used to fall back to http://localhost:5070 (a dev address) when lumen-config.json set no seerrPublicUrl, and the not-found page ignored seerrPublicUrl entirely. The fallback is now /seerrng, which Lumen's nginx redirects to SEERR_FULL_URL, and the not-found page uses the configured address.

3. Bug and UI pass

  • Endless lists retried failures forever. A failed page (a 429, for example) was requested again immediately, over and over, hammering the rate limit. A failed page now stops the list and shows Retry where it stopped. The top-of-page error appears only when nothing loaded, and changing a filter clears an old error. After "Look further", scrolling loads more again: the marker used to be unobserved once it re-rendered. Games, which has its own list hook, gets Retry too.
  • Discover rows: rows other than the hero stayed as skeletons forever when their request failed. They now say they couldn't load. Rows that come back empty are left out instead of showing a bare heading. Hero cards are keyed by type and id, since a movie and a series can share an id.
  • Feature cards: clicking a card's title or text did nothing, because the caption sat over the card link. Clicks now pass through. A downloading title shows the download icon instead of the clock.
  • Books: the Listen/Read hover button on owned books did nothing. It now opens the book page, which has the library links.
  • Series pages: a series with some episodes but no complete season had no Watch button and no "on " note. On phones and tablets, any series with a missing season had no Watch button at all, because the desktop actions are hidden there. Both cases now show one.
  • Request sheet under React StrictMode (dev): the sheet closed itself immediately, because the first mount's cleanup undid the remount's history step. A remount now reuses the entry, and the step is undone in a microtask, so a navigation started right after closing isn't cut off.

Testing

  • npm run build, tsc --noEmit, unit tests, and Playwright on desktop/iPhone/Android/tablet: 235 passed, 13 skipped (desktop-only and device-only cases).
  • New browser tests: large screens at 1440/1920/2560/3840px; a failed page stops and Retry recovers it (page 2 requested exactly once before Retry); a failing Discover row says so; empty Discover rows are left out; a partly available series can be watched; the not-found page's "open full SeerrNG" points at /seerrng.
  • The request-sheet tests were also run against the Vite dev server (StrictMode on). They fail on main and pass with this change.
  • In the built image (real nginx): SEERR_FULL_URL alone, SEERR_BROWSER_URL alone, and both set (new wins) all redirect /seerrng and /settings/... correctly. SEERR_INTERNAL_URL changes proxy_pass.
  • Lab crawl against a real SeerrNG 3.72.16 + Jellyfin, as a family user and an admin on desktop, phone, 2560px desktop and tablet: no JS errors, no horizontal overflow, no broken images.

… bug pass

Mirror of snapetech-org/seerrng#595 (lumen/ changes only; the PR also updates
docs/using-seerr/lumen.md in SeerrNG). Closes here once merged upstream and synced.
@ncbudd

ncbudd commented Nov 7, 2026

Copy link
Copy Markdown
Owner Author

Merged upstream in snapetech-org/seerrng#595 (v3.72.21) with two follow-up fixes from the maintainer. lumen/ here is synced to it.

@ncbudd ncbudd closed this Nov 7, 2026
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.

1 participant