Releases: immich-app/immich
v1.135.3
v1.135.3
- Fixed an issue where the database migration fails on some instances with a different default database name
What's Changed
🐛 Bug fixes
- fix(server): don't hardcode database name in migration by @dotlambda in #19376
Full Changelog: v1.135.2...v1.135.3
v1.135.2
v1.135.2
This release addresses the following issues.
- Fixed an issue where the database migration was not running correctly on some systems
- Fixed an issue where the timezone causes an issue showing the web timeline in some instances, the counter resets again!
- Reverted the behavior of sorting people, it is now based on asset count as before
What's Changed
🌟 Enhancements
🐛 Bug fixes
- fix: container padding by @jrasm91 in #19316
- fix: people ordering by asset count by @zackpollard in #19366
- fix: bump vchord default to 0.4.3 by @mertalev in #19365
- fix(server): migration failing on pg15+ by @mertalev in #19363
- fix: time bucket grouping by @jrasm91 in #19329
- fix: use icons instead of toggles for admin user features view by @bwees in #19369
Full Changelog: v1.135.1...v1.135.2
v1.135.1
v1.135.1
Highlights
This release addresses the following issues.
- Fixed a bug where the navigation button disappears in detail view if opened from an album
- Fixed a bug where the local network permission prompt doesn't show up on iOS. If for some reason, you still cannot access the instance after enabling the permission, restarting the phone will fix it
- Fixed an issue where warning messages were shown after updating the VectorChord extension
- Fixed an issue where named people are not showing up on top of the people list
- Fixed an issue where the web timeline does not show on some older browsers
- iOS Widget now supports iOS 17 and above (previously supported only 18.5)
What's Changed
🐛 Bug fixes
- fix: album share modal navigation by @danieldietzler in #19245
- fix: panning interrupted while moving around the map by @danieldietzler in #19276
- fix: album list CSS margins by @PaulSonOfLars in #19262
- fix(server): drop vector indices before updating extension by @mertalev in #19283
- fix(server): unset prewarm dim parameter by @mertalev in #19271
- fix: album asset viewer by @danieldietzler in #19252
- fix(web): exit slideshow when exiting fullscreen. by @dagstuan in #19247
- fix: local network permission by @alextran1502 in #19285
- fix(web): Stack assets in asset-viewer cut off on the left by @xCJPECKOVERx in #19253
- fix: .find() iterator api combat by @alextran1502 in #19293
- fix: people ordering incorrect by @zackpollard in #19298
- fix: iOS 17.0 target version for widget by @bwees in #19308
📚 Documentation
New Contributors
- @PaulSonOfLars made their first contribution in #19262
Full Changelog: v1.135.0...v1.135.1
v1.135.0
v1.135.0
Highlights
Welcome to the release v1.135.0
of Immich. Another three-week gap, another ~200 PRs merged, another big release, let’s dive right in to what’s new.
- iOS home screen widgets
- Granular API key access control creation
- Google Cast support on the mobile app
- Opt-in Google Cast on the web
- New user onboarding
- Album description on the mobile app
- Drag-and-drop to the locked folder on the web
- Support for Vchord 0.4.2
- Shortcut to navigate the timeline
- Multiple admins support
- Devcontainer
- Notable fix: Double swiping issue on iOS when using the gallery viewer
iOS Home Screen Widgets
Memory Widget | Random Widget |
---|---|
![]() |
![]() |
Immich now supports home screen widgets on iOS! You can now add widgets to your home screen that:
- Display a random image from your library
- Display a random image from an album
- Show images from memory lane
We support all widget sizes (S, M, L, and XL on iPad). These widgets update approximately every 20 minutes and pull directly from your Immich server. Android support is coming in the near future, so keep an eye out!
Tip
Your server must be on v1.135.0
for album filtering to work.
Granular API key access control creation
You can now select additional permissions when creating an API key to use in any third-party libraries or software that integrate with Immich. This mechanism will give you better control over what the other applications or libraries can do with your Immich’s instance.
Google Cast support on the mobile app
Immich now supports casting photos from the mobile app to Google Cast-enabled devices! This is a follow-up to the casting feature present on the web. We support photos and videos, similar to the web feature. This feature is not controlled by the new “Opt-in Google Cast on the web” setting since it does not require third-party resources from Google.
Tip
Your server must be accessible through the server URL from the cast receiver. There is no limitation on public accessibility or an HTTPS connection requirement, unlike on the web. In addition, only assets that are uploaded to the server may be cast.
Opt-in Google Cast on the web
We received a few reports from users who were concerned about the privacy implications of Google Cast on the web. Immich needs to fetch a third-party script from Google to check if casting is supported in the browser and to communicate with the cast library in Chrome. This causes a network request to Google each time Immich is loaded.
We have made Google Cast opt-in now to remove this requirement. If you use Google Cast on the web, you may enable Google Cast for your user by going to Account Settings > Features > Settings > Cast
or by using this link.
If you have previously used Google Cast on the web and would like to continue using it, you must also enable it.
New user onboarding
To provide a better user experience for discovering and enabling various features, settings, and preferences, all new users are now greeted with an onboarding flow on the web when they first log in. They can select their language, theme, and personal privacy settings (such as Google Cast opt-in). Any users present before updating to v1.135.0
will not experience the onboarding flow.
Album description on the mobile app
The album’s description is now displayed and editable in the mobile app. The album’s header also gets some styles to make it more presentable.
Support for Vchord 0.4.2
Right after we rolled out the VectorChord vector database extension, the library dropped a new version 0.4.2 with some significant improvements (classic timing!). We've updated our server to support it and made it the default in the docker-compose.yml
file.
You don't have to upgrade, though - sticking with your current version (0.3.0) is perfectly fine. But if you want to move to the newer one, it is an option.
Keyboard Navigation in Timeline
The timeline now supports shortcuts to make navigating between days, months, and years easier.
- Use
d
orshift + d
to jump to an earlier or later day. - Use
m
orshift + m
to jump to the earlier or later month. - Use
y
orshift + y
to jump to the earlier or later year. - Use
g
to go directly to a specific date
Multiple admins support
You can now grant other users administrative permission by navigating to Administration > Users > View Users > Edit User
and toggling the Admin option

