Skip to content

feat: remove "requested" status of unmonitored movies during scan#817

Closed
bonswouar wants to merge 1 commit intoseerr-team:developfrom
bonswouar:radarr-monitoring
Closed

feat: remove "requested" status of unmonitored movies during scan#817
bonswouar wants to merge 1 commit intoseerr-team:developfrom
bonswouar:radarr-monitoring

Conversation

@bonswouar
Copy link
Copy Markdown

@bonswouar bonswouar commented Jun 14, 2024

Description

Quick & easy first implementation of Monitoring status support in Radarr:
When a movie - which was monitored before - is unmonitored, it won't appear as "requested" in Jellyseerr anymore

Issues Fixed or Closed

Summary by CodeRabbit

  • New Features

    • Added "Remove Unmonitored Media" toggle in settings to automatically process movies that become unmonitored in Radarr, updating their status when enabled.
  • Bug Fixes

    • Fixed documentation typo in scanner comments.

@bonswouar bonswouar requested a review from fallenbagel as a code owner June 14, 2024 21:39
@bonswouar bonswouar changed the title feat: set movie status to unknown if unmonitored from radarr during scan feat: set movie status to unknown if unmonitored from radarr during scan [WIP] Jun 14, 2024
@fallenbagel fallenbagel marked this pull request as draft June 15, 2024 04:50
@fallenbagel
Copy link
Copy Markdown
Collaborator

Converted to draft as the title states "WIP". Once it's ready feel free to make this pr ready for review

@bonswouar
Copy link
Copy Markdown
Author

@fallenbagel Thanks I didn't think about the Draft feature

This is a WIP but it's basically working as I'd expect.
But I could update it with a more specific Monitoring status support if you think it's a good idea?

Only drawback is that if you have lots of Unmonitored movies in Radarr the scan should be slower, as it will request each unmonitored movie in db every time. Let me know if you have some thoughts about this

@bonswouar
Copy link
Copy Markdown
Author

FYI I've been using this for months and it works as expected.
I suspect some other users might need this functionality, couldn't we merge it?

A more complete monitoring status support wouldn't be very useful imo, at least I didn't encounter any use case

@bonswouar bonswouar changed the title feat: set movie status to unknown if unmonitored from radarr during scan [WIP] feat: set movie status to unknown if unmonitored from radarr during scan Sep 27, 2024
@gauthier-th gauthier-th marked this pull request as ready for review September 27, 2024 14:10
@gauthier-th gauthier-th self-requested a review as a code owner September 27, 2024 14:10
Copy link
Copy Markdown
Member

@gauthier-th gauthier-th left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this should be merged if it's only Radarr. Could you implement the same logic for Sonarr seasons?
And shouldn't there be a setting to enable/disable this behavior? You may have unmonitored a movie/tv show but still want to keep it as requested.

@gauthier-th gauthier-th linked an issue Oct 6, 2024 that may be closed by this pull request
1 task
@github-actions
Copy link
Copy Markdown

This pull request has merge conflicts. Please resolve the conflicts so the PR can be successfully reviewed and merged.

@github-actions github-actions Bot added the merge conflict Cannot merge due to merge conflicts label Nov 10, 2024
@github-actions github-actions Bot removed the merge conflict Cannot merge due to merge conflicts label Nov 10, 2024
Comment thread server/lib/scanners/sonarr/index.ts Fixed
@bonswouar

This comment was marked as outdated.

@bonswouar bonswouar changed the title feat: set movie status to unknown if unmonitored from radarr during scan feat: remove requests of unmonitored movies/seasons during scan Nov 10, 2024
@bonswouar

This comment was marked as outdated.

Copy link
Copy Markdown
Member

@gauthier-th gauthier-th left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the way things are done are not consistent between Radarr and Sonarr.
Why do you change the status of the Media entity for movies while you remove the SeasonRequest for series?
It may be linked to the issue you experienced.

Comment thread src/i18n/locale/fr.json
Comment thread src/components/Settings/SettingsMain/index.tsx Outdated
Comment thread server/lib/scanners/sonarr/index.ts Outdated
Comment thread server/lib/scanners/sonarr/index.ts Outdated
Comment thread server/lib/scanners/baseScanner.ts Outdated
Comment on lines +288 to +291
: settings.main.removeUnmonitoredFromRequestsEnabled &&
!season.monitored &&
season.episodes == 0
? MediaStatus.UNKNOWN
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this change necessary? Isn't the Sonarr scanner job enough?

This comment was marked as outdated.

