Skip to content

Bump Cratis.Chronicle and 4 others#451

Open
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/nuget/multi-a61bef4057
Open

Bump Cratis.Chronicle and 4 others#451
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/nuget/multi-a61bef4057

Conversation

@dependabot
Copy link
Copy Markdown

@dependabot dependabot Bot commented on behalf of github Dec 15, 2025

Updated Cratis.Chronicle from 14.0.9 to 14.13.10.

Release notes

Sourced from Cratis.Chronicle's releases.

14.13.10

Fixed

  • Exposing configurable gRPC messages sizes in the .NET Client and also defaulting it to 100MB, a little bit more than the default of 4MB :)

14.13.9

Fixed

  • Internal JSON conversion for events skipped TimeStamp due to missing support in a centralized converter found in Cratis Fundamentals. This is now updated.

14.13.8

Fixed

  • Added missing conversion for TimeSpan for MongoDB.
  • Fixing IsSet property on PropertyPath to consider an empty string as not set. This affected nested children scenarios for projections when constructing a path to use for querying for read models through the sink.
  • Consolidating how we deal with property naming in MongoDB and fixing so that we consistently convert id to _id to abide by MongoDB conventions.

14.13.7

Fixed

  • Fixing how we deal with projection futures and resolution in-memory. It didn't quite resolve things and ended up having stale projection futures.
  • Fixing so that child relationships don't pollute the changeset of the root with initial values.

14.13.6

Fixed

  • Fixing a problem with recursive projections and resolution of the root key. It will now look at more than just the first event type if it needs to try to resolve through events that has happened. If it can't resolve through events, it will try to resolve it through the sink through navigational queries to the parent.

14.13.5

Fixed

  • Fixing dependency from AppModel package to be towards Arc.Core instead of Arc.

14.13.4

Fixed

  • Upgrading Cratis Arc with support for TimeSpan serializer for MongoDB.

14.13.3

Fixed

  • Fixing Changeset consolidation to look for the correct property when dealing with array based consolidations - affects reducers and projections.
  • Fixing complex lookup through sink when navigating projection hierarchy to find root read model to apply changes to.

14.13.2

Fixed

  • Changeset used by Projections and Reducers are now consolidating themselves on every change, leading to more optimal updates towards read models and also avoiding conflicting situations.
  • Fixing so that types used either as children or as a complex type on a read model does not constitute a projection. Only root read models will be seen as projections when adorned with model bound projection attributes.

14.13.1

Fixed

  • Fixing recursiveness for model-bound projections. Not all of the attributes were part of recursive operations.

14.13.0

Fixed

  • Fixing so that model bound projection definitions are recursive for child relations, enabling it to generate correct projection definitions for children within children, supporting joins and other projection constructions as well.
  • Adding support for nested children that leverage the EventSourceId of the parent - resolving root read models using the Sink.
  • Adding support for out of order events for nested children by implementing "Projection Futures" - a durable storage for unresolved relationships that will be resolved when it can.

14.12.4

Fixed

  • Removal using RemovedWith was missing support for class/record level, which was the original intent. This is now fixed.

14.12.3

