v1.132.0
Highlights
Note
We are now using Valkey's image for the Redis service in the default docker-compose.yml template. This is not a required change. If you wish to use it, you can download the docker-compose.yml
file at the bottom of the release notes and replace the redis image with the new one.
Welcome to version v1.132.0
of Immich.
This release marks an exciting milestone, inching one step closer to the stable release. The server no longer relies on TypeORM (database object-relational mapping); from this point forward, we utilize our own schema and migration management tool, integrated with Kysely. Related, the mobile app will also begin to use a new database, SQLite. Over the next few releases, we plan to roll out a new, efficient sync implementation using SQLite, which should improve startup time and reduce jankiness, especially when working with large media collections.
In addition to the two milestones mentioned above, this release also features new enhancements, bug fixes, and other notable additions. Please see the highlights below.
- Opt-in web-mobile delete action synchronization on Android
- Improve web responsive design on mobile devices
- Migrate mobile app translations to Weblate
- Improve mobile app map performance
Opt-in web-mobile delete synchronization (Android only)
This update includes a new, optional feature currently in an experimental phase. It aims to synchronize deletion actions between the Immich web interface and your connected Android device.
If you choose to enable this feature (Settings > Advanced > Sync remote deletion
), trashing, deleting, or restoring a photo or video through the Immich web interface will result in the corresponding action being taken on the file on your Android phone. This functionality is intended to prevent the need to perform the same trash action separately on both Immich and your phone.
When this feature is active, the sequence of events is as follows:
- Your photos get backed up from your phone to Immich.
- Later, you use the Immich website to trash some of those photos.
- The next time you open the Immich app on your phone, the app will find those photos you trashed on the website and move them to your phone's trash folder for you.
- If you choose to restore the asset from Immich’s trash, it will also be moved out of your phone’s trash folder.
Note: The location of the phone's trash folder varies by device. For example, Samsung devices often use the Gallery app's trash, while Google Pixel devices may use the Files app's trash.)
Improve web responsive design on mobile devices.
This release makes significant improvements to the browsing experience of the web app on mobile devices. The sidebar is now collapsible, leaving more space to view the timeline. We’ve also changed the size of the images in the timeline on mobile, with the hope of making more images visible at once.
Just as we thought we had squeezed every ounce of performance out of the timeline scrolling, a wizard in the contributor team pushed it even further. The need for speed is real! We hope you enjoy it.Mobile app translations have been migrated to Weblate.
The i18n on the mobile app, previously managed with Localizely, has now been migrated to Weblate. Anyone can help with translation without needing to obtain an invitation from us.
Along with those changes, we have made many more improvements to the quality of the server, web, and mobile app. We hope you enjoy those as well.
Support Immich
If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or purchase our merchandise at https://immich.store
What's Changed
🚨 Breaking Changes
🔒 Security
- fix: various actions workflow security improvements by @bo0tzz in #17651
- feat: static analysis job for gha workflows by @bo0tzz in #17688
🚀 Features
- feat(web): expand/collapse sidebar by @ben-basten in #16768
- feat(mobile): sqlite by @shenlong-tanwen in #16861
- feat(server): Avoid face match with people born after file creation #4743 by @abhinav96 in #16918
- feat: opt-in sync of deletes and restores from web to Android by @aleksandrsovtan in #16732
- feat(server): read additional lens exif tags by @Snowknight26 in #17125
- feat: sync pictureFile with oidc if it isn't set already by @Etienne-bdt in #17397
- feat: view qr code from share modal by @jrasm91 in #17544
- feat(mobile): use Weblate for i18n (1) by @alextran1502 in #17609
- feat: user sync stream by @shenlong-tanwen in #16862
🌟 Enhancements
- feat: allow accounts with a quota of 0 GiB by @rubenhensen in #17413
- feat(web): improve individual share ux by @devsnek in #17430
- feat: use browser download manager for single file downloads by @ROODAY in #17507
- feat: show thumbhash behind load error, if possible by @midzelis in #17554
- feat: responsive: skeleton by @midzelis in #17553
- feat: responsive-web: shrink mem-lane by @midzelis in #17550
- chore(mobile): small visual fix and update by @alextran1502 in #17547
- feat(server): parse EXIF creation time for some insta360 images by @Kirens in #17564
- perf(mobile): optimize date loading with batch loading by @andreymir in #17240
- feat: responsive controlbar by @midzelis in #17601
- refactor(server): remove asset placeholder by @etnoy in #17621
- chore(server): don't check null dates by @etnoy in #17664
- feat(mobile): search on places page by @YarosMallorca in #17679
- feat(mobile): map improvements by @YarosMallorca in #17714
- feat: add album start and end dates for storage template by @exciton in #17188
- perf(mobile): remove load of thumbnails in the image provider by @EinToni in #17773
- perf(mobile): remove small thumbnail and cache generated thumbnails by @EinToni in #17792
🐛 Bug fixes
- fix(web): fix thumbnail hover link position by @Snowknight26 in #16762
- fix(web): use original image if web compatible by @mertalev in #17347
- refactor(mobile): device asset entity to use modified time by @shenlong-tanwen in #17064
- fix(mobile): bump isar maxSize by @shenlong-tanwen in #17372
- fix: reset memories on logout by @danieldietzler in #17405
- fix(web): Video memories are played at 100% volume instead of respecting user preference by @Zlendy in #17424
- fix(mobile): prevent unnecessary reload on multi user timeline by @shenlong-tanwen in #17418
- fix(mobile): video player restarting when device rotates by @Sese-Schneider in #17362
- fix(mobile): items not deselecting on back button by @YarosMallorca in #17403
- fix(mobile): use custom filter to fetch asset path entities by @shenlong-tanwen in #17344
- fix(mobile): exifInfo not updated on sync by @shenlong-tanwen in #17407
- fix(server): Exclude album assets in shared link payload by @mPyKen in #17207
- fix(mobile): hide asset description text field if user is not owner by @gaganyadav80 in #17442
- fix: broken start/end dates on album update by @danieldietzler in #17467
- fix(mobile): adds support for Internationalized Domain Name (IDN) by @gaganyadav80 in #17461
- fix: no thumbnail generated for motion assets by @alextran1502 in #17472
- fix(mobile): asset grid will infinitely scroll on iOS when select and… by @gaganyadav80 in #17469
- fix: patch-package install in docker build and better postgres patch by @bwees in #17523
- fix: test_sets_default_sess_options fails if compiling with globally enabled cuda by @Pleune in #17516
- fix(web): mobile view double scroll layer by @alextran1502 in #17528
- fix(web): reset search history after logout by @ben-basten in #17534
- fix(mobile): remove locate asset button from trashed asset by @YarosMallorca in #17503
- fix: live photo hiding by @danieldietzler in #17548
- fix: responsive: long press while scroll by @midzelis in #17555
- fix: occasional empty buckets, after canceled loads by @midzelis in #17552
- fix(web): search bar deactivates when focus exits by @ben-basten in #17549
- fix: read longitude and latitude when reverse geocoding is off by @atollk in #17558
- fix: responsive: timeline glitch and keyboard-accessible scrubber by @midzelis in #17556
- fix(web): improve mobile web album viewer padding by @aamirazad in #17575
- fix(mobile): exif not updated on sync by @shenlong-tanwen in #17633
- fix: skip places that no longer exist in geo import by @darookee in #17637
- fix: use IMMICH_HOST in microservices by @yparitcher in #17659
- fix(web): map marker positioning in details pane by @YarosMallorca in #17754
- fix(mobile): use immutable cache keys for local images by @lukaszwawrzyk in #17794
- fix: cache build versions by @zackpollard in #17811
- fix: retrieve version from lockfile and fallback to cli command by @zackpollard in #17812
📚 Documentation
- docs: fixed a wrong path in CLI docs page by @l0ll098 in #17369
- fix: restore mangled footnotes by @bo0tzz in #17446
- docs: Add PowerShell example for running web client only by @ROODAY in #17546
- chore(doc): translation instruction for mobile app by @alextran1502 in #17629
- chore: add immich-cli docker example by @ppuschmann in #17595
- fix(docs): Database dump warnings by @mmomjian in #17676
- feat(docs): documentation update by @aviv926 in #17720
- docs: updated community-projects.tsx: lrc-immich-plugin by @bmachek in #17801
🌐 Translations
- chore(web): update translations by @weblate in #17254
- feat(mobile): remove duplicated i18n file by @AutisticShark in #17591
- chore(web): update translations by @weblate in #17438
- chore(web): cleanup unused translations by @weblate in #17624
- chore(web): update translations by @weblate in #17627
- chore(web): update translations by @weblate in #17808
New Contributors
- @rubenhensen made their first contribution in #17413
- @devsnek made their first contribution in #17430
- @aleksandrsovtan made their first contribution in #16732
- @ROODAY made their first contribution in #17507
- @Pleune made their first contribution in #17516
- @Kirens made their first contribution in #17564
- @atollk made their first contribution in #17558
- @AutisticShark made their first contribution in #17591
- @EinToni made their first contribution in #17594
- @andreymir made their first contribution in #17240
- @ppuschmann made their first contribution in #17595
- @darookee made their first contribution in #17637
- @exciton made their first contribution in #17188
Full Changelog: v1.131.3...v1.132.0