v1.132.0

immich-app/immichv1.132.0Apr 23, 2025by immich-push-o-matic[bot]

AI Summary

A milestone release marking the migration away from TypeORM to Kysely and the mobile app to SQLite.

Key Highlights

  • Server no longer uses TypeORM (uses Kysely)
  • Mobile app migrated to SQLite
  • Opt-in web-mobile delete action synchronization (Android only)
  • Improved web responsive design on mobile devices
  • Migrated mobile app translations to Weblate
  • Improved mobile app map performance
  • Updated Redis service to use Valkey image

Breaking Changes

  • Refactored notification-admin controller

New Features

  • Expand/collapse sidebar on web
  • SQLite database for mobile app
  • Avoid face match with people born after file creation
  • Opt-in sync of deletes and restores from web to Android
  • Read additional lens exif tags
  • Sync pictureFile with OIDC if not set
  • View QR code from share modal
  • Use Weblate for mobile internationalization
  • User sync stream
  • Allow accounts with 0 GiB quota
  • Improved individual share UX
  • Browser download manager for single files
  • Show thumbhash behind load errors
  • Responsive skeleton loading
  • Responsive web shrink memory lane
  • Parse EXIF creation time for Insta360
  • Optimize date loading with batch loading
  • Responsive controlbar
  • Remove asset placeholder
  • Search on places page
  • Map performance improvements
  • Album start and end dates for storage template
  • Remove load of thumbnails in image provider
  • Remove small thumbnail and cache generated thumbnails
  • Fix thumbnail hover link position
  • Use original image if web compatible
  • Device asset entity to use modified time
  • Reset memories on logout
  • Video memories volume fix
  • Prevent unnecessary reload on multi-user timeline
  • Video player restart fix on rotation
  • Items not deselecting on back button
  • Custom filter for asset path entities
  • EXIF info update on sync
  • Exclude album assets in shared link payload
  • Hide asset description if not owner
  • Broken start/end dates fix on album update
  • IDN (Internationalized Domain Name) support
  • No thumbnail generated for motion assets
  • Infinite scroll fix on iOS
  • Patch-package install in docker build
  • Mobile view double scroll layer fix
  • Reset search history after logout
  • Remove locate asset button from trashed assets
  • Live photo hiding fix
  • Long press while scrolling fix
  • Occasional empty buckets fix
  • Search bar deactivation fix
  • Longitude and latitude read fix
  • Timeline glitch and keyboard-accessible scrubber fix
  • Mobile web album viewer padding fix
  • Immutable cache keys for local images
  • Cache build versions fix
  • Retrieve version from lockfile fix

Full Release Notes

# 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.

<p align="center">
<img src="https://github.com/user-attachments/assets/f24bc239-84a4-423a-bc44-45213ab514a3" width="300"/>
</p>

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:


1. Your photos get backed up from your phone to Immich.
2. Later, you use the **Immich website** to trash some of those photos.
3. 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.
4. 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.

<p align="center">
<img src="https://github.com/user-attachments/assets/3ff6037e-d009-4b34-9453-cb038abb19b6" width="300"/>
</p>
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

<p align="center">

<img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> 

