Skip to content

Release v22.32.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 04:45
70fe5db

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/queries and 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 /validate endpoint, 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 PathAttribute by its full type name.

Changed (release-note worthy)

  • The lightweight OpenAPI document now drops every route marked ExcludeFromApiDescription, including the generated HTTP QUERY reader, which OpenAPI 3.0 cannot represent. Apps with EnableQueryHttpMethod = true no longer see query operations in that document.
  • An application's own class named PathAttribute is no longer honored on read models or query methods; only Cratis' PathAttribute is.

Not changed

  • Introspection defaults. The proposal for a future major release is to make RequireAuthentication default to true and 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.