github immich-app/immich v1.90.0

latest releases: v1.115.0, v1.114.0, v1.113.1...
9 months ago

v1.90.0

Important

Announcement (Breaking changes next release v1.91.0)

Continuing the effort of reducing Immich's footprint, we would like to announce another planned change. Starting from the next release (not this release), we will be removing the Typesense container and changing the database image. Below are the changes that must be made in your docker-compose.yml file.

  immich-server:
  [...]
    depends_on:
      - redis
      - database
-     - typesense
    restart: always

  immich-microservices:
  [...]
    depends_on:
      - redis
      - database
-     - typesense
    restart: always

-  typesense:
-    container_name: immich_typesense
-    image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd
-    environment:
-      - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
-      - TYPESENSE_DATA_DIR=/data
-      # remove this to get debug messages
-      - GLOG_minloglevel=1
-    volumes:
-      - tsdata:/data
-    restart: always

[...]

  database:
    container_name: immich_postgres
-   image: postgres:14-alpine@sha256:6a0e35296341e676fe6bd8d236c72afffe2dfe3d7eb9c2405c0f3fc04500cd07
+   image: tensorchord/pgvecto-rs:pg14-v0.1.11
    env_file:
      - .env
    environment:

volumes:
  pgdata:
  model-cache:
- tsdata:

Note

Note: If you are running your database with a non-superuser role for Immich, you must enable the pgvecto.rs extension manually. You can do this by connecting to the immich database as a superuser and running:

CREATE EXTENSION vectors;

Search Background

It turns out that synchronizing data between Postgres and Typesense is quite complicated. It accounts for at least an additional 1000 lines of code and, while very feature-filled, has become a burden to maintain. Also, there have been some serious memory and performance issues with Typesense, especially with large photo collections. It is lightning fast, but at the expense of large indexes that must be read from disk into memory on each restart. There have been reports of this process taking up to 30 minutes!

We effectively remove an entire class of bugs and issues by removing the need to synchronize data. Furthermore, search queries can more easily be combined with the existing database schema, like libraries, partner sharing, albums, etc. After merging #3605, we hope to be able to make significant progress around the search implementation and feature set.

In short, some of the benefits of this change include the following:

  • One less container to run, deploy, and manage
  • Better memory/system resource usage
    • Decreased memory usage
    • Faster Encode CLIP and Recognize Faces jobs
    • Faster startup time
  • Significantly less code to maintain, test, debug
  • Improved developer workflow when adding search-related functionality
  • Ability to integrate smart search into end-to-end testing for improved testing coverage and stability
  • Ability to integrate CLIP search with other (metadata) criteria in the future
  • Ability to add customizable index settings for even lower memory usage and higher performance, such as on-disk indices and quantization

Highlights

Welcome to release v1.90.0 of Immich. In this release, we introduce the first implementation of asset metadata editing, which includes date, time, and location. This release also contains many improvements and bug fixes. I hope you enjoy this release. Please read the following highlights below:

  • Edit metadata.
  • Reassign person faces.
  • Better handling of iCloud assets.

Edit metadata

This release introduces the first implementation of editing assets.

Web

chrome_R8eIwyUEBR.mp4

Mobile App

Bottom Sheet Edit Date Time Edit Location Manual Location
Bottom sheet Edit date Location Edit Dialog Manual Location
Map Picker Bottom sheet Asset without location
Map picker Exif Info Sheet Asset without location

Note

Metadata edits only apply to non-external/read-only assets.

You can now edit a photo or video's date, time, hours, timezone, and GPS information. The edited info is written to a companion sidecar file and saved in the exact library location as the original photo or video.

Please note that downloading an asset does not include the sidecar file or edited information yet.

Thanks, @YFrendo, and @jrasm91 for the valuable implementation of this feature. Thanks @shenlong-tanwen for a quick implementation on the mobile app for feature parity

Reassign person's faces

In this continuous enhancement, @martabal has implemented a mechanism to change facial data in a photo from one person to another. There is a bounding box around the person's face in the photo hovered on the face in the detail panel.

Re-assigning faces

2023-11-10.20-05-34.mp4

Hovering thumbnails

2023-11-13.11-42-12.mp4

Better handling of iCloud assets

This is the first attempt to improve the backup process for iCloud’s users. We also added a toggle to ignore backing up assets from iCloud; you can find the option in a new Backup Options page on the mobile app.


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.

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

Mobile

Web

Server

Documentations

Dependencies

  • chore(deps): bump actions/setup-java from 3 to 4 by @dependabot in #5405
  • chore(deps): update python:3.11-bookworm docker digest to c56b0c6 by @renovate in #5387
  • chore(deps): update python:3.11-slim-bookworm docker digest to 23f5220 by @renovate in #5388
  • chore(deps): update dependency @types/node to v20.10.1 by @renovate in #5427
  • chore(deps): update postgres:14-alpine docker digest to 5491670 by @renovate in #5429
  • chore(deps): update redis:6.2-alpine docker digest to 60e49e2 by @renovate in #5430
  • chore(deps): update base-image to v20231130 (major) by @renovate in #5431
  • chore(deps): base image min age by @jrasm91 in #5433
  • chore(deps): update python:3.11-bookworm docker digest to 47c1829 by @renovate in #5434
  • chore(deps): update python:3.11-slim-bookworm docker digest to 8f82989 by @renovate in #5435
  • chore(deps): update python:3.11-bookworm docker digest to ba7a7ac by @renovate in #5438
  • chore(deps): update base-image to v20231201 (major) by @renovate in #5452
  • chore(deps): update postgres:14-alpine docker digest to 6a0e352 by @renovate in #5451
  • chore(deps): update python:3.11-slim-bookworm docker digest to cc75851 by @renovate in #5462
  • chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to e296d47 by @renovate in #5487
  • chore(deps): update postgres docker digest to 6dfee32 by @renovate in #5492
  • chore(deps): update dependency vite to v4.5.1 [security] by @renovate in #5513
  • chore(deps): ignore openapi pubspec by @shenlong-tanwen in #5521
  • chore(deps): bump actions/setup-python from 4 to 5 by @dependabot in #5528
  • chore: make running local dev instance on Windows work regardless of git config by @brokeh in #5419

New Contributors

Full Changelog: v1.89.0...v1.90.0

Don't miss a new immich release

NewReleases is sending notifications on new releases.