chore(deps): update dependency https://github.com/immich-app/immich.git to v1.96.0 - autoclosed
This MR contains the following updates:
Package | Update | Change | OpenSSF |
---|---|---|---|
https://github.com/immich-app/immich.git | minor |
v1.94.1 -> v1.96.0
|
Release Notes
immich-app/immich (https://github.com/immich-app/immich.git)
v1.96.0
v1.96.0
[!IMPORTANT] Please ignore if you have the default Immich setup
If your Immich database's user does not have the
superuser
role (custom setup), you will need to install two additional extensions for the feature of Search by location when editing place for the asset in this update and for the server to start up correctly.
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION IF NOT EXISTS unaccent;
Highlights
Welcome to release v1.96.0
of Immich. This release adds more enhancements for search, optimizes the mobile app and includes a handful of bug fixes. Some of the key highlights include:
- Search filter form improvement
- Search by location when editing the place for the asset.
- Optimization of asset rendering on the mobile app.
- Slideshow options (web)
- Notable fix (mobile app): Stop sending users to the login page for unrelated authentication errors.
- Notable fix: Smart Search when using OpenVINO.
Improved Search Form
After receiving users' feedback, we make the search filter a little more compact with minor UI/UX changes to make the process of selecting/deselecting the filter's content more intuitive.
Search location when editing place for the asset.
We have implemented the lookup-on-type mechanism to quicky search for a location on the map when adding or edding location of the asset. This process happens entirely on your server
https://github.com/immich-app/immich/assets/27055614/7960d897-fc85-44f5-bbb0-03c6d16effa9
[Web] Slideshow options
We added additional options for the slideshow feature on the web, so you can make it fit your needs when showing of your gallery
Optimized asset rendering on the mobile app
We add a blur thumbnail loading step to help the transition from black/white placeholder to the image a more pleasant experience and fix a bug that sometimes the HTTP client would timeout and show the broken icon on the thumbnail.
https://github.com/immich-app/immich/assets/27055614/38c77700-4666-4686-bce2-8229203978d6
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: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
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
- chore(server): change transcode default to accept all supported audio codecs by @mertalev in https://github.com/immich-app/immich/pull/7283
- fix(server): search with same face multiple times by @michelheusschen in https://github.com/immich-app/immich/pull/7306
- fix(server, web): people page by @martabal in https://github.com/immich-app/immich/pull/7319
- fix(server): fix log for setting other vector extension by @mertalev in https://github.com/immich-app/immich/pull/7325
- perf(server): optimize mapAsset by @michelheusschen in https://github.com/immich-app/immich/pull/7331
- fix(server): out of memory when unstacking assets by @michelheusschen in https://github.com/immich-app/immich/pull/7332
- fix(server): exclude archived assets from orphaned files by @michelheusschen in https://github.com/immich-app/immich/pull/7334
- feat(server, web): search location by @martabal in https://github.com/immich-app/immich/pull/7139
- fix(server): storage template migration not working by @mertalev in https://github.com/immich-app/immich/pull/7414
- fix(server): truncate embedding tables by @mertalev in https://github.com/immich-app/immich/pull/7449
- feat(server): easy RKMPP video encoding by @fyfrey in https://github.com/immich-app/immich/pull/7460
📱 Mobile
- refactor(mobile): Use hooks to manage Chewie controller for video by @martyfuhry in https://github.com/immich-app/immich/pull/7008
- fix(deps): update dependency geolocator to v11 by @renovate in https://github.com/immich-app/immich/pull/7249
- fix(deps): update dependency flutter_udid to v3 by @renovate in https://github.com/immich-app/immich/pull/7248
- fix(mobile): don't crop memories in landscape mode by @hrdl-github in https://github.com/immich-app/immich/pull/6907
- refactor(mobile): move error details to separate DB column by @rovo89 in https://github.com/immich-app/immich/pull/6898
- fix(mobile): remove log message counter by @rovo89 in https://github.com/immich-app/immich/pull/6865
- fix(mobile): Stop sending app to login page for unrelated auth errors by @martyfuhry in https://github.com/immich-app/immich/pull/7383
- refactor(mobile): Use ImmichThumbnail and local thumbnail image provider by @martyfuhry in https://github.com/immich-app/immich/pull/7279
- refactor(mobile): Uses blurhash for memory card instead of blurred thumbnail by @martyfuhry in https://github.com/immich-app/immich/pull/7469
🖥 ️ Web
- fix(web): search filter form events by @michelheusschen in https://github.com/immich-app/immich/pull/7285
- fix(web): back button for gallery viewer by @michelheusschen in https://github.com/immich-app/immich/pull/7250
- fix(web): small issues everywhere by @martabal in https://github.com/immich-app/immich/pull/7207
- Localize the output of the library count to make it more readable by @MarcelEeken in https://github.com/immich-app/immich/pull/7305
- feat(web): search improvements and refactor by @michelheusschen in https://github.com/immich-app/immich/pull/7291
- feat(web): rework combobox and add clear button by @michelheusschen in https://github.com/immich-app/immich/pull/7317
- feat(web): search albums by @martabal in https://github.com/immich-app/immich/pull/7322
- feat(web): add an option to change the date formats by @martabal in https://github.com/immich-app/immich/pull/7174
- Enhancement: Revamp onboarding message for Storage Template Engine - Web by @RavidYael in https://github.com/immich-app/immich/pull/7339
- refactor(web): sidebar settings by @jrasm91 in https://github.com/immich-app/immich/pull/7344
- fix: upgrade SvelteKit to 2.5.1 by @benmccann in https://github.com/immich-app/immich/pull/7351
- fix(web): consistent combobox style + improve color contrast by @michelheusschen in https://github.com/immich-app/immich/pull/7353
- feat(web): configure slideshow by @martabal in https://github.com/immich-app/immich/pull/7219
- fix(web): dark mode uploading font color by @sebbi08 in https://github.com/immich-app/immich/pull/7372
- Web: Revamp message for Storage Template Engine in admin pannel by @AndyPro720 in https://github.com/immich-app/immich/pull/7359
- feat(web): improve search filter design by @michelheusschen in https://github.com/immich-app/immich/pull/7367
- fix(web): timezone handling in search filter by @michelheusschen in https://github.com/immich-app/immich/pull/7384
- fix(web): prevent scroll reset on search page by @michelheusschen in https://github.com/immich-app/immich/pull/7385
- feat(web): Added password field visibility toggle by @Jan108 in https://github.com/immich-app/immich/pull/7368
- refactor(web): search box by @danieldietzler in https://github.com/immich-app/immich/pull/7397
- fix(web): count hidden people by @martabal in https://github.com/immich-app/immich/pull/7417
- fix(web): fetch error reporting by @michelheusschen in https://github.com/immich-app/immich/pull/7391
- fix(web): alignment of people in search box by @michelheusschen in https://github.com/immich-app/immich/pull/7430
- fix(web): prevent resetting date input when entering 0 by @michelheusschen in https://github.com/immich-app/immich/pull/7415
- fix(web): shared links page broken by enhanced:img by @michelheusschen in https://github.com/immich-app/immich/pull/7453
- fix(web): don't ask password for invalid shared link by @michelheusschen in https://github.com/immich-app/immich/pull/7456
- chore(web): cleanup promise handling by @benmccann in https://github.com/immich-app/immich/pull/7382
- chore(web): remove album's action notification by @alextran1502 in https://github.com/immich-app/immich/pull/7467
- chore(web): upgrade dependencies by @benmccann in https://github.com/immich-app/immich/pull/7471
🧠 Machine Learning
- Fix Smart Search when using OpenVINO by @agrawalsourav98 in https://github.com/immich-app/immich/pull/7389
- fix(ml): only use openvino if a gpu is available by @mertalev in https://github.com/immich-app/immich/pull/7450
📓 Documentation
- docs: add star history for README by @wangrongding in https://github.com/immich-app/immich/pull/7328
- Update reverse-proxy.md - Apache by @sigulete in https://github.com/immich-app/immich/pull/7386
🔨 Maintenance
- chore(deps): update machine-learning by @renovate in https://github.com/immich-app/immich/pull/7225
- chore(deps): update dependency vite to v5.1.3 by @renovate in https://github.com/immich-app/immich/pull/7247
- chore(deps): update dependency @types/node to v20.11.19 by @renovate in https://github.com/immich-app/immich/pull/7239
- chore(deps): update dependency @types/node to v20.11.19 by @renovate in https://github.com/immich-app/immich/pull/7238
- chore(deps): update dependency @types/node to v20.11.19 by @renovate in https://github.com/immich-app/immich/pull/7236
- chore(deps): update @immich/cli by @renovate in https://github.com/immich-app/immich/pull/7235
- fix(deps): update exiftool by @renovate in https://github.com/immich-app/immich/pull/7230
- refactor(server): e2e by @jrasm91 in https://github.com/immich-app/immich/pull/7265
- refactor: album e2e by @jrasm91 in https://github.com/immich-app/immich/pull/7320
- refactor: e2e client by @jrasm91 in https://github.com/immich-app/immich/pull/7324
- chore(deps): update base-image to v20240222 (major) by @renovate in https://github.com/immich-app/immich/pull/7338
- chore(deps): update vitest monorepo to v1.3.1 by @renovate in https://github.com/immich-app/immich/pull/7407
- chore(deps): update machine-learning by @renovate in https://github.com/immich-app/immich/pull/7451
- chore(ci): move e2e test to github runner by @alextran1502 in https://github.com/immich-app/immich/pull/7452
- chore(deps): update dependency @oazapfts/runtime to v1.0.1 by @renovate in https://github.com/immich-app/immich/pull/7446
- chore(deps): bump docker/setup-buildx-action from 3.0.0 to 3.1.0 by @dependabot in https://github.com/immich-app/immich/pull/7459
- chore(deps): update node.js to
f3299f1
by @renovate in https://github.com/immich-app/immich/pull/7443 - chore(deps): update node.js to
f3299f1
by @renovate in https://github.com/immich-app/immich/pull/7444 - fix(deps): update dependency orjson to v3.9.15 [security] by @renovate in https://github.com/immich-app/immich/pull/7438
- chore(deps): update server by @renovate in https://github.com/immich-app/immich/pull/7447
- fix(web/server): revert renovate hash update by @alextran1502 in https://github.com/immich-app/immich/pull/7464
- chore(deps): update @immich/cli by @renovate in https://github.com/immich-app/immich/pull/7445
- chore(deps): update web by @renovate in https://github.com/immich-app/immich/pull/7448
- chore(deps): update base-image to v20240227 (major) by @renovate in https://github.com/immich-app/immich/pull/7470
- chore(deps): update dependency @types/node to v20.11.20 by @renovate in https://github.com/immich-app/immich/pull/7473
- refactor(server): e2e by @jrasm91 in https://github.com/immich-app/immich/pull/7462
- chore(deps): update dependency @types/node to v20.11.20 by @renovate in https://github.com/immich-app/immich/pull/7475
- chore(deps): update dependency @types/node to v20.11.20 by @renovate in https://github.com/immich-app/immich/pull/7476
New Contributors
- @MarcelEeken made their first contribution in https://github.com/immich-app/immich/pull/7305
- @wangrongding made their first contribution in https://github.com/immich-app/immich/pull/7328
- @RavidYael made their first contribution in https://github.com/immich-app/immich/pull/7339
- @sebbi08 made their first contribution in https://github.com/immich-app/immich/pull/7372
- @hrdl-github made their first contribution in https://github.com/immich-app/immich/pull/6907
- @AndyPro720 made their first contribution in https://github.com/immich-app/immich/pull/7359
- @Jan108 made their first contribution in https://github.com/immich-app/immich/pull/7368
- @sigulete made their first contribution in https://github.com/immich-app/immich/pull/7386
- @agrawalsourav98 made their first contribution in https://github.com/immich-app/immich/pull/7389
Full Changelog: https://github.com/immich-app/immich/compare/v1.95.1...
v1.95.1
v1.95.1
Hotfixes
- fixed search result not return correctly with the combination of not in album filter and context search
- fixed search results return archived assets by default
- fixed flashing issue in memory view on the mobile app
- fixed presenting add to album modal removes the browser's scroll ability
Include the release note from v1.95.0
below for your convenience.
v1.95.0
[!WARNING]
⚠ ️ Breaking Changes⚠ ️
pgvecto.rs
to stable version 0.2.0
for enhanced search
1. Upgrade
docker-compose.yml
database image from 0.1.11
to 0.2.0
Step 1: Change the [...]
database:
container_name: immich_postgres
- image: tensorchord/pgvecto-rs:pg14-v0.1.11@​sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee
+ image: tensorchord/pgvecto-rs:pg14-v0.2.0@​sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
[...]
docker compose pull
Step 2: Perform Step 3:
a) If Immich is a Postgres superuser (default)
Bring the stack up with docker compose up
When the server starts up, it will log a message like this:
WARN [DatabaseService] Could not run vector reindexing checks. If the extension was updated, please restart the Postgres instance.
This is normal. Continue to Step 4.
b) If Immich is not a Postgres superuser
If Immich doesn't have superuser permissions, you'll need to bring up the database and run a few commands manually:
BEGIN;
CREATE SCHEMA IF NOT EXISTS vectors;
ALTER DATABASE immich SET search_path TO "$user", public, vectors;
SET search_path TO "$user", public, vectors;
UPDATE pg_catalog.pg_extension SET extversion = '0.1.11' WHERE extname = 'vectors';
UPDATE pg_catalog.pg_extension SET extrelocatable = true WHERE extname = 'vectors';
ALTER EXTENSION vectors SET SCHEMA vectors;
UPDATE pg_catalog.pg_extension SET extrelocatable = false WHERE extname = 'vectors';
ALTER EXTENSION vectors UPDATE TO '0.2.0';
SELECT pgvectors_upgrade();
COMMIT;
Step 4: Terminate and restart the stack
Bring the stack down (or terminate with ctrl + c
) with:
docker compose down
Then bring it back up:
docker compose up
You'll run into a message saying:
[DatabaseRepository] Could not reindex index face_index. Attempting to auto-fix.
This is normal. The server will do some magic and start to work.
✨ search enhancements✨
Step 5: Enjoy the new 2. OAuth encryption algorithm setting changes
OAuth setups using HS256
(mainly Authentik) will need to either (1) update the signing algorithm in Immich or (2) specify a signing key in the provider settings (so that it uses RS256
instead).
Specify a signing key in Authentik:
Screencast from 02-02-2024 12:05:04 AM.webm
New Immich OAuth Setting
Background
RS256
is generally better than HS256
. RS256
is pretty much the most commonly used algorithm. The client library we use for open-id defaults to RS256
. It's very easy to setup Authentik without specifying a signing key, which will default to use HS256
. The original implementation added a hack/fallback to HS256
in some conditions to try to handle that situation. The current code removes the fallback, and adds a specific Signing Algortithm
setting which can be explicitly set. Alternatively, the issue could be fixed by specifying a signing key in Authentik.
References:
Highlights
Welcome to version v1.95.0
of Immich. This is one of the longest stretches since the last release of Immich for the past year, we only had 150+ MRs merged since the last release. There are many new improvements and features in this release that we are very excited to introduce to you.
- (Web) Search enhancement - Introduced filter to incorporate advanced search.
- (Web) Improve user experience in search view - Infinite scrolling and justified layout in search result view.
- (Web) Show partner's photos and videos on the map - Option to show shared partners assets on the map
- (Mobile) Playing video in Memory view - Videos now auto play while viewing memories on the mobile app.
- (Mobile) Gradient placeholder - A much more pleasant placeholder while scrolling through your timeline.
- (Mobile) iOS background backup on WIFI option - The iOS mobile app can restrict your backups to only work while on WIFI.
- Notable fix: Issue with unresponsive swiping in gallery view fixed on iOS.
Enhanced search feature
This feature is available on the Web only as of this release
This release adds a highly anticipated feature - advanced search with filters by date, location and more. What's more is that these filters are also compatible with smart search, so you can add text to sort by relevance at the same time.
Results are also no longer capped at 100 - scrolling down will fetch more and more assets.
pgvector
compatibility
As part of the upgrade to pgvecto.rs 0.2, we've also added pgvector support for environments where pgvecto.rs can't be used. Adding DB_VECTOR_EXTENSION=pgvector
to the .env
file will use pgvector instead (assuming your Postgres instance has pgvector installed). We'd like to give a special shoutout to the pgvecto.rs team for adding a compatibility mode that makes it easier for us to support both extensions.
Please note that the extension cannot be changed after a successful startup (i.e., migrations have run). This means you can't switch to pgvector from an existing instance with pgvecto.rs. It must be a new instance or an instance coming from 1.90.2 or older. Additionally, some features may not work quite as well with pgvector.
If you're upgrading from an old version of Immich, the migrations will take some time - don't worry if the server doesn't start up immediately.
Show partner's photos and videos on the map
This feature is available on the Web only as of this release
You can now toggle the option to include partners' assets on the map view.
Gradient placeholder on the mobile app
iOS background backup on WIFI option
You can now toggle this option only to allow background backup while the device is connected to the WIFI network.
External library import path validation
Several users struggle with getting import paths correct with external libraries. This version adds several checks and validations so that the user gets feedback on what went wrong.
CLI release
New CLI version 2.0.8. This version supports running inside Docker without needing Node.js installed, which helps on some platforms. Under the hood, it has been migrated to the new API version, uses vitest
instead of jest
, and has seen several improvements and bug fixes.
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: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
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
- fix(server): quote database name in migration by @mertalev in https://github.com/immich-app/immich/pull/7277
- fix(server): not in album filter with context search by @alextran1502 in https://github.com/immich-app/immich/pull/7275
- fix(server): don't return archived assets by default by @mertalev in https://github.com/immich-app/immich/pull/7278
📱 Mobile
- fix(mobile): Uses immich thumbnail for background of memory picture by @martyfuhry in https://github.com/immich-app/immich/pull/7254
🖥 ️ Web
- fix(web): presenting modal removes the browser's scroll ability by @alextran1502 in https://github.com/immich-app/immich/pull/7257
Full Changelog: https://github.com/immich-app/immich/compare/v1.95.0...
v1.95.0
v1.95.0
[!WARNING]
⚠ ️ Breaking Changes⚠ ️
pgvecto.rs
to stable version 0.2.0
for enhanced search
1. Upgrade
docker-compose.yml
database image from 0.1.11
to 0.2.0
Step 1: Change the [...]
database:
container_name: immich_postgres
- image: tensorchord/pgvecto-rs:pg14-v0.1.11@​sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee
+ image: tensorchord/pgvecto-rs:pg14-v0.2.0@​sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
[...]
docker compose pull
Step 2: Perform Step 3:
a) If Immich is a Postgres superuser (default)
Bring the stack up with docker compose up
When the server starts up, it will log a message like this:
WARN [DatabaseService] Could not run vector reindexing checks. If the extension was updated, please restart the Postgres instance.
This is normal. Continue to Step 4.
b) If Immich is not a Postgres superuser
If Immich doesn't have superuser permissions, you'll need to bring up the database and run a few commands manually:
BEGIN;
CREATE SCHEMA IF NOT EXISTS vectors;
ALTER DATABASE immich SET search_path TO "$user", public, vectors;
SET search_path TO "$user", public, vectors;
UPDATE pg_catalog.pg_extension SET extversion = '0.1.11' WHERE extname = 'vectors';
UPDATE pg_catalog.pg_extension SET extrelocatable = true WHERE extname = 'vectors';
ALTER EXTENSION vectors SET SCHEMA vectors;
UPDATE pg_catalog.pg_extension SET extrelocatable = false WHERE extname = 'vectors';
ALTER EXTENSION vectors UPDATE TO '0.2.0';
SELECT pgvectors_upgrade();
COMMIT;
Step 4: Terminate and restart the stack
Bring the stack down (or terminate with ctrl + c
) with:
docker compose down
Then bring it back up:
docker compose up
You'll run into a message saying:
[DatabaseRepository] Could not reindex index face_index. Attempting to auto-fix.
This is normal. The server will do some magic and start to work.
✨ search enhancements✨
Step 5: Enjoy the new 2. OAuth encryption algorithm setting changes
OAuth setups using HS256
(mainly Authentik) will need to either (1) update the signing algorithm in Immich or (2) specify a signing key in the provider settings (so that it uses RS256
instead).
Specify a signing key in Authentik:
Screencast from 02-02-2024 12:05:04 AM.webm
New Immich OAuth Setting
Background
RS256
is generally better than HS256
. RS256
is pretty much the most commonly used algorithm. The client library we use for open-id defaults to RS256
. It's very easy to setup Authentik without specifying a signing key, which will default to use HS256
. The original implementation added a hack/fallback to HS256
in some conditions to try to handle that situation. The current code removes the fallback, and adds a specific Signing Algortithm
setting which can be explicitly set. Alternatively, the issue could be fixed by specifying a signing key in Authentik.
References:
Highlights
Welcome to version v1.95.0
of Immich. This is one of the longest stretches since the last release of Immich for the past year, we only had 150+ MRs merged since the last release. There are many new improvements and features in this release that we are very excited to introduce to you.
- (Web) Search enhancement - Introduced filter to incorporate advanced search.
- (Web) Improve user experience in search view - Infinite scrolling and justified layout in search result view.
- (Web) Show partner's photos and videos on the map - Option to show shared partners assets on the map
- (Mobile) Playing video in Memory view - Videos now auto play while viewing memories on the mobile app.
- (Mobile) Gradient placeholder - A much more pleasant placeholder while scrolling through your timeline.
- (Mobile) iOS background backup on WIFI option - The iOS mobile app can restrict your backups to only work while on WIFI.
- Notable fix: Issue with unresponsive swiping in gallery view fixed on iOS.
Enhanced search feature
This feature is available on the Web only as of this release
This release adds a highly anticipated feature - advanced search with filters by date, location and more. What's more is that these filters are also compatible with smart search, so you can add text to sort by relevance at the same time.
Results are also no longer capped at 100 - scrolling down will fetch more and more assets.
pgvector
compatibility
As part of the upgrade to pgvecto.rs 0.2, we've also added pgvector support for environments where pgvecto.rs can't be used. Adding DB_VECTOR_EXTENSION=pgvector
to the .env
file will use pgvector instead (assuming your Postgres instance has pgvector installed). We'd like to give a special shoutout to the pgvecto.rs team for adding a compatibility mode that makes it easier for us to support both extensions.
Please note that the extension cannot be changed after a successful startup (i.e., migrations have run). This means you can't switch to pgvector from an existing instance with pgvecto.rs. It must be a new instance or an instance coming from 1.90.2 or older. Additionally, some features may not work quite as well with pgvector.
If you're upgrading from an old version of Immich, the migrations will take some time - don't worry if the server doesn't start up immediately.
Show partner's photos and videos on the map
This feature is available on the Web only as of this release
You can now toggle the option to include partners' assets on the map view.
Gradient placeholder on the mobile app
iOS background backup on WIFI option
You can now toggle this option only to allow background backup while the device is connected to the WIFI network.
External library import path validation
Several users struggle with getting import paths correct with external libraries. This version adds several checks and validations so that the user gets feedback on what went wrong.
CLI release
New CLI version 2.0.8. This version supports running inside Docker without needing Node.js installed, which helps on some platforms. Under the hood, it has been migrated to the new API version, uses vitest
instead of jest
, and has seen several improvements and bug fixes.
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: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
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
⚠ ️ Breaking Changes
- feat(server)!: oauth encryption algorithm setting by @danieldietzler in https://github.com/immich-app/immich/pull/6818
- feat(server)!: pgvecto.rs 0.2 and pgvector compatibility by @mertalev in https://github.com/immich-app/immich/pull/6785
🗄 ️ Server
- fix(server): extract duration from video as ISO time by @alextran1502 in https://github.com/immich-app/immich/pull/6863
- chore(server): Use ChunkedSet in Access repository by @adamantike in https://github.com/immich-app/immich/pull/6943
- feat(server): optimize face re-queueing by @mertalev in https://github.com/immich-app/immich/pull/6961
- fix(server): check if sidecarPath exists by @JW-CH in https://github.com/immich-app/immich/pull/6293
- fix(server): use luxon for deleted date calculation by @manasadepu in https://github.com/immich-app/immich/pull/6958
- feat(server): server-side checking of duplicate import paths and exclusion patterns by @etnoy in https://github.com/immich-app/immich/pull/6993
- feat(server): restore modified at timestamp after upload, preserve when copying by @jextrevor in https://github.com/immich-app/immich/pull/7010
- feat(server, web): smart search filtering and pagination by @mertalev in https://github.com/immich-app/immich/pull/6525
- refactor: library watching by @jrasm91 in https://github.com/immich-app/immich/pull/7071
- feat: Search filtering logic by @alextran1502 in https://github.com/immich-app/immich/pull/6968
- feat(server, web): Include partner's photos on map by @ttyridal in https://github.com/immich-app/immich/pull/7065
- feat(server): only transcode streams that require it by @mertalev in https://github.com/immich-app/immich/pull/7106
- fix(server): recognize faces when min. faces is set to 1 by @michelheusschen in https://github.com/immich-app/immich/pull/7144
- feat: enhance search by @alextran1502 in https://github.com/immich-app/immich/pull/7127
- fix(server): empty/restore trash by @michelheusschen in https://github.com/immich-app/immich/pull/7161
- fix(server): not in album filter show motion part of LivePhotos by @alextran1502 in https://github.com/immich-app/immich/pull/7175
- feat(server): optimize get asset query by @mertalev in https://github.com/immich-app/immich/pull/7176
- fix(server): on_asset_update event sends varying data types by @michelheusschen in https://github.com/immich-app/immich/pull/7179
- fix(server):
getAllAssets
endpoint includes motion part of LivePhotos by @alextran1502 in https://github.com/immich-app/immich/pull/7194
📱 Mobile
- fix(mobile): video player shows black screen by @alextran1502 in https://github.com/immich-app/immich/pull/6819
- feat(mobile): Add support for Basic Authentication by @rovo89 in https://github.com/immich-app/immich/pull/6840
- feat(mobile): Add haptic feedback to asset grid by @l0nax in https://github.com/immich-app/immich/pull/5344
- fix(mobile): debounce map layer update by @shenlong-tanwen in https://github.com/immich-app/immich/pull/6861
- feat(mobile): Adds show password field to login by @martyfuhry in https://github.com/immich-app/immich/pull/6918
- feat(mobile): Memories activity is now full screen, better image fit, adds progress indicator by @martyfuhry in https://github.com/immich-app/immich/pull/6793
- refactor(mobile): map heatmap color and location picker by @shenlong-tanwen in https://github.com/immich-app/immich/pull/6553
- feat(mobile): Adds WiFi only backup option to iOS by @martyfuhry in https://github.com/immich-app/immich/pull/6724
- feat(mobile): Videos play in memories now by @martyfuhry in https://github.com/immich-app/immich/pull/6940
- fix(mobile): Stop advancing to next memory on video ended by @martyfuhry in https://github.com/immich-app/immich/pull/7007
- fix(mobile): stack entity handling by @shenlong-tanwen in https://github.com/immich-app/immich/pull/6980
- refactor(mobile): Immich image provider by @martyfuhry in https://github.com/immich-app/immich/pull/7016
- chore(mobile): Put the real delete button before other delete variants by @lukaszwawrzyk in https://github.com/immich-app/immich/pull/6895
- fix(mobile): Fixed exclude analyzer options by @martyfuhry in https://github.com/immich-app/immich/pull/7125
- fix(mobile): bottom app bar icons by @waclaw66 in https://github.com/immich-app/immich/pull/7147
- refactor(mobile): Use widgets in Immich asset grid by @martyfuhry in https://github.com/immich-app/immich/pull/7140
- fix(mobile): Fixes bottom exif info sheet modal drag controls by @martyfuhry in https://github.com/immich-app/immich/pull/7165
- chore(mobile): Adds dart format to static analysis by @martyfuhry in https://github.com/immich-app/immich/pull/7193
- fix(mobile): Fixes memory lane progress indicator color in dark mode by @martyfuhry in https://github.com/immich-app/immich/pull/7199
- fix(mobile): Prefer sharing local assets to remote by @martyfuhry in https://github.com/immich-app/immich/pull/7245
🖥 ️ Web
- fix(web): Admin Settings banner/scrolling issue by @azroberts8 in https://github.com/immich-app/immich/pull/6839
- feat(web): improved album view UI & album card UI by @azroberts8 in https://github.com/immich-app/immich/pull/6822
- feat(web): search filter form by @alextran1502 in https://github.com/immich-app/immich/pull/6651
- fix: set default thumbnail aspect ratio to square by @lukashass in https://github.com/immich-app/immich/pull/6970
- fix(web): Handle duplicate library settings gracefully by @etnoy in https://github.com/immich-app/immich/pull/6950
- fix (web): panorama / 360 view - partial panorama: use photo-sphere-viewer by @dmitry-brazhenko in https://github.com/immich-app/immich/pull/6992
- feat(web): store accordion state in search params by @danieldietzler in https://github.com/immich-app/immich/pull/6435
- fix(web): update profile picture by @martabal in https://github.com/immich-app/immich/pull/7034
- refactor: authentication on public routes by @martabal in https://github.com/immich-app/immich/pull/6765
- feat(web): add a setting to load the original file by @martabal in https://github.com/immich-app/immich/pull/6753
- feat(web): navigate with keyboard on person page by @martabal in https://github.com/immich-app/immich/pull/5486
- chore(web,mobile): Fix reoccurring typo by @ItsJustRuby in https://github.com/immich-app/immich/pull/7111
- fix(web): always show asset owner when viewing an asset from a shared album by @martabal in https://github.com/immich-app/immich/pull/7104
- chore: suppress abort errors by @jrasm91 in https://github.com/immich-app/immich/pull/7120
- fix(web): search params by @alextran1502 in https://github.com/immich-app/immich/pull/7123
- fix(web): update unauthorized share link handling by @benmccann in https://github.com/immich-app/immich/pull/7126
- chore(web): upgrade to maplibre 4 by @danieldietzler in https://github.com/immich-app/immich/pull/7132
- refactor(web): websocket events by @michelheusschen in https://github.com/immich-app/immich/pull/7152
- fix(web) display wrong apikey-name on edit by @JW-CH in https://github.com/immich-app/immich/pull/7131
- chore: remove svelte-preprocess by @benmccann in https://github.com/immich-app/immich/pull/7159
- fix(web): validation when editing asset date & time by @michelheusschen in https://github.com/immich-app/immich/pull/7160
- feat(web): add skip link to top navigation by @ben-basten in https://github.com/immich-app/immich/pull/7091
- chore(web): remove createEventDispatcher from LoginForm by @benmccann in https://github.com/immich-app/immich/pull/7177
- perf(web): optimize images and modules by @martabal in https://github.com/immich-app/immich/pull/7088
- fix: only show scrollbars if needed by @uhthomas in https://github.com/immich-app/immich/pull/7191
- fix(web): memory view broken by enhanced:img import by @michelheusschen in https://github.com/immich-app/immich/pull/7206
- fix(web): broken links to places search by @michelheusschen in https://github.com/immich-app/immich/pull/7208
- fix(web): don't show motion part in search result by @alextran1502 in https://github.com/immich-app/immich/pull/7210
- chore(web): show people list on a single line in filter form when not expanded by @alextran1502 in https://github.com/immich-app/immich/pull/7216
- fix(web): download from shared album link by @jrasm91 in https://github.com/immich-app/immich/pull/7227
- fix(web): websocket reconnect by @michelheusschen in https://github.com/immich-app/immich/pull/7234
- feat(web): improve feedback for favorite and archive actions by @michelheusschen in https://github.com/immich-app/immich/pull/7232
🧠 Machine Learning
- fix(ml): openvino not working with dynamic axes by @mertalev in https://github.com/immich-app/immich/pull/6871
- chore(ml): make execution provider log info-level by @mertalev in https://github.com/immich-app/immich/pull/7024
- feat(ml): improve test coverage by @mertalev in https://github.com/immich-app/immich/pull/7041
- fix(ml): re-enable ARMNN integration by @fyfrey in https://github.com/immich-app/immich/pull/7053
⚡ CLI
- fix(cli): auth file should be chmod 600 by @etnoy in https://github.com/immich-app/immich/pull/6925
- chore(cli): use upload api and update documentation by @etnoy in https://github.com/immich-app/immich/pull/6927
- feat(cli): dockerize by @etnoy in https://github.com/immich-app/immich/pull/6858
- chore(cli): publish docker image on ghcr by @etnoy in https://github.com/immich-app/immich/pull/6964
- fix(cli): broken fetch client by @jrasm91 in https://github.com/immich-app/immich/pull/7020
- feat(cli): concurrent upload by @mertalev in https://github.com/immich-app/immich/pull/7192
📓 Documentation
- docs(ml): hardware acceleration by @mertalev in https://github.com/immich-app/immich/pull/6821
- Documentation: provide details on storage engine album naming by @mmomjian in https://github.com/immich-app/immich/pull/6812
- docs(ml,server): updated hwaccel docs by @mertalev in https://github.com/immich-app/immich/pull/6878
- chore(docs): Small FAQ tweaks and nits by @bo0tzz in https://github.com/immich-app/immich/pull/6880
- Update command-line-interface.md by @jsixface in https://github.com/immich-app/immich/pull/6944
- fix(docs): add cuda tag to ml hwaccel example by @mertalev in https://github.com/immich-app/immich/pull/6972
- docs: fix web development setup instructions by @lukashass in https://github.com/immich-app/immich/pull/6969
- chore: add repo activity to readme by @alextran1502 in https://github.com/immich-app/immich/pull/6982
- fix: remove dead link from docs by @melvinsh in https://github.com/immich-app/immich/pull/7027
- Change license to AGPLv3 by @alextran1502 in https://github.com/immich-app/immich/pull/7046
- fix(docs): document vector extension env variable by @mertalev in https://github.com/immich-app/immich/pull/7220
🔨 Maintenance
- chore: simplify API build by @benmccann in https://github.com/immich-app/immich/pull/6841
- chore(server,cli,web): housekeeping and stricter code style by @etnoy in https://github.com/immich-app/immich/pull/6751
- fix(deps): update server by @renovate in https://github.com/immich-app/immich/pull/6769
- chore(deps): update redis:6.2-alpine docker digest to
51d6c56
by @renovate in https://github.com/immich-app/immich/pull/6782 - chore: remove
form-data
dependency by @benmccann in https://github.com/immich-app/immich/pull/6876 - fix: bundle CLI with Vite by @benmccann in https://github.com/immich-app/immich/pull/6893
- chore: remove axios dependency from CLI by @benmccann in https://github.com/immich-app/immich/pull/6888
- chore(deps): update @immich/cli by @renovate in https://github.com/immich-app/immich/pull/6928
- fix(deps): update dependency fastapi to v0.109.1 [security] by @renovate in https://github.com/immich-app/immich/pull/6923
- chore(deps): update dependency @types/node to v20.11.15 by @renovate in https://github.com/immich-app/immich/pull/6929
- chore: build API with esnext target by @benmccann in https://github.com/immich-app/immich/pull/6926
- chore(deps): update dependency @types/node to v20.11.16 by @renovate in https://github.com/immich-app/immich/pull/6946
- chore(deps): update dependency @types/node to v20.11.16 by @renovate in https://github.com/immich-app/immich/pull/6947
- chore(web): remove maplibre dependency by @danieldietzler in https://github.com/immich-app/immich/pull/6948
- chore(deps): update base-image to v20240206 (major) by @renovate in https://github.com/immich-app/immich/pull/6942
- chore(deps): update web by @renovate in https://github.com/immich-app/immich/pull/6933
- chore(deps): update server by @renovate in https://github.com/immich-app/immich/pull/6930
- chore(deps): update dependency eslint-plugin-unicorn to v51 by @renovate in https://github.com/immich-app/immich/pull/6952
- chore(deps): update @immich/cli by @renovate in https://github.com/immich-app/immich/pull/6951
- chore(deps): pin tensorchord/pgvecto-rs docker tag to
9072418
by @renovate in https://github.com/immich-app/immich/pull/6960 - chore(deps): bump stumpylog/image-cleaner-action from 0.4.0 to 0.5.0 by @dependabot in https://github.com/immich-app/immich/pull/6965
- chore(dep): add intl to ignoreDeps and remove unused packages by @shenlong-tanwen in https://github.com/immich-app/immich/pull/6967
- chore: setup
rollup-plugin-visualizer
and removelodash
by @benmccann in https://github.com/immich-app/immich/pull/6974 - refactor(server): asset core by @jrasm91 in https://github.com/immich-app/immich/pull/6985
- chore(server): remove deprecated endpoints by @jrasm91 in https://github.com/immich-app/immich/pull/6984
- fix: update lodash calls by @benmccann in https://github.com/immich-app/immich/pull/6996
- chore: cleanup layout setup by @benmccann in https://github.com/immich-app/immich/pull/6995
- chore: tree shake unused API methods from CLI by @benmccann in https://github.com/immich-app/immich/pull/6973
- fix: unnecessary .env file usage by @jrasm91 in https://github.com/immich-app/immich/pull/7005
- chore: remove unneccessary async/awaits by @benmccann in https://github.com/immich-app/immich/pull/7009
- refactor(web): removed panorama-viewer.css by @dmitry-brazhenko in https://github.com/immich-app/immich/pull/7012
- feat(server): replace axios dependency by fetch by @martabal in https://github.com/immich-app/immich/pull/7018
- chore: upgrade to Vite 5.1.1 by @benmccann in https://github.com/immich-app/immich/pull/7040
- fix(cli): Run npm ci in sdk folder before deploying to npm by @etnoy in https://github.com/immich-app/immich/pull/6986
- fix(deps): update dependency python-multipart to v0.0.7 [security] by @renovate in https://github.com/immich-app/immich/pull/7054
- feat(web): lazy load photo sphere viewer by @benmccann in https://github.com/immich-app/immich/pull/7057
- chore: update lockfiles by @benmccann in https://github.com/immich-app/immich/pull/7062
- fix(web): remove warnings during the build by @martabal in https://github.com/immich-app/immich/pull/7035
- chore(deps): pin tensorchord/pgvecto-rs docker tag to
9072418
by @renovate in https://github.com/immich-app/immich/pull/7066 - chore(deps): update web by @renovate in https://github.com/immich-app/immich/pull/7067
- chore(deps): update machine-learning by @renovate in https://github.com/immich-app/immich/pull/6931
- chore(deps): update machine-learning (major) by @renovate in https://github.com/immich-app/immich/pull/6934
- fix(deps): update dependency picomatch to v4 by @renovate in https://github.com/immich-app/immich/pull/7073
- chore: suppress diff for generated clients by @jrasm91 in https://github.com/immich-app/immich/pull/7072
- chore(deps): update dependency vite to v5.1.0 by @renovate in https://github.com/immich-app/immich/pull/7080
- chore(deps): update dependency oazapfts to v5.1.5 by @renovate in https://github.com/immich-app/immich/pull/7079
- chore(deps): update base-image to v20240213 (major) by @renovate in https://github.com/immich-app/immich/pull/7081
- chore(deps): update machine-learning by @renovate in https://github.com/immich-app/immich/pull/7074
- fix(deps): update server by @renovate in https://github.com/immich-app/immich/pull/7069
- fix(deps): update docs by @renovate in https://github.com/immich-app/immich/pull/7068
- chore(deps): update machine-learning by @renovate in https://github.com/immich-app/immich/pull/7084
- chore(deps): update web by @renovate in https://github.com/immich-app/immich/pull/7086
- web: e2e by @jrasm91 in https://github.com/immich-app/immich/pull/7063
- fix(deps): bump oazapfts to v6 by @jrasm91 in https://github.com/immich-app/immich/pull/7093
- refactor(web): use new open api client by @jrasm91 in https://github.com/immich-app/immich/pull/7097
- chore(deps): update dependency @types/node to v20.11.17 by @renovate in https://github.com/immich-app/immich/pull/7098
- chore(deps): update dependency @types/node to v20.11.17 by @renovate in https://github.com/immich-app/immich/pull/7099
- chore(deps): update dependency @types/node to v20.11.17 by @renovate in https://github.com/immich-app/immich/pull/7102
- refactor(web) open api client by @jrasm91 in https://github.com/immich-app/immich/pull/7103
- chore: enum support for new API by @benmccann in https://github.com/immich-app/immich/pull/7110
- chore(cli): auto-sort imports by @jrasm91 in https://github.com/immich-app/immich/pull/7116
- chore: web shutdown signal by @jrasm91 in https://github.com/immich-app/immich/pull/7114
- fix: update error handling to match new API by @benmccann in https://github.com/immich-app/immich/pull/7117
- chore(web): auto sort imports by @jrasm91 in https://github.com/immich-app/immich/pull/7118
- chore(deps): upgrade tj-actions/verify-changed-files to v18 by @benmccann in https://github.com/immich-app/immich/pull/7121
- chore: web e2e improvements by @jrasm91 in https://github.com/immich-app/immich/pull/7155
- chore(deps): update typescript-eslint monorepo to v7 (major) by @renovate in https://github.com/immich-app/immich/pull/7171
- fix: shell scripts by @martabal in https://github.com/immich-app/immich/pull/7186
- fix: shell scripts by @martabal in https://github.com/immich-app/immich/pull/7189
- chore: cleanup old jest references by @jrasm91 in https://github.com/immich-app/immich/pull/7198
- refactor: server auth e2e by @jrasm91 in https://github.com/immich-app/immich/pull/7203
- chore: remove unused file by @jrasm91 in https://github.com/immich-app/immich/pull/7205
- refactor: cli e2e by @jrasm91 in https://github.com/immich-app/immich/pull/7211
- chore(deps): update dependency vite to v5.1.2 by @renovate in https://github.com/immich-app/immich/pull/7218
- chore(deps): pin dependencies by @renovate in https://github.com/immich-app/immich/pull/7217
- chore(deps): update web by @renovate in https://github.com/immich-app/immich/pull/7221
- fix(deps): update dependency @mdx-js/react to v3.0.1 by @renovate in https://github.com/immich-app/immich/pull/7222
- refactor(server): e2e by @jrasm91 in https://github.com/immich-app/immich/pull/7223
- fix(deps): update server by @renovate in https://github.com/immich-app/immich/pull/7224
Other changes
- feat(server,web) Semantic import path validation by @etnoy in https://github.com/immich-app/immich/pull/7076
New Contributors
- @azroberts8 made their first contribution in https://github.com/immich-app/immich/pull/6839
- @rovo89 made their first contribution in https://github.com/immich-app/immich/pull/6840
- @jsixface made their first contribution in https://github.com/immich-app/immich/pull/6944
- @lukashass made their first contribution in https://github.com/immich-app/immich/pull/6969
- @manasadepu made their first contribution in https://github.com/immich-app/immich/pull/6958
- @melvinsh made their first contribution in https://github.com/immich-app/immich/pull/7027
- @jextrevor made their first contribution in https://github.com/immich-app/immich/pull/7010
- @ItsJustRuby made their first contribution in https://github.com/immich-app/immich/pull/7111
- @ttyridal made their first contribution in https://github.com/immich-app/immich/pull/7065
- @ben-basten made their first contribution in https://github.com/immich-app/immich/pull/7091
Full Changelog: https://github.com/immich-app/immich/compare/v1.94.1...v1.95.0
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot. The local configuration can be found in the SI Renovate Bot repository.