Skip to content

Releases: Cratis/Chronicle

Release v15.18.14

22 Apr 13:14
8f7acf2

Choose a tag to compare

Fixed

  • Null reference exception in projection pipeline when a key value is null — MongoDBConverter.ToBsonValue and SetInitialState now guard against null key values (#3134)
  • UserIdentityMiddleware was swallowing all requests when any identity field (sub/name/email) was absent due to a bare return that skipped calling next(context) (#3134)
  • ProjectionValidator crashed with a duplicate-key exception when multiple projections shared the same read model or event type identifier — deduplicated with DistinctBy before building lookup dictionaries (#3134)
  • TimeMachine only returned the first page of snapshots — an early break on 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 to literal "inner" syntax, causing round-trip parse failures in the projection editor (#3134)
  • Namespace list not appearing in the Workbench sidebar — the Namespaces singleton scheduled its subscription via a constructor microtask that fired before the event store route parameter was available; replaced with an explicit setEventStore() call driven by useParams/useEffect in NamespaceSelector (#3134)
  • Removed a production error stack trace accidentally committed as a JSX comment inside TimeMachineDialog.tsx (#3134)

Release v15.18.13

22 Apr 06:53
a7f8c4f

Choose a tag to compare

Fixed

  • Time Machine read model snapshots (AllSnapshotsForReadModel) no longer return HTTP 500 with "Value cannot be empty (Parameter 'name')". The EventSequenceId was omitted from the GetSnapshotsByKeyRequest, causing MongoDB to be called with an empty collection name. Fixed by supplying EventSequenceId.Log at the call site and defaulting GetSnapshotsByKeyRequest.EventSequenceId to "event-log" (consistent with GetAllInstancesRequest and PreviewProjectionRequest).

Release v15.18.12

22 Apr 06:11
55151f3

Choose a tag to compare

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 ArrayIndexer used for navigating the parent hierarchy held a raw EventSourceId key while the ExpandoObject stored a Guid, causing EnsurePath to create a duplicate parent element instead of finding the existing one.

  • When a resolved future's ChildAdded was combined with the triggering event's ChildAdded in 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 via PendingFutureSaves.

  • Events that set properties on a first-level-child projection (e.g. WeightsSetForSimulationConfiguration on a Configuration) were never resolved from deferred state because TryFindParentWithIndexers returned 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

20 Apr 15:34
9ed3535

Choose a tag to compare

Changed

  • Sort using directives alphabetically in EventStoreSubscriptionsReactorLogging.cs and IEventStoreSubscriptionsManager.cs.

Release v15.18.10

20 Apr 14:11
7f96aa1

Choose a tag to compare

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

20 Apr 13:30
9473998

Choose a tag to compare

Added

  • Added a new EventTypeAdded system event to record first-time event type creation in the system event sequence.

Changed

  • Updated event type registration to append EventTypeAdded for first-time registrations and append EventTypeGenerationAdded only 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

20 Apr 12:53
1e0d390

Choose a tag to compare

Fixed

  • WaitUntilSubscribed no 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 EventSourceId on the client for stronger type safety when working with event source identifiers.

Release v15.18.7

20 Apr 04:32
367860d

Choose a tag to compare

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

19 Apr 17:14
6523125

Choose a tag to compare

Fixed

  • Fixing compiler warnings that were holding us back from publishing.

Release v15.18.5

19 Apr 17:01
8491065

Choose a tag to compare

No release notes