Changelog
Highlights of recent releases. Full line-by-line history is in docs/CHANGELOG.md and the GitHub Releases page.
v1.6.1.16 — Three singletons, not one latest
Released April 2026. Issue #64 fix: LibraryUpscaleScanTask failing with Cannot start process because a file name has not been provided.
- Root cause: three service singletons (
VideoAnalyzer,VideoFrameProcessor,ProcessingMethodExecutor) each capturedMediaEncoder.EncoderPath/ProbePathasreadonlystrings at construction. When Jellyfin constructed the plugin beforeMediaEncoderfinished resolving paths, those strings were empty — forever. - Fix: made the cached paths mutable, added
UpdateFFmpegPath()/UpdateFFprobePath()entry points, and introducedEnsureFFmpegReady()inVideoProcessorthat re-queriesMediaEncoderand propagates to every sub-service on every job entry. - Verification: Pre-fix: nightly scan failed at 0/70 files. Post-fix (live-tested on Jellyfin 10.11.8): scan reached 31% with per-file
Video analysis: 1280x720 @ 30.0fpslog lines andFFmpeg ready: ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg.
v1.6.1.14 — Admin gates for jobs endpoint
- Security fix:
/Upscaler/jobsno longer returns absolute file paths to non-admin authenticated users. Gated withRequiresElevation. - Improved Test Connection diagnostics — now reports whether the failure was network-level, auth-level, or token-mismatch.
v1.6.1.12 — RIFE v4.7/v4.8/v4.9
- New RIFE frame-interpolation catalog: v4.9 (quality), v4.8 (balanced), v4.7 (fast).
- Old references to
rife-v4.6andrife-v4.6-litein saved configs are auto-mapped viaMODEL_ALIASES; no user action needed. - Scene cut detection toggle on the Motion tab — avoids ghosting across hard cuts.
v1.6.1.10 — HAT family
- Added
hat-s-x4,hat-m-x4,hat-l-x4to the catalog for live-action at higher quality than Real-ESRGAN. - Nomos8k-trained HAT variant (
nomos8k-hat-x4) as [self-host required].
v1.6.1.8 — Face restoration pipeline
- GFPGAN v1.4 and CodeFormer added as first-class models.
- Full end-to-end pipeline
/face-restore/pipeline— detects faces, restores them, upscales the surrounding frame, feathered paste-back. - Toggle on the player quick-menu (Face Restore tab) for opt-in per-stream use.
v1.6.1.5 — Filter presets + live preview
- Six filter sliders (gamma, sharpness, temperature, vignette, grain, denoise) applied live via
<video>.style.filter. - Filter preview endpoint
/Upscaler/filter-preview/frame/{itemId}— extracts a real frame from your library and renders before/after PNGs for the selected preset. - Seven shipped presets: Cinema, Anime, Retro, Vivid, HDR-SDR, Soft, Documentary.
v1.6.1.4 — Service auth rework
- All service endpoints behind a single
X-Api-Token. Previously,/logs-streamwas unauthenticated when the token was unset. - Dashboard shows
api_token_configuredandauth_enabledprominently. - Console tab in the plugin UI streams service logs via SSE, token-gated.
v1.6.1.0 — Split into plugin + service
The architectural rewrite that the current generation is based on.
- Plugin-side: .NET 9, Jellyfin 10.11.x-targeted, HTTP-only contract with the service.
- Service-side: FastAPI + ONNX Runtime in its own Docker container. CUDA / OpenVINO / ROCm / CPU images.
- Twelve output codec presets with tuned ffmpeg parameters.
- Three scheduled tasks: library upscale, image upscale, cache cleanup.
- This is the baseline that all 1.6.1.x bugfix releases build on.
Older releases
Pre-1.6.x releases bundled inference inside the plugin process. They're archived on the GitHub Releases page but are no longer maintained. Upgrade to the current 1.6.1.x line.
Version policy
| Segment | Bumps when |
|---|---|
1.x major | Jellyfin API target changes, or the plugin/service contract changes incompatibly. |
6.x minor | Plugin/service split generation. 1.6 = the current HTTP-split architecture. |
1.x feature | New features, new models, new UI tabs. |
16 patch | Bugfix only, no feature work, no config migrations. |