Skip to content

fix(collections): don't force-delete Seerr requests for episode rules#3015

Merged
enoch85 merged 2 commits into
developmentfrom
fix/no-force-seerr-for-episodes
Jun 2, 2026
Merged

fix(collections): don't force-delete Seerr requests for episode rules#3015
enoch85 merged 2 commits into
developmentfrom
fix/no-force-seerr-for-episodes

Conversation

@enoch85

@enoch85 enoch85 commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator

"Force delete Seerr request" on an episode-level rule deleted the entire season request in Seerr the moment a single episode was handled — wiping the request for every other (still-present) episode in that season.

The root cause: Seerr tracks requests per season, not per episode. The episode branch mapped the episode to its parent season and removed that season's whole request, with no check for remaining episodes. There's no correct force-delete at episode granularity, and it contradicts Force Seerr's intent (opt-in to immediate removal; otherwise rely on Seerr's availability sync).

  • Server (handling): the episode branch no longer mutates Seerr — it skips removal and lets Seerr's availability sync reconcile, the same as when Force Seerr is off. This also neutralizes the flag for existing episode collections that still have it set. season, movie, and show are unchanged.
  • Server (persistence): forceSeerr is coerced to false when a rule's resolved media type is episode, so the flag never persists as enabled for episode rules — and an episode rule created before this change clears the stale flag the next time it's saved. The media-type resolution is shared via a single resolveCollectionType helper (was duplicated across the create/update paths).
  • UI: the "Force delete Seerr request" toggle is hidden when the rule's media type is episode.

