v1.99.0
New logo
The new logo is now rolled out on all platforms, including the web, mobile, and documentation pages. If you are a content creator, you can grab the logo vector and raster files in the repository’s design
folder.
Highlights
Welcome to release v1.99.0
of Immich. This release adds the new logo, fixes many bugs, and improves the application. Some of the highlights include:
- [WEB] Sort photos and videos to display direction in an album.
- On-disk cache on the mobile app to provide a better viewing experience.
- There is a new endpoint for OpenTelemetry metrics to monitor performance.
- Optimized queries for large libraries.
- Add upload progress and speed indicator.
- XMP sidecar file is now recognized with both
photo.ext.xmp
andphoto.xmp
extensions. - Drag to select - Now press your thumb to drag and select in the selection mode.
- Improve user feedback in the mobile app’s backup and album selection screen.
- Various improvements for the library scanning process.
Asset’s display direction in the album
We added an option to change the order of the assets in the album so you can view the assets from older to newest and vice versa.
album.view.order.mp4
Mobile asset caching
Improving cache for remote thumbnails and the images, they now stay on disk so that they can load faster and give a better experience while used offline. You should feel a faster loading experience across the app.
Performance monitoring with OpenTelemetry integration
Immich provides a variety of performance metrics to allow for local monitoring and insights. This integration is primarily in the form of Prometheus metrics. However, exporting traces is also possible due to OpenTelemetry instrumentation. Please visit the documentation to learn how to enable this feature
Note
This opt-in feature allows you to monitor Immich’s performance. This data isn’t sent anywhere beyond what you’ve configured.
File size progress and upload speed indicator
We added an indicator to show the file’s size that has been uploaded and the upload speed under the progress bar in the backup screen.
Simulator.Screen.Recording.-.iPhone.15.Pro.Max.-.2024-03-14.at.18.08.37.mp4
Drag to select
You can now drag to select in the mobile app when in selection mode; this will help make selecting in bulk easier.
drag_to_select.mp4
And lastly, I want to express my gratitude to @immich-app/contributor who make this behemoth of a release happen 🎉
And as always, bugs are fixed, and many other improvements also come with this release.
What’s Changed
🗄️ Server
- fix(server): face search results not always sorted by @mertalev in #7839
- fix(server): serve static directory only if it exists by @benmccann in #7857
- feat(server): Add OAuth auto-redirect enable/disable CLI commands by @ddshd in #7841
- feat(server): OpenTelemetry integration by @mertalev in #7356
- feat(server): YAML config file support by @bo0tzz in #7894
- feat(server): Update XMP sidecar search to look for both photo.ext.xmp and photo.xmp by @kokulshan in #7813
- feat(server): lower library scan memory usage by @mertalev in #7939
- perf(server): optimize
getByIds
query by @mertalev in #7918 - fix(server): queue library asset refresh in batches by @etnoy in #7914
- feat(server, web): album orders by @martabal in #7819
- feat(server): added support for SVG files by @declan8010 in #7960
- refactor: global validation pipe by @jrasm91 in #7985
- feat(web): add millisecond options to storage template settings by @sevtdy in #7942
- fix(server): prevent feedback loop during library scan by @mertalev in #7944
- feat(server): use nestjs events to validate config by @danieldietzler in #7986
- feat(server): memory includes partners assets on timeline by @alextran1502 in #7993
- refactor(server): library service by @jrasm91 in #8050
- chore(server): change
save
->update
in asset repository by @mertalev in #8055 - fix(server): “view all” for cities only showing 12 cities by @mertalev in #8035
- fix(server): use extension in originalFileName for libraries by @etnoy in #8083
- test: temporarily disable flaky audit e2e test until #7436 is fixed by @zackpollard in #8089
📱 Mobile
- fix(mobile): Fixes immersive mode not ending for memory lane by @martyfuhry in #7767
- fix(mobile): Fixes local thumbnail image provider key by @martyfuhry in #7766
- Fix trash permanent delete dialog by @NicholasFlamy in #7805
- refactor(mobile): app settings by @shenlong-tanwen in #7749
- feat(mobile): add labels to app bar buttons by @ben-basten in #7865
- chore(mobile): Removes analysis options for openapi directory by @martyfuhry in #7309
- feat(mobile): update logo by @alextran1502 in #7919
- fix(mobile): make elements scrollable to avoid overflow in landscale by @thielepaul in #7933
- feat(mobile): Adds file upload progress stats by @othyn in #7760
- feat(mobile): Remote thumbnails and images use an on-disk image cache by @martyfuhry in #7929
- Make mobile app a “media management app” to get rid of android prompt by @Aegeontis in #7851
- refactor(mobile): backup album selection by @alextran1502 in #8053
- fix(mobile): do not show hidden people by @waclaw66 in #8072
- feat(mobile): drag to select assets by @shenlong-tanwen in #8004
- chore(mobile): svg logo by @alextran1502 in #8074
- fix(mobile): missing “Add name” translation by @waclaw66 in #8087
🖥️ Web
- feat(web): empty external library placeholder by @jrasm91 in #7848
- feat(web): add preference for thumbnail playback on hover by @samholton in #7831
- fix(web): small fixes for empty placeholder by @michelheusschen in #7859
- fix: Hide play bar when there’s only one image in memory by @declan8010 in #7764
- fix(web): asset upload progress by @michelheusschen in #7882
- fix(web): asset viewer navigation buttons by @michelheusschen in #7888
- refactor(web): sidebar menu links by @michelheusschen in #7891
- feat(web): Implemented device last seen date and time with user locale support by @declan8010 in #7863
- feat(web): dark color-scheme css for dark mode by @ZTzTopia in #7812
- fix(web): prevent combobox options from disappearing by @michelheusschen in #7733
- fix(web): correctly use button and link elements by @michelheusschen in #7907
- fix(web): Remove excess spacing on #asset-grid and search bar by @natedawg in #7910
- fix(web): Enhance Notification Handling for Duplicate Assets by @declan8010 in #7858
- fix(web): url state of nested accordions by @danieldietzler in #7928
- feat(web): update logo by @alextran1502 in #7798
- fix(web): FullScreenContainer logo by @alextran1502 in #7938
- chore(web): Sharing -> Partner Sharing by @aviv926 in #7952
- refactor(web): albums list (1) by @martabal in #7660
- feat(web): preload assets in photo-viewer by @samholton in #7920
- feat(web): randomize password on reest by @samholton in #7943
- fix(web): keyboard shortcut handling by @michelheusschen in #7946
- fix(web): improve focus and shortcuts by @michelheusschen in #7983
- fix(web): minor album card issues by @michelheusschen in #7975
- chore(web): remove unused AssetSelectionViewer by @michelheusschen in #7981
- perf(web): batch asset store changes by @michelheusschen in #7974
- fix(web): logo invisible on share page by @michelheusschen in #7990
- refactor(web): list navigation with keyboard by @michelheusschen in #7987
- fix(web): updating asset store after remove by @michelheusschen in #7999
- fix(web): repair page typo by @danieldietzler in #8051
- fix(web): load panorama in shared link by @alextran1502 in #8060
- feat(web): combobox accessibility improvements by @ben-basten in #8007
- fix(web): prevent drag-n-drop upload overlay from showing when not dragging files by @Ethan13310 in #8082
- chore(web): add asset store unit tests by @michelheusschen in #8077
- fix(web): show search page errors and use feature flag by @michelheusschen in #8088
- fix(web): missing margin on people page by @Ethan13310 in #8081
- fix(web): shift-select by @alextran1502 in #8093
- fix(web): shift-select again by @alextran1502 in #8098
- fix(web): Share button visible when viewing album has only shared link by @alextran1502 in #8100
🧠 Machine Learning
- fix(server): ml gunicorn listen on ipv4 and ipv6 by default by @growse in #7930
- chore(deps): update onnxruntime-openvino by @mertalev in #7854
- feat(ml): add cache_dir option to OpenVINO EP by @dvdblg in #8018
⚡ CLI
- chore(cli): clarify use of concurrency option by @mertalev in #7840
- chore(cli): Version 2.1.0 by @bo0tzz in #7893
- refactor(cli): simplify by @jrasm91 in #7962
📓 Documentation
- chore: update readme with new logo and add design materials by @alextran1502 in #7852
- fix: immich logo links by @jrasm91 in #7856
- docs: Add guide for album sync python script by @markeeisner in #7736
- Update external-library.md by @GrandNewbien in #7850
- docs: backup-and-restore.md: fix broken link by @SlavikCA in #7806
- docs: config-file.md update config to current (v1.98) state by @SlavikCA in #7808
- fix(blog/docs): Fix Milestone linking for “multi select” and “View Exif” fix(docs): Update “zoodyy” to “yfrey” by @declan8010 in #7926
- docs: Update backup script example by @mmomjian in #7734
- feat(doc): new logo and screenshots by @alextran1502 in #7961
- fix(doc): logo size on small screen by @alextran1502 in #7992
- feat(doc) Updated feature-panel.png with the new logo by @declan8010 in #7995
- chore(docs): update readme by @alextran1502 in #8021
- fix(docs): add microservices to IMMICH_CONFIG_FILE env var documentation by @tylerbrockett in #8017
- feat(docs): User management new options by @aviv926 in #8029
- fix(docs): update authelia OIDC link by @JW-CH in #8070
- fix(docs) minor security warning raised by Borg by @thariq-shanavas in #8075
- docs(server): add documentation for prometheus metrics by @mertalev in #8084
🔨 Maintenance
- chore(deps): update open-api by @renovate in #7867
- chore(deps): update @immich/cli by @renovate in #7866
- chore(deps): update dependency typescript to v5.4.2 by @renovate in #7861
- chore(deps): update dependency @types/node to v20.11.25 by @renovate in #7860
- fix(deps): update docs by @renovate in #7870
- chore(deps): update server by @renovate in #7869
- fix(deps): update machine-learning by @renovate in #7871
- chore(deps): update base-image to v20240312 (major) by @renovate in #7892
- chore(deps): bump softprops/action-gh-release from 1 to 2 by @dependabot in #7844
- fix(deps): update server by @renovate in #7880
- chore(deps): update grafana/grafana docker tag to v10.4.0 by @renovate in #7875
- chore: publish sdk on release by @jrasm91 in #7895
- fix(deps): update web by @renovate in #7872
- fix(deps): update server by @renovate in #7898
- chore(deps): bump docker/build-push-action from 5.2.0 to 5.3.0 by @dependabot in #7947
- chore(deps): bump docker/setup-buildx-action from 3.1.0 to 3.2.0 by @dependabot in #7948
- chore(ci): Clean up docker buildx workaround by @bo0tzz in #7949
- chore(cli): clean up files by @jrasm91 in #7955
- chore: remove unused dep by @jrasm91 in #7957
- chore(cli): use lockfile v3 by @jrasm91 in #7958
- refactor: library e2e by @jrasm91 in #7969
- chore(server): introduce proper job status by @danieldietzler in #7932
- chore(deps): pin prom/prometheus docker tag to bc1794e by @renovate in #7874
- fix(deps): update exiftool by @renovate in #7879
- chore(deps): update machine-learning by @renovate in #7890
- chore(deps): update typescript-eslint monorepo to v7.2.0 by @renovate in #8008
- chore: Simplify install script by @bo0tzz in #8048
- chore(deps): update dependency @types/node to v20.11.27 by @renovate in #8012
- chore: add prometheus.yml to release artifact by @alextran1502 in #8096
The new logo looks good and it is not a breaking change 😌☝🏻
Seems a massive update. Let me go and install it.
been using immich since last may, it quickly became one of my most important mobile apps. amazing software!
Same. The UI is super friendly for my newb family members and despite a few breaking changes with updates, it has required little upkeep.
Congrats on the new logo!
I might have to donate to this. Awesome project
Am I reading correctly that there are no breaking changes expected?
Yes, no breaking changes this time
The mobile app broke
Got some issue with the mobile app recently. It stopped recognising my already uploaded mobile pictures. Now they were blacklisted and when I cleared that it shows them again as not uploaded. In the timeline though everything shows as backed up. Bit weird and not sure how to solve it.
Are you using the same version of server and mobile app?
Yes, just updated to the latest version in the hopes it fixes that, which it didn’t.
Will get updating now! Since the last update my server hasn’t been accessible and I’ve been too lazy to figure out why (Portainer shows it up, but the server container quickly goes offline). Hopefully I can get this fixed today.
They made a breaking change to the Postgres database a couple versions back. Check that.
Thanks for the tip on the Postgres changes! Went back and looked at the 1.95.0 changes and followed the instructions there for fixing it. This seems to have solved my issue!
Don’t auto-update Immich, always check the release notes before upgrading for things that say “Breaking changes”. They’re usually highlighted and tell you what you need to change.
I don’t have it auto updating. I’m just a dingus who doesn’t read
There’s dozens of us
Dozens!
Glad you’re sorted!
I still need to get this back up after the database requirement took it down