Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "6.5.2"
".": "7.0.0"
}
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

CSharpEssentials is a modular .NET NuGet ecosystem (27 packages) that bridges OOP and Functional Programming in C#. Core patterns: Result/Maybe monads, Discriminated Unions (Any<T1,T2,...>), composable Rules engine, DDD base classes (EntityBase), EF Core interceptors/pagination, ASP.NET Core utilities, source-generated Minimal API endpoints (CSharpEssentials.Endpoints) and attribute-based DI registration (CSharpEssentials.DependencyInjection). Multi-targets: .NET 11/10/9 (some packages also net8.0), netstandard2.1 (a few also netstandard2.0). CSharpEssentials.EntityFrameworkCore targets net10.0/net9.0/net8.0 only (no net11.0), each pinned to its EF Core major. CSharpEssentials.AspNetCore.OpenApi targets net10.0 only.

Current version: 6.5.2 <!-- x-release-please-version -->
Current version: 7.0.0 <!-- x-release-please-version -->

## Why

Expand Down
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,29 @@
All notable changes to the CSharpEssentials packages are listed here. All packages share one version number.
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [7.0.0](https://github.com/senrecep/CSharpEssentials/compare/v6.5.2...v7.0.0) (2026-10-20)


### ⚠ BREAKING CHANGES

* **idempotency:** idempotency moves to the new CSharpEssentials.Idempotency core; see [the migration guide](https://github.com/senrecep/CSharpEssentials/blob/main/docs/migration/v6-to-v7-idempotency.md).
- `IIdempotencyStore`, `IdempotencyReservation`, `IdempotencyReservationStatus`, `InMemoryIdempotencyStore` and `DistributedCacheIdempotencyStore` are removed from `CSharpEssentials.AspNetCore`; use `IIdempotencyRecordStore`, `InMemoryIdempotencyRecordStore` and `DistributedCacheIdempotencyRecordStore`.
- `IdempotencyOptions.KeyScope` and `DefaultKeyScope` are removed; use `ScopeResolver` with `IdempotencyScopes`. Scopes are built only through the `IdempotencyScope` factories, and `AllowUnscopedKeys` is replaced by `UnscopedKeyBehavior`.
- `IdempotencyOptions.ShouldStore` is a `Func<IdempotencyOutcome, bool>` instead of a `Func<int, bool>`; `IdempotencyStorePolicies.SuccessOnly` restores the 6.x rule.
- `IdempotencyOptions.RetryAfter` is a non-nullable `TimeSpan`; the 409 always carries `Retry-After`.
- A 5xx after the handler started is stored for `ServerErrorRetention`; 503, 504, exceptions and aborts after the handler started keep the key in flight until `InFlightTimeout` instead of releasing it.
- A key must be printable ASCII other than space, `"` and `\`; other keys get 400 `Idempotency.KeyInvalid`.
- `IdempotencyOptions` is resolved as a transient `CurrentValue`, and records use the `idem:v3:` storage key format, so 6.x entries are not read.

### Added

* **idempotency:** production-grade idempotency across http, mediator, messaging and ef core ([42287de](https://github.com/senrecep/CSharpEssentials/commit/42287de0e8a0663cd72c2d203e16315d44a12643))


### Fixed

* **idempotency:** store observe results in the business transaction ([#158](https://github.com/senrecep/CSharpEssentials/issues/158)) ([bdcbdd1](https://github.com/senrecep/CSharpEssentials/commit/bdcbdd15cbedda81a95e4e81754c0c594bfade8e))

## [6.5.2](https://github.com/senrecep/CSharpEssentials/compare/v6.5.1...v6.5.2) (2026-10-10)


Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
<RepositoryBranch>main</RepositoryBranch>

<!-- Version management -->
<Version>6.5.2</Version> <!-- x-release-please-version -->
<Version>7.0.0</Version> <!-- x-release-please-version -->

<!-- Documentation -->
<IncludeSymbols>true</IncludeSymbols>
Expand Down
Loading