This release includes 2 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+6 more
Affected surfaces
ReleasePort's take
Light signalExclusions now behave as either global or per‑group; removing a global exclusion forces re‑adding any per‑group exclusions. Per‑group exclusions apply only within their own group, not globally.
Why it matters: Breaking change alters exclusion logic: global removal requires manual per‑group re‑addition (severity 70). Operators must adjust configurations before upgrade to avoid unintended inclusion/exclusion behavior.
Summary
AI summaryUpdates Highlights, Internal, and 3.13.0 across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Breaking | High |
Exclusions are now either global or per-group; removing a global exclusion requires re-adding per-group ones. Exclusions are now either global or per-group; removing a global exclusion requires re-adding per-group ones. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Breaking | High |
Per-group exclusions now apply only to their own group, not globally. Per-group exclusions now apply only to their own group, not globally. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Breaking | High |
Section without an operator is now treated as OR instead of AND; migration not reversible. Section without an operator is now treated as OR instead of AND; migration not reversible. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Feature | Medium |
Added metadata fallback for rules when series are absent from Sonarr using the configured provider. Added metadata fallback for rules when series are absent from Sonarr using the configured provider. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Feature | Medium |
Introduced Streamystats watchlist rule properties for Jellyfin enabling watchlist‑based rules. Introduced Streamystats watchlist rule properties for Jellyfin enabling watchlist‑based rules. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Feature | Medium |
Added Plex rule for "Amount of episodes marked as watched". Added Plex rule for "Amount of episodes marked as watched". Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Dependency | Low |
Updated 14 dependencies including TypeORM, @tanstack/react-query, and @typescript-eslint/eslint-plugin. Updated 14 dependencies including TypeORM, @tanstack/react-query, and @typescript-eslint/eslint-plugin. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Performance | Low |
Improved cache hygiene for external API and metadata responses. Improved cache hygiene for external API and metadata responses. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Bugfix | Medium |
Fixed OR rule sections incorrectly evaluated as AND due to operator coercion. Fixed OR rule sections incorrectly evaluated as AND due to operator coercion. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Bugfix | Medium |
Prevented Plex auth drop when plex.tv is unreachable. Prevented Plex auth drop when plex.tv is unreachable. Source: llm_adapter@2026-05-28 Confidence: high |
— |
Full changelog
3.13.0 (2026-05-28)
Global vs scoped exclusions
Exclusions are now either global (everywhere) or per-group — not both. Setting a global exclusion replaces any per-group ones for that item. If you later remove the global exclusion, you'll need to re-add the per-group ones.
Per-group exclusions stay in their group
Per-group exclusions used to hide an item in every group. They now apply only to the group you set them in, so items you excluded in one group may start showing up in others. Existing exclusions aren't auto-converted — to exclude something everywhere, use a global exclusion.
Rule section operators
A section without an operator used to be treated as AND; it's now OR, which is what we always meant. Existing rules are migrated automatically so they keep evaluating the same way.
If a multi-section rule wasn't matching as you expected, this is probably why. The operator between sections is now visible in the rule editor, and new rules need an explicit operator on every section after the first.
This migration is not reversible.
Highlights
- Added metadata fallback for rules when series are absent from Sonarr, using the configured metadata provider (#3002).
- Introduced Streamystats watchlist rule properties for Jellyfin, enabling watchlist-based rules (#2977).
- Fixed OR rule sections incorrectly evaluated as AND due to operator coercion, ensuring accurate rule logic (#2971).
- Scoped exclusions to their rule group under TypeORM 1.0, resolving latent bugs (#2991).
Features
- Added Plex rule for "Amount of episodes marked as watched" (#2975).
- Added Streamystats watchlist rule properties for Jellyfin (#2977).
- Adopted Tailwind CSS v4 and implemented related UI enhancements.
Fixes
- Fixed OR rule sections incorrectly evaluated as AND due to operator coercion (#2971).
- Prevented Plex auth drop when plex.tv is unreachable (#2996).
- Improved rule import robustness for YAML and community rules across media servers (#2986, #2976).
- Fixed HTTP 414 errors when creating large collections by batching item additions (#3001).
- Resolved navigation issues in the UI for global-exclusion warning links.
- Omitted empty Discord embed thumbnails to prevent webhook failures.
- Fixed styling and crash issues in Test Media search and unary-rule comparisons (#2978).
Performance
- Improved cache hygiene for external API and metadata responses (#2972).
Database migrations
- Backfilled the
operatorfield in stored rules where it was previously null, ensuring explicit AND/OR values for accurate rule evaluation.
Internal
- Refactored shared media getter rule helpers to reduce duplication (#2922).
- Unified form field styling into a single source for consistency.
Dependencies
- Updated 14 dependencies, including notable packages like
typeorm,@tanstack/react-query, and@typescript-eslint/eslint-plugin.
New Contributors
- @stormshaker made their first contribution in https://github.com/Maintainerr/Maintainerr/pull/2972
- @CampbellMG made their first contribution in https://github.com/Maintainerr/Maintainerr/pull/2975
Breaking Changes
- Exclusions must be either global (applies everywhere) or per‑group; setting a global exclusion replaces any existing per‑group exclusions for that item, and removing the global exclusion requires re‑adding per‑group ones.
- Rule sections without an explicit operator now evaluate as OR instead of AND; this change is not reversible and affects all existing rules.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Maintainerr
Looks and smells like Seerr, does the opposite. A library maintenance tool for Plex and Jellyfin.
Related context
Beta — feedback welcome: [email protected]