Repository navigation
Release v19.12.0
This PR consolidates six fixes into one release. Each was reviewed separately, then tested together on top of v19.11.0.
Added
- The .NET client's generated JSON schemas give inline object types a
titlewith the type name. A declaration generated from a fluent composite-key projection (for example in the Workbench) can then name the key type and recompile. The fluentCompositeKeyBuilderstill emits untyped expressions, so older kernels are unaffected (#4253) - The ASP.NET Core causation middleware records the matched route template in a new
routeTemplatecausation property, alongside the existing request path (#4260)
Changed
- Pattern mining derives request features from route templates only, never from raw request paths, so identifiers embedded in a URL (such as
/customers/jane@example.com) are no longer stored in mined patterns. Patterns stored before this release are not rewritten (#4260) - Registering an event type whose stored schema differs only in titles no longer rewrites the stored schema, and no longer invalidates caches on every reconnect. This matters when old and new clients run side by side (#4253)
Fixed
- A MongoDB bulk write that fails part way now applies the remaining operations instead of silently dropping them. Later changes for the partition that failed are held back, so they can't overtake its replay. Each failed partition is reported once, at its earliest sequence number (#4244)
- Forwarding events to another event store's inbox no longer acknowledges events whose append failed. It stops at the first failure and reports the last event it actually forwarded, so the retry resumes from the failed event (#4259)
- Projection keys for immediate (passive) projections round-trip read-model keys that contain
#(#4241) addandsubtractprojection mappings accept negative, decimal and exponent operands (for example-1,-2.5,1e-3), and reject malformed operands. Exponent literals and integer literals beyond 2^53 in declarations still depend on the declaration parser (Cratis/Screenplay#285) (#4239)- Composite-key validation for generated declarations resolves the key type from the read model's
Idschema first, so a same-named type elsewhere in the read model can't be picked by mistake (#4253)