github stevezau/media_preview_generator 4.0.0
Multi-Server Support (Major Release)

5 hours ago

🎉 4.0.0 — Multi-Server Support (Major Release)

This is the biggest release in the project's history. Plex Generate Vid Previews now supports Plex, Emby, and Jellyfin side-by-side — generate trickplay/BIF previews from one app across every server you run, with a redesigned UI, unified jobs/retry experience, and an official Jellyfin plugin.

402 commits since 3.7.5. The headline is multi-server, but every page in the app has been touched — design refresh, mobile-responsive layouts, plain-English copy, ⓘ tooltips everywhere, smarter retry chains, scheduler upgrades, and a 190× speedup on Emby/Jellyfin reverse-path lookups.


⚠️ Breaking changes — read before upgrading

  1. Server IDs renamed. Your existing plex-default server gets a new UUID automatically when you upgrade (schema migration v12 runs once on first start; covers settings.json, jobs.db, schedules.json, webhook_history.json, and the bundle cache file). The migration is not roll-back-safe — back up your settings.json before upgrading if you want a clean downgrade path.
  2. Plex webhook URL changes. After upgrade, click Re-register on your Plex server card so plex.tv gets the new UUID-based webhook URL. Your old URL still works (legacy fallback in place), but new events will only fire reliably once re-registered.
  3. Three API endpoints removed. The internal /api/settings/{plex,emby,jellyfin}_webhook/test endpoints are gone — the loopback "test webhook" buttons they powered have been retired (they gave misleading "reachable" signals from inside Docker). If you're scripting against these, switch to the per-server webhook URL surfaced in the UI.

🚀 What's new

Multi-server foundation

  • Add Plex, Emby, and Jellyfin servers from the new /servers page. Per-server config, per-server libraries, per-server path mappings.
  • Per-server health checks — connection status pill, plugin detection, EnableChapterImageExtraction guard, trickplay scheduled-task check.
  • Per-server enable/disable toggle + one-click "Stop server generating previews" for emergencies.
  • Recently Added Scanner for Emby and Jellyfin, alongside the existing Plex one.
  • Cross-server BIF reuse — if two servers point at the same file, FFmpeg only runs once.

Official Jellyfin plugin: Media Preview Bridge

  • One-click install from your Jellyfin → Plugins → Repositories → add our repo.
  • Registers externally-published trickplay so Jellyfin treats our output as native.
  • Status badge on the server card tells you if the plugin is installed + active.
  • Auto-published from this repo's CI on every release.

Scheduler upgrades

  • Quiet Hours — global pause/resume schedule with multi-window support and per-window day-of-week filters. Sleep your previews overnight or during peak streaming hours.
  • Per-schedule stop-time — schedules can now stop themselves at a set time without manual cancellation.
  • Concurrent-job gate with priority awareness so urgent webhook jobs don't get stuck behind nightly scans.

Setup Health & Readiness (new top-level tab)

  • Proactive checks for every server — flags misconfigurations before they cause failed runs.
  • Per-check toggles + plain-English explanations of what each check does and why it matters.
  • One-click fix-all with preview modal — see exactly what's about to change before you apply.
  • Bucket display — Must-fix / Recommended / All-good — so you know what's urgent.

Webhooks

  • Unified webhook handling across Plex, Emby, and Jellyfin through the Job manager.
  • Vendor-aware retry policies with chain-blocker surfacing in the modal.
  • Clean Sonarr-style titles for vendor-triggered jobs.
  • "Fire now" button to skip the debounce window when you want immediate processing.
  • Webhook events for disabled servers are now rejected at every entry point (not just the front door).

UI / UX overhaul

  • Comprehensive design refresh — panels, KPI tiles, status dots, brand-orange accents.
  • Mobile-responsive everything — jobs, schedules, trigger log, and worker cards all stack into card layouts on phones with native iOS-style offcanvas drawer for nav.
  • Plain-English copy + ⓘ tooltips on every non-obvious control. Many tooltips open rich modal explanations with examples.
  • In-app Bootstrap confirm modals replace native browser confirm() popups everywhere.
  • Setup Wizard — vendor parity across all three servers, tooltips, advanced-settings collapsibles.
  • Unified page-header treatment across Servers / Automation / Settings / BIF Viewer.
  • Login screen redesigned as panel card on soft gradient.
  • Notification dropdown + unified nav icon controls.

🐛 Polish & fixes

Too many to list individually (~180 fixes since 3.7.5). Highlights:

  • Workers panel never goes blank — synthesises idle workers from config during library enumeration.
  • Library enumeration retries transient /Items failures and surfaces real errors as warnings instead of swallowing them.
  • Job-card mobile layout fixes + path-mapping table responsiveness.
  • Job Details modal log viewer now uses a proper dark terminal aesthetic.
  • Webhook source forwarding fixed so retry-chain rows render correctly.
  • Preview Inspector search rewritten to actually work across Plex, Emby, and Jellyfin.
  • Jellyfin plugin publishes MD5 checksums (Jellyfin rejects SHA-256).
  • Plus dozens of fixes for vendor-specific edge cases — episode title fallbacks, item-id lookups, header-precedence, ownership routing.

📝 Upgrade steps

  1. Back up your config dir — at minimum settings.json and jobs.db.
  2. Pull the new image (docker pull ghcr.io/stevezau/media_preview_generator:4.0.0 or :latest).
  3. Start the container — the v12 migration runs automatically; watch the logs for the "Renamed N entries" lines.
  4. Click Re-register on your Plex server card so plex.tv gets the new UUID-based webhook URL.
  5. If you use Emby or Jellyfin, head to the new /servers page to add them. The Setup Health tab will walk you through any missing configuration (trickplay scheduled task on Jellyfin, EnableChapterImageExtraction on Emby).

Full diff: 3.7.5...dev

Don't miss a new media_preview_generator release

NewReleases is sending notifications on new releases.