1.94.0
Breaking Changes ⚠️
- The mobile app will no be longer compatible with server version <
v1.92
starting from this version. Please make sure to have your server and mobile app on the same version to work correctly. docker-compose.yml
content change for hardware acceleration to incorporate hardware acceleration for machine learning- The following asset endpoints have been deprecated and will be removed in a future release
GET /asset/assetById/:id
POST /asset/download/info
POST /asset/download/archive
POST /asset/download/:id
POST /asset/restore
POST /asset/trash/empty
POST /asset/trash/restore
- WebSocket connections no longer use "polling". If you see a disconnected status in the web, make sure your reverse proxy allows websockets.
Highlights
Welcome to release v1.94.0
of Immich. This release is packed with bug fixes, quality-of-life improvements, and preparation for migrating to a new search experience. Please find some of the highlights of this release below, and we hope you like it!
- Automatically update the external libraries when the filesystem changes (experimental)
- Hardware acceleration for machine learning is now supported for ARM NN, CUDA, and OpenVINO.
- Search for people on the people page.
- Additional video transcoding options for audio and video codecs.
- New combobox component for selecting asset’s timezone on the web.
- Notable fix: Motion Photo on Samsung is now fixed. Re-run metadata extraction to detect and automatically fix affected files.
- Notable fix: The blurry memory photo on the mobile app is now fixed.
Automatic library watching (experimental)
External libraries can now automatically import changed files without a full rescan. It will import the file whenever the operating system reports a file change. If your photos are mounted over the network, this does not work, but there is an option to enable polling. Beware, however, that polling can cause high CPU consumption.
You can enable this feature in the Administration page > Settings > Library
Library watching is considered experimental at this stage and is disabled by default. Please report how this feature works for you, especially if you have large external libraries.
Sneak peak
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: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX
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
- chore(server): remove old device id endpoint by @jrasm91 in #6578
- feat(ml)!: cuda and openvino acceleration by @mertalev in #5619
🗄️ Server
- fix(server): use crf-based two pass for vp9 if max bitrate is disabled by @mertalev in #6535
- fix(server): disable sharp file caching by @mertalev in #6542
- fix(server): only calculate quota usage for internal assets by @danieldietzler in #6556
- chore(server): sort open api params by @jrasm91 in #6484
- fix(server): extraction of Samsung Motionphoto videos by @kaysond in #6337
- chore(server): remove unused dependency by @jrasm91 in #6606
- refactor(server): e2e by @jrasm91 in #6632
- feat(server): optimize partial facial recognition by @mertalev in #6634
- feat(server): sql access checks by @jrasm91 in #6635
- refactor(server): move asset detail endpoint to new controller by @jrasm91 in #6636
- chore: fix typo in
generate-open-api.sh
by @benmccann in #6648 - chore: remove no-op patch by @benmccann in #6649
- refactor(server): download endpoints by @jrasm91 in #6653
- refactor(server): trash endpoints by @jrasm91 in #6652
- feat(server, web): accepted codecs by @Hely0n in #6460
- chore: remove unused test util methods by @benmccann in #6689
- refactor: move asset stacks to their own entity by @zackpollard in #6353
- chore(server): use fs readsync instead of js import for reading package.json by @danieldietzler in #6692
- feat(web,server): search people by @martabal in #5703
- fix(server): fix person pagination when deleting by @mertalev in #6707
- fix(server): do not process faces of deleted assets by @mertalev in #6710
- fix(server): HEVC videos not playing on Apple devices by @mertalev in #6712
- refactor: rename clip -> smart search by @mertalev in #6713
- refactor: no experimental vm modules by @jrasm91 in #6719
- added a configuration option to select the dri node in transcoding by @t4keda in #6376
- fix(server): avoid leaking people data on shared links by @martabal in #6779
- feat(server, web): Added TranscodePolicy "Bitrate higher than max bitrate or not in accepted format" by @Hely0n in #6479
- feat(server): Automatic watching of library folders by @etnoy in #6192
- fix: library watching by @jrasm91 in #6802
📱 Mobile
- feat(mobile): Add Slovenian by @alextran1502 in #6558
- fix(mobile): es-US pluralization by @shenlong-tanwen in #6612
- fix(mobile): skip tests using mock http client to make actual network request by @alextran1502 in #6642
- deps(mobile): flutter 3.16 by @shenlong-tanwen in #6677
- Update fr-FR.json by @axgdcode in #6633
- fix(mobile): Fix single element archiving by @l0nax in #6668
- fix(mobile): blurry memory photos by @alextran1502 in #6734
- fix(mobile): FR translation by @alextran1502 in #6771
- chore(mobile): Corrects FVM gitignore and sets Flutter version to 3.16.9 by @martyfuhry in #6775
- Localizely: Translations update by @alextran1502 in #6772
- feat(mobile): Add end page to the end to memories by @martyfuhry in #6780
🖥️ Web
- chore: svelte-kit-2 by @jrasm91 in #6103
- feat(web) dismiss user management modals on escape by @Funk66 in #6530
- refactor(web): descriptions by @martabal in #6517
- fix(web): auto generate open api build by @jrasm91 in #6561
- fix(web): always use websocket transport by @jrasm91 in #6564
- fix(web): revert descriptions by @martabal in #6582
- fix(web): statusbox re-rendering and nav bar when trashing assets by @martabal in #6581
- fix(web): merging people when renaming by @martabal in #6608
- feat(web): include timestamp in download filename by @MohamedFBoussaid in #5878
- fix(web): feature photo not changing in the edit name component by @martabal in #6663
- feat(web): Add places exploration page by @l0nax in #6669
- feat(wip): add Combobox component for timezone picker by @m1yon in #6154
- feat(web): add warning when setting a quota superior to the disk size by @martabal in #6737
🧠 Machine Learning
- fix(ml): error logging by @mertalev in #6646
- fix(ml): handle missing
context_length
field by @mertalev in #6695 - feat(ml): conditionally download .armnn models by @mertalev in #6650
- fix(ml): model paths not working by @mertalev in #6705
⚡ CLI
- refactor(cli): organize files, simplify types, use @immich/sdk by @jrasm91 in #6747
- chore: migrate CLI to ESM and vitest by @benmccann in #6777
📓 Documentation
- doc: developer setup docs by @kaysond in #6557
- spelling of "recommend" - Update command-line-interface.md by @sybenx in #6603
- docs: diff highlighting by @jrasm91 in #6604
- fix(docs): search by @jrasm91 in #6605
- docs: add reverse proxy configuration for Apache by @Lenart12 in #6625
- Update(docs): Update documentation by @aviv926 in #6430
- docs: use organization support link in README by @danieldietzler in #6722
- docs: fix broken link by @jrasm91 in #6735
- docs: fix typo by @benmccann in #6739
- docs(server): Fix glob pattern in library exclusions by @etnoy in #6752
- Update FAQ to address duplicate primary key errors by @mmomjian in #6763
- fix(milestone): Fix zero-index dates by @etnoy in #6787
🔨 Build
- chore: remove unused files and references by @jrasm91 in #6562
- Fixed errors regarding the installation script by @Peppe289 in #6644
- chore(devops): use new MacOS runner by @alextran1502 in #6774
- chore: drop CJS build from API by @benmccann in #6783
🤖 Dependencies
- chore(deps): update dependency vite to v5.0.12 [security] by @renovate in #6526
- chore(deps): update dependency @types/node to v20.11.3 by @renovate in #6533
- chore(deps): update base-image to v20240118 (major) by @renovate in #6473
- chore(deps): pin dependencies by @renovate in #6436
- chore(deps): update dependency @types/node to v20.11.5 by @renovate in #6546
- deps: update renovate groups and schedule by @jrasm91 in #6579
- chore(deps): update web by @renovate in #6584
- chore(deps): update @immich/cli by @renovate in #6585
- fix(deps): update server by @renovate in #6587
- chore(deps): update dependency @sveltejs/kit to v2.3.5 by @renovate in #6590
- fix(deps): update dependency svelte-maplibre to v0.7.6 by @renovate in #6591
- fix(deps): update server by @renovate in #6588
- fix(deps): update dependency orjson to v3.9.12 by @renovate in #6600
- chore(deps): update dependency @sveltejs/kit to v2.4.3 [security] by @renovate in #6628
- fix(deps): update exiftool by @renovate in #6586
- chore(deps): update base-image to v20240125 (major) by @renovate in #6637
- chore: remove unused packages by @benmccann in #6654
- Fix CVE–2023–45133 by @debricked in #6661
- fix(deps) CVE–2021–43138 by @debricked in #6662
- fix(deps) CVE–2022–25887 by @debricked in #6664
- fix(deps) CVE-2022-25883 by @etnoy in #6667
- fix(deps) bump marked to 11.1.1 by @etnoy in #6670
- fix(deps): bump lodash by @etnoy in #6672
- deps: open-api generator by @jrasm91 in #6655
- fix(deps) bump msgpackr by @etnoy in #6673
- fix(deps) CVE–2023–45857 (bump axios) by @debricked in #6665
- chore(deps): update redis:6.2-alpine docker digest to 201502e by @renovate in #6684
- chore(deps): update redis:6.2-alpine docker digest to 60727c1 by @renovate in #6688
- chore(deps): update redis:6.2-alpine docker digest to e37f165 by @renovate in #6693
- chore(deps): update dependency @types/node to v20.11.6 by @renovate in #6742
- fix(deps): update machine-learning by @renovate in #6745
- chore(deps): update @immich/cli by @renovate in #6741
- chore(deps): update server by @renovate in #6744
- chore(deps): update web by @renovate in #6746
- chore(deps): update redis:6.2-alpine docker digest to afb290a by @renovate in #6708
- fix(deps): update dependency geo-tz to v8.0.1 by @renovate in #6750
- chore(deps): update dependency @faker-js/faker to v8.4.0 by @renovate in #6758
- chore(deps): update base-image to v20240130 (major) - autoclosed by @renovate in #6756
- chore(deps): update dependency @sveltejs/kit to v2.5.0 by @renovate in #6776
Other changes
New Contributors
- @kaysond made their first contribution in #6557
- @sybenx made their first contribution in #6603
- @Lenart12 made their first contribution in #6625
- @benmccann made their first contribution in #6648
- @axgdcode made their first contribution in #6633
- @Peppe289 made their first contribution in #6644
- @t4keda made their first contribution in #6376
- @mmomjian made their first contribution in #6763
Full Changelog: https://github.com/immich-app/immich/compare/v1.93.3...