v1.89.0
Highlights
Welcome to release v1.89.0
of Immich. This release focuses on bug fixes and quality improvements for the server, web, and mobile client. Some of the highlights include:
- Better reverse geocoding resource management (#5301)
- Search name when merging face
- Album sorting options (take 2)
- Set original datetime via sidecar in preparation for metadata writing (#5199, #5066)
Reverse Geocoding Rewrite
When we first implemented reverse-geocoding, we picked a semi-popular library to handle it for us. However, we have run into quite a few issues. Like this, this, this, this, and plenty more. For better or for worse, it was easier to rewrite the implementation from the ground up, as part of the Immich core codebase. The new implementation matches the accuracy of the previous implementation but with multiple improvements. We plan to increase accuracy further in the future. Some of the changes include:
- Default reverse geocoding files ship with the immich-server image (bye-bye
.reverse-geocoding-dump/
folder and internet connectivity requirement!) - Reverse geocoding is read and loaded into Postgres once per release and then cached afterward.
- Microservices memory usage down from ~500MB to ~100MB
Before
After
Warning
If you are running your own Postgres database (not the one in our default docker-compose) and created the immich user yourself, you may need to enable the required extensions as the database superuser. You can do this by running the following two queries under the context of the immich database. This will only need to be run once.
CREATE EXTENSION cube;
CREATE EXTENSION earthdistance;
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.
Changelogs
Web
- feat(web): search names when merging faces by @martabal in #5209
- feat(web): prefer higher GiB values by @jrasm91 in #5340
- feat(web): Lazy load thumbnails on the people page by @l0nax in #5356
- fix(web): navigate to album from search by @jrasm91 in #5241
- fix(web): Map clustering when zoomed in by @danieldietzler in #5299
- fix(web): sorting options for albums by @martabal in #5233
- fix(web): storage decimals by @jrasm91 in #5363
- chore(web): adjust album thumbnail size by @waclaw66 in #5277
- chore(web): curly braces by @jrasm91 in #5362
- chore(web): handle signals for faster restart by @jrasm91 in #5366
- chore(web): run as root in dev by @jrasm91 in #5365
- chore(web): update job names by @jrasm91 in #5375
Server
- feat(server): postgres reverse geocoding by @zackpollard in #5301
- feat(server): load face entities faster by @l0nax in #5281
- fix(server): override date via xmp by @YFrendo in #5199
- fix(server): get album's assets in getAlbumInfo route by @alextran1502 in #5325
- chore(server): Prepare access interfaces for bulk permission checks by @adamantike in #5223
- chore(server): Check album permissions in bulk by @adamantike in #5290
- chore(server): Check more permissions in bulk by @adamantike in #5315
- chore(server): curly braces by @jrasm91 in #5361
- chore(deps): update server by @renovate in #5380
Mobile
- fix(mobile): Add translatable strings for shared links info by @adamantike in #5292
- fix(mobile): update password change description text to use user name by @shenlong-tanwen in #5105
- fix(mobile): server endpoint input auto parse https when not specified by @austinvaness in #5326
- chore(mobile): Add log when saving asset by @mPyKen in #5259
- chore(mobile): asset selection animation by @shenlong-tanwen in #5322
- chore(mobile): Modify language by @romonwafa in #5312
- refactor(mobile): deprecate getUserAssetsByDeviceId by @shenlong-tanwen in #5273
- refactor(mobile): send LivePhotos as a separate request by @shenlong-tanwen in #5275
- refactor(mobile): log asyncvalue errors by @shenlong-tanwen in #5327
- refactor(mobile): immich loading overlay by @shenlong-tanwen in #5320
Machine Learning
CLI
- chore(cli): add version option by @alextran1502 in #5237
- fix(cli): upload large file with openAPI api by @alextran1502 in #5246
- fix(cli): upload large file by @alextran1502 in #5242
Documentation
- docs: change github sponsor link to organization by @aamirazad in #5267
- docs: Added guide on remote access by @thariq-shanavas in #5350
- docs: build by @jrasm91 in #5374
- docs: long live web and proxy by @danieldietzler in #5347
- docs: Add German README by @3urobeat in #5262
Dependencies Updates
- fix(deps): update server by @renovate in #5187
- fix(deps): update exiftool by @renovate in #4988
- fix(deps): update dependency @immich/cli to v2.0.4 by @renovate in #5250
- fix(deps): prettier 3 by @jrasm91 in #5336
- fix(deps): update dependency clsx to v2 by @renovate in #5383
- chore(deps): fix renovate minimumReleaseAge by @bo0tzz in #5331
- chore(deps): add renovate grouping for docs and consolidate schedule by @jrasm91 in #5368
- chore(deps): update dependency eslint-plugin-unicorn to v49 by @renovate in #5178
- chore(deps): update dependency eslint-plugin-prettier to v5 by @renovate in #5174
- chore(deps): update @immich/cli by @renovate in #5235
- chore(deps): update dependency typescript to v5.3.2 by @renovate in #5236
- chore(deps): update dependency macos to v13 by @renovate in #5244
- chore(deps): update @immich/cli by @renovate in #5255
- chore(deps): update dependency svelte-jester to v3 by @renovate in #5252
- chore(deps): update base-image to v20231123 (major) by @renovate in #5285
- chore(deps): update base-image to v20231125 (major) by @renovate in #5307
- chore(deps): update server by @renovate in #5257
- chore(deps): update server by @renovate in #5311
- chore(deps): update dependency @types/node to v20.10.0 by @renovate in #5313
- chore(deps): remove unused package by @jrasm91 in #5337
- chore(deps): pin dependencies by @renovate in #5367
- chore(deps): update typescript-eslint monorepo to v6 (major) by @renovate in #5343
- chore(deps): pin dependencies by @renovate in #5369
- chore(deps): pin postgres docker tag to 71da05d by @renovate in #5370
- chore(deps): update dependency prettier to v3 by @renovate in #5371
- chore(deps): update dependency typescript to v5 by @renovate in #5265
- chore(deps): update @immich/cli to v6.13.1 by @renovate in #5379
- chore(deps): Only update to node LTS versions by @bo0tzz in #5355
- chore(deps): Group base image updates by @bo0tzz in #5284
- chore(deps): Add per-group schedule by @bo0tzz in #5319
- chore(deps): update web by @renovate in #4961
- chore(deps): update web by @renovate in #5239
- chore(deps): update web by @renovate in #5381
- chore(deps): fix min release age by @jrasm91 in #5382
New Contributors
- @YFrendo made their first contribution in #5199
- @3urobeat made their first contribution in #5262
- @aamirazad made their first contribution in #5267
- @l0nax made their first contribution in #5281
- @romonwafa made their first contribution in #5312
- @thariq-shanavas made their first contribution in #5350
- @austinvaness made their first contribution in #5326
Full Changelog: v1.88.2...v1.89.0