6.0 KiB
6.0 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[2.2.0] - 2026-07-31
Added
- Actors facade:
IDaprActorService/DaprActorService— create typed/weak actor clients and invoke methods withResultoutcomes; DIRegisterActors(configure?)and pipelineRegisterActorsHandlers(). - Workflows facade:
IDaprWorkflowService/DaprWorkflowService— schedule, get/wait state, raise event, terminate/suspend/resume/purge, list instance IDs, get history, rerun from event; DIRegisterWorkflows(configure?). - Pub/Sub facade rename/expand:
IDaprPubSubService— publish with metadata, byte publish, bulk publish; DIRegisterPubSub(). - State expand: bulk get/save/delete,
TryDeleteStateAsync,QueryStateAsync,ExecuteStateTransactionAsync, optional metadata/consistency/options on existing methods. - Client facades: invocation, binding, secrets, configuration, cryptography, sidecar (
IDapr*Service) +Register*andRegisterDaprClientFacades(). - Lock facade:
IDaprLockService/DaprLockService—LockAsync/UnlockAsyncwithResultoutcomes; DIRegisterLock()(included inRegisterDaprClientFacades()). - HA helpers:
TryHoldAsync/DaprWorkLeaseHold(auto-renew +Generationfencing),LeasedBackgroundService,DaprWorkLeaseBootstrap.RunBootstrapUnderLeaseAsync,RegisterWorkLeases(storeName)/IDaprWorkLeaseOptions. - Work leases rename:
IDaprWorkLeaseStore/DaprWorkLeaseStore→IDaprWorkLeaseService/DaprWorkLeaseService.
Fixed
- State get miss on
state.jetstream:GetStateAndETagAsync/GetStateAsynctreat NATS/Daprkey not found(often gRPCInternal) as empty without logging Error — so work-lease first acquire works after release or on a fresh bucket. - Results hygiene: rethrow
OperationCanceledException;BadRequestfor empty store/key or pubsub/topic; idempotentDeleteStateAsyncwhen key is missing. - DI:
AddDaprClientis skipped perIServiceCollectionwhenDaprClientis already registered (no process-wide static flag). - Docs: README and CONTRIBUTING aligned with
net10.0, RepoUtils Non-Helm bats, and current package version.
Changed
- Work leases layout: all HA lease types live under
Services/WorkLease/(MaksIT.Dapr.Services.WorkLease) —DaprWorkLease,DaprWorkLeaseHold/ bootstrap /LeasedBackgroundService,DaprWorkLeaseService,IDaprWorkLeaseOptions,IDaprRuntimeInstanceId. GetStateAsyncmiss: returnsOk(null)instead ofNotFound(aligned with ETag get and typical MaksIT optional-read pattern). CheckValue is nullfor absence;!IsSuccessmeans infra failure.- CancellationToken: optional
cancellationTokenon facade APIs; leaseReleaseAsyncforwards it to delete. - Invocation:
DaprInvocationServiceusesDaprClient.CreateInvokableHttpClient(HTTP POST + JSON) instead of obsoleteInvokeMethodAsync(appId, method…)helpers. - Workflows DI:
RegisterWorkflows()calls parameterlessAddDaprWorkflow()when no configure delegate is passed (SDK 1.18 auto-discovers workflows/activities). - Dependencies: Dapr packages bumped to
1.18.5. - Docs: README documents each facade (when to use / when not, DI, API), including lock vs work-lease guidance, and a short coordination-pattern chooser.
- XML docs on public APIs;
GenerateDocumentationFileenabled. - Removed obsolete
assets/badgespack items (CoverageBadges uses shields.io). - Package version 2.2.0.
Removed
- Custom pub/sub accept types and
IDaprPubSubWorkHandler(DaprPubSubAcceptOutcome,DaprPubSubAcceptResult,DaprPubSubAck). Topic controllers should returnMaksIT.Results.ResultviaToActionResult()directly (OkACK,ServiceUnavailableretry,BadRequestdrop). IDaprPublisherService/RegisterPublisher(useIDaprPubSubService/RegisterPubSub).- Leftover
DaprWorkLeaseStoreandPubSub/DaprPubSubWorktypes (no obsolete shims). DaprFacadeGuardhelper (inline try/catch + validation in each service).
[2.1.0] - 2026-07-30
Added
- HA work leases via Dapr state:
IDaprWorkLeaseService/DaprWorkLeaseService(acquire, renew, release, get) using ETag concurrency — broker-agnostic (NATS KV / Postgres / other state Component). - State ETag API:
GetStateAndETagAsyncandTrySaveStateAsynconIDaprStateStoreService. - Runtime instance id:
IDaprRuntimeInstanceId/DaprRuntimeInstanceIdProvider(POD_NAMEin Kubernetes). - Pub/sub worker helpers:
IDaprPubSubWorkHandler<T>,DaprPubSubAcceptOutcome/DaprPubSubAcceptResult,DaprPubSubAck(HTTP ACK/NAK mapping). - DI:
RegisterWorkLeases()registers state store + work-lease service + instance id.
Changed
- Package version 2.1.0.
[2.0.1] - 2026-06-28
Changed
- Restored repository automation under
utils/(aligned with maksit-core and maksit-repoutils). Configure release and test flows inutils/engines/*/scriptSettings.json. - Updated dependencies to Dapr
1.18.4,MaksIT.Core1.6.8, andMaksIT.Results2.0.3.
[2.0.0] - 2026-02-22
Added
- Dedicated test project (
MaksIT.Dapr.Tests) with coverage for publisher and state-store service behavior. - Repository-level utility modules and scripts under
utils/for release automation, coverage badge generation, and tagged-commit maintenance.
Changed
- Upgraded target framework to
.NET 10(net10.0). - Updated core dependencies to Dapr
1.16.1,MaksIT.Core1.6.4, andMaksIT.Results2.0.0. - Migrated solution definition from
MaksIT.Dapr.slntoMaksIT.Dapr.slnx, including test project wiring. - NuGet packaging now includes
CHANGELOG.mdand coverage badge assets.
Removed
- Legacy root-level release scripts (
Release-NuGetPackage.*) in favor of theutils/Release-NuGetPackage/flow.