New Features
- Simkl watch tracking - connect a personal Simkl account with PIN authorization and use Simkl watch history across movie selection, filters, collection completion, ratings, and external links. Movie Roulette includes a built-in Simkl Client ID, while self-hosters can override it with
SIMKL_CLIENT_IDor provideSIMKL_ACCESS_TOKEN - Per-user tracking provider selection - Settings now provides an exclusive None / Trakt / Simkl selector. Connections are retained when switching, but only the selected provider contributes watched status
- Activity-aware Simkl synchronization - completed movie IDs are cached locally and refreshed only when Simkl activity timestamps change, including removals and history changes
Improvements
- Provider-neutral tracking UI and APIs - watched badges, collection data, ratings, links, filters, and cache metadata now identify the active provider instead of assuming Trakt
- Complete collection warning view - once a collection warning is triggered, the original previous/other layout now shows the entire TMDb collection in release order, including watched predecessors, the selected title, and later entries
Security
- GitHub dependency alerts resolved - upgraded
aiohttpfrom 3.13.4 to 3.14.1,cryptographyfrom 46.0.7 to 48.0.1,idnafrom 3.11 to 3.15,python-engineiofrom 4.13.1 to 4.13.2,python-socketiofrom 5.16.1 to 5.16.2,urllib3from 2.6.3 to 2.7.0, andzeroconffrom 0.148.0 to 0.149.16. These updates address the open GitHub alerts for the affected HTTP, TLS, Socket.IO, and service-discovery packages, including CVE-2026-44431, CVE-2026-44432, CVE-2026-45409, CVE-2026-48802, CVE-2026-48804, CVE-2026-48809, and the 2026aiohttpandzeroconfadvisories - Dependency cleanup and maintenance - removed the stale direct
pyOpenSSL26.0.0 pin that blocked the fixedcryptographyversion; WebAuthn now resolves compatiblepyOpenSSL26.2.0. Also upgradedjaraco.contextto 6.1.2,PlexAPIto 4.18.1,pytzto 2026.1.post1, andtabulateto 0.10.0
Bug Fixes
- Complete Plex collection membership during initial cache builds - collection generation now waits for the full watched-and-unwatched Plex cache instead of using the unwatched-only cache, and invalidates older incomplete collection caches automatically
- Correct provider labels in collections - collection badges now show the selected provider, such as On Simkl or On Trakt
Full Changelog: v5.4.3...v5.5.0