v2.9.0 — Media Server Analytics, Notifications, Library Cleanup, Hunting Overhaul & Runtime Validation
The largest feature release since 2.0 — adding media server awareness, a full notification system, library lifecycle management, and a comprehensive hunting overhaul.
Highlights
🎬 Plex/Tautulli Integration
- Now Playing dashboard with live session monitoring
- On Deck & Recently Added poster carousels
- Watch history with user attribution
- Session snapshot analytics (bandwidth, transcode, device trends)
📬 Notification System (10 Channels)
Discord, Slack, Telegram, Email, Gotify, Ntfy, Pushover, Webhooks, Browser Push, Apprise — with event subscriptions, routing rules, aggregation batching, and retry with dead-letter tracking.
🧹 Library Cleanup
Rule-based evaluation (size, quality, age, codec, watch status) with approval workflow, dry-run preview, and circuit breaker safety.
📺 Jellyseerr/Overseerr Integration
View, approve, and decline media requests directly from the dashboard with CSRF handling and circuit breaker resilience.
🔍 Hunting Overhaul (#187)
- Fetches complete wanted list (up to 10K items) — fixes dead-page pagination bug
- "Include all monitored items" toggle for upgrades after quality profile changes
- Diagnostic funnel messages: "Fetched 500 → 320 passed filters → all 320 recently searched"
✅ Runtime Validation
Zod validation on all upstream API responses with schema drift detection, quarantine ring buffer, and health dashboard.
🎨 UI Consistency
Three-tier card system, backdrop-blur cleanup, light/OLED mode fix, form input standardization across 53+ files.
⚡ Performance
- Batched Plex cache upserts (10-50x faster on RPi/NAS)
- Database indexes for analytics queries
- Smart polling (disabled on inactive tabs, reduced intervals)
- ColorThemeProvider memoization, NavContent module-scope, lazy-loaded modals
🔒 Security
- 11 CVEs resolved (next 16.1.7, undici 7.24.0, flatted 3.4.0)
- SSRF prevention in Plex image proxy
- 6 silent failure catch blocks now log errors
- Comprehensive security review completed
Upgrade Notes
- Database: Schema changes are fully additive (18 new tables, new columns with defaults).
prisma db pushruns automatically on container startup — no manual migration needed. - SQLite & PostgreSQL: Both upgrade paths tested and verified with data preservation.
- Breaking Changes: None. All existing configurations are preserved.
- Docker: Pull
khak1s/arr-dashboard:latestand restart.
Full Changelog
See CHANGELOG.md for the complete list of changes.