ImageGenius Changes:
add typesense
immich Changes:
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 immich-app/immich#1903
- chore(server): bump API version post release by @zackpollard in immich-app/immich#1909
- fix(server): storage template unit test by @michelheusschen in immich-app/immich#1906
- feat(server): Machine learning's image optimisations by @ollywelch in immich-app/immich#1908
- fix(server): exif extraction swapped params by @michelheusschen in immich-app/immich#1914
- feat(server)!: search via TypeSense by @jrasm91 in immich-app/immich#1778
- chore(server): disable TypeSense logging by @alextran1502 in immich-app/immich#1925
- fix(server): duration string parsing by @jrasm91 in immich-app/immich#1923
- feat(server): improve thumbnail relation and updating by @michelheusschen in immich-app/immich#1897
- feat(web,server): explore by @jrasm91 in immich-app/immich#1926
- fix(server): Increase authentication cookie max-age by @bo0tzz in immich-app/immich#1971
- fix(server): update album updatedAt on assets/users removed/added by @fyfrey in immich-app/immich#1977
- fix(server): remove encoded video file on asset delete by @raisinbear in immich-app/immich#1980
- fix(server): timezone mismatch in server tests by @brighteyed in immich-app/immich#1918
- feat(server): CLIP search integration by @alextran1502 in immich-app/immich#1939
- feat(server): Fallback to text search if machine-learning is disabled by @bo0tzz in immich-app/immich#2015
- fix(server): CLIP search return empty result by @alextran1502 in immich-app/immich#2018
- feat(sever): machine-learning image optimisations by @ollywelch in immich-app/immich#1916
Mobile App
- feat(mobile): Enter server first for login by @martyfuhry in immich-app/immich#1952
- feature(mobile): sync assets, albums & users to local database on device by @fyfrey in immich-app/immich#1759
- fix(mobile): Fixes hero animation on main timeline by @martyfuhry in immich-app/immich#1924
- fix(mobile): iOS backup debug info tile only shown in iOS by @martyfuhry in immich-app/immich#1951
- feat(mobile): Transparent bottom Android navigation bar by @martyfuhry in immich-app/immich#1953
- fix(mobile): do not crash on malformed asset duration by @fyfrey in immich-app/immich#1921
- fix(mobile): Gallery viewer fullscreen edge case by @martyfuhry in immich-app/immich#1959
- fix(mobile): Sorted shared album and added share user doesn't reflect change in album view by @alextran1502 in immich-app/immich#1955
- fix(mobile): add isar source code as a git submodule for F-Droid build by @fyfrey in immich-app/immich#1985
- fix(mobile): Fix iOS login layout issue by @martyfuhry in immich-app/immich#2004
- feature(mobile): allow app to be used offline by @fyfrey in immich-app/immich#1932
- chore(mobile): remove integration test temporarily by @alextran1502 in immich-app/immich#2008
- feature(mobile): no longer wait for background backup in settings by @fyfrey in immich-app/immich#1984
- feat(mobile): Share album name and adaptive shared album display by @martyfuhry in immich-app/immich#2017
- feat(mobile): persist album sort order by @truedem0n in immich-app/immich#1997
- fix(mobile): proper syncing with Recents album on iOS
Web
- fix(web): restore album drag and drop upload by @michelheusschen in immich-app/immich#1933
- fix(web): nested layout navigation issue by @alextran1502 in immich-app/immich#1936
- fix(web): admin pages layout issue by @michelheusschen in immich-app/immich#1943
- feat(web): require page load to export title by @michelheusschen in immich-app/immich#1956
- feat(web): improve search bar + add to search page by @michelheusschen in immich-app/immich#1957
- feat(web): Make scaling of albums overview more responsive by @matthinc in immich-app/immich#1981
- fix(web): short layout retention after navigation by @michelheusschen in immich-app/immich#1994
- feat(web): improve /auth pages by @michelheusschen in immich-app/immich#1969
- refactor(web): common layout for user pages by @michelheusschen in immich-app/immich#1995
- feat(web): bundle and 'sveltify' leaflet by @michelheusschen in immich-app/immich#1998
- fix(web): storage template extension display by @etnoy in immich-app/immich#2002
Others
- chore(docs): add missing space in version_announcement_overlay_text_2 for ru-RU locale by @brighteyed in immich-app/immich#1919
- chore(deps): bump docker/setup-buildx-action from 2.4.1 to 2.5.0 by @dependabot in immich-app/immich#1976
- chore(docs): added note on scope of redis optional parameters in example.env by @DragosRotaru in immich-app/immich#1974
- chore(docs): Document how photo dates are determined by @twitsforbrains in immich-app/immich#1978
- chore(docs): Document fallback timezone setting (fixes #2000) by @etnoy in immich-app/immich#2003
- chore(docs): Document cli path parameter change by @etnoy in immich-app/immich#2011
- chore: Move away from docker hub where possible by @bo0tzz in immich-app/immich#2006
New Contributors
- @brighteyed made their first contribution in immich-app/immich#1919
- @DragosRotaru made their first contribution in immich-app/immich#1974
- @raisinbear made their first contribution in immich-app/immich#1980
- @twitsforbrains made their first contribution in immich-app/immich#1978
- @etnoy made their first contribution in immich-app/immich#2002
- @truedem0n made their first contribution in immich-app/immich#1997
Full Changelog: immich-app/immich@v1.50.1...v1.51.0