Dev Containers
There is an alternative way to set up a development environment using dev containers. For more information, refer to the documentation.
Contributing has never been easier: Get started right away with a single click on this button to launch an entire development environment in GitHub’s Codespaces in the cloud.
Along with the highlights, there are many other improvements and bug fixes. Make sure to check out the full changes below.
Support Immich
If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or our merchandise at https://immich.store
What's Changed
🚀 Features
- feat(web): granular api access controls by @wuzihao051119 in #18179
- feat(server): apk links API endpoint for Obtainium Android mobile-server version sync by @NicholasFlamy in #18700
- feat: delta sync by @shenlong-tanwen in #18428
- feat(web): improved user onboarding by @bwees in #18782
- feat(mobile): add album description functionality by @JobiJoba in #18886
- feat(web): add a user setting for default album sort order. by @dagstuan in #18950
- feat(mobile): hash assets in isolate by @shenlong-tanwen in #18924
- feat(server): add /search/statistics resource by @jpg0 in #18885
- feat(mobile): add cast support by @bwees in #18341
- feat(server): Add album filter to search by @xCJPECKOVERx in #18985
- feat(web): manage admin users by @nosajthenitram in #15380
🌟 Enhancements
- feat: keyboard navigation to timeline by @midzelis in #17798
- chore: vchord 0.4.1 by @mertalev in #18588
- feat(web): tag shortcut by @wuzihao051119 in #18711
- feat(server): log failed healthchecks to server container stderr in verbose mode by @skatsubo in #18709
- feat(web): make google cast opt in by @bwees in #18514
- feat: start oauth with
autoLaunch=1
by @Yetangitu in #18763 - feat: add --json-output option to upload command by @ferdinandyb in #18845
- feat: upload assets to locked folder by @arnolicious in #18806
- feat(web): improve slideshow quality of life by @dagstuan in #18778
- feat(mobile): Improve language setting UI by @dvbthien in #18854
- feat(mobile): add bulk download functionality by @JobiJoba in #18878
- feat(web): undo delete by @xCJPECKOVERx in #18729
- feat(web): display number of likes in asset viewer by @robinbrisa in #18911
- feat(web): Change the primary asset of a stack by @xCJPECKOVERx in #18913
- feat(web): Focus on combo box input when opening add tag modal by @xCJPECKOVERx in #18923
- feat(mobile): Capitalize first letter when add / edit name by @JobiJoba in https://github.com/immic...
v1.134.0
v1.134.0
Welcome to release v1.134.0
of Immich. This release focuses on bug fixes and enhancements from the previous release. Please find some of the highlights below:
- Adds a new API endpoint to check the application version status
- Adds a mechanism to handle startup reindexing after a failed model change
- Improves pinch-to-zoom action on the mobile app
- Replaces the administration user edit button with the action button to go straight to the user's detail page
- Fixes a bug where generated memories include locked assets
- Fixes a bug where the search filter panel anchors to the top of the page instead of the viewport
- Fixes a bug where
ctrl/cmd + click
doesn't open the photo on a new page - Fixes various minor issues related to styling and z-index
Support Immich
What's Changed
🌟 Enhancements
- fix(web): enhance face tagging confirmation and fix #18605 by @dvbthien in #18610
- feat: version check endpoint by @danieldietzler in #18572
🐛 Bug fixes
- feat: clean up memory with locked assets by @alextran1502 in #18532
- fix: more z-index issue by @alextran1502 in #18598
- fix(mobile): pinch to zoom + move acceleration by @toamz in #18569
- fix(web): center memory lane buttons by @lukashass in #18613
- fix(web): modal anchor by @alextran1502 in #18621
- fix: meta+click on thumbnail by @alextran1502 in #18648
- fix: use single bulkTagAssets call instead of loop by @bo0tzz in #18672
- fix(server): reverse isTrash field by @wuzihao051119 in #18665
- fix(web): move support & feedback button to user modal by @bwees in #18651
- fix(server): handle period in database name by @mertalev in #18590
- fix(web): handle nullable assets duration by @alextran1502 in #18679
- fix: replace edit user button with view button for user details screen by @zackpollard in #18683
- fix(web): update after permanently delete by @wuzihao051119 in #18684
- fix(server): handle startup reindexing after failed model change by @mertalev in #18688
🌐 Translations
- feat(mobile): add Estonian by @IndrekHaav in #18666
New Contributors
- @toamz made their first contribution in #18569
- @arnonm made their first contribution in #18285
- @IndrekHaav made their first contribution in #18666
Full Changelog: v1.133.1...v1.134.0
v1.133.1
v1.133.1
Highlights
- Lower disk usage during VectorChord migration
- Adds move to locked album button to more views on the web
- Fixes a bug where the missing button for the duplicate detection job is not working
- Fixes a bug where a hard link does not navigate to the asset location on the timeline
- Fixes a bug where styling information is missing in some cases
- Fixes a bug where locked assets show up in local album view if it is presented on the phone
- Fixes some translation issues
What's Changed
🌟 Enhancements
- feat: lower disk usage during migration by @mertalev in #18440
- fix: mobile user agent set to immich_platform_version by @zackpollard in #18478
- feat(web): add to locked folder in album and search by @wuzihao051119 in #18488
🐛 Bug fixes
- fix(server): missing button for duplicate detection not working by @mertalev in #18433
- fix(web): pin code input by @wuzihao051119 in #18456
- fix(web): Locked folder by @mmomjian in #18438
- fix: translations from background service by @shenlong-tanwen in #18473
- fix: more z-index issue by @alextran1502 in #18493
- fix(web): multi-select by @wuzihao051119 in #18485
- fix: translation vibes by @shenlong-tanwen in #18490
- fix(mobile): chinese translation by @alextran1502 in #18491
- fix: hard link navigation by @alextran1502 in #18489
- fix(mobile): don't show locked asset in local album view by @alextran1502 in #18536
- fix: tailwind issues by @danieldietzler in #18528
📚 Documentation
- fix(docs): more vchord details by @mmomjian in #18435
- fix(docs): mention
DB_VECTOR_EXTENSION
env in pgvector->vchord migration guide by @mertalev in #18508
🌐 Translations
- fix: typo in english translation by @cgkantidis in #18434
- chore(web): update translations by @weblate in #18391
New Contributors
- @cgkantidis made their first contribution in #18434
Full Changelog: https://github.com/immich-app/immich/compare/v1.133.0...
v1.133.0
v1.133.0 - The Hot Summer Release
Caution
BREAKING CHANGES
-
Mobile app version
Please make sure to have the mobile app and the server on the same version for this release. Older versions of the mobile app will not work correctly with version
v1.133.0
of the server. At the time of this release, the updated version of the mobile app should be available on the app stores. -
Upgrading the server from a very old release
As of 1.133.0, Immich only supports upgrading directly from 1.107.2 or later. If you’re trying to upgrade a version of Immich below this, please upgrade to 1.107.2 first and ensure Immich starts up successfully before continuing to the latest release.
-
New database vector extension
We are migrating off the deprecated pgvecto.rs database extension to its successor VectorChord, which comes with performance improvements in almost all aspects. This change is a major milestone we want to perform prior to the stable release.
Before making any other changes, please back up your database. While every effort has been made to make this migration as smooth as possible, there’s always a chance that something can go wrong.
After making a backup, please modify your docker-compose.yml
file with the following information.
[...]
database:
container_name: immich_postgres
- image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
+ image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
+ # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
+ # DB_STORAGE_TYPE: 'HDD'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
- healthcheck:
- test: >-
- pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
- Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
- --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
- echo "checksum failure count is $$Chksum";
- [ "$$Chksum" = '0' ] || exit 1
- interval: 5m
- start_interval: 30s
- start_period: 5m
- command: >-
- postgres
- -c shared_preload_libraries=vectors.so
- -c 'search_path="$$user", public, vectors'
- -c logging_collector=on
- -c max_wal_size=2GB
- -c shared_buffers=512MB
- -c wal_compression=on
restart: always
[...]
If you deviated from the defaults of pg14 or pgvectors0.2.0, you must adjust the pg major version and pgvecto.rs version. If you are still using the default docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
image, you can just follow the changes above. For example, if the previous image is docker.io/tensorchord/pgvecto-rs:pg16-v0.3.0
, the new image should be ghcr.io/immich-app/postgres:16-vectorchord0.3.0-pgvectors0.3.0
instead of the image specified in the diff.
After making these changes, you can start Immich as normal. Immich will make some changes to the DB during startup, which can take seconds to minutes to finish, depending on hardware and library size. In particular, it’s normal for the server logs to be seemingly stuck at Reindexing clip_index
and Reindexing face_index
for some time if you have over 100k assets in Immich and/or Immich is on a relatively weak server. If you see these logs and there are no errors, just give it time.
Important
Note: after switching to VectorChord, you should not downgrade Immich below 1.133.0.
Please don’t hesitate to contact us here on GitHub or Discord if you encounter migration issues.
VectorChord FAQ
I have a separate PostgreSQL instance shared with multiple services. How can I switch to VectorChord?
Please see https://immich.app/docs/administration/postgres-standalone#migrating-to-vectorchord for migration instructions. The migration path will be different depending on whether you’re currently using pgvecto.rs or pgvector, as well as whether Immich has superuser DB permissions.
What will happen if I upgrade Immich to 1.133.0 without changing the DB image?
Immich will auto-detect the vector extension available in the DB and continue to work without manual intervention. However, we will drop support for pgvecto.rs in a later release, so please switch at your convenience.
I’m using a different deployment method than Docker Compose. How should I migrate?
If you’re using Immich through turnkey deployment methods such as TrueNAS apps, the respective maintainers will either perform the migration transparently or inform you of what to do if not.
Why are so many lines removed from the docker-compose.yml
file? Does this mean the health check is removed?
These lines are now incorporated into the image itself along with some additional tuning.
What does this change mean for my existing DB backups?
The new DB image includes pgvector and pgvecto.rs in addition to VectorChord, so you can use this image to restore from existing backups that used either of these extensions. However, backups made after switching to VectorChord require an image containing VectorChord to restore successfully.
Do I still need pgvecto.rs installed after migrating to VectorChord?
pgvecto.rs only needs to be available during the migration, or if you need to restore from a backup that used pgvecto.rs. For a leaner DB and a smaller image, you can optionally switch to an image variant that doesn’t have pgvecto.rs installed after you’ve performed the migration and started Immich: ghcr.io/immich-app/postgres:14-vectorchord0.3.0
, changing the PostgreSQL version as appropriate.
Why does it matter whether my database is on an SSD or an HDD?
These storage mediums have different performance characteristics. As a result, the optimal settings for an SSD are not the same as those for an HDD. Either configuration is compatible with SSD and HDD, but using the right configuration will make Immich snappier. As a general tip, we recommend users store the database on an SSD whenever possible.
Can I use the new database image as a general PostgreSQL image outside of Immich?
It’s a standard PostgreSQL container image that additionally contains the VectorChord, pgvector, and (optionally) pgvecto.rs extensions. If you were using the previous pgvecto.rs image for other purposes, you can similarly do so with this image.
If pgvecto.rs and pgvector still work, why should I switch to VectorChord?
VectorChord is faster, more stable, uses less RAM, and (with the settings Immich uses) offers higher-quality results than pgvector and pgvecto.rs. This translates to better search and facial recognition experiences. In addition, pgvecto.rs support will be dropped in the future, so changing it sooner will avoid disruption.
Highlights
Welcome to the release v1.133.0
of Immich, which is the hottest release yet for this summer, with more than 200 commits since the last version. This version brings you a new database extension, an even more optimized and faster timeline, more unified components on the web, some cool new features that have been requested for a long time, and many bug fixes and improvements. Let’s dive in!
- VectorChord database extension
- In-app notification
- Show map in albums view (web only)
- Locked folder
- Google Cast Support (web only)
- User detail page
- RTL text support on the web
- Performance improvement in web timeline
- Notable fix: thumbnail caching issue on the mobile app
- Notable fix: For users who use OAuth, you can now configure
TOKEN_ENDPOINT_AUTH_METHOD
to eitherclient_sect_post
orclient_secret_basic
after entering theCLIENT_SECRET
- Sneak peek
In-app notification
Introducing an in-app, or internal, notification system. Previously, there was no way to notify you on the client if a database backup failed. Now, the failed backup will show up under a new notification section on the web. This mechanism paves the way for other helpful notifications, such as when a new album is shared with you or when new assets are added to a shared album, directly in the app.
Show map in albums view
On the web, you can now click this button to see the map view that shows the location of all the photos and videos in an album.
Locked folder
Have you ever taken embarrassing selfies that you don’t want anyone to see, and worry that you could accidentally reveal them while showcasing your superb Immich library? Locked folder view got you covered, with a personal PIN code, and an option to use biometric verification on the mobile app. You can access the page from the sidebar on the web or in the Library
page on the app
v1.132.3
v1.132.3
Bug fixes
- Opt-in delete sync is now available on Android!
We found an alternative method to achieve this. The feature is now available on Android. We are excited to hear about your experience with the feature. Please read this note about the feature - Fixes an issue where the mobile app cannot log in with an instance using Authelia for OAuth.
Important
Please update your Authelia config with the following property
token_endpoint_auth_method: "client_secret_post"
- Fixes an issue where navigating to the Library page could trigger a location permission request
- Fixes an issue where the mobile app might rehash some of the assets
What's Changed
🐛 Bug fixes
- fix(mobile): auto trash using MANAGE_MEDIA by @shenlong-tanwen in #17828
- fix(mobile): mobile migration logic by @alextran1502 in #17865
- fix(mobile): revert get location on app start by @YarosMallorca in #17882
- fix: Authelia OAuth code verifier value contains invalid characters by @alextran1502 in #17886
📚 Documentation
- fix(docs): incorrect date sorting by @wuzihao051119 in #17858
- docs: update MapTiler name by @MartinMikita in #17863
New Contributors
- @MartinMikita made their first contribution in #17863
Full Changelog: v1.132.1...v1.132.3
v1.132.1
v1.132.1
Hotfixes
- Reverting the opt-in delete synchronization in this release 😢. There is an issue with getting the Google PlayStore to approve the app with the new permission needed for this feature. We are exploring alternative routes to preserve this feature and will push out another update as soon as possible
- Fixes an issue where the server does not start on ARM devices
What's Changed
🐛 Bug fixes
- fix(server): bump sharp by @mertalev in #17818
- chore: reverting opt-in deletion feature by @alextran1502 in #17819
Full Changelog: v1.132.0...v1.132.1
v1.132.0
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_se...