v1.93.0
Announcement 📢
We are running a logo design contest for Immich; please visit the discussion thread and express your ideas if you have any. The contest will close on March 4th
Highlights
Welcome to release v1.93.0
of Immich. There are many updates in this version that we hope you'll like. Some of the key highlights include:
- Improved face grouping for facial detection - switch to DBSCAN clustering algorithm.
- New usage quota mechanism for users - specify the maximum storage each user can use on the server.
- Improve the deletion actions on the mobile app - Present explicit options to clear up confusion about each action.
- Faster map rendering on the mobile app
- Force deletion with
Shift + Del
on the web app - Notable fix: The web can now show assets with a date in the future.
New face clustering algorithm
To improve the accuracy of grouping faces, Immich is now using a more advanced clustering algorithm for facial recognition called DBSCAN. This algorithm introduces a concept of density, making facial recognition more precise. To better understand DBSCAN's work, please watch this video for a step-by-step visualization.
In addition to better facial recognition, a feature of this change is the ability to re-run facial recognition without re-processing each asset. This is because the Recognize Faces job has been split into two jobs: Face Detection and Facial Recognition, with only Face Detection processing images with machine learning models. Re-running Facial Recognition (say, after changing facial recognition settings) is much quicker as a result.
Usage quota
You can now specify the storage quota for the user as the instance’s admin; once the limit is reached, the user won’t be able to upload to the instance anymore.
Deletion actions on the mobile app
To increase the wife-approval-factor aspect of Immich, we always try to improve the UI/UX, and make the application simpler for non-tech-savvy users. To make the delete action easier to understand, we now have three separate buttons to handle different scenarios that can happen, which are presented in the table below.
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
🗄️ Server
- refactor(server): domain and infra modules by @jrasm91 in #6301
- refactor(server): split api and jobs into separate e2e suites by @jrasm91 in #6307
- fix(server): exif gps decoding by @waclaw66 in #6138
- refactor: open api by @jrasm91 in #6334
- feat(server): track metadata extracted at by @jrasm91 in #6352
- feat(server, web): quotas by @cfitzw in #4471
- fix(server): extract image description by @tlvince in #6344
- fix(server): add filename search by @sushain97 in #6394
- fix: enable/disable password login on truenas by @jrasm91 in #6433
- fix(server): handle 5 digit years by @jrasm91 in #6457
- fix(server): set log level of immich-admin process in boostrap function by @alextran1502 in #6458
- feat(server, web): smart merge by @martabal in #5796
- feat(server): provide the ability to search archived photos by @stevenwcarter in #6332
- fix(server): scale transcoded videos if dimensions are odd by @mertalev in #6461
- feat(format): hif format by @haossu in #6477
📱 Mobile
- fix(mobile): ensure notifier is mounted before updating state by @shenlong-tanwen in #6308
- fix(mobile): copy shared link by @shenlong-tanwen in #6310
- feat(mobile): Adds GPS locator to map prompt for easy geolocation by @sirebellum in #6282
- chore(dep): remove unused badges dep by @shenlong-tanwen in #6384
- feat(mobile): Focus search on doubletap nav button by @justinvdk in #6048
- refactor(mobile): maplibre by @shenlong-tanwen in #6087
- chore(dep): update auto_route by @shenlong-tanwen in #6390
- fix(mobile): null check on null value on top app bar by @alextran1502 in #6406
- feat(mobile): quota by @alextran1502 in #6409
- feat(mobile): separate delete buttons by @shenlong-tanwen in #4505
- fix(mobile): add to album - list thumbnails by @waclaw66 in #6444
- fix(mobile): asset state when delete from trash by @shenlong-tanwen in #6476
- feat(mobile): long-press delete button to permanently delete asset by @shenlong-tanwen in #6240
🖥️ Web
- fix(web): grid on people page by @martabal in #5640
- fix(web): handle trailing slash in external domain by @danieldietzler in #6253
- fix(web): logout and clear user store when using back button on the change password form by @alextran1502 in #6288
- fix(web): auto-expand multi-line asset descriptions by @martabal in #6305
- fix(web): copy shared link by @jrasm91 in #6309
- refactor(web): admin settings by @danieldietzler in #6177
- fix(web): OAuth settings nits by @bo0tzz in #6330
- fix(web): Uses asset exif info for desc in asset viewer by @sellnat77 in #4249
- fix(web): wrap long word in description by @alextran1502 in #6351
- fix(web): quota usage view by @danieldietzler in #6358
- chore(web): quota enhancement by @alextran1502 in #6371
- Move 'Add' button on album user invite to the same row as 'To' List by @A-wels in #6447
- feat(web): force delete with shift key by @martabal in #6239
- fix(web): trash or delete by @martabal in #6475
🧠 Machine Learning
- feat(ml): ARMNN acceleration by @fyfrey in #5667
- fix(ml): remove unused import by @mertalev in #6356
- feat(server): separate face clustering job by @mertalev in #5598
⚡ CLI
- fix(cli): uploadCounters increase only when files are uploaded by @AngelPone in #6357
📓 Documentation
- docs: update Chinese README by @indam in #6245
- fix(docs): Use absolute path for external library guide by @bo0tzz in #6290
- Clarify offline asset deletion process by @gtsteffaniak in #6333
- Edit and update of FAQ+new database GUI guide by @aviv926 in #5958
- fix(docs) Fix relative paths leading to broken links by @thariq-shanavas in #6354
- fix(docs) Fix command name by @Funk66 in #6368
- docs: fix pgAdmin links by @jrasm91 in #6403
- Update remove-offline-files.md by @hirenshah in #6449
- docs: remove tsc check by @jrasm91 in #6464
- chore: update bug template by @jrasm91 in #6465
🔨 Build
- chore: release note groups by @jrasm91 in #6297
- ci: Run e2e tests on self-hosted runner by @bo0tzz in #6296
🤖 Dependencies
- fix(deps): update docs by @renovate in #6284
- chore(deps): update machine-learning by @renovate in #6302
- chore(renovate): enforce compatible flavor for guava by @shenlong-tanwen in #6392
- fix(deps): update dependency geo-tz to v8 by @renovate in #6388
- chore(renovate): enforce compatible flavor for guava using versionScheme by @shenlong-tanwen in #6398
- deps: fix guava versioning by @jrasm91 in #6402
- fix(deps): update dependency com.google.guava:guava to v33 by @renovate in #5390
- chore(deps): update @immich/cli by @renovate in #6412
- chore(deps): update web by @renovate in #6413
- fix(deps): update docs by @renovate in #6420
- deps: separate out reflect metadata by @jrasm91 in #6425
- chore(deps): update dependency @types/node to v20.11.0 by @renovate in #6424
- chore(deps): update base-image to v20240111 (major) by @renovate in #6355
- chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to 377aafa by @renovate in #6434
- fix(deps): update server by @renovate in #6415
- deps: update docs by @jrasm91 in #6462
New Contributors
- @indam made their first contribution in #6245
- @gtsteffaniak made their first contribution in #6333
- @aviv926 made their first contribution in #5958
- @justinvdk made their first contribution in #6048
- @tlvince made their first contribution in #6344
- @A-wels made their first contribution in #6447
- @hirenshah made their first contribution in #6449
- @stevenwcarter made their first contribution in #6332
- @AngelPone made their first contribution in #6357
- @haossu made their first contribution in #6477
- @sirebellum made their first contribution in #6282
Full Changelog: v1.92.1...v1.93.0