🔄 Plex Collection Diffing & Automated Push Sync
- Dedicated Sync Service: Integrated a fast, background Plex push engine powered by SQLite (
plex_push_cache.db) that tracks artwork state and hashes. - Collection Explorer Diff Previews: Inspect side-by-side comparisons of local files vs. server artwork with live status tags (
Synced,Pending Upload,Server Only,Local Only) and trigger one-click batch pushes. - Granular Scheduled Tasks: Automate synchronization specifically for Collections, Posters, Season Art, Title Cards, or Backgrounds with configurable rate limits.
🛡️ Security Hardening & SSRF Protections
- SSRF Prevention: Validates external and server endpoints with
is_safe_urlto restrict arbitrary network access and protect cloud/LAN environments. - Strict Path Canonicalization: Enforces strict directory containment checks preventing path traversal when storing collection posters.
- Payload Verification: Added magic-byte image validation, upload payload size caps, and server host verification.
- Kometa (PMM) Guidance: Built-in advisories in the Scheduler UI and documentation to help users avoid conflicting metadata loops with Kometa.
⚡ Run Mode Workflow & Confirmation Modals
- Interactive Run Modals: Confirmation dialogs for Normal and Testing modes to review settings before execution.
- Quick Run Preferences: Includes a "Don't show again" toggle stored in browser preferences, with a one-click reset option.
- Seamless Testing Mode: Automatically redirects to the Test Gallery once generation completes and refreshes the preview.
🐛 Bug Fixes & Reliability Improvements
- Uptime Kuma Webhooks: Fixed a PowerShell string interpolation bug where
$baseUrl?statuscaused webhooks to fail withInvalid URI: The hostname could not be parsed. URLs are now sanitized against accidental quotes or trailing parameters. - Parallel Title Card Generation: Fixed a race condition with
ParallelJobs > 1where concurrent season threads deleted a shared temporary image, causingTemp image is corrupt, cannot proceederrors. - UI Error Boundaries: Added React error boundaries around complex views to gracefully recover without crashing the page.
What's Changed
- Sync Main2Dev by @fscorrupt in #670
- Use a per-season temp image for title cards by @im85288 in #671
- Plex Collection Diffing & Sync, Security Hardening, Run Mode Confirmations & Webhook Fixes by @fscorrupt in #672
- fix(security): prevent clear-text logging of sensitive credentials by @fscorrupt in #673
New Contributors
Full Changelog: 3.3.6...3.3.7