Repository navigation
Release v22.32.0
Refs #2848 (the additive, non-breaking parts; changing the introspection default is left open).
Added
[ExcludeFromDiscovery](Cratis.Arc) on a command type, read model, query method, controller or controller action. It leaves the operation out of/.cratis/commands,/.cratis/queriesand the generated OpenAPI descriptions, including command validation endpoints. It does not unmap or authorize the endpoint. The marker is inherited.- Model-bound commands can use the existing
[Path]attribute (Cratis.Arc.Queries.ModelBound). The explicit path is used consistently by endpoint mapping, the/validateendpoint, introspection and the generated TypeScript proxy. A command's path is not inherited and must be a literal route.
Fixed
- Query introspection reports a query's custom
[Path]route instead of the conventional route. - The runtime and the proxy generator match the Cratis
PathAttributeby its full type name.
Changed (release-note worthy)
- The lightweight OpenAPI document now drops every route marked
ExcludeFromApiDescription, including the generated HTTPQUERYreader, which OpenAPI 3.0 cannot represent. Apps withEnableQueryHttpMethod = trueno longer seequeryoperations in that document. - An application's own class named
PathAttributeis no longer honored on read models or query methods; only Cratis'PathAttributeis.
Not changed
- Introspection defaults. The proposal for a future major release is to make
RequireAuthenticationdefault totrueand require apps to opt back in to anonymous catalogs. Hosts without an authentication scheme would then fail at startup until configured. This protects only the two catalog routes; see also #2873.
Checks (local, mirroring dotnet-build.yml)
- Release build: 0 warnings.
- All 15 spec projects pass (Core 3,008; Screenplay 1,432; Chronicle 837; others).
- ProxyGenerator specs: 1,562 pass.
- Screenplay end-to-end reads back clean on the AspNetCore, Chronicle and Layered test apps.
- An Opus review of the fix commits found no critical or major issues. Its documentation findings are addressed in the last commit.
- The name-clash guard: a spec imports both ModelBound namespaces and uses
[Path].
Known gap, documented: duplicate explicit command paths are not detected at startup.