Releases: alangrainger/immich-public-proxy
Release list
3.3.1
- Fix "Download all" failing partway through when IPP is behind Cloudflare (#94)
Zip downloads are now sent with Cache-Control: no-store, so Cloudflare passes it straight through. If you use a "cache everything" rule that overrides the origin's cache headers, you also need to add /share/*/download to your bypass rule, alongside the existing /share/video/* one.
See the Troubleshooting page for details: https://docs.ipp.nz/troubleshooting#download-all-fails-partway-through
3.3.0
Fixes
- #289 "Download all" now streams the zip straight from Immich to the visitor instead of staging every file to temp disk first. Fixes out-of-memory crashes on hosts where
/tmpis tmpfs (e.g. systemdPrivateTmp), and IPP no longer needs free disk space for downloads. Assets are fetched one at a time, so downloads may be slower if IPP runs on a different network from Immich. - #288 Single-asset downloads now honour backpressure, so IPP no longer reads from Immich at LAN speed while a slow visitor's download is still in progress (thanks @pauldovi for the detailed reports on both of these)
- #284 Aborted zip downloads no longer leave open file handles (listed in 3.2.1 but landed after that build; now moot with #289)
- #260 Fix empty shares when the Postgres timezone is not UTC (thanks @taaem)
- #275 Fix video not centred in the lightbox when the info sidebar is open (thanks @vatahome)
- Docs: troubleshooting note for link previews showing
http://or a private IP behind a reverse proxy (#85)
Config updates (no action needed)
ipp.downloadFromImmichConcurrencyLimit has been removed. If it's still in your config.json it is simply ignored.
3.2.1
3.2.0
What's new
Info sidebar
- The date row now matches Immich's own sidebar: calendar icon, with date and time on separate lines (#273, thanks @kylmp)
- New
ipp.showMetadata.exif.timeZoneoption to show the photo's timezone and format the capture time in it. Off by default, and only applies whendateTimeOriginalis also enabled (#273, @kylmp) - Without a timezone, dates now show the photographer's local time (matching Immich) instead of converting to the viewer's timezone
- Correct resolution shown for rotated photos (#274, @kylmp)
- File sizes now display in binary units (KiB/MiB/GiB), as in Immich (#274, @kylmp)
Date grouping
- Grouped galleries now follow the album's own sort order from Immich - "Oldest first" albums show their earliest photos at the top (#272, thanks @trecoool). Photos without a date always group at the end.
- Day group headers now use Immich's timeline format, e.g. "Sat, 18 Oct 2025"
Fixes
- Fixed date groups shifting by a day when the IPP server runs in a non-UTC timezone
3.1.0
3.1.0
New docs site
New docs site. The previous monolithic GitHub file was getting a bit unwieldy, hopefully this is a bit easier. I'll keep improving them.
New functionality
- New config option for single video shares #153. Previously a single-video share opened a gallery page. You can now link directly to the video file instead. Thanks @sajalverma17 PR #266.
- Individual download buttons without the "download all" zip button #254. You can now have the zip download turned off, but still enable the download button in the image lightbox. Thanks @TimOrme PR #257.
- The gallery can now show a share's expiry date in the subtitle, e.g.
45 items · available until 2026-07-10. Configurable format and locale - see the config table below. Thanks @lukasganster PR #264 - Date grouping now supports days as well as months #265.
Config options for the above
These are all under the ipp.gallery section. See the configuration docs for full details.
| Key | Values | Default | Purpose |
|---|---|---|---|
singleVideo |
bool |
true |
true shows a gallery for a single-video share; false links directly to the video file |
showDownloadZip |
bool |
true |
Show the bulk-zip UI ("download all" + multi-select). Set false to keep per-asset downloads but hide the zip |
showExpiryDate |
bool |
false |
Show the share's expiry date in the gallery subtitle |
expiryDateFormat |
string |
"YYYY-MM-DD" |
dayjs format for the expiry date |
expiryDateLocale |
string |
"" |
dayjs locale to change the language of the day-of-week, month, etc (e.g. "de", "en-gb") |
groupByDate now also accepts "day" / "month" strings in addition to the existing true / false.
3.0.2
- Fix #267 error where container crashes on empty assets array.
3.0.1
A minor improvement from 3.0.0: Built javascript bundles are now served from a versioned path (eg /static/3.0.1/...js) so that you don't need to clear your browser or downstream cache on a new build. #259
The gallery page has a configurable cache time (ipp.gallery.cacheTime, default 5 minutes), so be aware that when you upgrade IPP and look at an existing gallery page, you won't see new features until that cache times out, or until you clear downstream caches.
3.0.0
Compatible with Immich v3
This release adds compatibility with the upcoming Immich 3.0. It will still remain compatible with Immich 2.x #256
Changes
- #162 #258 Allow zooming to fullsize image in the lightbox (configurable). IMPORTANT: due to how Immich works, you can only zoom to fullsize if the Immich album allows downloads. There is no way for IPP to get access to the full-size image if downloads are disabled in Immich. See
docs/configuration.mdfor full details. - Zoom is now via mouse scroll rather than Alt + scroll, to match Immich behaviour.
Config changes
Two new keys for controlling the image quality:
| Key | Values | Default | Purpose |
|---|---|---|---|
maxZoomQuality |
preview | fullsize |
preview |
Quality the lightbox loads on zoom |
maxDownloadQuality |
preview | fullsize | original |
original |
Quality a download serves |
Two renames - old keys still work via a startup deprecation notice:
allowDownloadAll→allowDownload(same0/1/2). Now purely the download-UI switch (zip + multi-select + per-asset button); no effect on image quality.downloadOriginalPhoto→maxDownloadQuality(true→"original",false→"preview").
See docs/configuration.md for the full table and migration notes.
2.5.0
- Full-screen photos now fill the viewport by default to match Immich's behaviour. A bottom strip is reserved when captions are enabled. Especially noticeable on mobile. #252
- The PhotoSwipe lightbox UI buttons (counter, zoom, close) and padding can now be customised via the
ipp.lightbox.optionsconfig object. #251 (thanks @e1jo)
2.4.2
- Added an optional configuration item
ipp.lightbox.autoPlayVideosto autoplay videos (defaultfalse) #241 #248 (thanks @e1jo)