ImageGenius Changes:
support GPU acceleration with CUDA for machine-learning
immich Changes:
v1.102.0
⚠️ Breaking Changes (OPT-IN ONLY)
Caution
For people always pulling the latest compose file, this is a breaking change!
Disregarding the notes will result in (temporary) data loss!
Background
In the past, we've seen many cases where people accidentally deleted their Postgres data by (unintentionally) deleting the docker volume (e.g., docker compose down -V
).
This is unfortunate as there is no way to recover that data (if you don't have a backup, MAKE BACKUPS!).
We have been thinking about mounting the Postgres data to a local folder for a while but always hesitated, as this would break existing instances due to people not reading the change logs carefully. However, there have been too many issues, and we ultimately decided to make that change.
What do I have to do?
Nothing. You should only copy the compose file with every new release if we tell you to do so in the release notes. Generally, we don't recommend making changes to existing instances. If you have never had issues, attempting to migrate the data will put it at (an unnecessary) risk.
I want to migrate my docker volume to a local folder
Unfortunately there isn't a "proper" way to export a docker volume.
The recommended method is to mount the volume and the directory (you want to copy your data to) to an arbitrary container, get a shell inside that container and copy the folder manually.
Caution
Take backups before attempting this. Especially make sure you have a current database dump (pg_dump
)
Warning
Do not use a directory under /mnt
for the postgres location if you are using WSL.
Generally (on all operating systems) we recommend against using a network share for your database location. This is bound to break and cause all sorts of weird issues.
If you would like to opt-in to this change, there is an additional environment variable in the .env
file as well as a modification in your existing docker-compose.yml
file.
docker-compose.yml
file
database:
container_name: immich_postgres
image: registry.hub.docker.com/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
volumes:
- - pgdata:/var/lib/postgresql/data
+ - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
restart: always
volumes:
- pgdata:
model-cache:
.env
file
[...]
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
+DB_DATA_LOCATION=./postgres
Highlights
Welcome to release version v1.102.0
of Immich. We reached 30,000 stars!!! Thank you so much for your continuous support. We are proud to bring you this release with a focus on QoL improvements and bug fixes across the web, mobile, and server. We hope you enjoy it. Some of the highlighted changes can be found below.
- In-app language settings
- Haptic feedback control
- Enhanced UI/UX on the album list page
- AV1 transcoding
- Choose between WebP and JPEG for thumbnails and previews
- Option to use embedded preview in RAW images
- Option to fill the screen with slideshows view
In-app language settings
You can now keep your phone interface in a different language and have Immich's app in a different language with the new in-app language setting. It can be found in Settings > Languages
. After making the change, the new language will propagate across the app.
Haptic feedback control
We added an option in the mobile app to disable haptic feedback. It can be found under Settings > Preferences > Haptic Feedback
Web album page's UI/UX enhancement
Album Grouping
With this new feature, albums can now be grouped by year or owner (or not grouped at all). This can be very useful to not get lost when having a lot of albums, that even are sometimes similar.
- This works both on "Covers" and "List" views.
- Albums are first grouped, then sorted inside of those groups.
- Group sorting can be either ascending or descending.
Group by
drop-down is located next to theSort by
one. The two buttons on the right areExpand all
andCollapse all
. They are not displayed whenNo grouping
is selected.
- Groups can be collapsed (saved in the local storage).
Collapse.mp4
Other UI Changes
- Album cards now display the month and year of the photos.
- Same month and year:
Jan 2024
- Different months, same year:
Jan - Mar 2024
- Different year:
Sep 2023 - Feb 2024
- Same month and year:
- Album cards now display the title over up to 2 lines. If the title is longer, it is cropped with an ellipsis (no change).
- "Edit Album" modal design has been slightly changed.
Quality of Life
Album List
- The context menu now has 4 options:
Download
,Edit
,Share
andDelete
.
- The context menu can now be displayed by right-clicking on an album card.
- The context menu is now available on the list view (both
Edit
andRemove
buttons have been removed). - The context menu is now available on the "Sharing" page, with only 1 option:
Download
. - The search feature now ignores accents.
Album View
- When one and only one photo is selected, the context menu now displays the option
Set as album cover
.
AV1 transcoding
This release adds support for the next-gen AV1 format using the SVT-AV1 encoder. AV1 promises smaller files at the same quality as the other codecs we support, especially for high resolution videos. Note that client support for AV1 is more limited, so we recommend trying it on one (server-only) video and confirming it plays before transcoding your full library with it.
New image settings
Before this release, all preview images were JPEG, and all thumbnails were WebP. This is now customizable, so you can set them as you like. This also paves the way for adding other formats with minimal change.
There's also a new option to use the embedded preview in RAW images instead of converting the RAW image itself. This is particularly useful if the converted images from a camera don't look quite right or if you have custom-developed previews you'd like to use instead.
Option to fill the screen with slideshows view
We added a new option in the slideshow settings to fill the screen with the slideshow view, this will give you a more immersive viewing experience.
And as always, bugs are fixed, and many other improvements also come with this release.
Please consider supporting the project.
Support
If you find the project helpful, you can support Immich via the following channels.
- Monthly donation via GitHub Sponsors
- One-time donation via GitHub Sponsors
- Librepay
- buymeacoffee
- Bitcoin: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
It is a great way to let me know that you want me to continue developing and working on this project for years to come.
What's Changed
⚠️ Breaking Changes
- mount postgres folder to local directory by default by @danieldietzler in immich-app/immich#8443
🗄️ Server
- fix(server): image config not being updated by @mertalev in immich-app/immich#8579
- chore(server): better typing for system config key by @mertalev in immich-app/immich#8580
- fix(server): x264/x265 params not being set correctly by @mertalev in immich-app/immich#8587
- fix(server): hevc tag being set when copying a non-hevc stream by @mertalev in immich-app/immich#8582
- feat(server,web): configure image format by @mertalev in immich-app/immich#8581
- fix:
npm i
on Windows … by @jellemdekker in immich-app/immich#8619 - fix(server): delete thumbnail for readonly asset by @Ynng in immich-app/immich#8593
- fix(server): remove isWatched from DTO by @danieldietzler in immich-app/immich#8598
- chore(server): remove unused method by @jrasm91 in immich-app/immich#8639
- fix(server): require asset permission when creating an album with them by @danieldietzler in immich-app/immich#8686
- Add AV1 transcoding support by @n00mkrad in immich-app/immich#8491
- fix(server): prevent cross-library motion photo linking, made getByChecksum library specific by @Ynng in immich-app/immich#8719
- fix(server): link motion photo with existing video asset by @Ynng in immich-app/immich#8724
- fix(server): external library motion photo video asset handling by @Ynng in immich-app/immich#8721
- (server) Allow setting the host address for the server & microservices by @yparitcher in immich-app/immich#8800
- feat(server): correlation id via injected logger by @jrasm91 in immich-app/immich#8823
- chore: cleanup library watching by @jrasm91 in immich-app/immich#8835
- feat(server): efficient full app sync by @fyfrey in immich-app/immich#8755
- chore: migrate to vitest by @jrasm91 in immich-app/immich#7156
- chore(server): delete swap file by @jrasm91 in immich-app/immich#8856
- Migrate ImmichLogger over to injected ILoggerRepository by @iamamansharma in immich-app/immich#8855
- fix(server): correlationId by @jrasm91 in immich-app/immich#8858
- feat(server): logging interceptor by @jrasm91 in immich-app/immich#8859
- fix(server): storage usage calculation for motion photos by @Ynng in immich-app/immich#8722
- refactor(server): immich-admin list-users by @jrasm91 in immich-app/immich#8862
- fix(server): include archived images in face detection by @mertalev in immich-app/immich#8892
- fix(server): skip invisible assets for thumbnail generation and ml by @mertalev in immich-app/immich#8891
- refactor(server): sessions by @jrasm91 in immich-app/immich#8915
- refactor(server): cookies by @jrasm91 in immich-app/immich#8920
- feat(server): use embedded preview from raw images by @mertalev in immich-app/immich#8773
📱 Mobile
- feat(mobile): add missing translations by @michelheusschen in immich-app/immich#8537
- feat(mobile): include partner's photos on map by @BlackBadPinguin in immich-app/immich#8553
- feat(mobile): in app language selector by @alextran1502 in immich-app/immich#8574
- Localizely: Translations update by @alextran1502 in immich-app/immich#8584
- feat(mobile/web): add longer expirity for share link by @akoscomp in immich-app/immich#8617
- chore(mobile): move language setting to another file by @alextran1502 in immich-app/immich#8726
- fix(mobile): show error details in the log when available by @shenlong-tanwen in immich-app/immich#8729
- fix(mobile): random logout by @alextran1502 in immich-app/immich#8739
- feat(mobile): haptic feedback setting by @alextran1502 in immich-app/immich#8723
- chore(mobile): update TODO comment by @benmccann in immich-app/immich#8826
- chore(mobile): full width language change dropdown by @alextran1502 in immich-app/immich#8806
- fix:(mobile): Updates old IMMICH text from the mobile settings modal by @martyfuhry in immich-app/immich#8906
🖥️ Web
- feat(web): enhance ux/ui of the album list page by @Ethan13310 in immich-app/immich#8499
- fix(web): bypass the onStackAssets shortcut when only one is selected by @Funk66 in immich-app/immich#8559
- feat(web,a11y): slider accessibility improvements by @ben-basten in immich-app/immich#8479
- fix(web): concurrency link on jobs page by @danieldietzler in immich-app/immich#8572
- fix(web): some settings not disabled when using config file by @mertalev in immich-app/immich#8576
- fix(web): reset to default button always being shown by @mertalev in immich-app/immich#8577
- feat(web): paste photo from clipboard by @TomixUG in immich-app/immich#8475
- feat(web): add search bar shortcuts by @danieldietzler in immich-app/immich#8630
- chore(web): specify that HDR videos will always be transcoded by @patrontheo in immich-app/immich#8634
- feat(web,a11y): standardize the FullScreenModal UI by @ben-basten in immich-app/immich#8566
- chore(web): fixed typo expect instead of except by @patrontheo in immich-app/immich#8638
- feat(web): loop video thumbnails by @lukashass in immich-app/immich#8662
- Allow moving in photo spheres using one touch input instead of two. by @hrdl-github in immich-app/immich#8620
- chore(web): move BaseModal to callback pattern by @ben-basten in immich-app/immich#8696
- fix(web): ui tweaks by @mgabor3141 in immich-app/immich#8757
- fix(web): focus escaping from modals by @ben-basten in immich-app/immich#8730
- fix(web): fix scrollbar not allowing the user to go fully top or bottom by @Ethan13310 in immich-app/immich#8637
- fix(web): remove query parameter when clearing search by @martabal in immich-app/immich#8817
- fix(web): delete trashed item by @martabal in immich-app/immich#8821
- fix(web): album description height by @martabal in immich-app/immich#8818
- feat(web,a11y): consolidate BaseModal into FullScreenModal by @ben-basten in immich-app/immich#8787
- fix(web,a11y): remove autofocus from input fields by @ben-basten in immich-app/immich#8857
- feat(web): un-stack from the photos page ; fix stack count by @Ethan13310 in immich-app/immich#8419
- feat(web): add page up and page down shortcuts by @martabal in immich-app/immich#8910
- fix(web): notification number of people when editing faces by @martabal in immich-app/immich#7352
- feat(web): add an option to fill the screen with the slideshow view by @martabal in immich-app/immich#8909
⚡ CLI
- feat(cli): Implement logic for --skip-hash by @pedrxd in immich-app/immich#8561
📓 Documentation
- Make language gender neutral by @iamwillbar in immich-app/immich#8535
- feat(docs): Add information about breaking changes by @aviv926 in immich-app/immich#8524
- docs: pre-existing postgres by @mmomjian in immich-app/immich#8549
- docs: pg_dumpall refinements by @mmomjian in immich-app/immich#8546
- feat(docs): update Unraid installation guide by @mgabor3141 in immich-app/immich#8540
- Fix typos: immcih -> immich by @vozhyk- in immich-app/immich#8568
- Up-to-date information on the Smart Search feature by @aviv926 in immich-app/immich#8625
- feat(docs):New information for sharing partners by @aviv926 in immich-app/immich#8308
- Fix: Rename docker name in unraid setup docs by @Poolitzer in immich-app/immich#8476
- docs: community projects by @jrasm91 in immich-app/immich#8641
- docs: Pin to Postgres v14 in postgres-backup-local by @mmomjian in immich-app/immich#8665
- docs: add Immich Folder Album Creator by @mmomjian in immich-app/immich#8666
- adding podman quadlets documentation community project by @tbelway in immich-app/immich#8684
- docs: fix earthdistance restore by @mmomjian in immich-app/immich#8692
- docs: fix typo by @benmccann in immich-app/immich#8698
- docs(ml): update hardware acceleration doc by @mertalev in immich-app/immich#8700
- docs: clarify details of connecting to backend for development by @benmccann in immich-app/immich#8727
- Add lightroom plugin to community projects by @midzelis in immich-app/immich#8736
- docs: document type of checksum stored in DB by @mmomjian in immich-app/immich#8737
- docs: DB queries cleanups by @mmomjian in immich-app/immich#8740
- docs: Add community project by @mmomjian in immich-app/immich#8759
- docs: note that uploads are disabled on demo app by @benmccann in immich-app/immich#8786
- docs: files custom locations by @aviv926 in immich-app/immich#8627
- docs: community guides by @aviv926 in immich-app/immich#8812
- Docs: minor changes by @aviv926 in immich-app/immich#8814
- docs: update community Guide/Projects, small PG query updates by @mmomjian in immich-app/immich#8844
- add community project PSImmich by @hanpq in immich-app/immich#8851
- docs: bunch of small changes by @mmomjian in immich-app/immich#8854
- docs: fix vectors grant... again by @mmomjian in immich-app/immich#8860
- Update oauth.md by @alvitali in immich-app/immich#8794
- docs: link to storage label docs from storage template docs by @benmccann in immich-app/immich#8911
🔨 Maintenance
- chore(deps): bump docker/setup-buildx-action from 3.2.0 to 3.3.0 by @dependabot in immich-app/immich#8621
- chore(deps): update dependency eslint-plugin-unicorn to v52 by @renovate in immich-app/immich#8629
- feat(gh-templates): Require non-duplicate confirmation on FR by @bo0tzz in immich-app/immich#8618
- fix(gh-templates): Add required label attribute by @bo0tzz in immich-app/immich#8632
- feat(github): Create CODEOWNERS file by @bo0tzz in immich-app/immich#8636
- chore: add to codeowners by @danieldietzler in immich-app/immich#8640
- feat: Improve error handling for Install Script by @mmomjian in immich-app/immich#8422
- chore(deps): update node.js to 3fb85a6 by @renovate in immich-app/immich#8643
- chore(deps): update node.js to 7e22729 by @renovate in immich-app/immich#8644
- fix(deps): update typescript-projects by @renovate in immich-app/immich#8647
- Revert "fix(deps): update typescript-projects (#8647)" by @alextran1502 in immich-app/immich#8650
- fix(deps): update typescript-projects by @renovate in immich-app/immich#8651
- chore(deps): update dependency @playwright/test to v1.43.0 by @renovate in immich-app/immich#8671
- chore(deps): update prom/prometheus docker digest to 4f6c47e by @renovate in immich-app/immich#8687
- fix(deps): update machine-learning by @renovate in immich-app/immich#8646
- fix(deps): update dependency pillow to v10.3.0 [security] by @renovate in immich-app/immich#8493
- chore: add code owner by @mertalev in immich-app/immich#8701
- refactor: library e2e by @jrasm91 in immich-app/immich#8693
- chore(deps): update grafana/grafana docker tag to v10.4.2 by @renovate in immich-app/immich#8731
- fix(deps): update dependency reflect-metadata to ^0.2.0 by @renovate in immich-app/immich#8784
- chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to 4de6145 by @renovate in immich-app/immich#8828
- chore(deps): bump stumpylog/image-cleaner-action from 0.5.0 to 0.6.0 by @dependabot in immich-app/immich#8841
- chore(deps): update dependency ruff to v0.3.6 by @renovate in immich-app/immich#8850
- fix(deps): update typescript-projects by @renovate in immich-app/immich#8834
- chore(deps): update base-image to v20240416 (major) by @renovate in immich-app/immich#8660
- chore(deps): update node.js to d328c7b by @renovate in immich-app/immich#8829
- chore(deps): update node.js to ec0c413 by @renovate in immich-app/immich#8833
- fix(deps): update dependency gunicorn to v22 [security] by @renovate in immich-app/immich#8863
- chore(deps): update registry.hub.docker.com/library/redis:6.2-alpine docker digest to 84882e8 by @renovate in immich-app/immich#8913
- chore(deps): update redis:6.2-alpine docker digest to 84882e8 by @renovate in immich-app/immich#8912
Other changes
- chore: added 'logs' field to bug template by @SandiyosDev in immich-app/immich#8771
New Contributors
- @iamwillbar made their first contribution in immich-app/immich#8535
- @BlackBadPinguin made their first contribution in immich-app/immich#8553
- @mgabor3141 made their first contribution in immich-app/immich#8540
- @vozhyk- made their first contribution in immich-app/immich#8568
- @jellemdekker made their first contribution in immich-app/immich#8619
- @pedrxd made their first contribution in immich-app/immich#8561
- @TomixUG made their first contribution in immich-app/immich#8475
- @Ynng made their first contribution in immich-app/immich#8593
- @Poolitzer made their first contribution in immich-app/immich#8476
- @patrontheo made their first contribution in immich-app/immich#8634
- @akoscomp made their first contribution in immich-app/immich#8617
- @tbelway made their first contribution in immich-app/immich#8684
- @n00mkrad made their first contribution in immich-app/immich#8491
- @midzelis made their first contribution in immich-app/immich#8736
- @SandiyosDev made their first contribution in immich-app/immich#8771
- @yparitcher made their first contribution in immich-app/immich#8800
- @hanpq made their first contribution in immich-app/immich#8851
- @iamamansharma made their first contribution in immich-app/immich#8855
- @alvitali made their first contribution in immich-app/immich#8794
Full Changelog: https://github.com/immich-app/immich/compare/v1.101.0...