Cursed knowledge we have learned as a result of building Immich that we wish we never knew.
Zitadel Actions are cursed
Zitadel is cursed because its custom scripting feature is executed with a JS engine that doesn't support regex named capture groups.
6/4/2025
Fetch inside Cloudflare Workers is cursed
Fetch requests in Cloudflare Workers use http by default, even if you explicitly specify https, which can often cause redirect loops.
8/7/2024
Long passwords are cursed
The bcrypt implementation only uses the first 72 bytes of a string. Any characters after that are ignored.
6/25/2024
TypeORM deletes are cursed
The remove implementation in TypeORM mutates the input, deleting the id property from the original object.
2/23/2023