Season-level cleanup (season rules, the *_SHOW_IF_EMPTY actions, and Seerr's own sync) is unaffected.

Verified end-to-end with the dev seed + Playwright: the toggle shows for show/season and is hidden for episodes, and an episode rule with forceSeerr set resets to off on save.

@enoch85 enoch85 force-pushed the fix/no-force-seerr-for-episodes branch from f067451 to 2921a37 Compare June 2, 2026 18:34
@enoch85 enoch85 force-pushed the fix/no-force-seerr-for-episodes branch from 2921a37 to d19f219 Compare June 2, 2026 18:38
@enoch85 enoch85 merged commit 6944d54 into development Jun 2, 2026
14 checks passed
@enoch85 enoch85 deleted the fix/no-force-seerr-for-episodes branch June 2, 2026 18:43
maintainerr-automation Bot added a commit that referenced this pull request Jun 2, 2026
* docs(changelog): add v3.13.0 breaking-changes notice

Mirrors the PLEASE NOTE block published on the v3.13.0 GitHub release
(global vs scoped exclusions, per-group exclusion scoping, section
operator default).

* build(deps-dev): bump turbo from 2.9.15 to 2.9.16 (#3005)

Bumps [turbo](https://github.com/vercel/turborepo) from 2.9.15 to 2.9.16.
- [Release notes](https://github.com/vercel/turborepo/releases)
- [Changelog](https://github.com/vercel/turborepo/blob/main/RELEASE.md)
- [Commits](vercel/turborepo@v2.9.15...v2.9.16)

---
updated-dependencies:
- dependency-name: turbo
  dependency-version: 2.9.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(rules): clarify libItem.id is the media server ID in resolve-failure warning

Both the Radarr and Sonarr getters logged "Failed to resolve external IDs
for 'X' with id 'Y'" where Y is libItem.id — the media server's internal
item id (Plex ratingKey, Jellyfin item id), not a TMDB/external id.
Multiple readers have misread it as a wrong stored TMDB id (issue #2990).
Reword to "(media server ID 'Y')" so the field is self-explanatory.

No behaviour change.

* build(deps): bump nodemailer from 8.0.9 to 8.0.10 (#3006)

Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 8.0.9 to 8.0.10.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](nodemailer/nodemailer@v8.0.9...v8.0.10)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 8.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump react-router-dom from 7.15.1 to 7.16.0 (#3007)

Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.15.1 to 7.16.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.16.0/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-version: 7.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(dev): add fake Radarr mock and wire seed for arr-action testing (#3014)

* fix: make collection handling failure notifications name the failing collection (#3013)

* fix: use Radarr bulk exclusions endpoint to avoid duplicate 400 failure (#3012)

* fix(collections): don't force-delete Seerr requests for episode rules (#3015)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: maintainerr-automation[bot] <261505141+maintainerr-automation[bot]@users.noreply.github.com>
Co-authored-by: enoch85 <mailto@danielhansson.nu>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@maintainerr-automation

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 3.14.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

doonga pushed a commit to greyrock-labs/home-ops that referenced this pull request Jun 6, 2026
… ➔ 3.14.0) (#207)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/maintainerr/maintainerr](https://github.com/Maintainerr/Maintainerr) | minor | `3.13.0` → `3.14.0` |

---

### Release Notes

<details>
<summary>Maintainerr/Maintainerr (ghcr.io/maintainerr/maintainerr)</summary>

### [`v3.14.0`](https://github.com/Maintainerr/Maintainerr/blob/HEAD/CHANGELOG.md#3140-2026-06-05)

[Compare Source](Maintainerr/Maintainerr@v3.13.0...v3.14.0)

#### Highlights

- Added `/api/health` endpoints with liveness and readiness checks for monitoring and integration with tools like Kubernetes and Docker Compose ([#&#8203;3029](Maintainerr/Maintainerr#3029)).
- Collection handler now skips media currently being streamed to avoid disrupting active viewers ([#&#8203;3027](Maintainerr/Maintainerr#3027)).
- Fixed issue where saving log settings would overwrite an active `LOG_LEVEL` environment variable override ([#&#8203;3053](Maintainerr/Maintainerr#3053)).

#### Features

- Added `/api/health` endpoints with liveness and readiness checks ([#&#8203;3029](Maintainerr/Maintainerr#3029)).
- Collection handler now skips media currently being streamed ([#&#8203;3027](Maintainerr/Maintainerr#3027)).
- Logging system now honors the `LOG_LEVEL` environment variable on startup ([#&#8203;3030](Maintainerr/Maintainerr#3030)).

#### Fixes

- Fixed issue where saving log settings would overwrite an active `LOG_LEVEL` environment variable override ([#&#8203;3053](Maintainerr/Maintainerr#3053)).
- Validated webhook URL schemes to prevent invalid or potentially harmful requests ([#&#8203;3031](Maintainerr/Maintainerr#3031)).
- Fixed issue where rule groups lost collection links and visibility on partial updates ([#&#8203;3045](Maintainerr/Maintainerr#3045), [#&#8203;3046](Maintainerr/Maintainerr#3046)).
- Fixed issue with manual collections not being found across libraries on Jellyfin/Emby ([#&#8203;3026](Maintainerr/Maintainerr#3026), [#&#8203;3042](Maintainerr/Maintainerr#3042)).
- Resolved issue where deleted media remained stuck in Jellyfin/Emby collections and caused repeated processing errors ([#&#8203;3023](Maintainerr/Maintainerr#3023), [#&#8203;3024](Maintainerr/Maintainerr#3024), [#&#8203;3040](Maintainerr/Maintainerr#3040)).
- Fixed issue where Seerr requests for episode rules incorrectly deleted entire season requests ([#&#8203;3015](Maintainerr/Maintainerr#3015)).
- Improved error notifications for collection handling failures to include the name of the failing collection ([#&#8203;3013](Maintainerr/Maintainerr#3013)).
- Used Radarr bulk exclusions endpoint to avoid duplicate 400 errors when adding exclusions ([#&#8203;3012](Maintainerr/Maintainerr#3012)).

#### Performance

- Pruned media that no longer exists on the media server to improve collection handling efficiency ([#&#8203;3023](Maintainerr/Maintainerr#3023), [#&#8203;3040](Maintainerr/Maintainerr#3040)).

#### Internal

- Refreshed README with updated features, deployment examples, and credits ([#&#8203;3048](Maintainerr/Maintainerr#3048)).
- Clarified that a missing `yarn` command indicates a stale `node_modules` directory.

#### Dependencies

- Updated 20 dependencies, including `@typescript-eslint/parser`, `react-router-dom`, `axios`, and `vite`.

#### New Contributors

- [@&#8203;Arvuno](https://github.com/Arvuno) made their first contribution in [#&#8203;3029](Maintainerr/Maintainerr#3029)

</details>

---

### Configuration

📅 **Schedule**: (in timezone America/New_York)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDYuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIwNi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19-->

Reviewed-on: https://git.greyrock.io/greyrock-labs/home-ops/pulls/207
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant