All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog but this project DOES NOT adhere to Semantic Versioning.
LeanCode.Kratos
has switched from official (and at the time outdated) client packageOry.Kratos.Client
to our ownLeanCode.Kratos.Client
that is maintained at https://github.com/leancodepl/dotnet-kratos-client and with this the usage has changed:- Underlying JSON (de)serializer is now STJ instead of JSON.NET
- Values returned from client's API calls are now wrapped in response objects that provide additional info
- Models were rebuilt, adding support for NRT and wrapping optional properties in
Option<T>
(importantly, the latter can change how identity metadata should be read) - The client comes with its own DI registration extensions, changing how it should be added to DI container
- Better tracing across CQRS executions
- Upgrade to .NET 8
- Add
LeanCode.Kratos
- Remove custom outbox in favor of MassTransit Outbox
- Switch to
.Add*
pattern for DI configuration, removing Autofac andIAppModule
s - Use Endpoint Routing for RemoteCQRS
- Remove custom pipelines, use ASP.NET mechanism of middlewares
- Remove
AppContext
in favor of usingHttpContext
directly - Support Azure Workload Identity
- Improve CoreLib-provided logging, tracing and metrics
- Remove singleton/scoped FluentValidation configuration, remove
RuleForAsync
in favor ofCustomAsync
- Introduce exception translation middleware,
- Add Ulids as a valid source-generated ID
- Switch to
System.TimeProvider
, removingITimeProvider
- Improved PostgreSQL handling
- UserId is now a generic type in most of the helpers
- Rename
IIdentifiable
toIEntity
- Extensive documentation
- Upgrade to .NET 7
- Remove Cache abstractions
- Remove
LeanCode.AsyncTasks
and Hangfire-based implementation FindAndEnsureExistsAsync
now throwsEntityDoesNotExistException
- Remove
AddAsync
,UpdateAsync
,DeleteAsync
andDeleteRangeAsync
fromEFRepository
andIRepository
- Remove
IRepository<T>
- Change
EFRepository.Update
so that it does not calldbContext.Update
anymore - Rework
FixedTimeProvider
so that if it doesn't find a date in asynchronous local storage it will return the current now instead of zero date - Add middleware to log query's and operation's responses
- Rework
JsonLaxDateOnlyConverter
to read into a stack-allocated span instead of heap-allocating strings - Add
JsonLaxTimeOnlyConverter
andJsonLaxDateTimeOffsetConverter
- Extract
StyleCop
out ofCodeAnalysis
- Add source-generated IDs
- Add Fluent Validators scoped to request
- Upgrade MassTransit to v8
- Add Operations
- Make FCM abstraction work with PostgreSQL
- Upgrade to .NET 6
- Remove
IdentityProvider
- Remove
System.Time
(it is available in .NET 6) - Promote using Azure MSI & add LeanCode Azure default credential provider
- Introduce
SId
&LId
- Switch to OpenTracing
- Remove LeanCode.ContractsGenerator in favor of the new contracts generator
- Package bump
- Remove
LeanCode.Facebook
, - Support FB in
LeanCode.ExternalIdentityProviders
- Change
ValueObject
to abstract record
- Upgrade to .NET 5.0
- Use
CancellationToken
in CQRS pipeline and some integrations - Import
System.Time
from corefxlab asLeanCode.Time
- Add strongly–typed IDs (
Id<T>
/IId<T>
) - Remove
IUnitOfWork
,LeanCode.PushNotifications
and in–proc event handlers - Rework PdfRocket integration
- Throw exceptions on SendGrid call failures
- Bump packages (MassTransit to v7, IdentityServer4 to v4)
- MassTransit inbox/outbox pattern
- Upgrade to .NET Core 3.1
- Upgrade to .NET Core 3.0
- Bump C# language version to 8.0
- Add support for Nullable Reference Types
- Multiple breaking changes related to Razor, events, async methods and more
- Remove now redundant calls to ConfigureAwait in async methods
- Replace Newtonsoft.Json with System.Text.Json
AsyncTasks.Hangfire
does not prepare schema by default nowBackgroundProcessingApp
is nowHangfireTasksModule
- Add MassTransit integration
- Replace hand-written SendGrid client with a small wrapper over official Client
- Rewrite of EFMigrator
- All projects must be Localized now
- AutoMapper is no longer supported
- Upgrade to .NET Core 2.2 & Newtonsoft.Json 12
- Switch most of the projects to netcoreapp2.2
- Embed source in nupkgs and do not publish symbol packages
- Switch to FluentValidation 8, which results in breaking change:
RuleForAsync
is now instance method ofContextualValidator
- Build is now done on Jenkins
Switch to dockerized build (and new FAKE) Cleanup shared target files and remove LeanCode.Dependencies
Switch to .NET Core 2.1
The great versioning
Migrate to .NET Core 2 Migrate to Razor 2
Separated CQRS public interfaces/implementations Pipelines
Initial release with base packages Basic CQRS, domain models, basic infrastructure
Project initiation, no packages were released.