v1.95.0
Warning
⚠️ Breaking Changes ⚠️
1. Upgrade pgvecto.rs to stable version 0.2.0 for enhanced search
Step 1: Change the docker-compose.yml database image from 0.1.11 to 0.2.0
[...]
database...
Disclaimer
⚠️ The project is under very active development.
⚠️ Expect bugs and breaking changes.
⚠️ Do not use the app as the only way to store your photos and videos.
⚠️ Always follow 3-2-1 backup plan for your precious photos and videos!
Yes project does not follow semantic versioning. But you can consider it it the 0.y.z state where it is even in the semantic versioning allowed to have breaking changes without major version increase.
I am generally of the opinion that version numbers do not matter at all until the author/distributor has GUARANTEED that they do. Until then they're worthless, including in places where semver is supposedly enforced like NPM. If I had a penny for every NPM package that broke my project after removing the package-lock.json, I could retire.
Good share. I saw the nudge in the mobile app, but I didn't realize there was breaking changes and upgraded in the middle of the night before bed (what the hell was I thinking???). Spent a good extra hour trying to figure out why.
Key take away, the pgvecto.rs version needs to be upgraded. If you are using docker, update the docker-compose.yml. If you're not, upgrade your pgvector.rs version first. 🙏
I don't understand. Why are they so specific in the Docker Compose? Why not just have a Docker that pulls the latest of each package without requiring the user to copy long strings?
For the exact reason they are posting this. What if some service you are referencing has breaking changes? If you pinpoint the exact version it will have no effect to your project unless you decide (hopefully after some consideration) to upgrade the service version number.
Which clearly requires user interaction, why not take that out of users' hands and just have
image: tensorchord/pgvecto-rs:latest-stable
Which is effectively what they're using anyway? I can understand freezing on a version when the upstream removes a feature, but that's not happened and even so, why do they need the SHA verification? Sorry if it seems stupid and straight forward, this is the only container I host that does this and so I'm trying to understand it rather than just feel aggrieved by it.
I'm using the Immich app from TrueNAS, how do I properly update it? Or is it being taken care off by TrueNAS?
Edit: I asked on the TrueNAS discord for help and someone who already updated their Immich figured out how to fix the installation afterwards. I copy&paste the guide here:
If Immich fails to deploy check the logs heavyscript pod --logs immich. If the logs complain that indexes need to be deleted continue with this guide.
Access the shell for the postgres pod heavyscript pod -s immich.
Select the postgres pod.
Inside the pod run env and record the password. Then type exit to exit the pod.
Get the DNS address and port for Immich postgres pod. heavyscript dns -a
Launch pgAdmin and right-click on Servers select Register > Server.
In the Connection tab put the hostname and port from step 6. The username is immich and use the password from step 3.
Once connected create a backup by expanding Servers > Immich > Databases and right-click on immich then select Backup.... Follow the prompts to create a backup.
Right-click on immich and select Query Tool.
Use the following query to delete your indexes.
FROM pg_index X JOIN
pg_class I ON I.oid = X.indexrelid JOIN
pg_am A ON A.oid = I.relam
WHERE A.amname = 'vectors';
Stop Immich with heavyscript heavyscript app --stop immich.
Once all pods have scaled down start Immich heavyscript app --start immich.
The SQL query will complain about a syntax error but it will work regardless. It just takes some time to redeploy immich.
For someone freshly interested in self hosting, what does breaking changes with respect to immich really mean? Does it mean that if I upgrade to this version, I have to rebuild my library, face tags etc? Or does it mean that things might stop working and some files might need to be changed, upgraded manually and things may get awry in doing so.
Normally a breaking change means after you apply the change it's not easy/straightforward to rollback to the older version if you want to do that for whatever reason.
For example, a new version is released and underlying database table or structure changes. You upgrade properly, and find the new version has some bugs (or you simply don't like it). If you want to use the older version again until the newer one is fixed it's not a matter of simply point to old version.
As the database structure has fundamentally changed underneath in the new version, when you put back the old version it simply doesn't understand the new structure and might stop working. You need ways to be able to make the DB structure compatible with the older application.
If the application is stable the devs might provide ways to do this. But since this is an alpha... You're on your own.
TL;DR it means the older and newer version of the application aren't strictly compatible with each other
I haven't reviewed the changelog for this immich, but yes a breaking change typically means if you just went and updated you would have a broken system. sometimes something like you mentioned if a backend database is changed or db column attributes altered.
This scares me to an extent but as long as immich provides some instructions on what to do to get back on track, this should be okay.
Also, what happens if one skips multiple such breaking updates? Will it be my responsibility to hunt down the changes and make corresponding amends?
And finally, while I understand that immich is not supposed to be photo backup solution, does it allow export and import of metadata, tags etc? I ask because I intend to set it up and I may skip few of these updates and instead do a fresh install a year or so later. If I can simply export my settings, face ID info, albums from old setup and import it into the new one then it makes things very easy.
Otherwise the phrase breaking changes does sound really scary.
As an example in an engineering software it had been forward compatible for 30 years, recently they changed the datatypes for certain expressions: some expressions that could be number type now were restricted to integer. This broke every formula built off of that expression type in legacy data.
ugg
Cool - was trying to get set up with v1.94, but had real trouble getting pgvecto-rs to work properly, pgvector seems much more stable and better supported and was a breeze to get running
Lol - Immich is one of those stacks that I let Watchtower auto-upgrade. I don't consider it mission critical if it breaks and it takes me a day or so to notice it (all my photos and videos are also backed up using Syncthing).
I've gotten used to just going to the repo if the error message for the container doesn't immediately lead me to the fix.
Immich has breaking changes too often, so I disabled auto updates for the server and phone app. Updating every few months with backup beforehand is a good tradeoff for something as important as images.
Reading patch notes is especially important with some Immich releases requiring minor admin intervention, e.g. running an extract metadata job.