Add Seerr custom sliders and Foreseerr list compatibility - #1407
Open
selmant wants to merge 4 commits into
Open
Conversation
selmant
force-pushed
the
feat/seerr-custom-sliders
branch
2 times, most recently
from
September 4, 2026 21:21
6e318b6 to
910710a
Compare
selmant
marked this pull request as draft
September 4, 2026 21:29
…d Simkl rows Map Foreseerr Discover types that stock Seerr does not have. Unmapped tiles are omitted. English title keys are the Weblate source. Co-authored-by: Cursor <cursoragent@cursor.com>
selmant
force-pushed
the
feat/seerr-custom-sliders
branch
from
September 4, 2026 21:38
5af9315 to
bbd6344
Compare
Author
|
If there is concern about numeric collision between Foreseerr's extra Discover slider types (currently 22+) and any types upstream Seerr might add later: I can migrate those Foreseerr types to a reserved band (starting at 1001) in a Foreseerr patch release, then update this mapping to match. Today this client skips unknown types, so a later Seerr type in the 22+ range would be ignored here rather than mixed with Trakt/AniList/Simkl. Happy to move the numbers if a reserved range is preferred. |
applyRowConfig was dropping custom rows and fetching them again whenever UserPreferences notified, which raced index-based fills and threw RangeError. Co-authored-by: Cursor <cursoragent@cursor.com>
selmant
marked this pull request as ready for review
September 5, 2026 09:55
… PR. Those locales still get the new Foreseerr row keys; existing translations stay as they were on main. Co-authored-by: Cursor <cursoragent@cursor.com>
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.
Pull Request
Summary
Moonfin's current Seerr integration uses its own fixed discovery rows and does not read the custom sliders configured by a Seerr administrator. This PR adds support for those server-defined sliders in Moonfin's Discover screen and as optional Home sections.
The first commit implements the stock Seerr feature: TMDB keyword, genre, search, studio, network, and streaming-provider custom sliders. The second commit is intentionally separate and explicitly adds compatibility with Foreseerr: administrator-defined Trakt, AniList, and MDBList lists, plus enabled built-in Trakt / AniList / Simkl rows.
Maintainer Context and Disclosure
I maintain Foreseerr, a personal fork of Seerr that adds Trakt, AniList, Simkl, and MDBList discovery and media workflows. My practical motivation for this contribution is to use those discovery sources from a good TV client. I had considered building another TV application, and have also maintained a separate desktop companion, but Moonfin already provides the client experience I was looking for. Contributing the missing integration here is much more useful than duplicating another application, and may remove my need to continue those separate client efforts.
I want to be completely clear about the boundary in this PR:
GET /settings/discoverare stock Seerr functionality.DiscoverSliderTypeenum from 22. This client skips unknown types, so a later upstream Seerr type in that range would be ignored here rather than mixed with Trakt/AniList. If that numbering is a concern, I can migrate Foreseerr's extra types to a reserved band (starting at 1001) in a Foreseerr patch release and update this mapping to match.I used AI tooling to assist with implementation and review. I personally reviewed every changed file and the final diff, verified the API routes against the relevant Seerr and Foreseerr sources, and ran the tests and analysis documented below. I am happy to answer questions, revise the approach, or help maintain this integration if the Moonfin maintainers have concerns.
Related Issues
Type of Change
Changes Made
GET /settings/discover, preserve server ordering, and map stock Seerr slider types 13–21 to their documented search/discover routes./movie/{traktId}.app_en.arbkeys. Admin-chosen list titles are kept as-is.API Compatibility
/settings/discover,/search, and the movie/TV discover routes and query parameters used here./Moonfin/Seerr/Api/{path}proxy; no generated OpenAPI client, plugin route, or API schema change is required.DiscoverSliderTypeenum from 22. This client skips unknown types, so if upstream Seerr later adds a type in that range it would be ignored here rather than colliding at runtime. If that numbering is a concern, I can migrate Foreseerr's extra types to a reserved band (starting at 1001) in a Foreseerr patch release and update this mapping to match.Commit Structure
feat(seerr): add custom slider rows— stock Seerr types 13–21, API access, Discover/Home integration, settings, and tests.feat(foreseerr): support list sliders and built-in Trakt, AniList, and Simkl rows— Foreseerr-only types, payload normalization, English title keys, and tests.Platform
Testing
Automated Checks
dart analyzeon the changed feature and test files: no issues found.Test Steps
posterPath.Screenshots (if applicable)
Checklist