All notable changes to this project will be documented in this file.
This project follows Semantic Versioning.
- Sizes of box, boxrear, and disc
- Reverted use of gunicorn
- New sorting functionality: Added ability to sort by date added (descending)
- Auto feature (cron-based automation): Introduced an automated workflow for generating HTML reports and ZIP archives on a scheduled basis using cron.
- Restore feature: Added the ability to restore library images directly to Jellyfin, including:
- Dry run mode for safe previewing
- Comparison HTML showing before-and-after images for verification
- Keep option for outputs: Added the ability to mark specific HTML and ZIP files as “kept,” preventing them from being deleted even when exceeding the limits set in the Auto tab.
- Generate page layout: Switched the positions of the API Key and Library fields for improved usability and flow.
- Downloaded HTML rendering: Resolved an issue where downloaded HTML files displayed unintended extra information.
- Development server warning: Resolved Flask development server warning (#7).
- Lightbox interaction: Removed
<a>wrapper around the lightbox image to prevent automatic downloads or opening in a new tab. - Click handling: Added
e.preventDefault()ande.stopPropagation()on image clicks inside the lightbox to stop default browser actions while preserving next-image cycling.
- Image click behavior: Clicking an image in the lightbox no longer triggers a file download or opens a new browser tab.
- Lightbox navigation: Maintained full support for next/previous image cycling, arrow-key navigation, and closing with
Escor outside clicks.
- Lightbox “Open in New Tab” support: Users can now right-click or middle-click any image (in both the gallery and lightbox views) to open it directly in a new browser tab instead of downloading it.
- Version label in GitHub view link: Added display of the current app version (
v0.34.6) next to “View on GitHub” in the HTML generation success message.
- Anchor behavior: All image anchors now include
target="_blank"and direct image URLs, preserving lightbox behavior on normal clicks while enabling native browser tab opening. - Lightbox markup: The lightbox image is now wrapped in a clickable
<a id="lightbox-link" href="" target="_blank">element so full-size images can also be opened directly.
- Right-click behavior: Resolved issue where “Open image in new tab” would download instead of open when triggered from gallery or lightbox.
- Backdrop labeling: Single backdrops are now labeled “Backdrop,” while multiple backdrops display as “Backdrop (0),” “Backdrop (1),” etc. for clarity.
- Backdrops (multi-index support): Added full detection of
BackdropImageTags, enabling retrieval and display of every available backdrop (Backdrop/0,Backdrop/1, etc.). - ZIP packaging: Now includes all backdrop images in each item’s folder as
backdrop01,backdrop02, etc. (or using the overridden base name likebackground01,background02).
- HTML generation: Backdrops section now iterates through all detected backdrops and displays them sequentially in the right column.
- Lightbox behavior: Now automatically includes all backdrops (and other images) in the same slideshow sequence for each item.
- ZIP naming: Numeric suffixes in ZIP outputs are now zero-padded (
backdrop01,backdrop02, etc.) for cleaner sorting.
- Single-backdrop limitation: Resolved issue where only one backdrop image was being displayed or downloaded even when multiple existed.
- Consistency in backdrop handling: HTML and ZIP logic now share unified multi-tag detection, ensuring both reflect the same image set.
- In HTML: Titles for series to show production year if title is a duplicate
- In HTML: Titles for movies to always show production year
- In ZIPs: Folder names to show production year for disambiguation
- "height and width" to "width and height"
- View on GitHub button
- Amount of spacing between API Key and the color selectors
- Caption for the Minimum Resolution / ZIP Filename Override table explaining the purpose of min width/height and ZIP filename override.
- Heading next to the image selection checkboxes.
- Preservation of color picker history for background, text, and table colors across sessions.
- Link colors in dark mode:
- Unvisited links are now light blue.
- Visited links are now light purple.
- Color selections are now preserved:
- Background, text, and table background colors are saved automatically.
- Selected colors are restored on page reload and when switching between libraries.
- Creation of
history.json: the file is now automatically created on first start if it doesn't exist. - Thanks to @avassor for suggesting improvements related to history handling.
history.jsonlocation updated to/app/data/history.json.- Old location:
/app/history.json - New location:
/app/data/history.json - Impact: If you want to maintain your existing history, move your old
history.jsonfile to/app/data/history.json.
- Old location:
- Main page layout updated:
- Centered server URL, library name, and API key in three rows.
- Pixelfin logo enlarged by 25% and centered.
- Color pickers (Background, Text, Table Background) arranged in a single row.
- Image type checkboxes spaced evenly and aligned next to color pickers.
- Minimum Resolution / ZIP Filename table widened and centered.
- Bottom buttons (Light/Dark, Generate HTML, Create ZIP) centered and uniform in size.
- Favicon now appears in all pages of the app as well as generated HTML files.
- ZIP file creation: bundle selected images into a downloadable archive.
- Filename override: customize how images are named when included in ZIP files.
- Minimum resolution threshold setting and summary table.
- Low-resolution images are:
- Marked with red captions in the gallery.
- Listed alongside missing images in callouts.
- Indicated directly in the summary table for quick scanning.
- HTML gallery generation of Jellyfin libraries.
- Downloadable embedded HTMLs (with images base64-encoded for sharing/archiving).
- Indicators of missing images shown in both the gallery and summary table.
- Removed extraneous
>from [relevant feature/file]. Thanks to @LoV432 for contributing a fix.