2.2.1
Maintenance release — no consumer-facing behavior changes. Insomnia test suite (61/61) green throughout.
Dependency bumps
actions/checkoutv3→v6,docker/login-actionv2→v4,docker/build-push-actionv4→v7 (#73)viper1.19.0→1.21.0 (#74)gorm1.25.12→1.30.0 + dotted map-keyedWhereregression fix (#75)grpc-gateway/v22.26.3→2.29.0, transitivelygrpc1.79.3→1.80.0 (#76)grpc1.80.0→1.81.0,protoc-gen-go-grpc1.5.1→1.6.2 + proto regen (#77)gorm1.30.0→1.31.1 (#78)redis/go-redis9.7.3→9.19.0 (#79)
Notable fix
gorm 1.26+ dotted map-keyed Where regression (#75) — FindProfileByKeycloakID and FindProfileByDiscordID were using Where(map[string]interface{}{"xf_user_connected_account.provider": ...}). gorm 1.26+ misqualifies dotted map keys with the current model's table, producing a three-part qualifier MariaDB rejects. Both functions now use placeholder SQL.
Release plumbing
chore: auto-inject release version into server binary and OpenAPI spec(#81) — releases now bake the tag into the server binary (via-ldflags) and the OpenAPI spec served at/(via build-time sed into the proto sources). Local dev builds reportdev. Eliminates the manual two-place version bump that was a recurring near-miss.
Full Changelog: 2.2.0...2.2.1