@gauthier-th
Copy link
Copy Markdown
Member

Also, not really related to this issue afaik, but still looks like the same kind of problem: I've noticed during my debugging that some Seasons are shown as "Available" although they don't contain any file in Sonarr (and are not monitored). I'd guess it's related to If the season is already marked as available, we force it to stay available (to avoid competing scanners), but I'm really not sure why this condition exists despite the comment (why not at least check if it has any episode instead of relying entirely on the previous status?!)

There are several jobs that update the status of a Media: Radarr/Sonarr jobs, and Jellyfin/Emby/Plex jobs, hence the comment about competing jobs.

@bonswouar

This comment was marked as outdated.

@bonswouar

This comment was marked as outdated.

@bonswouar

This comment was marked as outdated.

@gauthier-th
Copy link
Copy Markdown
Member

I still don't get the logic, why "If the season is already marked as available, we force it to stay available"?
What if the season is not available anymore??!

There is another job, "Media Availability Sync" that runs and mark the media as unavailable if necessary.

Is there something I should know about async deletion in typescript or something? This seems a bit random

It could come from your forEach loops. For instance in the processUnmonitoredSeason you are using an async function inside a forEach loops, but forEach loops don't wait the end of the async function to run the next item. IMHO It's better to use a for loop to iterate over an array than a forEach, because of this async function concurrency.

Let me review it one more time with the change you made and with your comments in mind.

Comment thread server/lib/scanners/baseScanner.ts Outdated
@bonswouar

This comment was marked as outdated.

@github-actions github-actions Bot added the merge conflict Cannot merge due to merge conflicts label Feb 20, 2025
@github-actions
Copy link
Copy Markdown

This pull request has merge conflicts. Please resolve the conflicts so the PR can be successfully reviewed and merged.

@bonswouar bonswouar force-pushed the radarr-monitoring branch from c014ed8 to a3e2de1 Compare July 17, 2025 12:18
@github-actions github-actions Bot removed the merge conflict Cannot merge due to merge conflicts label Jul 17, 2025
@bonswouar bonswouar changed the title feat: remove requests of unmonitored movies/seasons during scan feat: remove requests of unmonitored movies during scan Jul 17, 2025
@bonswouar
Copy link
Copy Markdown
Author

Just a little reminder, if you have an idea for a better way of handling this let me know I could probably look into it.

Otherwise, I've been using my fork for more than a year and it works exactly as expected fyi

@bonswouar bonswouar changed the title feat: remove requests of unmonitored movies during scan feat: remove "requested" status of unmonitored movies during scan Jul 17, 2025
@github-actions github-actions Bot added the merge conflict Cannot merge due to merge conflicts label Oct 6, 2025
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Oct 6, 2025

This pull request has merge conflicts. Please resolve the conflicts so the PR can be successfully reviewed and merged.

@bonswouar bonswouar requested a review from a team as a code owner October 7, 2025 08:35
@github-actions github-actions Bot removed the merge conflict Cannot merge due to merge conflicts label Oct 7, 2025
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 24, 2026

📝 Walkthrough

Walkthrough

A new feature flag removeUnmonitoredEnabled is introduced across configuration, backend, and frontend layers. When enabled, unmonitored movies from Radarr transition to UNKNOWN status instead of being skipped. The flag is exposed through settings interfaces, persisted in configuration, and controlled via a UI checkbox in the settings panel.

Changes

Cohort / File(s) Summary
Configuration & API Schema
cypress/config/settings.cypress.json, seerr-api.yml
Added removeUnmonitoredEnabled boolean field (default: false) to settings configuration and OpenAPI schema.
Backend Interfaces
server/interfaces/api/settingsInterfaces.ts
Added removeUnmonitoredEnabled: boolean property to PublicSettingsResponse interface.
Scanner Logic
server/lib/scanners/baseScanner.ts, server/lib/scanners/radarr/index.ts
Introduced protected method processUnmonitoredMovie() to handle unmonitored movies; modified Radarr processor to conditionally invoke this method based on the new setting. Fixed documentation typo ("sesaon" → "season").
Settings Management
server/lib/settings/index.ts
Added removeUnmonitoredEnabled: boolean to MainSettings and FullPublicSettings interfaces; initialized with false default and propagated through fullPublicSettings getter.
Frontend UI & Context
src/components/Settings/SettingsMain/index.tsx, src/context/SettingsContext.tsx, src/pages/_app.tsx
Added checkbox form control for the setting; extended SettingsContext and page initialization to include the new flag; integrated with Formik validation and submission.
Internationalization
src/i18n/locale/en.json
Added localization key components.Settings.SettingsMain.removeUnmonitoredFromRequestsEnabled with descriptive label.

Sequence Diagram

sequenceDiagram
    participant User
    participant SettingsUI as Settings UI Form
    participant Backend as Settings API
    participant Database as Settings Store
    participant RadarrScanner as Radarr Scanner
    participant MediaDB as Media Database

    User->>SettingsUI: Enable "Remove Unmonitored Media"
    SettingsUI->>Backend: POST /settings with removeUnmonitoredEnabled: true
    Backend->>Database: Save removeUnmonitoredEnabled: true
    Database-->>Backend: Confirmed
    Backend-->>SettingsUI: Settings updated
    
    Note over RadarrScanner: Next sync cycle
    RadarrScanner->>Backend: Fetch current settings
    Backend-->>RadarrScanner: removeUnmonitoredEnabled: true
    RadarrScanner->>RadarrScanner: Check each Radarr movie
    alt Movie is unmonitored & removeUnmonitoredEnabled
        RadarrScanner->>MediaDB: Find Media by TMDB ID
        MediaDB-->>RadarrScanner: Return existing Media
        RadarrScanner->>RadarrScanner: processUnmonitoredMovie()
        RadarrScanner->>MediaDB: Update status to UNKNOWN
        MediaDB-->>RadarrScanner: Saved
    else Movie is unmonitored & NOT removeUnmonitoredEnabled
        RadarrScanner->>RadarrScanner: Log debug & skip
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 A setting springs forth, tried and true,
Where unmonitored films get a new view!
From PROCESSING state to UNKNOWN they go,
When the toggle is switched—a beautiful flow! ✨

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately describes the main objective: removing unmonitored movies from the 'requested' status during Radarr scans. The change across all modified files supports this core purpose.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@server/lib/scanners/baseScanner.ts`:
- Around line 707-719: The unmonitored Radarr flow fails to clear the 4K status
because processUnmonitoredMovie(tmdbId: number) doesn't accept an is4k flag;
change its signature to processUnmonitoredMovie(tmdbId: number, is4k = false),
propagate the is4k boolean from the Radarr unmonitored check that currently
calls it, and when you find an existing Media in processUnmonitoredMovie (using
getExisting and mediaRepository), set existing.status = MediaStatus.UNKNOWN and
also set existing.status4k = MediaStatus.UNKNOWN when is4k is true before
calling mediaRepository.save(existing); mirror the conditional update pattern
used in processMovie to ensure both regular and 4K status fields are handled.

In `@server/lib/scanners/radarr/index.ts`:
- Around line 82-89: The code calls processUnmonitoredMovie(radarrMovie.tmdbId)
without awaiting it, which can leave its Promise unhandled and let the scan
continue prematurely; update the call in the radarr scanner (where getSettings()
and settings.main.removeUnmonitoredEnabled are checked and
radarrMovie.monitored/hasFile are evaluated) to await
this.processUnmonitoredMovie(radarrMovie.tmdbId) and ensure the surrounding
function is async or properly handles the returned Promise so errors are
propagated.

In `@src/components/Settings/SettingsMain/index.tsx`:
- Around line 181-182: The prop/state field removeUnmonitoredEnabled in
SettingsMain (index.tsx) can be undefined; update its assignment to always be a
boolean (e.g., use nullish coalescing or a boolean cast) so
removeUnmonitoredEnabled is set to false when data?.removeUnmonitoredEnabled is
undefined, keeping the checkbox controlled and the payload stable.

In `@src/i18n/locale/en.json`:
- Line 989: The i18n key
"components.Settings.SettingsMain.removeUnmonitoredFromRequestsEnabled" does not
match the UI and therefore won’t be used; update the JSON to replace that
incorrect key with the UI-expected keys
"components.Settings.SettingsMain.removeUnmonitoredEnabled" and
"components.Settings.SettingsMain.removeUnmonitoredExplanation" (splitting the
current message into the concise label for removeUnmonitoredEnabled and the
descriptive text for removeUnmonitoredExplanation) so the strings are picked up
by the UI.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cd8b386 and 6ebff78.

📒 Files selected for processing (10)
  • cypress/config/settings.cypress.json
  • seerr-api.yml
  • server/interfaces/api/settingsInterfaces.ts
  • server/lib/scanners/baseScanner.ts
  • server/lib/scanners/radarr/index.ts
  • server/lib/settings/index.ts
  • src/components/Settings/SettingsMain/index.tsx
  • src/context/SettingsContext.tsx
  • src/i18n/locale/en.json
  • src/pages/_app.tsx

Comment on lines +707 to +719
protected async processUnmonitoredMovie(tmdbId: number): Promise<void> {
const mediaRepository = getRepository(Media);
await this.asyncLock.dispatch(tmdbId, async () => {
const existing = await this.getExisting(tmdbId, MediaType.MOVIE);
if (existing && existing.status === MediaStatus.PROCESSING) {
existing.status = MediaStatus.UNKNOWN;
await mediaRepository.save(existing);
this.log(
`Movie TMDB ID ${tmdbId} unmonitored from Radarr. Media status set to UNKNOWN.`,
'info'
);
}
});
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Find call sites of processUnmonitoredMovie
echo "=== Call sites of processUnmonitoredMovie ==="
rg -n "processUnmonitoredMovie" -S server/lib/scanners

echo -e "\n=== Unmonitored handling in Radarr ==="
rg -n "unmonitored" -S server/lib/scanners/radarr/index.ts

echo -e "\n=== General unmonitored handling ==="
rg -n "unmonitored" -S server/lib/scanners/baseScanner.ts

Repository: seerr-team/seerr

Length of output: 676


🏁 Script executed:

#!/bin/bash
# Examine the Radarr unmonitored handling in context
echo "=== Radarr index.ts unmonitored handling (lines 75-95) ==="
sed -n '75,95p' server/lib/scanners/radarr/index.ts

echo -e "\n=== Check for 4K handling in Radarr ==="
rg -n "4k|is4k|status4k" -S server/lib/scanners/radarr/index.ts

echo -e "\n=== Check Media entity structure ==="
rg -n "status4k" -S server/entity

Repository: seerr-team/seerr

Length of output: 2055


🏁 Script executed:

#!/bin/bash
# Check if processUnmonitoredMovie is overridden in subclasses
echo "=== Check for processUnmonitoredMovie implementation in all scanners ==="
rg -n "processUnmonitoredMovie" -S server/lib/scanners -A 5

echo -e "\n=== Check if processMovie method handles 4K ==="
rg -n "processMovie.*is4k" -S server/lib/scanners/baseScanner.ts -B 2 -A 10

Repository: seerr-team/seerr

Length of output: 1177


🏁 Script executed:

#!/bin/bash
# Search for processMovie method definition
echo "=== processMovie method signature ==="
rg -n "protected.*processMovie" -S server/lib/scanners/baseScanner.ts -A 10

echo -e "\n=== Check how is4k parameter is used in processMovie ==="
rg -n "is4k:" -S server/lib/scanners/baseScanner.ts -B 2 -A 2

Repository: seerr-team/seerr

Length of output: 414


🏁 Script executed:

#!/bin/bash
# See full processMovie to understand how is4k is used
echo "=== Full processMovie method (first 100 lines) ==="
sed -n '94,194p' server/lib/scanners/baseScanner.ts

echo -e "\n=== Search for status4k usage in baseScanner ==="
rg -n "status4k" -S server/lib/scanners/baseScanner.ts

Repository: seerr-team/seerr

Length of output: 5055


Pass is4k flag to handle both status and status4k for unmonitored 4K Radarr movies.

The unmonitored check in Radarr (lines 84–88) returns early before determining if the server is 4K, calling processUnmonitoredMovie without an is4k flag. Since processUnmonitoredMovie only updates the regular status field to UNKNOWN, any unmonitored movie in a 4K-configured Radarr server will leave status4k unchanged (likely PROCESSING), causing it to still appear "requested" in 4K views.

Update processUnmonitoredMovie to accept an is4k parameter and update status4k when applicable, similar to how processMovie handles it (line 117).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@server/lib/scanners/baseScanner.ts` around lines 707 - 719, The unmonitored
Radarr flow fails to clear the 4K status because processUnmonitoredMovie(tmdbId:
number) doesn't accept an is4k flag; change its signature to
processUnmonitoredMovie(tmdbId: number, is4k = false), propagate the is4k
boolean from the Radarr unmonitored check that currently calls it, and when you
find an existing Media in processUnmonitoredMovie (using getExisting and
mediaRepository), set existing.status = MediaStatus.UNKNOWN and also set
existing.status4k = MediaStatus.UNKNOWN when is4k is true before calling
mediaRepository.save(existing); mirror the conditional update pattern used in
processMovie to ensure both regular and 4K status fields are handled.

