✨ What's New
Anime Library Toggle in Notification Mapping
Each library row in the Jellyfin notification mapping UI now has a compact Anime checkbox. Mark any library as an anime library directly in the dashboard — explicit and reliable regardless of how the library is named.
- The flag is passed through all notification paths (webhook, poller, WebSocket) alongside the channel routing
- Works independently of the automatic TMDB-based anime detection used for Seerr requests
Anime Quality Profiles & Server Selection
You can now configure separate default quality profiles and Radarr/Sonarr servers for anime content — both TV series and movies.
- Automatic detection: Anime is identified via TMDB metadata (Animation genre + Japanese origin), matching Jellyseerr's own heuristic
- Jellyseerr
isAnimeflag: Requests for anime content includeisAnime: true, allowing Jellyseerr to route to your anime-configured Sonarr/Radarr instance - Graceful fallback: If no anime-specific config is set, the standard movie/TV defaults are used — existing setups are completely unaffected
New config options (Dashboard → Seerr)
| Setting | Description |
|---|---|
| Default Anime Quality | Quality profile for anime TV series (Sonarr) |
| Default Anime Movie Quality | Quality profile for anime movies (Radarr) |
| Default Anime Server | Sonarr server for anime TV series |
| Default Anime Movie Server | Radarr server for anime movies |
Click Load Seerr Options in the dashboard to populate the new dropdowns.
CI: npm Audit Gate
The GitHub Actions pipeline now runs npm audit --audit-level=high before building the Docker image. Vulnerable dependencies block the build.
🐛 Fixes
- Jellyfin library matching: Libraries with
nullormixedCollectionType no longer get incorrectly skipped during notification path matching - Docker config volume permissions: Added entrypoint script to fix ownership on first run, preventing write failures for the non-root container user
- Seerr error messages: Request failures now show specific messages (auth errors, server errors, connection refused) instead of generic "An error occurred"
- Seerr
checkMediaStatus: Network and 5xx errors are now propagated instead of silently returning "not found" - Silent failures in dashboard: Previously swallowed errors in the web dashboard now log at the appropriate level — bot status polling, logout, guild/channel loading, role loading, connection checks, and more
- Legacy library config formats: Old
JELLYFIN_NOTIFICATION_LIBRARIESformats (array of IDs,{ libId: channelString }) are now migrated transparently at read time across all notification paths
🏗️ Code Quality
- Shared library resolver: All three notification sources (webhook, poller, WebSocket) now use shared helper functions in
jellyfin/libraryResolver.js, eliminating duplicated inline logic
🗑️ Removed
- Legacy
.envmigration: The automatic.env→config.jsonmigration has been removed. If a.envfile is still present, a warning is logged pointing to the web dashboard
Full Changelog: v1.4.9...v1.5.0