Repository navigation
feat: rTorrent, SABnzbd, Metron, Navidrome, Jellystat, Apprise, RomM placement, Live TV provider interface - #165
Merged
Conversation
Read live progress from qBittorrent, Transmission, Deluge, and TorrentNG and stream it to open request and media pages over SSE. A shared poller asks only for the info hashes that connected browsers are displaying and stops when nobody is watching. SeerrNG never writes to the clients. Includes the NG ecosystem integration plan that tracks this work. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Index the Tunerr XMLTV guide with a streaming parser, find upcoming airings by catalog title, and let users request one airing or a whole series. Approval creates a Tunerr recording rule through the authenticated deck API; a Live TV Sync job tracks rule history, re-creates rules removed in Tunerr, and removes finished airings. SeerrNG only schedules against Tunerr versions that report the title_equals, start_window, and rules_only_recorder features. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add an On Live TV button and dialog to movie and series pages, a Recordings page for requesters and managers, and a Live TV (IPTV Tunerr) section under Settings → Services. Document setup and how recordings are tracked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
release-note: none Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Request single tracks through the slskdN wishlist with the usual approval rules, track them with a Soulseek Sync job, list and fix slskdN library-health issues for an album, and identify songs with SongID. Each slskdN feature is probed separately so plain slskd or slskr installs report it as unavailable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Offer unmatched playlist tracks to Soulseek from the bulk request dialog, add Track Requests and Identify a Song pages, a manager-only Library Health dialog on album pages, and a Soulseek (slskdN) section under Settings → Services. Document setup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Carry the *arr queue's protocol and download client through download status so administrators can see whether a request is downloading via a torrent client, Usenet, or a direct source such as ChaptarrNG. The non-admin projection already drops both fields. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pass ROMarrNG's per-file datVerified verdict through the software asset sanitizer and request views, and show DAT Verified (or how many files matched) beside Download copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Let users follow teams from IPTV Tunerr's sports schedule. Live TV Sync maps each matched upcoming game to its nearest guide airing and creates a normal recording request, skipping games the user already requested. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
release-note: none Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Build per-user swipe decks for movies, series, and books from SeerrNG's own catalogs (TMDB recommendations and trending, Open Library subjects and trending), skipping owned, requested, and already-swiped titles. Record want/pass/seen swipes with undo for passes, keep per-user taste notes and request preferences, and optionally let Claude reorder the deck with short reasons. Ranking failures and refusals keep catalog order. Adds @anthropic-ai/sdk 0.131.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add a swipeable card stack with pointer, button, and keyboard controls, right-swipe requests through the normal request API, undo for passes, per-user preferences, an admin Swipe Discovery settings section with an AI ordering test, sidebar and mobile menu entries, and docs. Feature ideas come from ReadMeABook's public documentation only; no code or assets were copied (see the provenance note in the plan). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove the YunoHost sync workflow, post-commit sync hook, and release manifest updater, and document that existing installs stay on their last published package. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Non-admin media responses alias download IDs, so live progress now uses opaque, user-scoped subscription tokens issued with each media response. Administrators may still subscribe by info hash. Streams report torrents a client stopped reporting so stale figures clear. Adds login failure diagnostics to two flaky-prone route tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add an OpenAI-compatible provider (OpenAI, Ollama, LM Studio) that asks for a JSON-schema reply, retries in JSON mode for servers without schema support, and validates the ranking. Admins set the base URL and model; the key is optional for local servers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
release-note: none Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Read torrent progress from rTorrent's XML-RPC endpoint (ruTorrent /RPC2 or an SCGI bridge) with one d.multicall2 request per refresh covering every subscribed hash. Basic auth reuses the username and password fields. Tracker notices are not treated as errors. release-note: added Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Document the rTorrent endpoint and default port for live progress, and note that TorrentNG reports torrents for the clients it fronts so only one connection is needed. Recommend BackIssue in the comics guide for browser reading and shared household libraries. release-note: docs Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Send Seerr notifications through an Apprise API server using its
stateful /notify/{key} endpoint, so destination URLs and their secrets
stay in the Apprise configuration. Administrators configure the API URL,
configuration key, optional tag, and optional Basic authentication.
The key is validated on save and test. Messages are plain text.
Adds the settings route, admin test action, and settings page. Tests
cover the endpoint, message type mapping, byte limits, and delivery
against a local server.
release-note: added
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Record the dependency inventory, alternatives catalog, fork feature comparison, and recommendations with a per-item status table. Lists which items are built, deferred, or still open, and what each needs. release-note: none Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Use Metron's series search when ComicVine search throws or reports a failed status. Only series with a ComicVine ID are returned, so results keep the identifiers that comic requests use. Metron authenticates with a bearer token, stored and redacted like the ComicVine key, and the client stays under its documented burst limit. Detail pages still require ComicVine. release-note: added Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Read a Navidrome library on a daily scan through its Subsonic API and mark albums with a MusicBrainz ID as available, using the same music processing path as Lidarr. Authentication uses Subsonic token auth, so the password is never sent. The scan stops with an error rather than recording a partial library. Adds the settings route, a test action, the Services section, and a user page. Disconnecting stops future scans but does not clear albums already marked available. release-note: added Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Connect a Jellystat server with a read-only API key. Administrators see lifetime play counts and playback time on titles linked to a Jellyfin item. The client sends the x-api-token header, requests a ten-year window, and maps Postgres string counts to numbers. The settings route keeps the saved key when the redacted placeholder is sent. Only administrators can reach the endpoint. release-note: added Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Read Usenet queue progress from the SABnzbd API. Live keys now cover both torrent info hashes and SABnzbd queue IDs. The poller sends each client only the keys it can answer for, and the live-token registry and route accept both forms. SABnzbd reports one aggregate speed, which is shown on the first downloading item. Post-processing states show as checking. The API key is passed as a query parameter by SABnzbd's design, and errors never include it. The previous live-token test asserted that SABnzbd IDs are rejected. That rule is superseded, so the test now checks a malformed queue ID instead. release-note: added Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Define LiveTvProvider for the guide stream, recording rules, and sports report that SeerrNG uses from its Live TV backend, with a factory that returns the configured Tunerr client. Recordings, sports, guide indexing, and the sports route depend on the interface instead of constructing Tunerr directly. Tunerr is the only implementation, so behavior is unchanged. release-note: none Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Record the built items (SABnzbd, Metron, Navidrome, Jellystat, tuner provider interface) with their commits and what each covers. Record recommendation 6 as blocked on a maintainer decision: ROMarrNG knows where it files downloads but not whether RomM has indexed them. release-note: none Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Read the optional rommPlacement field from ROMarrNG request status and show an In RomM Library badge on available requests. The service keeps only placed, library, and layout, with the library name bounded and stripped of control characters. The label says the file is in place, not that RomM has indexed it. Requires a ROMarrNG build that sends rommPlacement; without it the badge never appears. release-note: added Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Hey @snapetech, thanks for submitting this PR! However, it looks like the PR template hasn't been fully filled out. Issues found:
Please update your PR description to follow the PR template. This check will automatically re-run when you edit your PR description. |
Contributor
There was a problem hiding this comment.
CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
4 tasks done
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.
Summary
Builds the approved items from the market-research recommendations (#2-#5, #8-#15) plus the SeerrNG side of #6 (ROMarrNG RomM placement). Full list and rationale:
docs/maintainers/market-research-2026-10-06.md.LiveTvProviderinterface with Tunerr as the sole implementation (no behavior change)rommPlacementdisplay (In RomM Library badge) — requiressnapetech/ROMarrNG#<branch feat/romm-library-placement>to be merged for the field to ever be populatedTesting
pnpm validate:developmentgate run against this branch merged intoorigin/mainin a disposable worktree: Translations, Current batch contract, Shared visual standard, Formatting, Lint, Server types, Client route types, Client types, Vitest (103/103 files, 469/469 tests), and Native TypeScript (3086/3089; the 3 remaining pass 100% in isolation — confirmed load-flaky under full concurrency, matching a previously documented pattern, not a regression) all pass.rommPlacementfield end-to-end.AI Disclosure
This PR was built by Claude Code (Claude Sonnet 5) per the repository owner's explicit direction across this session, including the design decisions, code, tests, and verification steps described above. The repository owner reviewed and directed the work throughout and is responsible for final review before merge.
🤖 Generated with Claude Code