Releases: TechJedi51/floating-posters
Release list
v2.2.7 — Python 3.14 base image
v2.2.7
- Base image upgraded from
python:3.13-slimtopython:3.14-slim(current stable) to address CVE-2026-7210 (medium, XML DoS — no practical impact on this container but resolved for compliance)
v2.2.6 - Saves Temp First
What's New in v2.2.6
🎨 7 Animation Styles
Choose your animation per-video in the yaml with ANIMATION_STYLE:
| Style | Description |
|---|---|
bounce |
Sine-wave vertical float (original) |
fade |
Static grid, fade in/out only |
wave |
Left-to-right cascade with staggered delay |
pop-in |
Each poster scales from large down to grid size, staggered |
carousel |
Elliptical orbit with depth-based scaling (3-D feel) |
spotlight |
Soft searchlight sweeps the full grid in random order |
drift |
Parade — one poster at a time travels across the screen |
🔦 Spotlight
Full grid always visible. A dark overlay with a soft elliptical searchlight beam travels between posters in random order using smooth interpolation. Each poster gets equal time.
🎠 Drift
One poster at a time eases in from the edge, pauses at centre, eases out. 6+ posters automatically split into two staggered rows. Fully tunable overlap, timing, and row offset.
🔒 Atomic File Write (v2.2.6)
Output is now written to .tmp_<name>.mp4 first, then moved atomically into place. Plex always sees a complete file — no more partial reads mid-render.
🐛 Fixes
- Spotlight double-move at slot boundaries fixed
- Pop-in date label log spam fixed
- Animation style and parameters now shown in job log header
Full changelog in README.md
v2.2.5 — Animation Styles
What's New in v2.2.5
🎨 7 Animation Styles
Choose your poster animation per-video in the yaml file with ANIMATION_STYLE:
| Style | Description |
|---|---|
bounce |
Sine-wave vertical float (original) |
fade |
Static grid, fade in/out only |
wave |
Left-to-right cascade with staggered delay |
pop-in |
Each poster scales from large down to grid size |
carousel |
Elliptical orbit with depth-based scaling |
spotlight |
Searchlight sweeps across the full grid in random order |
drift |
Parade of posters travelling across the screen |
🔦 Spotlight
Full grid always visible with a dark overlay. A soft elliptical searchlight beam travels between posters in random order using smooth interpolation. Tunable darkness, beam size, and soft-edge falloff.
🎠 Drift
One poster at a time travels across the screen — eases in from the edge, pauses at centre, eases out. 6+ posters automatically use two staggered rows. Fully tunable overlap, entry/pause/exit timing.
🐛 Fixes
- Spotlight no longer double-moves at slot boundaries
- Pop-in date labels no longer spam the log
- Animation style and parameters logged in the job header
v2.1.0 — 7 animation styles: bounce, fade, wave, pop-in, carousel, spotlight, drift
v2.1.0 — 7 animation styles: bounce, fade, wave, pop-in, carousel, sp…
v2.0 First public release
- Version bump marking the first stable public release
- All core features complete and tested: multi-video yaml processing, Radarr/Sonarr integration, NeXroll registration, built-in scheduler, multi-row poster layout, text overlays, 17 bundled fonts, startup retry logic
v1.9.9 — skip duplicate NeXroll registration on repeat runs
Update floating_posters.py v1.9.9 — skip duplicate NeXroll registration on repeat runs
v1.9.8 — PYTHONUNBUFFERED=1 and python3 -u for reliable Docker log output
Logging issue fix
v1.9.7 — fix NeXroll path field name, suppress moviepy progress bar
Update floating_posters.py NeXroll expects the field to be called path, not file_path. The API docs were wrong. Two fixes in one go: field name and suppress the progress bar noise.
v1.9.6.1 - Fix UnboundLocalError: move category_id log to after lookup
Update floating_posters.py Fix UnboundLocalError: move category_id log to after lookup
v1.9.6 — log full NeXroll responses, fix category ID extraction
Update floating_posters.py NeXroll API chnages