Skip to content

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

Merged
enoch85 merged 2 commits into
developmentfrom
fix/collection-failure-notification-detail
Jun 2, 2026
Merged

fix: make collection handling failure notifications name the failing collection#3013
enoch85 merged 2 commits into
developmentfrom
fix/collection-failure-notification-detail

Conversation

@enoch85

@enoch85 enoch85 commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator

When a collection rule failed to handle an item, the notification was a generic "Oops! Something went wrong while processing your collections" with no indication of which collection failed.

  • Notification names the collection. CollectionHandler_Failed is now emitted per failing collection carrying the existing-but-unused CollectionHandlerFailedDto (collection title + identifier), mirroring how RuleHandler_Failed and CollectionMedia_Handled already work. The message reads "Couldn't finish handling one or more items in ''. Check the Maintainerr logs for details." Infrastructure-level failures (media server unreachable, unexpected run errors) still emit a generic alert, and the {collection_name} clause is stripped when there's no collection context so a raw placeholder is never delivered.
  • transformMessageContent resolves collection name / day count before touching the media server. These are plain string substitutions; doing them up front means an unavailable media server (which only affects media-title lookups) can't return the raw {collection_name} template for the media-server-unreachable failure notification.
  • Per-item failure stays at warn (matching the prior behaviour) so a failed action remains visible without DEBUG; the thrown error's stack stays at debug.

@enoch85 enoch85 force-pushed the fix/collection-failure-notification-detail branch 3 times, most recently from 0800a4e to de41c6b Compare June 2, 2026 17:36
@enoch85 enoch85 force-pushed the fix/collection-failure-notification-detail branch from de41c6b to 3456ccc Compare June 2, 2026 17:39
@enoch85 enoch85 merged commit 3b72b07 into development Jun 2, 2026
14 checks passed
@enoch85 enoch85 deleted the fix/collection-failure-notification-detail branch June 2, 2026 18:07
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