v1.51.0
v1.51.0
Breaking Changes 🚨
This release added a new container to Immich's ecosystem, namely Typesense. Please update your docker-compose.yml
file to include the new container and .env
file to have the new environment variable, which is TYPESENSE_API_KEY=some-random-text
, TYPESENSE_API_KEY
is a requirement for Typesense container to spin up, you can use any text for the key, the server will use that value to create a client to communicate with the Typesense container.
Please make sure to have your server and mobile app on the same version so that the app can work correctly.
Typesense container is required for now, but we plan to make it optional with the fallback of using Postgres full-text search for the searching mechanism.
immich-server:
depends_on:
...
- typesense
immich-microservices:
...
depends_on:
...
- typesense
typesense:
container_name: immich_typesense
image: typesense/typesense:0.24.0
environment:
- TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
- TYPESENSE_DATA_DIR=/data
logging:
driver: none
volumes:
- tsdata:/data
[...]
volumes:
pgdata:
model-cache:
tsdata:
Please ensure to add typesense
to the depend_on
section of the immich-server
and immich-microservices
containers.
Highlighted
This is one of the more extended release breaks (a total of 53 pull requests were merged) that we've had for a while due to some large items that we've been working on, such as:
Integrating Typesense and CLIP for a better search system
As mentioned in the previous releases, we want a better search system. As Immich aims to be a fully featured Google Photos alternative, we want to provide you with the best search experience possible. We've been working on integrating Typesense and CLIP into Immich to provide you with a top-notch searching experience for your larger libraries.
We chose Typesense for its open-source nature, attractive features, and self-hosting capability.
We chose CLIP for its ability to search for images based on their content rather than their metadata. So you can do something like this:
The CLIP embedding data is a new column in the database. To get that info for your previously uploaded assets, please consider running the ENCODE CLIP job in the admin’s job panel
We will continue to iterate and improve the search feature in the subsequent releases. We would appreciate any feedback about the initial implementation - what works well and what areas could be improved.
Note: The mobile app does not incorporate this feature yet. It is only applicable to the web in this release.
Allow the mobile app to work offline without an internet connection or when the server is down.
Previously, when the server was down, or your phone didn't have an internet connection, tapping on anything in the mobile app would send you back to the login screen. This is because the mobile app couldn’t retrieve any data from the server. We've added a new feature that allows the mobile app to work offline, so you can still view your photos and videos cached or stored on your device even when the server is down or you don't have an internet connection.
In addition, when viewing photos and videos residing on your device, these are no longer loaded from the server but directly from the device. This reduces your mobile data usage and increases the loading speed of thumbnails while scrolling the timeline.
This has been a more significant feature that required a lot of refactoring from @fyfrey over many months-long processes. We're pleased to be able to release this feature to you finally.
As in other releases, we've also added many smaller features and bug fixes, so please check out the full changelog below.
Thank you
I want to thank everyone who contributed to this release, especially @fyfrey for the huge amount of work he put into the offline mode feature, @jrasm91 and @zackpollard for the refactoring of the server and the integration of the new search system, @martyfuhry for improving the UI/UX of the mobile app, @michelheusschen for improving the web code base and consistency, @bo0tzz for the never-ending stream of CI/CD improvement and answering questions on Discord, and all the new contributors who spared some of their free time to contribute to the project.
This project is for the community, and from the community, I am honored to be a part of it.
As always, please consider supporting the project.
🎉 Cheer! 🎉
Support
If you find the project helpful and it helps you in some ways, you can support the project one time or monthly from GitHub Sponsors
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): added additional storage template preset by @Chipwingg in #1903
- chore(server): bump API version post release by @zackpollard in #1909
- fix(server): storage template unit test by @michelheusschen in #1906
- feat(server): Machine learning's image optimisations by @ollywelch in #1908
- fix(server): exif extraction swapped params by @michelheusschen in #1914
- feat(server)!: search via TypeSense by @jrasm91 in #1778
- chore(server): disable TypeSense logging by @alextran1502 in #1925
- fix(server): duration string parsing by @jrasm91 in #1923
- feat(server): improve thumbnail relation and updating by @michelheusschen in #1897
- feat(web,server): explore by @jrasm91 in #1926
- fix(server): Increase authentication cookie max-age by @bo0tzz in #1971
- fix(server): update album updatedAt on assets/users removed/added by @fyfrey in #1977
- fix(server): remove encoded video file on asset delete by @raisinbear in #1980
- fix(server): timezone mismatch in server tests by @brighteyed in #1918
- feat(server): CLIP search integration by @alextran1502 in #1939
- feat(server): Fallback to text search if machine-learning is disabled by @bo0tzz in #2015
- fix(server): CLIP search return empty result by @alextran1502 in #2018
- feat(sever): machine-learning image optimisations by @ollywelch in #1916
Mobile App
- feat(mobile): Enter server first for login by @martyfuhry in #1952
- feature(mobile): sync assets, albums & users to local database on device by @fyfrey in #1759
- fix(mobile): Fixes hero animation on main timeline by @martyfuhry in #1924
- fix(mobile): iOS backup debug info tile only shown in iOS by @martyfuhry in #1951
- feat(mobile): Transparent bottom Android navigation bar by @martyfuhry in #1953
- fix(mobile): do not crash on malformed asset duration by @fyfrey in #1921
- fix(mobile): Gallery viewer fullscreen edge case by @martyfuhry in #1959
- fix(mobile): Sorted shared album and added share user doesn't reflect change in album view by @alextran1502 in #1955
- fix(mobile): add isar source code as a git submodule for F-Droid build by @fyfrey in #1985
- fix(mobile): Fix iOS login layout issue by @martyfuhry in #2004
- feature(mobile): allow app to be used offline by @fyfrey in #1932
- chore(mobile): remove integration test temporarily by @alextran1502 in #2008
- feature(mobile): no longer wait for background backup in settings by @fyfrey in #1984
- feat(mobile): Share album name and adaptive shared album display by @martyfuhry in #2017
- feat(mobile): persist album sort order by @truedem0n in #1997
- fix(mobile): proper syncing with Recents album on iOS
Web
- fix(web): restore album drag and drop upload by @michelheusschen in #1933
- fix(web): nested layout navigation issue by @alextran1502 in #1936
- fix(web): admin pages layout issue by @michelheusschen in #1943
- feat(web): require page load to export title by @michelheusschen in #1956
- feat(web): improve search bar + add to search page by @michelheusschen in #1957
- feat(web): Make scaling of albums overview more responsive by @matthinc in #1981
- fix(web): short layout retention after navigation by @michelheusschen in #1994
- feat(web): improve /auth pages by @michelheusschen in #1969
- refactor(web): common layout for user pages by @michelheusschen in #1995
- feat(web): bundle and 'sveltify' leaflet by @michelheusschen in #1998
- fix(web): storage template extension display by @etnoy in #2002
Others
- chore(docs): add missing space in version_announcement_overlay_text_2 for ru-RU locale by @brighteyed in #1919
- chore(deps): bump docker/setup-buildx-action from 2.4.1 to 2.5.0 by @dependabot in #1976
- chore(docs): added note on scope of redis optional parameters in example.env by @dragosrotaru in #1974
- chore(docs): Document how photo dates are determined by @twitsforbrains in #1978
- chore(docs): Document fallback timezone setting (fixes #2000) by @etnoy in #2003
- chore(docs): Document cli path parameter change by @etnoy in #2011
- chore: Move away from docker hub where possible by @bo0tzz in #2006
New Contributors
- @brighteyed made their first contribution in #1919
- @dragosrotaru made their first contribution in #1974
- @raisinbear made their first contribution in #1980
- @twitsforbrains made their first contribution in #1978
- @etnoy made their first contribution in #2002
- @truedem0n made their first contribution in #1997
Full Changelog: v1.50.1...v1.51.0