Releases: immich-app/immich
v1.91.1
v1.91.1
Important
There was breaking changes in v1.91.0
please refer to the previous release note for more information
Hot Fixes
- Fixed cannot save exclusive patterns on the web
- Fixed cannot search for places
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
- feat(server,ml): Adding the new models to the whitelist by @MohamedFBoussaid in #5736
- fix(web): use env for web folder path by @martabal in #5753
Web
- fix(web): fix searching cities by @mertalev in #5746
- fix(web): cannot save exclusion pattern by @alextran1502 in #5738
- fix(web): never ungroup map markers. ever. by @danieldietzler in #5730
- chore(web): update job dashboard by @mertalev in #5745
Documentation
- docs: update milestone page by @martabal in #5663
- docs: add a walk-through guide for External Libraries by @jonhnet in #5594
- fix(docs): Add title for External Library guide by @jonhnet in #5732
- docs: fix redirects for cloudflare by @jrasm91 in #5734
New Contributors
- @MohamedFBoussaid made their first contribution in #5736
Full Changelog: https://github.com/immich-app/immich/compare/v1.91.0...
v1.91.0
v1.91.0
Welcome to the release v1.91.0
of Immich! This release is packed with changes. Some of the highlights include:
- A list of breaking changes/action required steps
- More details about the removal of the Typesense container and switch to pgvecto.rs, including some FAQs
- Notable fix: Backing up assets from iCloud no longer hangs the process
Important
Action Required
docker-compose.yml
updates related to dropping Typesense- Reupload certain iOS Live Photos
- Changes to the
LOG_LEVEL
environment variable
1. docker-compose.yml
updates
We are 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;
Note
See below for more details about this change, including frequently asked questions.
2. Reupload certain iOS Live Photos
iOS Live Photos uploaded after v1.89.0 that are not linked need to be deleted and re-uploaded from the mobile app.
This is a one-time action, and future live photos uploaded from the mobile app will be properly linked together.
3. Changes to the LOG_LEVEL
environment variable
The LOG_LEVEL
value of simple
has been removed. The equivalent value is log
. If you were using the value simple
, the server container will not start until this is updated.
FAQ
I kept Typesense disabled because my CPU doesn’t support AVX. Does this change mean I can’t use Immich anymore?
The new vector search extension we’re using, pgvecto.rs, does not require AVX to function as it does a runtime check on the SIMD instructions your CPU supports.
Does it work with Raspberry Pi?
It is tested to work with Raspberry Pi 5, and should work with Raspberry Pi 4 as well.
Do I need to do a backup and restore for my Postgres database?
While it is recommended to regularly backup your database, this change can be done in-place just by changing the image. You do not need to do a backup and restore unless you run into a specific issue that requires it.
I have a common Postgres instance that I share with other services. What do I need to do with this change?
The Postgres image we use is regular Postgres, just with the pgvecto.rs extension. If your Postgres instance is a regular instance without any third-party extensions, then you can simply switch out the image for that instance with the tensorchord/pgvecto-rs:pg14-v0.1.11
image (changing pg14
to the major version you use - 14, 15 or 16). This is a drop-in replacement that will work without a backup and restore.
If your instance has third-party extensions, then you will need to make a docker image that installs the pgvecto.rs extension in addition to the other extensions based on their installation instructions. An example of this for the CloudNativePG Kubernetes operator can be found here.
If you use a bare-metal instance and have a Debian-based server, then you may instead follow their installation instructions and install the pgvecto.rs Debian package directly.
While trying to backup and restore my Postgres instance, I got the error type “earth” does not exist
. What do I do?
This is a bug with Postgres’ earthdistance extension. You can fix the issue by following the instructions here.
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
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
Breaking Changes 🛠
- feat(web,server)!: runtime log level by @jrasm91 in #5672
- feat(server): use pgvecto.rs by @jrasm91 in #3605
Server
- feat(server): use postgres-adapter for websockets by @jrasm91 in #5569
- feat(server,ml): add new models by @mertalev in #5710
- feat(server): server-side events by @jrasm91 in #5669
- fix(server): disable classification by default by @mertalev in #5708
- fix(server): select asset face columns explicitly by @mertalev in #5564
- fix(server): connection aborted logging by @jrasm91 in #5595
- fix(server): don't associate assets with Null Island by @sushain97 in #5623
- fix(server): in dev mode by @jrasm91 in #5670
- chore(server): simplify search face query and better clustering by @alextran1502 in #5573
- chore(server): faster shutdown by @jrasm91 in #5577
- chore(server): fix ssr in dev by @jrasm91 in #5637
- refactor(server): auth dto by @jrasm91 in #5593
- refactor(server): immich file responses by @jrasm91 in #5641
Mobile
- fix(mobile): handle livePhotos using originFileWithSubType by @shenlong-tanwen in #5602
- fix(mobile): mobile album sort not persisting by @shenlong-tanwen in #5584
- fix(mobile): memory lane not displayed in mobile app by @shenlong-tanwen in #5587
- fix(mobile): live / motion photo download by @shenlong-tanwen in #5607
- fix(mobile): Revert - upload motion and live part of LivePhotos together by @alextran1502 in #5601
- fix(mobile): better error message by @alextran1502 in #5653
- fix(mobile): Fix upload hang on iOS when deleting stale files by @alextran1502 in #5658
- fix(mobile):...
v1.90.2
v1.90.2
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
Hot Fixes
There is no mobile release for this version
- Fixed merge face panel only shows 10 people
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
Full Changelog: https://github.com/immich-app/immich/compare/v1.90.1...
v1.90.1
v1.90.1
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
Hot Fixes
There is no mobile release for this version
- Fixed bulk editing for asset's metadata on the web
- Fixed faces not update after reassign face in a video
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
- fix: name truncation on detail panel by @martabal in #5542
- Some fixes to the Italian README translation by @LucaRed in #5541
- fix(web): cannot edit bulk metadata by @alextran1502 in #5543
- fix(web): create face from video by @martabal in #5544
New Contributors
Full Changelog: https://github.com/immich-app/immich/compare/v1.90.0...
v1.90.0
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 |
---|---|---|---|
Map Picker | Bottom 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.
- 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
Mobile
- feat(mobile): edit date time & location by @shenlong-tanwen in #5461
- feat(mobile): unify asset grid multiselect actions by @fyfrey in #5407
- feat(mobile): handle backup iCloud asset by @alextran1502 in #5508
- fix(mobile): clear album provider on logout by @fyfrey in #5477
- fix(mobile): the new album icon has a different height from the existing album cover by @Skyquek in #5422
- fix(mobile): use zoomedpagetransition for galleryvieweroute by @shenlong-tanwen in #5495
- fix(mobile): notify mobile app when live photos are linked by @shenlong-tanwen in #5504
- fix(mobile): allow editing asset dates in the future by @shenlong-tanwen in #5522
Web
- feat(web): re-assign person faces (2) by @martabal in #4949
- feat(web): add clear failed jobs button by @8gb in #5423
- feat(web): Edit metadata by @YFrendo in #5066
- feat(web): allow showing hidden people in image asset details view by @brokeh in #5420
- feat(web): UI/UX improvement for date time edit form by @alextran1502 in #5505
- fix(web): whitespace in person name by @martabal in #5401
- fix(web): disable metadata edit if user is not owner by @martabal in #5415
- fix(web): status box rendering by @danielktaylor in #5410
- fix(web): new album title fix by @waclaw66 in #5467
- fix(web): keep url query parameters when swapping people by @martabal in #5468
- fix(web): stick action bar on search by @martabal in #5459
- fix(web): runtime issue by @jrasm91 in #5493
- fix(web): delete modal z-index by @danielktaylor in #5416
- fix(web): background when re-assigning faces by @martabal in #5512
- fix(web): align all edit buttons and not correctly rounded buttons on detail-panel by @martabal in #5524
- chore(web): toggle hide face in context menu by @alextran1502 in #5440
- chore(deps)...
v1.89.0
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 ht...
v1.88.2
1.88.2
This a reminder that there is a breaking change for v1.88.x
Warning
BREAKING CHANGES
immich-proxy
and immich-web
are no longer used as announced.
Note
There is no mobile release for this version v1.88.2
Hotfixes
- Fixed issue with query unoptimized for the album and sharing page on the web. This fix is a revert of the fix for the web's album sorting. We will need to return to that issue and find an optimal way to perform the sort mechanism
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
- chore(deps): cli grouping by @jrasm91 in #5193
- chore(deps): bump actions/checkout from 2 to 4 by @dependabot in #5219
- fix: album performances by @martabal in #5224
- feat(docs): Add no-ssr milestone by @bo0tzz in #5220
- fix(server): album perf query by @alextran1502 in #5232
Full Changelog: https://github.com/immich-app/immich/compare/v1.88.1...
v1.88.1
v1.88.1
A reminder that there is a breaking change for v1.88.x
Warning
BREAKING CHANGES
immich-proxy
and immich-web
are no longer used as announced. Please see the content that needs to be edited from the docker-compose.yml
file below. immich-server
now serves the api on /api
and the web-app from /
.
The steps to update are as follow:
- Bring down the stack with
docker compose down --remove-orphans
- Update the
docker-compose.yml
file
2.1. Removeimmich-proxy
service
2.2. Removeimmich-web
service
2.3. Expose port2283:3001
in theimmich-server
service - Run
docker compose pull
- Bring up the stack with
docker compose up -d
For those using a custom proxy, please update the routing to forward all requests to immich-server
without the /api
path re-write.
Note
There is no mobile release for this version v1.88.1
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
command: [ "start.sh", "immich" ]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
+ ports:
+ - 2283:3001
depends_on:
- redis
- database
- typesense
restart: always
immich-microservices:
[...]
immich-machine-learning:
[...]
- immich-web:
- container_name: immich_web
- image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release}
- env_file:
- - .env
- restart: always
typesense:
[...]
redis:
[...]
database:
[...]
- immich-proxy:
- container_name: immich_proxy
- image: ghcr.io/ Warninimmich-app/immich-proxy:${IMMICH_VERSION:-release}
- ports:
- - 2283:8080
- depends_on:
- - immich-server
- - immich-web
- restart: always
Hotfixes
- Fixed an issue with the video not being correctly placed on the timeline
- Fixed an issue with search on the web doesn't take into account the search phrase
- Fixed an issue of the year label overlapped on the timeline bar
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
- fix(server): date time calculation by @jrasm91 in #5204
- fix(web): Fix year label calculation by @alextran1502 in #5211
- fix(web): search returns all value by @alextran1502 in #5210
Full Changelog: https://github.com/immich-app/immich/compare/v1.88.0...
v1.88.0
v1.88.0
Warning
BREAKING CHANGES
immich-proxy
and immich-web
are no longer used as announced. Please see the content that needs to be edited from the docker-compose.yml
file below. immich-server
now serves the api on /api
and the web-app from /
.
The steps to update are as follow:
- Bring down the stack with
docker compose down --remove-orphans
- Update the
docker-compose.yml
file
2.1. Removeimmich-proxy
service
2.2. Removeimmich-web
service
2.3. Expose port2283:3001
in theimmich-server
service - Run
docker compose pull
- Bring up the stack with
docker compose up -d
For those using a custom proxy, please update the routing to forward all requests to immich-server
without the /api
path re-write.
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
command: [ "start.sh", "immich" ]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
+ ports:
+ - 2283:3001
depends_on:
- redis
- database
- typesense
restart: always
immich-microservices:
[...]
immich-machine-learning:
[...]
- immich-web:
- container_name: immich_web
- image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release}
- env_file:
- - .env
- restart: always
typesense:
[...]
redis:
[...]
database:
[...]
- immich-proxy:
- container_name: immich_proxy
- image: ghcr.io/ Warninimmich-app/immich-proxy:${IMMICH_VERSION:-release}
- ports:
- - 2283:8080
- depends_on:
- - immich-server
- - immich-web
- restart: always
Highlights
Welcome to release v1.88.0
of Immich. In this release we have simplified how Immich is deployed, beautified our app interface with a new font, namely Overpass, and finally released version 2 of our command line interface (CLI), which has been in the works for the past six months.
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
Server
- feat(server): bmp format by @jrasm91 in #5197
- chore(server): update new CLI into the image by @alextran1502 in #5192
CLI
- feat(cli): refactor and add album support by @etnoy in #4434
- docs(cli): Link to main Immich documentation by @etnoy in #5163
- chore(cli): push to npm by @jrasm91 in #5168
- chore(docs): Redirect old CLI paths by @bo0tzz in #5183
- chore(cli): set cli workdir in npm publish by @etnoy in #5185
Web
- feat(web)!: SPA by @jrasm91 in #5069
- fix(web): improve year label position by @Funk66 in #5141
- fix(web): album sorting options by @martabal in #5127
- feat(web): new fonts by @alextran1502 in #5165
- chore(web): small font size improvement by @alextran1502 in #5190
- chore(web): remove deprecation message by @alextran1502 in #5115
- chore(web): album thumbnail size by @alextran1502 in #5196
Mobile
- fix(mobile): Mark more strings for translation by @adamantike in #5132
- fix(mobile): use proper context for popping out from share by @shenlong-tanwen in #5138
- chore(mobile): add initial DCM analysis_options by @shenlong-tanwen in #5136
- chore(mobile): Mobile make over by @alextran1502 in #5129
- refactor(mobile): riverpod codegen + riverpod lint by @shenlong-tanwen in #4836
Machine Learning
- chore(ml): update onnxruntime by @mertalev in #5175
- chore(ml): increase spool threshold by @mertalev in #5176
Documentation and others
- docs: add warning to compose file and readme by @danieldietzler in #5123
- docs: Update machine-learning.md by @digitaljamie in #5160
- chore: fix typo in docker-compose.yml by @danieldietzler in #5124
- readme: Add Korean README by @bunubbv in #5128
- docs: update requirement for CLI by @alextran1502 in #5198
Dependencies
- fix(deps): update server by @renovate in #5057
- chore(build): renovate grouping by @jrasm91 in #5167
- chore(deps): update redis:6.2-alpine docker digest to 80cc851 by @renovate in #5131
- chore(deps): update dependency @types/node to v20.9.2 by @renovate in #5139
- chore(deps): update dependency eslint to v8.54.0 by @renovate in #5140
- chore(deps): update docker/build-push-action action to v5.1.0 by @renovate in #5145
- chore(deps): update dependency @types/archiver to v6 by @renovate in #5146
- chore(deps): update dependency eslint-config-prettier to v9 by @renovate in #5173
New Contributors
- @Funk66 made their first contribution in #5141
- @digitaljamie made their first contribution in #5160
- @bunubbv made their first contribution in #5128
Full Changelog: v1.87.0...v1.88.0
v1.87.0
v1.87.0
Welcome to release v1.87.0
of Immich. This release is the final version where we bid farewell to the immich-web
and immich-proxy
containers. Starting in the next release, the two containers will be consolidated into the immich-server
container for easier deployment and maintenance. For more information on preparing for the next release, please read the following announcement
Recently, I've had a chance to get on the Self-hosted.show podcast to talk about Immich, the team behind it, the project's future and vision, as well as the sustainability of the project. You can have a listen here.
Please find the highlights of this release below:
- You can now use the mobile app without giving it full permission to access media storage, allowing you to access only remote assets that are backed up on the server.
- Machine learning models are now unloaded when unused, reducing the application's memory footprint.
- The
/asset/import
endpoint has been removed in favor of Libraries. - Lower thumbnail resolution options
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
Server
- feat(server): asset search endpoint by @jrasm91 in #4931
- chore(server): pretty print json object in error message by @ishanjain28 in #5036
- chore(server): improve e2e test speed by @jrasm91 in #5026
- chore(server): cleanup e2e by @jrasm91 in #5051
- chore(server): shared link e2e for add/remove assets by @jrasm91 in #5052
- chore(server): remove asset search endpoint by @jrasm91 in #5094
- chore(server): remove import file endpoint by @jrasm91 in #5093
Mobile
- feat(mobile): use app without storage permission by @fyfrey in #5014
- feat(mobile): Add es-US translations by @adamantike in #4997
- feat(mobile): remove announcement overlay and show in app bar dialog by @shenlong-tanwen in #5104
- fix(mobile): partner assets in albums & share by @fyfrey in #5029
- fix(mobile): rebuild of unified partner timeline by @fyfrey in #5065
- fix(mobile): update local deleted assets in sync by @fyfrey in #5099
- chore(mobile): Translations update by @alextran1502 in #5053
Web
- fix(web): back button from person detail page by @martabal in #5047
- fix(web): previous url in person page by @martabal in #5071
- chore(web): annoucement box for breaking change by @alextran1502 in #5091
- feat(web): add (lower) thumbnail resolution options by @davidacampos in #5107
Machine Learning
Others
- chore(test): don't set max old space in e2e tests by @etnoy in #5050
- chore: readme feature list by @alextran1502 in #5048
- chore(deps): bump actions/github-script from 6 to 7 by @dependabot in #5032
- fix(deps): update dependency commander to v11.1.0 by @renovate in #5003
- chore(deps): update postgres:14-alpine docker digest to 50d9be7 by @renovate in #5054
- chore(deps): update dependency @faker-js/faker to v8 by @renovate in #5059
- chore(deps): update dependency @testing-library/jest-dom to v6 by @renovate in #5073
- chore: added new zcash donation option in readme by @JordyEGNL in #5087
New Contributors
- @ishanjain28 made their first contribution in #5036
- @davidacampos made their first contribution in #5107
Full Changelog: v1.86.0...v1.87.0