</p>

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
* refactor: notification-admin controller by @jrasm91 in https://github.com/immich-app/immich/pull/17748
### 🔒 Security
* fix: various actions workflow security improvements by @bo0tzz in https://github.com/immich-app/immich/pull/17651
* feat: static analysis job for gha workflows by @bo0tzz in https://github.com/immich-app/immich/pull/17688
### 🚀 Features
* feat(web): expand/collapse sidebar by @ben-basten in https://github.com/immich-app/immich/pull/16768
* feat(mobile): sqlite by @shenlong-tanwen in https://github.com/immich-app/immich/pull/16861
* feat(server): Avoid face match with people born after file creation #4743 by @abhinav96 in https://github.com/immich-app/immich/pull/16918
* feat: opt-in sync of deletes and restores from web to Android by @aleksandrsovtan in https://github.com/immich-app/immich/pull/16732
* feat(server): read additional lens exif tags by @Snowknight26 in https://github.com/immich-app/immich/pull/17125
* feat: sync pictureFile with oidc if it isn't set already by @Etienne-bdt in https://github.com/immich-app/immich/pull/17397
* feat: view qr code from share modal by @jrasm91 in https://github.com/immich-app/immich/pull/17544
* feat(mobile): use Weblate for i18n (1) by @alextran1502 in https://github.com/immich-app/immich/pull/17609
* feat: user sync stream by @shenlong-tanwen in https://github.com/immich-app/immich/pull/16862
### 🌟 Enhancements
* feat: allow accounts with a quota of 0 GiB by @rubenhensen in https://github.com/immich-app/immich/pull/17413
* feat(web): improve individual share ux by @devsnek in https://github.com/immich-app/immich/pull/17430
* feat: use browser download manager for single file downloads by @ROODAY in https://github.com/immich-app/immich/pull/17507
* feat: show thumbhash behind load error, if possible by @midzelis in https://github.com/immich-app/immich/pull/17554
* feat: responsive: skeleton by @midzelis in https://github.com/immich-app/immich/pull/17553
* feat: responsive-web: shrink mem-lane by @midzelis in https://github.com/immich-app/immich/pull/17550
* chore(mobile): small visual fix and update by @alextran1502 in https://github.com/immich-app/immich/pull/17547
* feat(server): parse EXIF creation time for some insta360 images by @Kirens in https://github.com/immich-app/immich/pull/17564
* perf(mobile): optimize date loading with batch loading by @andreymir in https://github.com/immich-app/immich/pull/17240
* feat: responsive controlbar by @midzelis in https://github.com/immich-app/immich/pull/17601
* refactor(server): remove asset placeholder by @etnoy in https://github.com/immich-app/immich/pull/17621
* chore(server): don't check null dates by @etnoy in https://github.com/immich-app/immich/pull/17664
* feat(mobile): search on places page by @YarosMallorca in https://github.com/immich-app/immich/pull/17679
* feat(mobile): map improvements by @YarosMallorca in https://github.com/immich-app/immich/pull/17714
* feat: add album start and end dates for storage template by @exciton in https://github.com/immich-app/immich/pull/17188
* perf(mobile): remove load of thumbnails in the image provider by @EinToni in https://github.com/immich-app/immich/pull/17773
* perf(mobile): remove small thumbnail and cache generated thumbnails by @EinToni in https://github.com/immich-app/immich/pull/17792
### 🐛 Bug fixes
* fix(web): fix thumbnail hover link position by @Snowknight26 in https://github.com/immich-app/immich/pull/16762
* fix(web): use original image if web compatible by @mertalev in https://github.com/immich-app/immich/pull/17347
* refactor(mobile): device asset entity to use modified time by @shenlong-tanwen in https://github.com/immich-app/immich/pull/17064
* fix(mobile): bump isar maxSize by @shenlong-tanwen in https://github.com/immich-app/immich/pull/17372
* fix: reset memories on logout by @danieldietzler in https://github.com/immich-app/immich/pull/17405
* fix(web): Video memories are played at 100% volume instead of respecting user preference by @Zlendy in https://github.com/immich-app/immich/pull/17424
* fix(mobile): prevent unnecessary reload on multi user timeline by @shenlong-tanwen in https://github.com/immich-app/immich/pull/17418
* fix(mobile): video player restarting when device rotates by @Sese-Schneider in https://github.com/immich-app/immich/pull/17362
* fix(mobile): items not deselecting on back button by @YarosMallorca in https://github.com/immich-app/immich/pull/17403
* fix(mobile): use custom filter to fetch asset path entities by @shenlong-tanwen in https://github.com/immich-app/immich/pull/17344
* fix(mobile): exifInfo not updated on sync by @shenlong-tanwen in https://github.com/immich-app/immich/pull/17407
* fix(server): Exclude album assets in shared link payload by @mPyKen in https://github.com/immich-app/immich/pull/17207
* fix(mobile): hide asset description text field if user is not owner by @gaganyadav80 in https://github.com/immich-app/immich/pull/17442
* fix: broken start/end dates on album update by @danieldietzler in https://github.com/immich-app/immich/pull/17467
* fix(mobile): adds support for Internationalized Domain Name (IDN) by @gaganyadav80 in https://github.com/immich-app/immich/pull/17461
* fix: no thumbnail generated for motion assets by @alextran1502 in https://github.com/immich-app/immich/pull/17472
* fix(mobile): asset grid will infinitely scroll on iOS when select and… by @gaganyadav80 in https://github.com/immich-app/immich/pull/17469
* fix:  patch-package install in docker build and better postgres patch by @bwees in https://github.com/immich-app/immich/pull/17523
* fix: test_sets_default_sess_options fails if compiling with globally enabled cuda by @Pleune in https://github.com/immich-app/immich/pull/17516
* fix(web): mobile view double scroll layer by @alextran1502 in https://github.com/immich-app/immich/pull/17528
* fix(web): reset search history after logout by @ben-basten in https://github.com/immich-app/immich/pull/17534
* fix(mobile): remove locate asset button from trashed asset by @YarosMallorca in https://github.com/immich-app/immich/pull/17503
* fix: live photo hiding by @danieldietzler in https://github.com/immich-app/immich/pull/17548
* fix: responsive: long press while scroll by @midzelis in https://github.com/immich-app/immich/pull/17555
* fix: occasional empty buckets, after canceled loads by @midzelis in https://github.com/immich-app/immich/pull/17552
* fix(web): search bar deactivates when focus exits by @ben-basten in https://github.com/immich-app/immich/pull/17549
* fix: read longitude and latitude when reverse geocoding is off by @atollk in https://github.com/immich-app/immich/pull/17558
* fix: responsive: timeline glitch and keyboard-accessible scrubber by @midzelis in https://github.com/immich-app/immich/pull/17556
* fix(web): improve mobile web album viewer padding by @aamirazad in https://github.com/immich-app/immich/pull/17575
* fix(mobile): exif not updated on sync by @shenlong-tanwen in https://github.com/immich-app/immich/pull/17633
* fix: skip places that no longer exist in geo import by @darookee in https://github.com/immich-app/immich/pull/17637
* fix: use IMMICH_HOST in microservices by @yparitcher in https://github.com/immich-app/immich/pull/17659
* fix(web): map marker positioning in details pane by @YarosMallorca in https://github.com/immich-app/immich/pull/17754
* fix(mobile): use immutable cache keys for local images by @lukaszwawrzyk in https://github.com/immich-app/immich/pull/17794
* fix: cache build versions by @zackpollard in https://github.com/immich-app/immich/pull/17811
* fix: retrieve version from lockfile and fallback to cli command by @zackpollard in https://github.com/immich-app/immich/pull/17812
### 📚 Documentation
* docs: fixed a wrong path in CLI docs page by @l0ll098 in https://github.com/immich-app/immich/pull/17369
* fix: restore mangled footnotes by @bo0tzz in https://github.com/immich-app/immich/pull/17446
* docs: Add PowerShell example for running web client only by @ROODAY in https://github.com/immich-app/immich/pull/17546
* chore(doc): translation instruction for mobile app by @alextran1502 in https://github.com/immich-app/immich/pull/17629
* chore: add immich-cli docker example  by @ppuschmann in https://github.com/immich-app/immich/pull/17595
* fix(docs): Database dump warnings by @mmomjian in https://github.com/immich-app/immich/pull/17676
* feat(docs): documentation update by @aviv926 in https://github.com/immich-app/immich/pull/17720
* docs: updated community-projects.tsx: lrc-immich-plugin by @bmachek in https://github.com/immich-app/immich/pull/17801
### 🌐 Translations
* chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/17254
* feat(mobile): remove duplicated i18n file by @AutisticShark in https://github.com/immich-app/immich/pull/17591
* chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/17438
* chore(web): cleanup unused translations by @weblate in https://github.com/immich-app/immich/pull/17624
* chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/17627
* chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/17808

## New Contributors
* @rubenhensen made their first contribution in https://github.com/immich-app/immich/pull/17413
* @devsnek made their first contribution in https://github.com/immich-app/immich/pull/17430
* @aleksandrsovtan made their first contribution in https://github.com/immich-app/immich/pull/16732
* @ROODAY made their first contribution in https://github.com/immich-app/immich/pull/17507
* @Pleune made their first contribution in https://github.com/immich-app/immich/pull/17516
* @Kirens made their first contribution in https://github.com/immich-app/immich/pull/17564
* @atollk made their first contribution in https://github.com/immich-app/immich/pull/17558
* @AutisticShark made their first contribution in https://github.com/immich-app/immich/pull/17591
* @EinToni made their first contribution in https://github.com/immich-app/immich/pull/17594
* @andreymir made their first contribution in https://github.com/immich-app/immich/pull/17240
* @ppuschmann made their first contribution in https://github.com/immich-app/immich/pull/17595
* @darookee made their first contribution in https://github.com/immich-app/immich/pull/17637
* @exciton made their first contribution in https://github.com/immich-app/immich/pull/17188

**Full Changelog**: https://github.com/immich-app/immich/compare/v1.131.3...v1.132.0