Comment on lines +82 to 89
const settings = getSettings();
if (
settings.main.removeUnmonitoredEnabled &&
!radarrMovie.monitored &&
!radarrMovie.hasFile
) {
this.processUnmonitoredMovie(radarrMovie.tmdbId);
return;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Await processUnmonitoredMovie to avoid unhandled async work.

processUnmonitoredMovie returns a Promise; without await, errors can be unhandled and the scan can advance before the state transition completes.

🛠️ Suggested fix
-      this.processUnmonitoredMovie(radarrMovie.tmdbId);
+      await this.processUnmonitoredMovie(radarrMovie.tmdbId);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@server/lib/scanners/radarr/index.ts` around lines 82 - 89, The code calls
processUnmonitoredMovie(radarrMovie.tmdbId) without awaiting it, which can leave
its Promise unhandled and let the scan continue prematurely; update the call in
the radarr scanner (where getSettings() and
settings.main.removeUnmonitoredEnabled are checked and
radarrMovie.monitored/hasFile are evaluated) to await
this.processUnmonitoredMovie(radarrMovie.tmdbId) and ensure the surrounding
function is async or properly handles the returned Promise so errors are
propagated.

Comment on lines +181 to 182
removeUnmonitoredEnabled: data?.removeUnmonitoredEnabled,
}}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Ensure removeUnmonitoredEnabled is always boolean.

If data?.removeUnmonitoredEnabled is undefined, the checkbox state/payload can be undefined. Defaulting to false keeps the form controlled and the payload stable.

🛠️ Suggested fix
-            removeUnmonitoredEnabled: data?.removeUnmonitoredEnabled,
+            removeUnmonitoredEnabled: data?.removeUnmonitoredEnabled ?? false,
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
removeUnmonitoredEnabled: data?.removeUnmonitoredEnabled,
}}
removeUnmonitoredEnabled: data?.removeUnmonitoredEnabled ?? false,
}}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/Settings/SettingsMain/index.tsx` around lines 181 - 182, The
prop/state field removeUnmonitoredEnabled in SettingsMain (index.tsx) can be
undefined; update its assignment to always be a boolean (e.g., use nullish
coalescing or a boolean cast) so removeUnmonitoredEnabled is set to false when
data?.removeUnmonitoredEnabled is undefined, keeping the checkbox controlled and
the payload stable.

Comment thread src/i18n/locale/en.json
"components.Settings.SettingsMain.partialRequestsEnabled": "Allow Partial Series Requests",
"components.Settings.SettingsMain.streamingRegion": "Streaming Region",
"components.Settings.SettingsMain.streamingRegionTip": "Show streaming sites by regional availability",
"components.Settings.SettingsMain.removeUnmonitoredFromRequestsEnabled": "Remove Request for Movies that have been un-monitored since",
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix i18n key to match the UI message IDs.

The UI uses components.Settings.SettingsMain.removeUnmonitoredEnabled and components.Settings.SettingsMain.removeUnmonitoredExplanation, so this key won’t be picked up and the new strings won’t be localizable.

🛠️ Suggested fix
-  "components.Settings.SettingsMain.removeUnmonitoredFromRequestsEnabled": "Remove Request for Movies that have been un-monitored since"
+  "components.Settings.SettingsMain.removeUnmonitoredEnabled": "Remove Unmonitored Media",
+  "components.Settings.SettingsMain.removeUnmonitoredExplanation": "Remove movies from Jellyseerr that are not available and have been unmonitored."
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"components.Settings.SettingsMain.removeUnmonitoredFromRequestsEnabled": "Remove Request for Movies that have been un-monitored since",
"components.Settings.SettingsMain.removeUnmonitoredEnabled": "Remove Unmonitored Media",
"components.Settings.SettingsMain.removeUnmonitoredExplanation": "Remove movies from Jellyseerr that are not available and have been unmonitored."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/i18n/locale/en.json` at line 989, The i18n key
"components.Settings.SettingsMain.removeUnmonitoredFromRequestsEnabled" does not
match the UI and therefore won’t be used; update the JSON to replace that
incorrect key with the UI-expected keys
"components.Settings.SettingsMain.removeUnmonitoredEnabled" and
"components.Settings.SettingsMain.removeUnmonitoredExplanation" (splitting the
current message into the concise label for removeUnmonitoredEnabled and the
descriptive text for removeUnmonitoredExplanation) so the strings are picked up
by the UI.

@fallenbagel
Copy link
Copy Markdown
Collaborator

superseded by #2757

@fallenbagel fallenbagel closed this Apr 2, 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.

Support monitor type for Radarr

4 participants