Releases: Cratis/Chronicle
Release v15.18.14
Fixed
- Null reference exception in projection pipeline when a key value is null —
MongoDBConverter.ToBsonValueandSetInitialStatenow guard against null key values (#3134) UserIdentityMiddlewarewas swallowing all requests when any identity field (sub/name/email) was absent due to a barereturnthat skipped callingnext(context)(#3134)ProjectionValidatorcrashed with a duplicate-key exception when multiple projections shared the same read model or event type identifier — deduplicated withDistinctBybefore building lookup dictionaries (#3134)- TimeMachine only returned the first page of snapshots — an early
breakon an empty cursor batch exited before MongoDB returned subsequent pages (#3134) - Projection Generator emitted
$value(inner)expressions verbatim in PDL output instead of converting them back toliteral "inner"syntax, causing round-trip parse failures in the projection editor (#3134) - Namespace list not appearing in the Workbench sidebar — the
Namespacessingleton scheduled its subscription via a constructor microtask that fired before the event store route parameter was available; replaced with an explicitsetEventStore()call driven byuseParams/useEffectinNamespaceSelector(#3134) - Removed a production error stack trace accidentally committed as a JSX comment inside
TimeMachineDialog.tsx(#3134)
Release v15.18.13
Fixed
- Time Machine read model snapshots (
AllSnapshotsForReadModel) no longer return HTTP 500 with "Value cannot be empty (Parameter 'name')". TheEventSequenceIdwas omitted from theGetSnapshotsByKeyRequest, causing MongoDB to be called with an empty collection name. Fixed by supplyingEventSequenceId.Logat the call site and defaultingGetSnapshotsByKeyRequest.EventSequenceIdto"event-log"(consistent withGetAllInstancesRequestandPreviewProjectionRequest).
Release v15.18.12
Fixed
-
Projection futures for 3-level nested child projections (e.g. root → Configuration → Hub → Metric) now resolve correctly when the deferred child arrives before its parent. Previously, the
ArrayIndexerused for navigating the parent hierarchy held a rawEventSourceIdkey while the ExpandoObject stored aGuid, causingEnsurePathto create a duplicate parent element instead of finding the existing one. -
When a resolved future's
ChildAddedwas combined with the triggering event'sChildAddedin the same MongoDB update, the push to the nested child silently failed because the parent arrayFilter matched no pre-existing element. Resolved futures are now saved in a separate subsequent MongoDB operation viaPendingFutureSaves. -
Events that set properties on a first-level-child projection (e.g.
WeightsSetForSimulationConfigurationon aConfiguration) were never resolved from deferred state becauseTryFindParentWithIndexersreturned false for direct children of the root. The method now handles this case correctly. -
Test infrastructure: MongoDB test containers now bind to a random host port to prevent conflicts between concurrent test runs.
Release v15.18.11
Changed
- Sort
usingdirectives alphabetically inEventStoreSubscriptionsReactorLogging.csandIEventStoreSubscriptionsManager.cs.
Release v15.18.10
Fixed
- Cross-event-store subscriptions set up against a source event store that does not yet exist are now queued and automatically retried when the source event store becomes available, instead of failing with an
InvalidOperationException.
Release v15.18.9
Added
- Added a new
EventTypeAddedsystem event to record first-time event type creation in the system event sequence.
Changed
- Updated event type registration to append
EventTypeAddedfor first-time registrations and appendEventTypeGenerationAddedonly when adding new generations to existing event types. - Extended registration specs to verify both first-time creation tracking and existing-type generation tracking behavior.
Release v15.18.8
Fixed
WaitUntilSubscribedno longer throws immediately when the subscription definition has not yet arrived in grain state — it now polls within the timeout window, fixing a startup race condition that prevented external event store subscriptions (e.g. Lobby → Studio) from being established.
Added
- Typed
EventSourceIdon the client for stronger type safety when working with event source identifiers.
Release v15.18.7
Changed
- Event store subscription activation now avoids unnecessary re-subscription churn and verifies readiness before returning from add operations.
- Subscription reminder processing now uses health checks and recovery-oriented error handling to keep forwarding stable over time.
Fixed
- Fixed intermittent outbox-to-inbox forwarding gaps in event store subscriptions under timing-sensitive conditions.
- Fixed reactor mediator routing collisions by distinguishing subscribers on event store and namespace.
- Fixed reducer mediator routing collisions by distinguishing subscribers on event store and namespace.
- Fixed duplicate/obsolete sink specs that caused type/member collisions and stale API usage in Storage specs.
Release v15.18.6
Fixed
- Fixing compiler warnings that were holding us back from publishing.
Release v15.18.5
No release notes