Fixed

  • Fixing so that the __lastHandledEventSequenceNumber is always correct in the MongoDB Sink. (#​1749)
  • Fixing the missing data when viewing event sequences in the workbench. This was due to a bug in the Cratis Application Model.
  • Configuration related to test setup - fixing aliasing and general developer experience.
  • Fixing numeric arithmetic when using Add/Subtract in projections. It will now use the correct type according to what is defined by the schema and have the correct fidelity for floating point numbers (float, double, decimal). (#​679)
  • Changing from ApplicationModel to the rebranded Arc components. Fixing all NuGet package references, namespaces and NPM packages.

14.12.1

Fixed

  • Upgrading to the latest version of Cratis Application Model with a fix for Azure CosmosDB - MongoDB RU bases instances and its Collection not found errors when working with Change Stream. It will now reciliently handle this and try to reconnect to the collection on regular interval (every second) and once the collection is there, it should be fine. Some of the APIs for the Workbench sits on top of collections and they might not be there, causing the workbench to misbehave. This should fix that issue.

14.12.0

Summary

This release adds support for .NET 10. It still supports .NET 8 and 9 for backwards compatibility.

Added

  • .NET 10 support 🎉

14.11.4

Fixed

  • Fixing so that when a projection changes, it will use the new definition automatically. This was what it was designed to do, but it were holding cached versions in the pipelines.

14.11.3

Fixed

  • Fixed so that children projections defined by model-bound attributes uses the naming policy to provide the IdentifiedBy name properly.
  • Increasing test coverage around model-bound attribute projections and use of naming policy.

14.11.2

Fixed

  • Fixing key resolution for ChildrenFrom<> attribute - it will now default to EventSourceId but honor the specific property name set if set.

14.11.1

Fixed

  • Fixing so that model bound projections honor the convention of an Id property being the default identifier and will include it as mapped to EventSourceId for children in a child projection. It will also honor the [Key] attribute as well as the [SetFromContext...] for children.

14.11.0

Summary

Adds event seeding to populate event stores with predefined data. Enables declarative seeding definitions that are automatically discovered and registered on application startup, with efficient deduplication ensuring events are only seeded once.

Added

  • Fluent interface for defining seeded events in declarative discovered classes based on the ICanSeedEvents interface:
    public class MySeeding : ICanSeedEvents
    {
        public void Seed(IEventSeedingBuilder builder) => builder
            .For<EventType>("event-source-id", [new(prop1, prop2)])
            .ForEventSource("event-source-id", [new EventType(prop1, prop2)]);
    }

14.10.6

Fixed

  • Fixing reloading of projections for Immediate projections and regular pipelines when projections change. This means that replay should now work as expected. Very helpful when during development.

14.10.5

Summary

Although this release has an addition, it should have no effect on anything and is so minor that we chose to keep it as a patch.

Added

  • Adding a constructor overload for EventSourceId for Guid values.

Fixed

  • Automatically map Id property for children when using the model-bound ChildrenFrom<> attribute for projections.
  • Fixing hookup of model bound read models to the IoC container. They are now supported, this was missing.

14.10.4

Fixed

  • Fixing server crash due to wrong assembly binding for Microsoft.OpenAPI - transient dependencies. Has been fixed in the Cratis.ApplicationModel.

14.10.3

No release notes

14.10.2

Fixed

  • Automapping for child mapping when working with model bound projections.

14.10.1

No release notes

14.10.0

Added

  • Added support for specifying custom key when using the [FromEvent] attribute for model bound projections, as one can with the declarative approach.

14.9.0

Added

  • Adding support for setting values from the EventContext linked to specific events types for model bound projections.

Fixed

  • Fixing so that the All definition is set for children definitions for model bound projections.
  • Fixing so that commands that fail append or append many on an event sequence populates the CommandResult correctly when using the model bound commands.

14.8.10

Fixed

  • Honoring if one returns a tuple where one of the values is assignable to EventSourceId in model-bound commands that returns tuples that include event or events.

14.8.9

Fixed

  • Fixing service collection bindings to not bind as factory via the IChronicleClient, but rather directly to the definitions in the actual options. This should avoid circular resolutions that we're seeing in some scenarios.

14.8.8

Fixed

  • Scoping for IEventStoreNamespaceResolver was wrong - it should be a singleton, not scoped.

14.8.7

Fixed

  • Adding service registration for IEventStoreNamespaceResolver when using ASP.NET Core
  • Adding service registration for ICorrelationIdAccessor when using ASP.NET Core

14.8.6

Fixed

  • Fixing discovery of what constitutes a model bound projection. It didn't include read models that only had attributes on properties / record constructor parameters.

14.8.5

Fixed

  • Read Model definition hookup for Model Bound projections.

14.8.4

Fixed

  • Fixing how the FromEvery definition is being generated and configured on the projection definition.

14.8.3

Fixed

  • Fixing conversion for PropertyExpression coming through the service layer as null needing to not be null - setting to .NotSet for those scenarios. The server was not honoring the contract.
  • Fixing uniqueness issues with event types being added multiple times to the projection definition.

14.8.2

Fixed

  • Exposing EventType from the model bound projection attributes that has an event type through the interface IEventBoundAttribute.

14.8.1

Fixed

  • Only some of the model bound projection attributes had interface representations for discoverability and type checking, this was an oversight . The missing interfaces had no impact on runtime as of now.

14.8.0

Summary

Implements model bound projections allowing one to addorn objects with attributes instructing the projection engine how to project specified events to the model (#​326)

Added

  • Property mapping attributes: SetFrom<TEvent>, AddFrom<TEvent>, SubtractFrom<TEvent>
  • Counter operation attributes: Increment<TEvent>, Decrement<TEvent>, Count<TEvent>
  • Advanced operation attributes: Join<TEvent>, RemovedWith<TEvent>, RemovedWithJoin<TEvent>
  • Convention-based mapping: FromEvent<TEvent> for automatic property matching
  • Child collection support: ChildrenFrom<TEvent> with recursive attribute processing
  • Configuration attributes: FromEventSequence, NotRewindable, Passive

Example Usage:

using Cratis.Chronicle.Keys;
using Cratis.Chronicle.Projections.ModelBound;

[FromEventSequence("default")]
[NotRewindable]
public record AccountInfo(
    [Key, FromEventSourceId]
    AccountId Id,
    
    [SetFrom<DebitAccountOpened>(nameof(DebitAccountOpened.Name))]
    AccountName Name,
    
    [AddFrom<DepositPerformed>(nameof(DepositPerformed.Amount))]
    [SubtractFrom<WithdrawalPerformed>(nameof(WithdrawalPerformed.Amount))]
    double Balance,
    
    [Increment<DepositPerformed>]
    [Decrement<WithdrawalPerformed>]
    int TransactionCount);

Children with Recursive Processing:

public record Cart(
    [Key, property: FromEventSourceId] Guid Id,
    
    [ChildrenFrom<ItemAdded>(key: nameof(ItemAdded.ItemId))]
    IEnumerable<CartItem> Items);

// Child type attributes are processed automatically
public record CartItem(
    [Key] string Id,
    [SetFrom<ItemAdded>] string Name,
 ... (truncated)

## 14.7.5

### Fixed

- Pulling in latest AppModel with a fix for DirectConnect not being default set to true for MongoDB Conections. Most connections aren't a DirectConnect connection, most of the time you're connecting to a cluster.


## 14.7.4

### Fixed

- Reverting the attempt at setting up a single replica set at startup for MongoDB in the development image


## 14.7.3

### Fixed

- Adding the missing `)` in the script for configuring the replica set for MongoDB.


## 14.7.2

### Fixed

- Fixing the initialization of replica set for MongoDB - if it fails because it has already been initialized, don't fail the entire container.


## 14.7.1

### Fixed

- Fixing so that `ChronicleUrl` can be bound to serialized configuration such as JSON, AppSettings or from Environment Variables. Introducing a type converter that converts it from string to `ChronicleUrl`.


## 14.7.0

### Added

- Adding health checks - including the underlying database in the health check. Default available at `/health` overridable in configuration.
- Adding logging to see what Chronicle instance the client is connecting to.


## 14.6.3

### Fixed

- Developer image will now make sure the MongoDB is initialized in single cluster mode.


## 14.6.2

### Fixed

- Adding missing hook up for environment varables for configuration of Chronicle options. 


## 14.6.1

### Fixed

- Internal formalization of well known expressions used to avoid magic string constants.


## 14.6.0

## Added

- Adding a way to include event metadata in the concurrency scope for the model bound commands by adding `concurrency` as an argument for the attributes. Once set to true and they'll be included. #​2210 

## 14.5.1

### Fixed

- Adding missing parameter for claim when configuring `WithClaimsBasedNamespaceResolver()`.


## 14.5.0

## Summary

This PR introduces configurable namespace resolvers for ASP.NET Core clients, enabling flexible multi-tenant scenarios. The namespace resolver determines which logical data partition (namespace) to use for Chronicle operations, making it easy to isolate data for different tenants or organizational units.

### Added

- Configurable namespace resolver support for ASP.NET Core clients via `EventStoreNamespaceResolverType` property in `ChronicleAspNetCoreOptions`
- Built-in `ClaimsBasedNamespaceResolver` for .NET Client that resolves namespace from current user's claims using `ClaimsPrincipal.Current` without requiring HTTP context
- Built-in `SubdomainNamespaceResolver` for ASP.NET Core that extracts namespace from the subdomain of HTTP request host
- `ClaimsBasedNamespaceResolverClaimType` property in `ChronicleOptions` with default value "tenant_id" for configuring the claim type used by `ClaimsBasedNamespaceResolver`
- Extension methods for easy configuration:
  - `WithClaimsBasedNamespaceResolver()` for `ChronicleOptions` - configures an instance using the claim type from options
  - `WithHttpHeaderNamespaceResolver(headerName)` for `ChronicleAspNetCoreOptions` - configures HTTP header-based resolution
  - `WithSubdomainNamespaceResolver()` for `ChronicleAspNetCoreOptions` - configures subdomain-based resolution
- Validation to ensure configured namespace resolver types are non-null and implement `IEventStoreNamespaceResolver`
- Comprehensive documentation for namespace resolution in .NET Client (`Documentation/clients/dotnet/namespaces.md`)
- New ASP.NET Core Client documentation section with overview and namespace resolution guide
- Tests for `ClaimsBasedNamespaceResolver` covering authenticated users, custom claim types, and unauthenticated scenarios
- Tests for `SubdomainNamespaceResolver` covering subdomain presence, absence, and missing HTTP context
- Tests for configurable namespace resolver scenarios including default behavior, custom types, instances, and error handling

### Fixed

- Code formatting issues identified by dotnet format analyzer

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey).


## 14.4.0

Adds support for tagging commands with event metadata (EventSourceType, EventStreamType, EventStreamId) that automatically flows through the command pipeline when appending events.

## Added

- Ability to control the event metadata through attributes (EventSourceType, EventStreamType, EventStreamId) (#​2207)
- Ability to provide EventStreamId more dynamically than just through static attributes. (#​2207)

## Fixes

- Fixed so that returning collection of events, it uses `AppendMany()` rather than `Append()` which would leave to an error.

## Usage example

```csharp
[EventSourceType("Account")]
[EventStreamType("Onboarding")]
[EventStreamId("Monthly")]
public record ProcessAccountOnboardingCommand([Key] Guid AccountId)
{
    public AccountOnboardingProcessed Handle()
    {
        return new AccountOnboardingProcessed { ProcessedAt = DateTime.UtcNow };
    }
}

// Or use interface for dynamic stream IDs
[EventSourceType("Order")]
[EventStreamType("Processing")]
public record ProcessTenantOrderCommand(Guid TenantId, [Key] Guid OrderId) 
    : ICanProvideEventStreamId
{
    public EventStreamId GetEventStreamId() => TenantId.ToString();
}

All metadata is automatically extracted and included when events are appended to the event log.

14.3.0

Added

  • Introducing a more flexible way to resolve namespace when one is not explicitly given. This includes the base .NET client. (#​2202)

14.2.11

Fixed

  • Fixed missing Cratis.Chronicle package dependency in Cratis.Chronicle.AspNetCore NuGet package when built with Repack=true (#​2091)

14.2.10

No release notes

14.2.9

Fixed

  • Fixing discovery of Grains by adding the necessary type metadata back after merging assemblies.

14.2.8

Fixed

  • Scoping issues with IRules and the RulesModelValidatorProvider. It is now registered as scoped and resolved from the correctly scoped service provider.

14.2.7

Fixed

  • Fixing lifecycle for the IRules service registration in the ASP.NET Core client, it was set to scoped but should've been singleton.
  • Removing dependency to JsonSerializerOptions - handling this internally, to avoid having to register the options.

14.2.6

Fixed

  • The naming policy was not honored for all cases for projections. This is now fixed, for .AutoMap() and explicit property definitions.

14.2.5

No release notes

14.2.4

Fixed

  • Fixing so that read models related to Rules projections (the rule itself) gets registered properly so that Projections gets registered correctly for them.

14.2.3

Fixed

  • Fixing so that read models related to Rules projections (the rule itself) gets registered properly so that Projections gets registered correctly for them.

14.2.2

Nothing new in this release. Fixing publishing problems from previous release.

14.2.1

Nothing new in this release. Fixing publishing problems from previous release.

14.2.0

Added

  • New package; Cratis.Chronicle.Applications with extensions for the Cratis Application Model command pipeline, allowing for pure functions that can return mutations that should occur in the form of events. This is hooked up through a builder
  • With Application Model support you can now take dependencies to an AggregateRoot directly and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.
  • With Application Model support you can now take dependencies to a ReadModel directly if there is a projection for it and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.

14.1.0

Added

  • New package; Cratis.Chronicle.Applications with extensions for the Cratis Application Model command pipeline, allowing for pure functions that can return mutations that should occur in the form of events. This is hooked up through a builder
  • With Application Model support you can now take dependencies to an AggregateRoot directly and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.
  • With Application Model support you can now take dependencies to a ReadModel directly if there is a projection for it and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.

14.0.14

No release notes

14.0.13

No release notes

14.0.12

No release notes

14.0.11

Fixed

  • Updated packages such as Cratis ApplicationModel and others

14.0.10

Summary

Updates dependency package versions

Commits viewable in compare view.

Updated Cratis.Chronicle.AspNetCore from 14.0.9 to 14.13.10.

Release notes

Sourced from Cratis.Chronicle.AspNetCore's releases.

14.13.10

Fixed

  • Exposing configurable gRPC messages sizes in the .NET Client and also defaulting it to 100MB, a little bit more than the default of 4MB :)

14.13.9

Fixed

  • Internal JSON conversion for events skipped TimeStamp due to missing support in a centralized converter found in Cratis Fundamentals. This is now updated.

14.13.8

Fixed

  • Added missing conversion for TimeSpan for MongoDB.
  • Fixing IsSet property on PropertyPath to consider an empty string as not set. This affected nested children scenarios for projections when constructing a path to use for querying for read models through the sink.
  • Consolidating how we deal with property naming in MongoDB and fixing so that we consistently convert id to _id to abide by MongoDB conventions.

14.13.7

Fixed

  • Fixing how we deal with projection futures and resolution in-memory. It didn't quite resolve things and ended up having stale projection futures.
  • Fixing so that child relationships don't pollute the changeset of the root with initial values.

14.13.6

Fixed

  • Fixing a problem with recursive projections and resolution of the root key. It will now look at more than just the first event type if it needs to try to resolve through events that has happened. If it can't resolve through events, it will try to resolve it through the sink through navigational queries to the parent.

14.13.5

Fixed

  • Fixing dependency from AppModel package to be towards Arc.Core instead of Arc.

14.13.4

Fixed

  • Upgrading Cratis Arc with support for TimeSpan serializer for MongoDB.

14.13.3

Fixed

  • Fixing Changeset consolidation to look for the correct property when dealing with array based consolidations - affects reducers and projections.
  • Fixing complex lookup through sink when navigating projection hierarchy to find root read model to apply changes to.

14.13.2

Fixed

  • Changeset used by Projections and Reducers are now consolidating themselves on every change, leading to more optimal updates towards read models and also avoiding conflicting situations.
  • Fixing so that types used either as children or as a complex type on a read model does not constitute a projection. Only root read models will be seen as projections when adorned with model bound projection attributes.

14.13.1

Fixed

  • Fixing recursiveness for model-bound projections. Not all of the attributes were part of recursive operations.

14.13.0

Fixed

  • Fixing so that model bound projection definitions are recursive for child relations, enabling it to generate correct projection definitions for children within children, supporting joins and other projection constructions as well.
  • Adding support for nested children that leverage the EventSourceId of the parent - resolving root read models using the Sink.
  • Adding support for out of order events for nested children by implementing "Projection Futures" - a durable storage for unresolved relationships that will be resolved when it can.

14.12.4

Fixed

  • Removal using RemovedWith was missing support for class/record level, which was the original intent. This is now fixed.

14.12.3

Fixed

  • Fixing so that the __lastHandledEventSequenceNumber is always correct in the MongoDB Sink. (#​1749)
  • Fixing the missing data when viewing event sequences in the workbench. This was due to a bug in the Cratis Application Model.
  • Configuration related to test setup - fixing aliasing and general developer experience.
  • Fixing numeric arithmetic when using Add/Subtract in projections. It will now use the correct type according to what is defined by the schema and have the correct fidelity for floating point numbers (float, double, decimal). (#​679)
  • Changing from ApplicationModel to the rebranded Arc components. Fixing all NuGet package references, namespaces and NPM packages.

14.12.1

Fixed

  • Upgrading to the latest version of Cratis Application Model with a fix for Azure CosmosDB - MongoDB RU bases instances and its Collection not found errors when working with Change Stream. It will now reciliently handle this and try to reconnect to the collection on regular interval (every second) and once the collection is there, it should be fine. Some of the APIs for the Workbench sits on top of collections and they might not be there, causing the workbench to misbehave. This should fix that issue.

14.12.0

Summary

This release adds support for .NET 10. It still supports .NET 8 and 9 for backwards compatibility.

Added

  • .NET 10 support 🎉

14.11.4

Fixed

  • Fixing so that when a projection changes, it will use the new definition automatically. This was what it was designed to do, but it were holding cached versions in the pipelines.

14.11.3

Fixed

  • Fixed so that children projections defined by model-bound attributes uses the naming policy to provide the IdentifiedBy name properly.
  • Increasing test coverage around model-bound attribute projections and use of naming policy.

14.11.2

Fixed

  • Fixing key resolution for ChildrenFrom<> attribute - it will now default to EventSourceId but honor the specific property name set if set.

14.11.1

Fixed

  • Fixing so that model bound projections honor the convention of an Id property being the default identifier and will include it as mapped to EventSourceId for children in a child projection. It will also honor the [Key] attribute as well as the [SetFromContext...] for children.

14.11.0

Summary

Adds event seeding to populate event stores with predefined data. Enables declarative seeding definitions that are automatically discovered and registered on application startup, with efficient deduplication ensuring events are only seeded once.

Added

  • Fluent interface for defining seeded events in declarative discovered classes based on the ICanSeedEvents interface:
    public class MySeeding : ICanSeedEvents
    {
        public void Seed(IEventSeedingBuilder builder) => builder
            .For<EventType>("event-source-id", [new(prop1, prop2)])
            .ForEventSource("event-source-id", [new EventType(prop1, prop2)]);
    }

14.10.6

Fixed

  • Fixing reloading of projections for Immediate projections and regular pipelines when projections change. This means that replay should now work as expected. Very helpful when during development.

14.10.5

Summary

Although this release has an addition, it should have no effect on anything and is so minor that we chose to keep it as a patch.

Added

  • Adding a constructor overload for EventSourceId for Guid values.

Fixed

  • Automatically map Id property for children when using the model-bound ChildrenFrom<> attribute for projections.
  • Fixing hookup of model bound read models to the IoC container. They are now supported, this was missing.

14.10.4

Fixed

  • Fixing server crash due to wrong assembly binding for Microsoft.OpenAPI - transient dependencies. Has been fixed in the Cratis.ApplicationModel.

14.10.3

No release notes

14.10.2

Fixed

  • Automapping for child mapping when working with model bound projections.

14.10.1

No release notes

14.10.0

Added

  • Added support for specifying custom key when using the [FromEvent] attribute for model bound projections, as one can with the declarative approach.

14.9.0

Added

  • Adding support for setting values from the EventContext linked to specific events types for model bound projections.

Fixed

  • Fixing so that the All definition is set for children definitions for model bound projections.
  • Fixing so that commands that fail append or append many on an event sequence populates the CommandResult correctly when using the model bound commands.

14.8.10

Fixed

  • Honoring if one returns a tuple where one of the values is assignable to EventSourceId in model-bound commands that returns tuples that include event or events.

14.8.9

Fixed

  • Fixing service collection bindings to not bind as factory via the IChronicleClient, but rather directly to the definitions in the actual options. This should avoid circular resolutions that we're seeing in some scenarios.

14.8.8

Fixed

  • Scoping for IEventStoreNamespaceResolver was wrong - it should be a singleton, not scoped.

14.8.7

Fixed

  • Adding service registration for IEventStoreNamespaceResolver when using ASP.NET Core
  • Adding service registration for ICorrelationIdAccessor when using ASP.NET Core

14.8.6

Fixed

  • Fixing discovery of what constitutes a model bound projection. It didn't include read models that only had attributes on properties / record constructor parameters.

14.8.5

Fixed

  • Read Model definition hookup for Model Bound projections.

14.8.4

Fixed

  • Fixing how the FromEvery definition is being generated and configured on the projection definition.

14.8.3

Fixed

  • Fixing conversion for PropertyExpression coming through the service layer as null needing to not be null - setting to .NotSet for those scenarios. The server was not honoring the contract.
  • Fixing uniqueness issues with event types being added multiple times to the projection definition.

14.8.2

Fixed

  • Exposing EventType from the model bound projection attributes that has an event type through the interface IEventBoundAttribute.

14.8.1

Fixed

  • Only some of the model bound projection attributes had interface representations for discoverability and type checking, this was an oversight . The missing interfaces had no impact on runtime as of now.

14.8.0

Summary

Implements model bound projections allowing one to addorn objects with attributes instructing the projection engine how to project specified events to the model (#​326)

Added

  • Property mapping attributes: SetFrom<TEvent>, AddFrom<TEvent>, SubtractFrom<TEvent>
  • Counter operation attributes: Increment<TEvent>, Decrement<TEvent>, Count<TEvent>
  • Advanced operation attributes: Join<TEvent>, RemovedWith<TEvent>, RemovedWithJoin<TEvent>
  • Convention-based mapping: FromEvent<TEvent> for automatic property matching
  • Child collection support: ChildrenFrom<TEvent> with recursive attribute processing
  • Configuration attributes: FromEventSequence, NotRewindable, Passive

Example Usage:

using Cratis.Chronicle.Keys;
using Cratis.Chronicle.Projections.ModelBound;

[FromEventSequence("default")]
[NotRewindable]
public record AccountInfo(
    [Key, FromEventSourceId]
    AccountId Id,
    
    [SetFrom<DebitAccountOpened>(nameof(DebitAccountOpened.Name))]
    AccountName Name,
    
    [AddFrom<DepositPerformed>(nameof(DepositPerformed.Amount))]
    [SubtractFrom<WithdrawalPerformed>(nameof(WithdrawalPerformed.Amount))]
    double Balance,
    
    [Increment<DepositPerformed>]
    [Decrement<WithdrawalPerformed>]
    int TransactionCount);

Children with Recursive Processing:

public record Cart(
    [Key, property: FromEventSourceId] Guid Id,
    
    [ChildrenFrom<ItemAdded>(key: nameof(ItemAdded.ItemId))]
    IEnumerable<CartItem> Items);

// Child type attributes are processed automatically
public record CartItem(
    [Key] string Id,
    [SetFrom<ItemAdded>] string Name,
 ... (truncated)

## 14.7.5

### Fixed

- Pulling in latest AppModel with a fix for DirectConnect not being default set to true for MongoDB Conections. Most connections aren't a DirectConnect connection, most of the time you're connecting to a cluster.


## 14.7.4

### Fixed

- Reverting the attempt at setting up a single replica set at startup for MongoDB in the development image


## 14.7.3

### Fixed

- Adding the missing `)` in the script for configuring the replica set for MongoDB.


## 14.7.2

### Fixed

- Fixing the initialization of replica set for MongoDB - if it fails because it has already been initialized, don't fail the entire container.


## 14.7.1

### Fixed

- Fixing so that `ChronicleUrl` can be bound to serialized configuration such as JSON, AppSettings or from Environment Variables. Introducing a type converter that converts it from string to `ChronicleUrl`.


## 14.7.0

### Added

- Adding health checks - including the underlying database in the health check. Default available at `/health` overridable in configuration.
- Adding logging to see what Chronicle instance the client is connecting to.


## 14.6.3

### Fixed

- Developer image will now make sure the MongoDB is initialized in single cluster mode.


## 14.6.2

### Fixed

- Adding missing hook up for environment varables for configuration of Chronicle options. 


## 14.6.1

### Fixed

- Internal formalization of well known expressions used to avoid magic string constants.


## 14.6.0

## Added

- Adding a way to include event metadata in the concurrency scope for the model bound commands by adding `concurrency` as an argument for the attributes. Once set to true and they'll be included. #​2210 

## 14.5.1

### Fixed

- Adding missing parameter for claim when configuring `WithClaimsBasedNamespaceResolver()`.


## 14.5.0

## Summary

This PR introduces configurable namespace resolvers for ASP.NET Core clients, enabling flexible multi-tenant scenarios. The namespace resolver determines which logical data partition (namespace) to use for Chronicle operations, making it easy to isolate data for different tenants or organizational units.

### Added

- Configurable namespace resolver support for ASP.NET Core clients via `EventStoreNamespaceResolverType` property in `ChronicleAspNetCoreOptions`
- Built-in `ClaimsBasedNamespaceResolver` for .NET Client that resolves namespace from current user's claims using `ClaimsPrincipal.Current` without requiring HTTP context
- Built-in `SubdomainNamespaceResolver` for ASP.NET Core that extracts namespace from the subdomain of HTTP request host
- `ClaimsBasedNamespaceResolverClaimType` property in `ChronicleOptions` with default value "tenant_id" for configuring the claim type used by `ClaimsBasedNamespaceResolver`
- Extension methods for easy configuration:
  - `WithClaimsBasedNamespaceResolver()` for `ChronicleOptions` - configures an instance using the claim type from options
  - `WithHttpHeaderNamespaceResolver(headerName)` for `ChronicleAspNetCoreOptions` - configures HTTP header-based resolution
  - `WithSubdomainNamespaceResolver()` for `ChronicleAspNetCoreOptions` - configures subdomain-based resolution
- Validation to ensure configured namespace resolver types are non-null and implement `IEventStoreNamespaceResolver`
- Comprehensive documentation for namespace resolution in .NET Client (`Documentation/clients/dotnet/namespaces.md`)
- New ASP.NET Core Client documentation section with overview and namespace resolution guide
- Tests for `ClaimsBasedNamespaceResolver` covering authenticated users, custom claim types, and unauthenticated scenarios
- Tests for `SubdomainNamespaceResolver` covering subdomain presence, absence, and missing HTTP context
- Tests for configurable namespace resolver scenarios including default behavior, custom types, instances, and error handling

### Fixed

- Code formatting issues identified by dotnet format analyzer

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey).


## 14.4.0

Adds support for tagging commands with event metadata (EventSourceType, EventStreamType, EventStreamId) that automatically flows through the command pipeline when appending events.

## Added

- Ability to control the event metadata through attributes (EventSourceType, EventStreamType, EventStreamId) (#​2207)
- Ability to provide EventStreamId more dynamically than just through static attributes. (#​2207)

## Fixes

- Fixed so that returning collection of events, it uses `AppendMany()` rather than `Append()` which would leave to an error.

## Usage example

```csharp
[EventSourceType("Account")]
[EventStreamType("Onboarding")]
[EventStreamId("Monthly")]
public record ProcessAccountOnboardingCommand([Key] Guid AccountId)
{
    public AccountOnboardingProcessed Handle()
    {
        return new AccountOnboardingProcessed { ProcessedAt = DateTime.UtcNow };
    }
}

// Or use interface for dynamic stream IDs
[EventSourceType("Order")]
[EventStreamType("Processing")]
public record ProcessTenantOrderCommand(Guid TenantId, [Key] Guid OrderId) 
    : ICanProvideEventStreamId
{
    public EventStreamId GetEventStreamId() => TenantId.ToString();
}

All metadata is automatically extracted and included when events are appended to the event log.

14.3.0

Added

  • Introducing a more flexible way to resolve namespace when one is not explicitly given. This includes the base .NET client. (#​2202)

14.2.11

Fixed

  • Fixed missing Cratis.Chronicle package dependency in Cratis.Chronicle.AspNetCore NuGet package when built with Repack=true (#​2091)

14.2.10

No release notes

14.2.9

Fixed

  • Fixing discovery of Grains by adding the necessary type metadata back after merging assemblies.

14.2.8

Fixed

  • Scoping issues with IRules and the RulesModelValidatorProvider. It is now registered as scoped and resolved from the correctly scoped service provider.

14.2.7

Fixed

  • Fixing lifecycle for the IRules service registration in the ASP.NET Core client, it was set to scoped but should've been singleton.
  • Removing dependency to JsonSerializerOptions - handling this internally, to avoid having to register the options.

14.2.6

Fixed

  • The naming policy was not honored for all cases for projections. This is now fixed, for .AutoMap() and explicit property definitions.

14.2.5

No release notes

14.2.4

Fixed

  • Fixing so that read models related to Rules projections (the rule itself) gets registered properly so that Projections gets registered correctly for them.

14.2.3

Fixed

  • Fixing so that read models related to Rules projections (the rule itself) gets registered properly so that Projections gets registered correctly for them.

14.2.2

Nothing new in this release. Fixing publishing problems from previous release.

14.2.1

Nothing new in this release. Fixing publishing problems from previous release.

14.2.0

Added

  • New package; Cratis.Chronicle.Applications with extensions for the Cratis Application Model command pipeline, allowing for pure functions that can return mutations that should occur in the form of events. This is hooked up through a builder
  • With Application Model support you can now take dependencies to an AggregateRoot directly and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.
  • With Application Model support you can now take dependencies to a ReadModel directly if there is a projection for it and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.

14.1.0

Added

  • New package; Cratis.Chronicle.Applications with extensions for the Cratis Application Model command pipeline, allowing for pure functions that can return mutations that should occur in the form of events. This is hooked up through a builder
  • With Application Model support you can now take dependencies to an AggregateRoot directly and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.
  • With Application Model support you can now take dependencies to a ReadModel directly if there is a projection for it and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.

14.0.14

No release notes

14.0.13

No release notes

14.0.12

No release notes

14.0.11

Fixed

  • Updated packages such as Cratis ApplicationModel and others

14.0.10

Summary

Updates dependency package versions

Commits viewable in compare view.

Updated Cratis.Chronicle.XUnit.Integration from 14.0.9 to 14.13.10.

Release notes

Sourced from Cratis.Chronicle.XUnit.Integration's releases.

14.13.10

Fixed

  • Exposing configurable gRPC messages sizes in the .NET Client and also defaulting it to 100MB, a little bit more than the default of 4MB :)

14.13.9

Fixed

  • Internal JSON conversion for events skipped TimeStamp due to missing support in a centralized converter found in Cratis Fundamentals. This is now updated.

14.13.8

Fixed

  • Added missing conversion for TimeSpan for MongoDB.
  • Fixing IsSet property on PropertyPath to consider an empty string as not set. This affected nested children scenarios for projections when constructing a path to use for querying for read models through the sink.
  • Consolidating how we deal with property naming in MongoDB and fixing so that we consistently convert id to _id to abide by MongoDB conventions.

14.13.7

Fixed

  • Fixing how we deal with projection futures and resolution in-memory. It didn't quite resolve things and ended up having stale projection futures.
  • Fixing so that child relationships don't pollute the changeset of the root with initial values.

14.13.6

Fixed

  • Fixing a problem with recursive projections and resolution of the root key. It will now look at more than just the first event type if it needs to try to resolve through events that has happened. If it can't resolve through events, it will try to resolve it through the sink through navigational queries to the parent.

14.13.5

Fixed

  • Fixing dependency from AppModel package to be towards Arc.Core instead of Arc.

14.13.4

Fixed

  • Upgrading Cratis Arc with support for TimeSpan serializer for MongoDB.

14.13.3

Fixed

  • Fixing Changeset consolidation to look for the correct property when dealing with array based consolidations - affects reducers and projections.
  • Fixing complex lookup through sink when navigating projection hierarchy to find root read model to apply changes to.

14.13.2

Fixed

  • Changeset used by Projections and Reducers are now consolidating themselves on every change, leading to more optimal updates towards read models and also avoiding conflicting situations.
  • Fixing so that types used either as children or as a complex type on a read model does not constitute a projection. Only root read models will be seen as projections when adorned with model bound projection attributes.

14.13.1

Fixed

  • Fixing recursiveness for model-bound projections. Not all of the attributes were part of recursive operations.

14.13.0

Fixed

  • Fixing so that model bound projection definitions are recursive for child relations, enabling it to generate correct projection definitions for children within children, supporting joins and other projection constructions as well.
  • Adding support for nested children that leverage the EventSourceId of the parent - resolving root read models using the Sink.
  • Adding support for out of order events for nested children by implementing "Projection Futures" - a durable storage for unresolved relationships that will be resolved when it can.

14.12.4

Fixed

  • Removal using RemovedWith was missing support for class/record level, which was the original intent. This is now fixed.

14.12.3

Fixed

  • Fixing so that the __lastHandledEventSequenceNumber is always correct in the MongoDB Sink. (#​1749)
  • Fixing the missing data when viewing event sequences in the workbench. This was due to a bug in the Cratis Application Model.
  • Configuration related to test setup - fixing aliasing and general developer experience.
  • Fixing numeric arithmetic when using Add/Subtract in projections. It will now use the correct type according to what is defined by the schema and have the correct fidelity for floating point numbers (float, double, decimal). (#​679)
  • Changing from ApplicationModel to the rebranded Arc components. Fixing all NuGet package references, namespaces and NPM packages.

14.12.1

Fixed

  • Upgrading to the latest version of Cratis Application Model with a fix for Azure CosmosDB - MongoDB RU bases instances and its Collection not found errors when working with Change Stream. It will now reciliently handle this and try to reconnect to the collection on regular interval (every second) and once the collection is there, it should be fine. Some of the APIs for the Workbench sits on top of collections and they might not be there, causing the workbench to misbehave. This should fix that issue.

14.12.0

Summary

This release adds support for .NET 10. It still supports .NET 8 and 9 for backwards compatibility.

Added

  • .NET 10 support 🎉

14.11.4

Fixed

  • Fixing so that when a projection changes, it will use the new definition automatically. This was what it was designed to do, but it were holding cached versions in the pipelines.

14.11.3

Fixed

  • Fixed so that children projections defined by model-bound attributes uses the naming policy to provide the IdentifiedBy name properly.
  • Increasing test coverage around model-bound attribute projections and use of naming policy.

14.11.2

Fixed

  • Fixing key resolution for ChildrenFrom<> attribute - it will now default to EventSourceId but honor the specific property name set if set.

14.11.1

Fixed

  • Fixing so that model bound projections honor the convention of an Id property being the default identifier and will include it as mapped to EventSourceId for children in a child projection. It will also honor the [Key] attribute as well as the [SetFromContext...] for children.

14.11.0

Summary

Adds event seeding to populate event stores with predefined data. Enables declarative seeding definitions that are automatically discovered and registered on application startup, with efficient deduplication ensuring events are only seeded once.

Added

  • Fluent interface for defining seeded events in declarative discovered classes based on the ICanSeedEvents interface:
    public class MySeeding : ICanSeedEvents
    {
        public void Seed(IEventSeedingBuilder builder) => builder
            .For<EventType>("event-source-id", [new(prop1, prop2)])
            .ForEventSource("event-source-id", [new EventType(prop1, prop2)]);
    }

14.10.6

Fixed

  • Fixing reloading of projections for Immediate projections and regular pipelines when projections change. This means that replay should now work as expected. Very helpful when during development.

14.10.5

Summary

Although this release has an addition, it should have no effect on anything and is so minor that we chose to keep it as a patch.

Added

  • Adding a constructor overload for EventSourceId for Guid values.

Fixed

  • Automatically map Id property for children when using the model-bound ChildrenFrom<> attribute for projections.
  • Fixing hookup of model bound read models to the IoC container. They are now supported, this was missing.

14.10.4

Fixed

  • Fixing server crash due to wrong assembly binding for Microsoft.OpenAPI - transient dependencies. Has been fixed in the Cratis.ApplicationModel.

14.10.3

No release notes

14.10.2

Fixed

  • Automapping for child mapping when working with model bound projections.

14.10.1

No release notes

14.10.0

Added

  • Added support for specifying custom key when using the [FromEvent] attribute for model bound projections, as one can with the declarative approach.

14.9.0

Added

  • Adding support for setting values from the EventContext linked to specific events types for model bound projections.

Fixed

  • Fixing so that the All definition is set for children definitions for model bound projections.
  • Fixing so that commands that fail append or append many on an event sequence populates the CommandResult correctly when using the model bound commands.

14.8.10

Fixed

  • Honoring if one returns a tuple where one of the values is assignable to EventSourceId in model-bound commands that returns tuples that include event or events.

14.8.9

Fixed

  • Fixing service collection bindings to not bind as factory via the IChronicleClient, but rather directly to the definitions in the actual options. This should avoid circular resolutions that we're seeing in some scenarios.

14.8.8

Fixed

  • Scoping for IEventStoreNamespaceResolver was wrong - it should be a singleton, not scoped.

14.8.7

Fixed

  • Adding service registration for IEventStoreNamespaceResolver when using ASP.NET Core
  • Adding service registration for ICorrelationIdAccessor when using ASP.NET Core

14.8.6

Fixed

  • Fixing discovery of what constitutes a model bound projection. It didn't include read models that only had attributes on properties / record constructor parameters.

14.8.5

Fixed

  • Read Model definition hookup for Model Bound projections.

14.8.4

Fixed

  • Fixing how the FromEvery definition is being generated and configured on the projection definition.

14.8.3

Fixed

  • Fixing conversion for PropertyExpression coming through the service layer as null needing to not be null - setting to .NotSet for those scenarios. The server was not honoring the contract.
  • Fixing uniqueness issues with event types being added multiple times to the projection definition.

14.8.2

Fixed

  • Exposing EventType from the model bound projection attributes that has an event type through the interface IEventBoundAttribute.

14.8.1

Fixed

  • Only some of the model bound projection attributes had interface representations for discoverability and type checking, this was an oversight . The missing interfaces had no impact on runtime as of now.

14.8.0

Summary

Implements model bound projections allowing one to addorn objects with attributes instructing the projection engine how to project specified events to the model (#​326)

Added

  • Property mapping attributes: SetFrom<TEvent>, AddFrom<TEvent>, SubtractFrom<TEvent>
  • Counter operation attributes: Increment<TEvent>, Decrement<TEvent>, Count<TEvent>
  • Advanced operation attributes: Join<TEvent>, RemovedWith<TEvent>, RemovedWithJoin<TEvent>
  • Convention-based mapping: FromEvent<TEvent> for automatic property matching
  • Child collection support: ChildrenFrom<TEvent> with recursive attribute processing
  • Configuration attributes: FromEventSequence, NotRewindable, Passive

Example Usage:

using Cratis.Chronicle.Keys;
using Cratis.Chronicle.Projections.ModelBound;

[FromEventSequence("default")]
[NotRewindable]
public record AccountInfo(
    [Key, FromEventSourceId]
    AccountId Id,
    
    [SetFrom<DebitAccountOpened>(nameof(DebitAccountOpened.Name))]
    AccountName Name,
    
    [AddFrom<DepositPerformed>(nameof(DepositPerformed.Amount))]
    [SubtractFrom<WithdrawalPerformed>(nameof(WithdrawalPerformed.Amount))]
    double Balance,
    
    [Increment<DepositPerformed>]
    [Decrement<WithdrawalPerformed>]
    int TransactionCount);

Children with Recursive Processing:

public record Cart(
    [Key, property: FromEventSourceId] Guid Id,
    
    [ChildrenFrom<ItemAdded>(key: nameof(ItemAdded.ItemId))]
    IEnumerable<CartItem> Items);

// Child type attributes are processed automatically
public record CartItem(
    [Key] string Id,
    [SetFrom<ItemAdded>] string Name,
 ... (truncated)

## 14.7.5

### Fixed

- Pulling in latest AppModel with a fix for DirectConnect not being default set to true for MongoDB Conections. Most connections aren't a DirectConnect connection, most of the time you're connecting to a cluster.


## 14.7.4

### Fixed

- Reverting the attempt at setting up a single replica set at startup for MongoDB in the development image


## 14.7.3

### Fixed

- Adding the missing `)` in the script for configuring the replica set for MongoDB.


## 14.7.2

### Fixed

- Fixing the initialization of replica set for MongoDB - if it fails because it has already been initialized, don't fail the entire container.


## 14.7.1

### Fixed

- Fixing so that `ChronicleUrl` can be bound to serialized configuration such as JSON, AppSettings or from Environment Variables. Introducing a type converter that converts it from string to `ChronicleUrl`.


## 14.7.0

### Added

- Adding health checks - including the underlying database in the health check. Default available at `/health` overridable in configuration.
- Adding logging to see what Chronicle instance the client is connecting to.


## 14.6.3

### Fixed

- Developer image will now make sure the MongoDB is initialized in single cluster mode.


## 14.6.2

### Fixed

- Adding missing hook up for environment varables for configuration of Chronicle options. 


## 14.6.1

### Fixed

- Internal formalization of well known expressions used to avoid magic string constants.


## 14.6.0

## Added

- Adding a way to include event metadata in the concurrency scope for the model bound commands by adding `concurrency` as an argument for the attributes. Once set to true and they'll be included. #​2210 

## 14.5.1

### Fixed

- Adding missing parameter for claim when configuring `WithClaimsBasedNamespaceResolver()`.


## 14.5.0

## Summary

This PR introduces configurable namespace resolvers for ASP.NET Core clients, enabling flexible multi-tenant scenarios. The namespace resolver determines which logical data partition (namespace) to use for Chronicle operations, making it easy to isolate data for different tenants or organizational units.

### Added

- Configurable namespace resolver support for ASP.NET Core clients via `EventStoreNamespaceResolverType` property in `ChronicleAspNetCoreOptions`
- Built-in `ClaimsBasedNamespaceResolver` for .NET Client that resolves namespace from current user's claims using `ClaimsPrincipal.Current` without requiring HTTP context
- Built-in `SubdomainNamespaceResolver` for ASP.NET Core that extracts namespace from the subdomain of HTTP request host
- `ClaimsBasedNamespaceResolverClaimType` property in `ChronicleOptions` with default value "tenant_id" for configuring the claim type used by `ClaimsBasedNamespaceResolver`
- Extension methods for easy configuration:
  - `WithClaimsBasedNamespaceResolver()` for `ChronicleOptions` - configures an instance using the claim type from options
  - `WithHttpHeaderNamespaceResolver(headerName)` for `ChronicleAspNetCoreOptions` - configures HTTP header-based resolution
  - `WithSubdomainNamespaceResolver()` for `ChronicleAspNetCoreOptions` - configures subdomain-based resolution
- Validation to ensure configured namespace resolver types are non-null and implement `IEventStoreNamespaceResolver`
- Comprehensive documentation for namespace resolution in .NET Client (`Documentation/clients/dotnet/namespaces.md`)
- New ASP.NET Core Client documentation section with overview and namespace resolution guide
- Tests for `ClaimsBasedNamespaceResolver` covering authenticated users, custom claim types, and unauthenticated scenarios
- Tests for `SubdomainNamespaceResolver` covering subdomain presence, absence, and missing HTTP context
- Tests for configurable namespace resolver scenarios including default behavior, custom types, instances, and error handling

### Fixed

- Code formatting issues identified by dotnet format analyzer

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey).


## 14.4.0

Adds support for tagging commands with event metadata (EventSourceType, EventStreamType, EventStreamId) that automatically flows through the command pipeline when appending events.

## Added

- Ability to control the event metadata through attributes (EventSourceType, EventStreamType, EventStreamId) (#​2207)
- Ability to provide EventStreamId more dynamically than just through static attributes. (#​2207)

## Fixes

- Fixed so that returning collection of events, it uses `AppendMany()` rather than `Append()` which would leave to an error.

## Usage example

```csharp
[EventSourceType("Account")]
[EventStreamType("Onboarding")]
[EventStreamId("Monthly")]
public record ProcessAccountOnboardingCommand([Key] Guid AccountId)
{
    public AccountOnboardingProcessed Handle()
    {
        return new AccountOnboardingProcessed { ProcessedAt = DateTime.UtcNow };
    }
}

// Or use interface for dynamic stream IDs
[EventSourceType("Order")]
[EventStreamType("Processing")]
public record ProcessTenantOrderCommand(Guid TenantId, [Key] Guid OrderId) 
    : ICanProvideEventStreamId
{
    public EventStreamId GetEventStreamId() => TenantId.ToString();
}

All metadata is automatically extracted and included when events are appended to the event log.

14.3.0

Added

  • Introducing a more flexible way to resolve namespace when one is not explicitly given. This includes the base .NET client. (#​2202)

14.2.11

Fixed

  • Fixed missing Cratis.Chronicle package dependency in Cratis.Chronicle.AspNetCore NuGet package when built with Repack=true (#​2091)

14.2.10

No release notes

14.2.9

Fixed

  • Fixing discovery of Grains by adding the necessary type metadata back after merging assemblies.

14.2.8

Fixed

  • Scoping issues with IRules and the RulesModelValidatorProvider. It is now registered as scoped and resolved from the correctly scoped service provider.

14.2.7

Fixed

  • Fixing lifecycle for the IRules service registration in the ASP.NET Core client, it was set to scoped but should've been singleton.
  • Removing dependency to JsonSerializerOptions - handling this internally, to avoid having to register the options.

14.2.6

Fixed

  • The naming policy was not honored for all cases for projections. This is now fixed, for .AutoMap() and explicit property definitions.

14.2.5

No release notes

14.2.4

Fixed

  • Fixing so that read models related to Rules projections (the rule itself) gets registered properly so that Projections gets registered correctly for them.

14.2.3

Fixed

  • Fixing so that read models related to Rules projections (the rule itself) gets registered properly so that Projections gets registered correctly for them.

14.2.2

Nothing new in this release. Fixing publishing problems from previous release.

14.2.1

Nothing new in this release. Fixing publishing problems from previous release.

14.2.0

Added

  • New package; Cratis.Chronicle.Applications with extensions for the Cratis Application Model command pipeline, allowing for pure functions that can return mutations that should occur in the form of events. This is hooked up through a builder
  • With Application Model support you can now take dependencies to an AggregateRoot directly and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.
  • With Application Model support you can now take dependencies to a ReadModel directly if there is a projection for it and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.

14.1.0

Added

  • New package; Cratis.Chronicle.Applications with extensions for the Cratis Application Model command pipeline, allowing for pure functions that can return mutations that should occur in the form of events. This is hooked up through a builder
  • With Application Model support you can now take dependencies to an AggregateRoot directly and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.
  • With Application Model support you can now take dependencies to a ReadModel directly if there is a projection for it and it will leverage conventions to resolve it from the command, or if the command implements ICanProvideEventSourceId.

14.0.14

No release notes

14.0.13

No release notes

14.0.12

No release notes

14.0.11

Fixed

  • Updated packages such as Cratis ApplicationModel and others

14.0.10

Summary

Updates dependency package versions

Commits viewable in compare view.

Updated Cratis.Fundamentals from 7.0.0 to 7.2.8.

Release notes

Sourced from Cratis.Fundamentals's releases.

7.2.8

Fixed

  • Fixing TimeSpan parsing in the JsonValue conversion to convert it to string and then parse, this seems to be a better approach.

7.2.7

Fixed

  • Added missing JsonValue conversion for TimeStamp in JsonValueExtensions.
  • Fixed broken byte conversion that was only going one way in JsonValueExtensions.

7.2.6

Fixed

  • Stepping back from overriding all the Microsoft.Extensions.* packages for .NET8 and 9

7.2.5

Fixed

  • For maximum compatibility between .NET versions, putting in specific versions for some dependencies.

7.2.4

Added

  • Added support for TimeSpan in TypeConversion.
  • Hooking up ICorrelationIdModifier to the ServiceCollection.

7.2.3

Summary

Update dependency versions

7.2.2

Summary

Build and release packages for .net 10

7.2.1

Fixed

  • Upgrading 3rd party dependencies.

7.2.0

Added

  • Static class AwaitableHelpers with AwaitIfNeeded method that can be used on a Task, Task<T>, ValueTask or ValueTask<T> to await and get the result.

Changed

  • Updated dependencies across the board

7.1.0

Added

  • Added a IsDelegate() extension method for Type.

Commits viewable in compare view.

Updated Testcontainers from 4.7.0 to 4.9.0.

Release notes

Sourced from Testcontainers's releases.

4.9.0

What's Changed

This release adds a new configuration (DOCKER_API_VERSION) that lets you pin and downgrade the Docker Engine API version. This was needed because Docker Engine v29 introduced breaking changes that affect Docker.DotNet and Testcontainers for .NET. This release pins the API version to 1.44. So far, no issues or negative side effects have been observed.

I am also working on updating Docker.DotNet to make it fully compatible with Docker Engine v29. There is already a work-in-progress PR.

Thanks to all the contributors who helped with this release 👍.

⚠️ Breaking Changes

  • feat: Add KurrentDb module (#​1583) @​diegosasw

🚀 Features

  • feat: Add KurrentDb module (#​1583) @​diegosasw
  • chore: Bump NuGet dependencies (#​1578) @​HofmeisterAn
  • feat: Add .NET 10 support (#​1572) @​HofmeisterAn
  • feat: Support configuring Docker API version (#​1576) @​HofmeisterAn
  • feat: Add Mosquitto module (#​1522) @​EtherZa
  • feat: Add Toxiproxy module (#​1454) @​iltertaha
  • feat: Add Grafana module (#​1509) @​thomhurst
  • feat: Add Playwright module (#​1288) @​alimahboubi

🐛 Bug Fixes

  • fix(Milvus): Set DEPLOY_MODE=STANDALONE (necessary for v2.6+) (#​1569) @​verdie-g
  • fix: Set Kusto wait strategy encoding to UTF-8 (#​1567) @​MattKotsenas
  • fix: Split ALL_CHANGED_FILES on any whitespace (#​1566) @​HofmeisterAn

📖 Documentation

  • docs: Use correct comment characters for C# language (#​1564) @​HofmeisterAn

🧹 Housekeeping

  • feat: Add SLNX file (#​1579) @​HofmeisterAn
  • chore: Update Toxiproxy NuGet dependency to a .NET compatible version (#​1568) @​HofmeisterAn
  • chore: Add script to detect which tests to run in CI (#​1563) @​HofmeisterAn
  • chore: Make the continuous delivery job fork-friendly (#​1559) @​0xced
  • feat: Prepare next release cycle (4.9.0) (#​1561) @​HofmeisterAn

4.8.1

What's Changed

🐛 Bug Fix...

_Descri...

Description has been truncated

Bumps Cratis.Chronicle from 14.0.9 to 14.13.10
Bumps Cratis.Chronicle.AspNetCore from 14.0.9 to 14.13.10
Bumps Cratis.Chronicle.XUnit.Integration from 14.0.9 to 14.13.10
Bumps Cratis.Fundamentals from 7.0.0 to 7.2.8
Bumps Testcontainers from 4.7.0 to 4.9.0

---
updated-dependencies:
- dependency-name: Cratis.Chronicle
  dependency-version: 14.13.10
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: Cratis.Chronicle.AspNetCore
  dependency-version: 14.13.10
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: Cratis.Chronicle.XUnit.Integration
  dependency-version: 14.13.10
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: Cratis.Fundamentals
  dependency-version: 7.2.8
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: Testcontainers
  dependency-version: 4.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Dec 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants