Notable changes to the kit, newest first.
2026-05-27
- Missing required request parameters now return
400, not500— calling a tenant-scoped endpoint without thetenantheader (and any other endpoint missing a required header/route/query parameter, or sent with an unreadable/oversized body) raised an ASP.NETBadHttpRequestExceptionthat the global exception handler rendered as a generic500 Internal Server Error. The handler now honours the framework’s own status code, so these surface as a proper400 Bad Request(or413, etc.) with aProblemDetailsbody. Fixes #1245.
2026-05-24
- Cache/store engine switched from Redis to Valkey 8 — the BSD-licensed, Linux Foundation fork of Redis. It’s a drop-in over the Redis protocol (RESP): the
StackExchange.Redisclient and everyCachingOptions:Redisconfig key are unchanged. Applies to .NET Aspire, both Docker Compose files, and the integration-test container. - RedisInsight cache browser is now auto-wired in Aspire, connected to the Valkey instance so you can inspect cache keys, TTLs, and the SignalR backplane in local dev with no manual configuration.
- Docker Compose hardening — the production
deploy/dockerstack now provisions the MinIO bucket before the API starts (fixes a first-uploadNoSuchBucket); the dev rootdocker-compose.ymlnow runs the DB migrator (apply --seed) so the API never boots against an empty schema.