This release introduces a new recommendation approval workflow, automated Trakt recommendation jobs, per-user request visibility, and more flexible Seerr configuration.
It also adds new recommendation filters, significantly reduces TMDb requests, and improves the internal database architecture and test coverage.
✅ Recommendation Approval
- Added an optional approval workflow before recommendations are submitted to Seerr
- Added global approval configuration with per-job overrides
- Added support for approving, rejecting, blacklisting, and retrying recommendations
- Added bulk operations for managing multiple pending recommendations
- Added automatic job pausing while recommendations are awaiting approval
- Added automatic rejection after a configurable number of days
- Added blacklist handling to prevent unwanted titles from being suggested again
- Added support for retrying failed or previously rejected recommendations (#373)
🔄 Trakt Recommendations
- Added dedicated automated jobs for Trakt recommendations
- Added support for running Trakt recommendation jobs for individual media users
- Added dedicated filters and request configuration for Trakt jobs
- Preserved the correct media-user context during recommendation processing
- Fixed Seerr identity handling for Trakt-generated requests
👥 Media Users & Request Visibility
- Added request visibility for Plex, Jellyfin, and Emby accounts (#125)
- Added request filtering by media user
- Added per-user request isolation
- Preserved the originating media user throughout the recommendation and request workflow
- Added support for selecting the Seerr identity used to submit requests (#261)
⚙️ Per-Job Request Configuration
- Added per-job server selection
- Added per-job quality profile selection (#269)
- Added per-job root folder selection (#269)
- Added per-job Seerr user identity selection
- Improved Seerr profile validation before job execution
🔍 Recommendation Filters
- Added filters for including only selected genres (#255)
- Added an option to suggest only the first movie from a collection (#189)
- Added an option to pause jobs when previous suggestions remain unwatched (#119)
🖼 TMDb Cache & Backgrounds
- Added configurable TMDb caching
- Added an endpoint for manually clearing the TMDb cache
- Added two-hour reuse of the backdrop catalog
- Stopped backdrop requests while the browser tab is hidden
- Improved background rotation to reuse locally cached results
- Significantly reduced unnecessary TMDb traffic (#396)
🏗 Internal Architecture
- Split
DatabaseManagerinto smaller domain-specific components and mixins - Preserved the existing public database interface
- Improved separation of database responsibilities
- Reduced the size and complexity of the original database manager
- Improved maintainability for future database changes
🛠 Fixes
- Fixed Seerr login when the configured URL ends with
/(#392) - Updated cron weekday handling to use standard weekday numbering (#395)
- Added a Jellyfin fallback from
VirtualFolderstoMediaFolders - Fixed Seerr profile validation
- Fixed media-user and request context handling for Trakt jobs
- Improved pending approval, rejection, and retry handling
🧪 Testing
- Added native Node-based frontend tests
- Added frontend coverage for Requests, Jobs, and approval workflows
- Expanded backend tests for recommendation approvals
- Added coverage for media-user request visibility
- Added coverage for Trakt jobs and per-job Seerr configuration
📚 Documentation & Interface
- Updated the README with the new recommendation and approval workflows
- Updated the Requests interface
- Updated the Jobs interface
- Updated the Advanced settings interface
- Improved configuration descriptions for approval settings and recommendation filters
📦 Dependencies
- Updated multiple Python dependencies
- Updated Font Awesome
- Updated GitHub Actions workflows
🧹 Misc
- General maintenance, internal cleanup, and stability improvements
- Improved request workflow reliability across automatic and manually approved recommendations