Releases: immich-app/immich
v1.102.1
v1.102.1
Hotfixes
- Fixed Android mobile app randomly logout for user with background backup enabled
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
- refactor(server): move file file report endpoints to their own controller by @danieldietzler in #8925
- refactor: system metadata by @jrasm91 in #8923
📱 Mobile
🖥️ Web
- fix(web): restore button in asset viewer by @ConnerWithAnE in #8935
New Contributors
- @ConnerWithAnE made their first contribution in #8935
- @devjn made their first contribution in #8594
Full Changelog: https://github.com/immich-app/immich/compare/v1.102.0...
v1.102.0 - 30,000 Stars Release 🌟
v1.102.0
⚠️ Breaking Changes (OPT-IN ONLY)
Caution
For people always pulling the latest compose file, this is a breaking change!
Disregarding the notes will result in (temporary) data loss!
Background
In the past, we've seen many cases where people accidentally deleted their Postgres data by (unintentionally) deleting the docker volume (e.g., docker compose down -v
).
This is unfortunate as there is no way to recover that data (if you don't have a backup, MAKE BACKUPS!).
We have been thinking about mounting the Postgres data to a local folder for a while but always hesitated, as this would break existing instances due to people not reading the change logs carefully. However, there have been too many issues, and we ultimately decided to make that change.
What do I have to do?
Nothing. You should only copy the compose file with every new release if we tell you to do so in the release notes. Generally, we don't recommend making changes to existing instances. If you have never had issues, attempting to migrate the data will put it at (an unnecessary) risk.
I want to migrate my docker volume to a local folder
Unfortunately there isn't a "proper" way to export a docker volume.
The recommended method is to mount the volume and the directory (you want to copy your data to) to an arbitrary container, get a shell inside that container and copy the folder manually.
Caution
Take backups before attempting this. Especially make sure you have a current database dump (pg_dump
)
Warning
Do not use a directory under /mnt
for the postgres location if you are using WSL.
Generally (on all operating systems) we recommend against using a network share for your database location. This is bound to break and cause all sorts of weird issues.
If you would like to opt-in to this change, there is an additional environment variable in the .env
file as well as a modification in your existing docker-compose.yml
file.
docker-compose.yml
file
database:
container_name: immich_postgres
image: registry.hub.docker.com/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
+ - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
restart: always
volumes:
- pgdata:
model-cache:
.env
file
[...]
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
+DB_DATA_LOCATION=./postgres
Highlights
Welcome to release version v1.102.0
of Immich. We reached 30,000 stars!!! Thank you so much for your continuous support. We are proud to bring you this release with a focus on QoL improvements and bug fixes across the web, mobile, and server. We hope you enjoy it. Some of the highlighted changes can be found below.
- In-app language settings
- Haptic feedback control
- Enhanced UI/UX on the album list page
- AV1 transcoding
- Choose between WebP and JPEG for thumbnails and previews
- Option to use embedded preview in RAW images
- Option to fill the screen with slideshows view
In-app language settings
You can now keep your phone interface in a different language and have Immich's app in a different language with the new in-app language setting. It can be found in Settings > Languages
. After making the change, the new language will propagate across the app.
Haptic feedback control
We added an option in the mobile app to disable haptic feedback. It can be found under Settings > Preferences > Haptic Feedback
Web album page's UI/UX enhancement
Album Grouping
With this new feature, albums can now be grouped by year or owner (or not grouped at all). This can be very useful to not get lost when having a lot of albums, that even are sometimes similar.
- This works both on "Covers" and "List" views.
- Albums are first grouped, then sorted inside of those groups.
- Group sorting can be either ascending or descending.
Group by
drop-down is located next to theSort by
one. The two buttons on the right areExpand all
andCollapse all
. They are not displayed whenNo grouping
is selected.
- Groups can be collapsed (saved in the local storage).
Collapse.mp4
Other UI Changes
- Album cards now display the month and year of the photos.
- Same month and year:
Jan 2024
- Different months, same year:
Jan - Mar 2024
- Different year:
Sep 2023 - Feb 2024
- Same month and year:
- Album cards now display the title over up to 2 lines. If the title is longer, it is cropped with an ellipsis (no change).
- "Edit Album" modal design has been slightly changed.
Quality of Life
Album List
- The context menu now has 4 options:
Download
,Edit
,Share
andDelete
.
- The context menu can now be displayed by right-clicking on an album card.
- The context menu is now available on the list view (both
Edit
andRemove
buttons have been removed). - The context menu is now available on the "Sharing" page, with only 1 option:
Download
. - The search feature now ignores accents.
Album View
- When one and only one photo is selected, the context menu now displays the option
Set as album cover
.
AV1 transcoding
This release adds support for the next-gen AV1 format using the SVT-AV1 encoder. AV1 promises smaller files at the same quality as the other codecs we support, especially for high resolution videos. Note that client support for AV1 is more limited, so we recommend trying it on one (server-only) video and confirming it plays before transcoding your full library with it.
New image settings
Before this release, all preview images were JPEG, and all thumbnails were WebP. This is now customizable, so you can set them as you like. This also paves the way for adding other formats with minimal change.
There's also a new option to use the embedded preview in RAW images instead of converting the RAW image itself. This is particularly useful if the converted images from a camera don't look quite right or if you have custom-developed previews you'd like to use instead.
Option to fill the screen with slideshows view
We added a new option in the slideshow settings to fill the screen with the slideshow view, this will give you a more immersive viewing experience.
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
- mount postgres folder to local directory by default by @danieldietzler in #8443
🗄️ Server
- fix(server): image config not being updated by @mertalev in #8579
- chore(server): better typing for system config key by @mertalev in #8580
- fix(server): x264/x265 params not being set correctly by @mertalev in #8587
- fix(server): hevc tag being set when copying a non-hevc stream by @mertalev in #8582
- feat(server,web): configure image format by @mertalev in #8581
- fix:
npm i
on Windows … by @jellemdekker in #8619 - fix(server): delete thumbnail for readonly asset by @Ynng in #8593
...
v1.101.0
v1.101.0
Highlights
Welcome to release v1.101.0
of Immich. This release includes a new feature on the mobile app and minor enhancements across the server and the web, and we hope you like it.
Enhanced search on the mobile app
We have built a dedicated screen for a better search experience on the mobile app. You can now apply advanced filtering similar to the web's mechanism to find your desired photo.
searchmobiledemo.mp4
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): add missing file extensions to library files by @etnoy in #8342
- fix(server): map style not being available for shared assets by @danieldietzler in #8341
- refactor(server): move timeline operations to their own controller/service by @danieldietzler in #8325
- refactor(server): extract add/remove assets logic to utility function by @danieldietzler in #8329
- fix: sql generation issues by @jrasm91 in #8361
- fix(server): parameter for all places query by @mertalev in #8346
- feat(server): extensions for MPEG and 3GP by @mmomjian in #8400
- Fix external library path validation #8319 by @pablodre in #8366
- fix(server): penalize null geodata fields when searching places by @mertalev in #8408
- fix(server): sorting memory date by @ZlabiDev in #8432
- refactor(server): decouple generated images from image formats by @mertalev in #8246
- feat: persistent memories by @jrasm91 in #8330
- chore: update openapi by @alextran1502 in #8470
📱 Mobile
- fix(mobile): memories translation by @waclaw66 in #8316
- fix(mobile): update album date range on add/remove by @fyfrey in #8324
- feat(mobile): search enhancement by @alextran1502 in #8392
- fix(mobile): sync all album properties by @fyfrey in #8332
- Localizely: Translations update by @alextran1502 in #8517
- chore(mobile): add log to get file name for corrupted asset by @alextran1502 in #8527
🖥️ Web
- feat(web, a11y): add labels! by @ben-basten in #8354
- fix: map theme auth in shared links by @jrasm91 in #8359
- fix(web): multiple fixes for the webUI by @martabal in #8368
- fix(web): asset description resize by @martabal in #8442
- fix(web): weird Overpass font height by @alextran1502 in #8458
- feat(web): add keyboard shortcut to stack selected photos by @Funk66 in #5983
- feat(web,a11y): standardize base modal by @ben-basten in #8388
- chore(web): fine tuning styling for base modal by @alextran1502 in #8469
- fix(web): do not set $isShowDetail to false when navigating to a person by @seasox in #8472
- fix(web): show download button correctly based on shared link permission by @alextran1502 in #8288
- fix(web): prevent fetching asset info twice by @michelheusschen in #8486
📓 Documentation
- docs: typo on backup script by @mmomjian in #8349
- docs: fix typo by @xethlyx in #8396
- Add docs for Postgres standalone setup by @mmomjian in #8343
- Fix repair page typo by @mmomjian in #8401
- docs: Nginx config update by @mmomjian in #8397
- docs: specify Timezone by @mmomjian in #8403
- docs: document metric env variables, add job metric env by @mertalev in #8406
- docs: Postgres standalone fix by @mmomjian in #8427
- feat(docs): Supported Formats by @mmomjian in #8394
- docs: update FAQ for Docker by @mmomjian in #8418
- docs: update DB_URL_FILE by @mmomjian in #8465
- docs: add some details for getting started as a developer by @benmccann in #8468
- docs: Update environment variable services by @bo0tzz in #8490
- Add notes for facial recogniton models source by @LackesLab in #8522
🔨 Maintenance
- fix(deps): update machine-learning by @renovate in #8280
- chore(deps): update prom/prometheus docker digest to dec2018 by @renovate in #8320
- chore(deps): update dependency black to v24.3.0 [security] by @renovate in #8109
- fix(deps): update typescript-projects by @renovate in #8451
- chore(deps): update node.js to ef3f477 by @renovate in #8449
- fix(deps): update typescript-projects to v10.3.7 by @renovate in #8461
- chore(deps): update node.js to fa5d3cf by @renovate in #8450
- fix(deps): update dependency orjson to v3.10.0 by @renovate in #8473
- fix(deps): update typescript-projects by @renovate in #8471
New Contributors
- @xethlyx made their first contribution in #8396
- @pablodre made their first contribution in #8366
- @ZlabiDev made their first contribution in #8432
- @seasox made their first contribution in #8472
- @LackesLab made their first contribution in #8522
Full Changelog: https://github.com/immich-app/immich/compare/v1.100.0...
v1.100.0
v1.100.0
Highlights
Welcome to release v1.100.0
, not yet v2.0
😛 of Immich. This release includes mostly bug fixes, code refactoring, and nice web QoL improvements. Some of the highlights include:
- Ability to view different album ownership on the album page.
- Better user experience when creating a new album.
- Context menu items now come with associated icons.
- Slideshow control improvement.
- Added job metrics for Prometheus.
- Notable fix: Scroll stickiness on the mobile app.
Album ownership toggle
On the album page on the web, you can now view all albums - i.e., shared or, owned or both - on the same page by using the toggle options.
chrome_E2Gte5jLAw.mp4
Better user experience when creating a new album
The notification on the web now includes a button to go to the album after you add new photos or videos to an album.
chrome_SocaZ52kLV.mp4
Context menu with associated icons
We added icons to the context menu to make the distinction between the options clearer.
Slideshow control improvement
After 10 seconds of inactivity, the cursor and control bar will be hidden, and a button will allow you to return to full screen.
Job metrics
You can now monitor the successful, skipped, and failed jobs for particular job types in Prometheus and the number of active jobs being processed in each queue.
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: organize config, validation, decorators by @jrasm91 in #8118
- chore: move controllers and middleware by @jrasm91 in #8119
- chore: migrate database files by @jrasm91 in #8126
- chore: move apps and test utils by @jrasm91 in #8129
- refactor: infra/domain module by @jrasm91 in #8130
- refactor: infra folder by @jrasm91 in #8138
- refactor: asset v1, app.utils by @jrasm91 in #8152
- refactor: app modules, main.ts by @jrasm91 in #8156
- fix(server): validation events actually throwing an error by @danieldietzler in #8172
- chore(server): consolidate dto files by @jrasm91 in #8201
- refactor: server events by @jrasm91 in #8204
- chore(server): remove getByDate from asset repo by @mertalev in #8211
- refactor(server): new password repo method by @jrasm91 in #8208
- chore(server): change upsert signature for search repo by @mertalev in #8210
- chore(server): remove pre-installed cli by @jrasm91 in #8224
- feat(server): job metrics by @mertalev in #8255
- fix(server): places page not working with partner sharing by @mertalev in #8257
- feat(server): add immich cli to container by @danieldietzler in #8239
- refactor(server): metric repo by @mertalev in #8278
- fix: memory lane assets in ascending order by @jrasm91 in #8309
- chore(server): open-api memory lane number generation by @alextran1502 in #8314
📱 Mobile
- fix(mobile): spacing fixes of #8087 by @waclaw66 in #8163
- chore(mobile): Bump to Flutter 3.19.0 by @martyfuhry in #7167
- feat(mobile): faster image loader by @fyfrey in #8140
- fix(mobile): scroll stickiness by @alextran1502 in #8166
- fix(mobile): android adaptive icon new logo by @eygraber in #8180
- fix(mobile): recently add view show other user assets by @alextran1502 in #8184
🖥️ Web
- fix(web): prevent duplicate time bucket loads by @michelheusschen in #8091
- fix(web): asset-grid padding/margin left fix by @alextran1502 in #8125
- feat(web): add ctrl+a / ctrl+d shortcuts to select / deselect all assets by @Ethan13310 in #8105
- feat(web): keyboard access for search dropdown, combobox fixes by @ben-basten in #8079
- refactor(web): cleanup notification components by @michelheusschen in #8150
- feat(web): rework context menus: add icons and reorder items by @Ethan13310 in #8090
- feat(web): improvements to slideshow by @martabal in #8032
- refactor(web): albums list (2) by @martabal in #8214
- fix(web): default album view by @alextran1502 in #8247
- chore(web): favicon without white bg by @alextran1502 in #8251
- fix(web): Correct minor typo in new version check copy by @drakeapps in #8253
- chore(web): style tab button group and search bar by @alextran1502 in #8292
- feat(web): better UX when creating a new album by @Ethan13310 in #8270
- feat(web) add filter when viewing all people in search box by @samholton in #7997
- feat(web, a11y): focus management for modals and popups by @ben-basten in #8298
⚡ CLI
- feat(cli) CLI when uploading photo.EXT, it detects both photo.EXT.xmp and photo.xmp by @kokulshan in #8186
- refactor(cli): crawl service by @jrasm91 in #8190
- refactor: cli by @jrasm91 in #8199
- chore(cli): rename commands by @jrasm91 in #8200
- chore(cli): prepare release by @jrasm91 in #8296
- feat(cli): better server info output by @jrasm91 in #8307
📓 Documentation
- Update remote-machine-learning.md by @kirilldem in #8038
- fix(docs): Immich quota claim note by @aviv926 in #8151
- chore: consolidate readme files by @alextran1502 in #8171
- chore: update readme screenshot by @natedawg in #8182
- docs: Fix documentation for running as a non-root Docker user by @mmomjian in #8218
- feat(docs): New repair and statistics pages by @aviv926 in #8030
- Update command-line-interface.md by @oregonpillow in #8213
- chore(docs): update _storage-template.md by @digitaljamie in #8154
- feat(docs): Changes to the Administration section. by @aviv926 in #8078
- (docs) Update XMP sidecar docs to include the fact that Immich will look for photo.ext.xmp and photo.xmp by @kokulshan in #8235
- chore(docs): Update docker compose readme with wget download option by @Keshav-Pandey in #8250
- feat(server): dark mode support for star history by @danieldietzler in #8259
- Update README_zh_CN.md to sync with README.md by @indam in #8282
- fix(docs): fix path in readme files by @JordyEGNL in #8289
🔨 Maintenance
v1.99.0
v1.99.0
New logo
The new logo is now rolled out on all platforms, including the web, mobile, and documentation pages. If you are a content creator, you can grab the logo vector and raster files in the repository's design
folder.
Highlights
Welcome to release v1.99.0
of Immich. This release adds the new logo, fixes many bugs, and improves the application. Some of the highlights include:
- [WEB] Sort photos and videos to display direction in an album.
- On-disk cache on the mobile app to provide a better viewing experience.
- There is a new endpoint for OpenTelemetry metrics to monitor performance.
- Optimized queries for large libraries.
- Add upload progress and speed indicator.
- XMP sidecar file is now recognized with both
photo.ext.xmp
andphoto.xmp
extensions. - Drag to select - Now press your thumb to drag and select in the selection mode.
- Improve user feedback in the mobile app's backup and album selection screen.
- Various improvements for the library scanning process.
Asset's display direction in the album
We added an option to change the order of the assets in the album so you can view the assets from older to newest and vice versa.
album.view.order.mp4
Mobile asset caching
Improving cache for remote thumbnails and the images, they now stay on disk so that they can load faster and give a better experience while used offline. You should feel a faster loading experience across the app.
Performance monitoring with OpenTelemetry integration
Immich provides a variety of performance metrics to allow for local monitoring and insights. This integration is primarily in the form of Prometheus metrics. However, exporting traces is also possible due to OpenTelemetry instrumentation. Please visit the documentation to learn how to enable this feature
Note
This opt-in feature allows you to monitor Immich's performance. This data isn't sent anywhere beyond what you've configured.
File size progress and upload speed indicator
We added an indicator to show the file's size that has been uploaded and the upload speed under the progress bar in the backup screen.
Simulator.Screen.Recording.-.iPhone.15.Pro.Max.-.2024-03-14.at.18.08.37.mp4
Drag to select
You can now drag to select in the mobile app when in selection mode; this will help make selecting in bulk easier.
drag_to_select.mp4
And lastly, I want to express my gratitude to @immich-app/contributor who make this behemoth of a release happen 🎉
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): face search results not always sorted by @mertalev in #7839
- fix(server): serve static directory only if it exists by @benmccann in #7857
- feat(server): Add OAuth auto-redirect enable/disable CLI commands by @ddshd in #7841
- feat(server): OpenTelemetry integration by @mertalev in #7356
- feat(server): YAML config file support by @bo0tzz in #7894
- feat(server): Update XMP sidecar search to look for both photo.ext.xmp and photo.xmp by @kokulshan in #7813
- feat(server): lower library scan memory usage by @mertalev in #7939
- perf(server): optimize
getByIds
query by @mertalev in #7918 - fix(server): queue library asset refresh in batches by @etnoy in #7914
- feat(server, web): album orders by @martabal in #7819
- feat(server): added support for SVG files by @declan8010 in #7960
- refactor: global validation pipe by @jrasm91 in #7985
- feat(web): add millisecond options to storage template settings by @sevtdy in #7942
- fix(server): prevent feedback loop during library scan by @mertalev in #7944
- feat(server): use nestjs events to validate config by @danieldietzler in #7986
- feat(server): memory includes partners assets on timeline by @alextran1502 in #7993
- refactor(server): library service by @jrasm91 in #8050
- chore(server): change
save
->update
in asset repository by @mertalev in #8055 - fix(server): "view all" for cities only showing 12 cities by @mertalev in #8035
- fix(server): use extension in originalFileName for libraries by @etnoy in #8083
- test: temporarily disable flaky audit e2e test until #7436 is fixed by @zackpollard in #8089
📱 Mobile
- fix(mobile): Fixes immersive mode not ending for memory lane by @martyfuhry in #7767
- fix(mobile): Fixes local thumbnail image provider key by @martyfuhry in #7766
- Fix trash permanent delete dialog by @NicholasFlamy in #7805
- refactor(mobile): app settings by @shenlong-tanwen in #7749
- feat(mobile): add labels to app bar buttons by @ben-basten in #7865
- chore(mobile): Removes analysis options for openapi directory by @martyfuhry in #7309
- feat(mobile): update logo by @alextran1502 in #7919
- fix(mobile): make elements scrollable to avoid overflow in landscale by @thielepaul in #7933
- feat(mobile): Adds file upload progress stats by @othyn in #7760
- feat(mobile): Remote thumbnails and images use an on-disk image cache by @martyfuhry in #7929
- Make mobile app a "media management app" to get rid of android prompt by @Aegeontis in #7851
- refactor(mobile): backup album selection by @alextran1502 in #8053
- fix(mobile): do not show hidden people by @waclaw66 in #8072
- feat(mobile): drag to select assets by @shenlong-tanwen in #8004
- chore(mobile): svg logo by @alextran1502 in #8074
- fix(mobile): missing "Add name" translation by @waclaw66 in #8087
🖥️ Web
- feat(web): empty external library placeholder by @jrasm91 in #7848
- feat(web): add preference for thumbnail playback on hover by @samholton in #7831
- fix(web): small fixes for empty placeholder by @michelheusschen in #7859
- fix: Hide play bar when there's only one image in memory by @declan8010 in #7764
- fix(web): asset upload progress by @michelheusschen in #7882
- fix(web): asset viewer navigation buttons by @michelheusschen in #7888
- refactor(web): sidebar menu links by @michelheusschen in #7891
- feat(web): Implemented device last seen date and time with user locale support by @declan8010 in #7863
- feat(web): dark color-scheme css for dark mode by @ZTzTopia in #7812
- fix(web): prevent combobox options from disappearing by @michelheusschen in #7733
- fix(web): correctly use button and link elements by @michelheusschen in #7907
- fix(web): Remove excess spacing on #asset-grid and search bar by @natedawg in #7910
- fix(web): Enhance Notification Handling for Duplicate Assets by @declan8010 in #7858
- fix(web): url state of nested accordions by @danieldietzler in #7928
- feat(web): update logo by @alextran1502 in https://github.com/immich-app/immich/pul...
v1.98.2
v1.98.2
Hotfixes
- Fixed an issue with the library re-scanning assets if the library has more than 65,000 assets.
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
- perf: precompress and cache assets by @benmccann in #7757
- feat(server): hardware HDR tonemapping for RKMPP by @fyfrey in #7655
- chore(server): openapi by @alextran1502 in #7794
- fix(server): external library sync not working for large libraries by @mertalev in #7759
📱 Mobile
🖥️ Web
- feat(web): add sticky date headers for asset-date-group by @samholton in #7824
- Fix: Disable 'As profile picture' option for videos in context menu a… by @declan8010 in #7830
🔨 Maintenance
- fix: update e2e by @martabal in #7710
- refactor: asset e2e by @jrasm91 in #7769
- chore(deps): update typescript-eslint monorepo to v7.1.1 by @renovate in #7790
- chore(server): remove unused storage repository variable from microservices app service by @danieldietzler in #7797
- chore(server): user e2e: wait for user delete event by @danieldietzler in #7799
- chore(server): type checks for e2e by @danieldietzler in #7800
New Contributors
Full Changelog: v1.98.1...v1.98.2
v1.98.1
v1.98.1
Hotfixes
- Fixed an issue with syncing the assets from the server on the mobile app
- Fixed archive assets are not properly allocated on the mobile app
- Fixed caching issue on the mobile app, causing jerkiness when scrolling on the timeline
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
- deps(server): CVE-2024-28176 by @etnoy in #7717
- fix(server): remove shared links during user delete by @samholton in #7696
- fix(server): getAllAssets doesn't return all assets by @alextran1502 in #7752
📱 Mobile
- fix(mobile): Fixes large and small image cache by @martyfuhry in #7726
- chore(mobile): Translations update by @alextran1502 in #7715
🖥️ Web
- refactor(web): admin and user signup forms by @michelheusschen in #7739
- chore: rename "Library" to "External Library" in system settings by @declan8010 in #7744
- fix(web): album state after removing assets by @michelheusschen in #7745
- fix(web): Night mode does not work when performing password reset by @azroberts8 in #7748
- feat(server,web): add force delete to immediately remove user by @samholton in #7681
📓 Documentation
- docs: admin-only library settings by @etnoy in #7716
- Fix External Libraries Guide by @aviv926 in #7723
- Update DB queries by @mmomjian in #7730
🔨 Maintenance
- chore(deps): update dependency @playwright/test to v1.42.1 by @renovate in #7684
- feat(server): create a person with optional values by @jrasm91 in #7706
- refactor: api validators (boolean and date) by @jrasm91 in #7709
- chore(deps): bump docker/build-push-action from 5.1.0 to 5.2.0 by @dependabot in #7737
- refactor: search e2e by @jrasm91 in #7732
New Contributors
- @declan8010 made their first contribution in #7744
Full Changelog: https://github.com/immich-app/immich/compare/v1.98.0...
v1.98.0
v1.98.0
Announcement
The logo design contest has ended on March 4th, 2024.
We had an internal voting round with the core team members and contributors. The winner is @Tyree, with the design below.
We are planning to roll out the new logo in the near future.
Thank you all for your contributions and discussions. We are very happy to have such strong community engagement.
Highlights
Welcome to release v1.98.0
of Immich. We are pleased to introduce many new features, quality of life improvements and bug fixes in this release—some of the highlights below.
- Move library settings to the Administration page - Simplify the external library setup process.
- Context search with people filtering.
- File name and file extension search.
- Add an option to disable the required password change when creating a new user.
- Show people in the information sheet on the mobile app.
- A configurable timer is used to delete a user permanently.
Move library settings to the Administration page
We moved all library settings under the Admin settings to reduce the complexity of setting up external libraries and lay the groundwork for sharing external libraries between users.
Context search with people filtering
Thanks to @michelheusschen's help in solving the technical challenges of combining contextual search results with people filtering, it is now possible to search for "person in red dress" and choose only the people that you would like to see in a red dress.
File name and extension search
You can now search for file name and file extension again as free text search. For example, you can search for all Nikon photos with NEF
or nef
, or search for file names such as IMG_1234.JPG
with 123
or 234
as the search query.
Show people the information sheet on the mobile app.
You can now see the people detected in a photo/video in the detail sheet on the mobile app.
Option to disable required password change for new user creation
Configurable timer for user deletion
This setting can be found in the server settings
in the Administration page
. You can now adjust how long until a user gets permanently removed from the server.
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): re-add mimalloc by @mertalev in #7511
- fix(server): only queue ml / transcoding jobs after thumbnail generation on upload by @mertalev in #7516
- feat: filter people when using smart search by @michelheusschen in #7521
- fix(immich-admin): only 1st argument was passed by @saimonn in #7552
- feat(server/web): add oauth defaultStorageQuota and storageQuotaClaim by @samholton in #7548
- feat(server): allow oauth claim to set 0 for no quota by @samholton in #7581
- fix(server): prevent leaking isFavorite and isArchived info by @martabal in #7580
- feat(server, web): add checkbox to create user screen for shouldChang… by @samholton in #7598
- fix(server): regular version check by @rovo89 in #7620
- fix(server, web): prevent reload when liking an asset by @martabal in #7589
- fix(server): incorrect number of assets for a person by @martabal in #7602
- feat(server): deterministic download order by @jrasm91 in #7658
- chore(server): eslint await-thenable by @etnoy in #7545
- fix(server): stack info in asset response for mobile by @alextran1502 in #7346
- feat(server,web): make user deletion delay configurable by @samholton in #7663
- chore(server): save original file name with extension by @alextran1502 in #7679
- chore(server): lower default max recognition distance for facial recognition by @mertalev in #7689
- perf(server): use queries to refresh library assets by @mertalev in #7685
- chore(server): search filename using originalFileName by @alextran1502 in #7691
- fix(server): access face count when the value is undefined by @alextran1502 in #7694
- fix(server): add extension to filename migration by @michelheusschen in #7697
- chore(server): Move library watcher to microservices by @etnoy in #7533
- fix(server): admin access to edit library by @alextran1502 in #7708
📱 Mobile
- fix(mobile): bottom bar Upload translation by @waclaw66 in #7553
- refactor(mobile): Refactor video player page and gallery bottom app bar by @martyfuhry in #7625
- feat(mobile): Add people list to exit bottom sheet by @l0nax in #6717
- fix(mobile): Refactors exif bottom sheet to use widgets and fixes slow sliding up exif bottom sheet by @martyfuhry in #7671
- chore(mobile,web): use originalFilename by @alextran1502 in #7692
🖥️ Web
- fix(web): asset disappears from album after metadata edit by @michelheusschen in #7520
- chore(web): fix eslint setup in VS Code by @benmccann in #7543
- fix(web): prevent duplicate calls to time bucket endpoint by @mertalev in #7563
- perf(web): asset delete by @michelheusschen in #7555
- fix(web): show history search box only when needed by @martabal in #7544
- feat(web): ascending order for slideshow by @martabal in #7502
- feat(web): show user quota on server stats page by @samholton in #7591
- feat(web): add share link on asset-viewer by @samholton in #7595
- feat(web): improve alt text by @mertalev in #7596
- perf(web): optimize date groups by @mertalev in #7593
- feat(web): use lib/utils/copyToClipboard for share link by @samholton in #7603
- fix(web): prettify album download filename by @waclaw66 in #7637
- Revert "perf(web): optimize date groups" by @michelheusschen in #7638
- Revert "fix(web): prevent duplicate calls to time bucket endpoint" by @alextran1502 in #7644
- feat(web): search by filename by @alextran1502 in #7624
- fix(web): date input on chrome by @michelheusschen in #7669
- perf(web): optimize response sizes for initial page load by @mertalev in #7594
- fix(web): consistent modal escape behavior by @michelheusschen in #7677
- fix(web): save filename search in search filter box by @alextran1502 in #7704
🧠 Machine Learning
- feat(machine-learning): support cuda 12 by @martabal in #7569
- feat: preloading of machine learning models by @DawidPietrykowski in #7540
⚡ CLI
📓 Documentation
v1.97.0
v1.97.0
Highlights
Welcome to release v1.97.0
of Immich. This release contains bug fixes and minor improvements in asset rendering on the mobile app.
- Remove the polling option for library watcher due to the number of issues it brings outweighing the advantages
- Fix the issue with the toggle button on the web app that doesn't conform to state change.
- Fix the wrong aspect ratio of the preview image in the memory view
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
- feat(server): rkmpp hardware decoding scaling by @fyfrey in #7472
- chore: remove watcher polling option by @etnoy in #7480
📱 Mobile
- fix(mobile): Fixes thumbnail size with blur and alignment in video player by @martyfuhry in #7483
- fix(mobile): Fixes prefer remote assets in thumbnail provider by @martyfuhry in #7485
- feat(mobile): Adds better precaching for assets in gallery view and memory lane by @martyfuhry in #7486
🖥️ Web
- fix(web): keep notifications in view when scrolling by @michelheusschen in #7493
- fix(web): re-render albums by @martabal in #7403
- fix(web): settings accordion open state by @michelheusschen in #7504
📓 Documentation
🔨 Maintenance
- chore(deps): update dependency @types/node to v20.11.20 by @renovate in #7474
- refactor(server): format and metadata e2e by @jrasm91 in #7477
- add explicit registry to docker image names by @saimonn in #7496
New Contributors
Full Changelog: v1.96.0...v1.97.0
v1.96.0
v1.96.0
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
chrome_DoSJwS1Dlr.mp4
[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.
blurloading.mov
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 #7283
- fix(server): search with same face multiple times by @michelheusschen in #7306
- fix(server, web): people page by @martabal in #7319
- fix(server): fix log for setting other vector extension by @mertalev in #7325
- perf(server): optimize mapAsset by @michelheusschen in #7331
- fix(server): out of memory when unstacking assets by @michelheusschen in #7332
- fix(server): exclude archived assets from orphaned files by @michelheusschen in #7334
- feat(server, web): search location by @martabal in #7139
- fix(server): storage template migration not working by @mertalev in #7414
- fix(server): truncate embedding tables by @mertalev in #7449
- feat(server): easy RKMPP video encoding by @fyfrey in #7460
📱 Mobile
- refactor(mobile): Use hooks to manage Chewie controller for video by @martyfuhry in #7008
- fix(deps): update dependency geolocator to v11 by @renovate in #7249
- fix(deps): update dependency flutter_udid to v3 by @renovate in #7248
- fix(mobile): don't crop memories in landscape mode by @hrdl-github in #6907
- refactor(mobile): move error details to separate DB column by @rovo89 in #6898
- fix(mobile): remove log message counter by @rovo89 in #6865
- fix(mobile): Stop sending app to login page for unrelated auth errors by @martyfuhry in #7383
- refactor(mobile): Use ImmichThumbnail and local thumbnail image provider by @martyfuhry in #7279
- refactor(mobile): Uses blurhash for memory card instead of blurred thumbnail by @martyfuhry in #7469
🖥️ Web
- fix(web): search filter form events by @michelheusschen in #7285
- fix(web): back button for gallery viewer by @michelheusschen in #7250
- fix(web): small issues everywhere by @martabal in #7207
- Localize the output of the library count to make it more readable by @MarcelEeken in #7305
- feat(web): search improvements and refactor by @michelheusschen in #7291
- feat(web): rework combobox and add clear button by @michelheusschen in #7317
- feat(web): search albums by @martabal in #7322
- feat(web): add an option to change the date formats by @martabal in #7174
- Enhancement: Revamp onboarding message for Storage Template Engine - Web by @RavidYael in #7339
- refactor(web): sidebar settings by @jrasm91 in #7344
- fix: upgrade SvelteKit to 2.5.1 by @benmccann in #7351
- fix(web): consistent combobox style + improve color contrast by @michelheusschen in #7353
- feat(web): configure slideshow by @martabal in #7219
- fix(web): dark mode uploading font color by @sebbi08 in #7372
- Web: Revamp message for Storage Template Engine in admin pannel by @AndyPro720 in #7359
- feat(web): improve search filter design by @michelheusschen in #7367
- fix(web): timezone handling in search filter by @michelheusschen in #7384
- fix(web): prevent scroll reset on search page by @michelheusschen in #7385
- feat(web): Added password field visibility toggle by @Jan108 in #7368
- refactor(web): search box by @danieldietzler in #7397
- fix(web): count hidden people by @martabal in #7417
- fix(web): fetch error reporting by @michelheusschen in #7391
- fix(web): alignment of people in search box by @michelheusschen in #7430
- fix(web): prevent resetting date input when entering 0 by @michelheusschen in #7415
- fix(web): shared links page broken by enhanced:img by @michelheusschen in #7453
- fix(web): don't ask password for invalid shared link by @michelheusschen in #7456
- chore(web): cleanup promise handling by @benmccann in #7382
- chore(web): remove album's action notification by @alextran1502 in #7467
- chore(web): upgrade dependencies by @benmccann in #7471
🧠 Machine Learning
- Fix Smart Search when using OpenVINO by @agrawalsourav98 in #7389
- fix(ml): only use openvino if a gpu is available by @mertalev in #7450
📓 Documentation
- docs: add star history for README by @wangrongding in #7328
- Update reverse-proxy.md - Apache by @sigulete in #7386
🔨 Maintenance
- chore(deps): update machine-learning by @renovate in #7225
- chore(deps): update dependency vite to v5.1.3 by @renovate in #7247
- chore(deps): update dependency @types/node to v20.11.19 by @renovate in #7239
- chore(deps): update dependency @types/node to v20.11.19 by @renovate in #7238
- chore(deps): update dependency @types/node to v20.11.19 by @renovate in #7236
- chore(deps): update @immich/cli by @renovate in #7235
- fix(deps): update exiftool by @renovate in #7230
- refactor(server): e2e by @jrasm91 in #7265
- refactor: album e2e by @jrasm91 in https://github.com/immich-app/im...