This release adds a Ratings page for re-rating and excluding watched titles, External URL settings for Docker-based setups, and fixes for Seer auto-approval and Jellyfin TV matching, together with error-handling hardening and dependency updates.
⭐ Ratings & Watched-History Management
- Added a new Ratings page in the main navigation where users can rate the titles they watched
- Titles can now be re-rated or excluded from suggestions without changing their original source
- Excluded titles still count as "already watched" but no longer influence taste, whichever source reported them (media server, Trakt, or managed history)
- High ratings steer suggestions, while low-rated titles are never used as a starting point
- Watch history from Plex, Jellyfin, and Emby is now synced into the database incrementally, so the Ratings page loads quickly
- Incremental sync re-reads a short overlap window so Jellyfin replays aren't missed
- Admins can manage watched history on behalf of a specific media user
- Added database migrations for the new exclusion flag and play date
Addresses #536.
🌐 External URLs for Jellyfin, Emby & Seer
- Added an optional External URL setting for Jellyfin/Emby and Seer
- Links in SuggestArr now use the browser-facing address when the configured API URL is internal (e.g. a Docker container name)
- Seer "play" links for Jellyfin/Emby are rewritten to the external media-server address
- The Seer web link prefers the SuggestArr External URL, then Seer's Application URL, then the API URL
Addresses #533.
📺 Seer Request Fixes
- Requests made on behalf of a mapped Seer user now use the
X-Api-Userheader - Fixed requests being auto-approved with the admin's permissions instead of the mapped user's
- Updated Seer client tests accordingly
Addresses #535.
🎞️ Jellyfin TV Matching Fix
- Fixed TV shows occasionally being matched using an episode-level TMDb ID
- The series TMDb ID is now always used, falling back to a series lookup when it's missing
Addresses #539.
🔐 Error Handling & Backend Improvements
- Standardized client-facing error messages for Trakt device authentication, Trakt recent-item previews, AI Search, and Cleanup
- Internal error details are no longer exposed in API responses and are logged server-side instead
- Improved logging in the TMDb client
- Extended test coverage for watched history, played-title sync, Seer, availability sync, and configuration
🧰 Maintenance & Dependencies
- Updated Python dependencies, including PyJWT, aiohttp, uvicorn, PlexAPI, and openai
- Updated frontend npm dependencies, including Vue, Vue Router, Vite, ESLint, and Playwright
- Updated
actions/setup-nodein the CI and Docker build workflows
Dependency updates include #528.