diff --git a/daprblog/content/posts/2026/_index.md b/daprblog/content/posts/2026/_index.md new file mode 100644 index 0000000..127c111 --- /dev/null +++ b/daprblog/content/posts/2026/_index.md @@ -0,0 +1,5 @@ +--- +title: "2026" +linkTitle: "2026" +type: blog +--- \ No newline at end of file diff --git a/daprblog/content/posts/2026/v117-release/dapr-release-1.17-v1.png b/daprblog/content/posts/2026/v117-release/dapr-release-1.17-v1.png new file mode 100644 index 0000000..5cbdfed Binary files /dev/null and b/daprblog/content/posts/2026/v117-release/dapr-release-1.17-v1.png differ diff --git a/daprblog/content/posts/2026/v117-release/index.md b/daprblog/content/posts/2026/v117-release/index.md new file mode 100644 index 0000000..4aaa972 --- /dev/null +++ b/daprblog/content/posts/2026/v117-release/index.md @@ -0,0 +1,752 @@ +--- +date: "2026-02-27T05:00:00-00:00" +title: "Dapr v1.17 is now available" +linkTitle: "Dapr v1.17 is now available" +author: Dapr project maintainers +type: blog +--- + +![Dapr 1.17 release highlights](dapr-release-1.17-v1.png) + +We're excited to announce the release of Dapr 1.17! This release introduces workflow versioning, giving you the tools to safely evolve long-running workflow code without breaking in-flight instances. Combined with new state retention policies, up to 41% higher workflow throughput, and end-to-end tracing, Dapr Workflows are now ready for the most demanding production workloads. This release also stabilizes the Bulk PubSub API, improves Placement service resilience, and adds new CLI commands for managing Workflows and Scheduler. + +Thanks to all the new and existing contributors who helped make this release happen. + +If you're new to Dapr, visit the [getting started](https://docs.dapr.io/getting-started/) page and familiarize yourself with Dapr. + +The docs have been updated with all the new features and changes of this release. To get started with new capabilities introduced in this release, go to the [Concepts](https://docs.dapr.io/concepts/) and the [Developing applications](https://docs.dapr.io/developing-applications/). + +Go to the [upgrading Dapr](#upgrading-to-dapr-1.17) section for steps to upgrade to version 1.17. + +## Acknowledgements + +Thanks to everyone who made this release possible! + +@acroca, @adam6878, @AdarshRavichandran, @addjuarez, @aharonYK, @akotsarelation, @alekhrycaiko, @alicejgibbons, @ankurinfoblox, @antontroshin, @artur-ciocanu, @artursouza, @atrauzzi, @BlackRider97, @by-nelson, @CasperGN, @cicoyle, @citymaus, @ConstantinChirila, @cr3ativ3cod3r, @daanschutte, @DeepanshuA, @Eileen-Yu, @elena-kolevska, @famarting, @FarmerChillax, @filintod, @Flern, @fyzanshaik, @fyzanshaik-atlan, @halspang, @HusseinYasser, @imneov, @ItalyPaleAle, @javier-aliaga, @JeffreyJPZ, @jjcollinge, @jmfloreszazo, @johansja, @joshm998, @JoshVanL, @jslatten, @kapilthareja, @kaspernissen, @kayaj1009, @kgal-akl, @lijujoseph4, @lindner, @lony2003, @lrascao, @majiayu000, @marcduiker, @MasayaAoyama, @mcruzdev, @MichaelHindley, @middt, @mikeee, @mohitpalsingh, @msfussell, @MyMirelHub, @nelson-parente, @ngruson, @nikitasarawgi, @nmalocic, @oglok, @olitomlinson, @passuied, @paulorfjesus, @philliphoff, @pravinpushkar, @RaymundoZa, @robertojrojas, @RyanLettieri, @sadath-12, @salaboy, @seal90, @sicoyle, @siri-varma, @SpiffyEight77, @StarJourneyMingsing, @StoopidBoi-6128, @sunnynagavo, @TheForbiddenAi, @titanventura, @tmacam, @tomflenner, @WhitWaldo, @wlfgang, @yaron2, @ytimocin, @ZeBobo5, @ZeynelKoca, @zglp + +## Highlights +These are the v1.17 release highlights: + +### Workflow Versioning + +Dapr v1.17 introduces [workflow versioning](https://v1-17.docs.dapr.io/developing-applications/building-blocks/workflow/workflow-versioning/), giving developers the tools to safely evolve workflow code while in-flight workflows continue to run correctly. This is critical because Dapr workflows are durable, may run for extended periods, and application upgrades can introduce changes that break deterministic replay of existing workflow instances. +Workflow versioning in Dapr supports two complementary strategies: + +- Named workflow versions: Register multiple versions of a workflow under distinct names, allowing new workflow instances to run on the latest version while existing instances continue replaying against their original version. This provides a clean break between workflow implementations, ideal for major refactors. +- Patching: For smaller, incremental changes, patching lets you introduce conditional code branches within a workflow using `ctx.IsPatched("patch_name")`. New executions take the updated code path, while replaying instances follow the original path they were started on. This avoids duplicating entire workflow definitions for minor adjustments. + +SDK support is already available in Go, Python, .NET, and Java. Learn more in the [workflow versioning documentation](https://v1-17.docs.dapr.io/developing-applications/building-blocks/workflow/workflow-versioning/). + +### Workflow State Retention Policy + +Dapr Workflows now supports a [history retention policy](https://v1-17.docs.dapr.io/developing-applications/building-blocks/workflow/workflow-history-retention-policy/) to help control how much workflow state history is kept in your state store. + +By default, workflow execution history is retained **indefinitely**, which is great for auditing and troubleshooting—but can also lead to significant growth in actor state storage for high-volume workloads or workflows that emit lots of state changes. + +With v1.17 you can configure how long to retain workflow history after a workflow reaches a terminal state (`Completed`, `Failed`, or `Terminated`). You can set: + +- a default retention duration for any terminal state, and + +- per-terminal-state overrides (for example, keep `Failed` longer than `Completed`). + +Retention durations use Go duration strings (for example `72h`, `30m`). + +Example configuration: + +```yaml +kind: Configuration +metadata: + name: appconfig +spec: + workflow: + stateRetentionPolicy: + anyTerminal: "360h" + completed: "1m" + failed: "720h" + terminated: "360h" +``` + +Operational tip: a common pattern is to keep `Completed` workflows for a shorter period, while retaining `Failed` and `Terminated` workflows longer to support investigation. + +### Placement Service Improvements + +In v1.17, the [Placement service](https://v1-17.docs.dapr.io/concepts/dapr-services/placement/) is more robust during deployments, scaling events, and sidecar churn, helping Actors and Workflows converge faster and avoid inconsistent routing decisions. + +- Placement now disseminates placement-table updates using a stricter three-stage sequence (lock → update → unlock) across members in a namespace. This eliminates scenarios where some sidecars could temporarily operate on stale placement data, especially when many instances are joining/leaving at once. +- More reliable dissemination under churn: Better handling of rapid connect/disconnect events helps prevent stalls and improves convergence during rolling updates and autoscaling. +- Faster disconnect detection: Placement reacts immediately when a client drops its stream/connection, reducing “ghost member” behavior and shortening recovery time. + + +### CLI Operational Improvements + +The Dapr CLI in v1.17 adds smoother operational workflows for [Workflows](https://v1-17.docs.dapr.io/reference/cli/dapr-workflow/) and [Scheduler](https://v1-17.docs.dapr.io/reference/cli/dapr-scheduler/), plus better defaults for local development. + +- Better standalone defaults for remote Actors/Workflows: dapr run now automatically sets `DAPR_HOST_IP=127.0.0.1` when it isn’t already set, improving “works out of the box” behavior in self-hosted mode on MacOS. +- New dapr [workflow management commands](https://v1-17.docs.dapr.io/developing-applications/building-blocks/workflow/howto-manage-workflow/): Run and manage workflow instances from the CLI, including common lifecycle and troubleshooting operations (for example: `list`, `history`, `suspend`/`resume`, `terminate`, `rerun`, `raise-event`, `purge`). + +```bash +$ dapr workflow <..> +``` + +- New dapr [scheduler management commands](https://docs.dapr.io/concepts/dapr-services/scheduler/): Inspect and maintain Scheduler entries, including listing and deleting jobs/reminders, plus export/import to move Scheduler data between environments. + +```bash +$ dapr scheduler <..> +``` + +- Fewer required flags for workflow operations: Workflow listing now works out-of-the-box without requiring the CLI to connect directly to the state store database; the --connection-string option remains available for older runtime targets. +- Cleaner operational cleanup: Workflow purge operations now support forcing cleanup when a worker isn’t connected, and are designed to avoid leaving behind related scheduled work. + + +### Performance Improvements + +In Dapr v1.17 made greater use of the performance test suite and added visualizations so you can inspect and compare performance results yourself. + +Added a [performance charts directory](https://github.com/dapr/dapr/tree/master/tests/perf/report/charts) under `tests/perf/report/charts`. It contains chart outputs (ex: duration breakdown, throughput, tail latency, resource usage, etc) generated from our performance runs, organized by API and Dapr version. From there, you can open the API and Dapr version that matches your usage and compare runs or versions relevant to your APIs and workloads. Each API folder for the v1.17 folder contains a highlights section where common scenario performance results are highlighted at the top of each README. + +The performance suite runs in CI regularly. Visual charts are created from code, based on runs in Azure. This helps visually highlight regressions or improvements and provides a single place to see current and historical performance. + +Keep in mind that numbers can vary slightly between runs and environments. The figures below are from a comparison of two individual performance runs (one v1.16, one v1.17) - not averaged across multiple runs, so they may not be representative of *every* environment. Below are highlights from our generated v1.16 and v1.17 runs: + +| API | v1.16 | v1.17 | % Improvement | +| -------------------------------------- | -------- | -------- | ------------- | +| Actor (activation avg latency) | 2.70 ms | 2.35 ms | 13% | +| Actor (timer with state avg latency) | 8.20 ms | 6.84 ms | 17% | +| Workflows (throughput: iterations/sec) | 19.80 | 28.01 | 41.5% | +| Workflows (req duration avg in ms) | 1467 | 1042 | 29% | +| Workflows (req duration p90 in ms) | 1642 | 1166 | 29% | + +**Test references for the numbers above:** +- Actors: `TestActorActivate` +- Workflows: `TestWorkflowWithConstantVUs` with the same scenario (30 VUs, 300s) + +Actors show lower latency for activation and timer with state. Because workflows use actors under the hood, you see higher workflow throughput and lower request latency (both average and p90) for the constant VU scenario. + +**Links:** +- [Performance charts](https://github.com/dapr/dapr/tree/master/tests/perf/report/charts) – run your own comparisons and browse charts by API and version +- [Performance test suite](https://github.com/dapr/dapr/tree/master/tests/perf) – run the Dapr performance tests in your own environment + +### Bulk Pubsub API is now Stable + +After several releases of availability via the Alpha APIs, first introduced in Dapr v1.10.0, [Bulk Publish and Bulk Subscribe](https://v1-17.docs.dapr.io/developing-applications/building-blocks/pubsub/pubsub-bulk/) are now stable in Dapr v1.17. + +The stabilization brings production-ready, consistent APIs for Bulk PubSub, allowing you to publish and receive multiple messages in a single operation via the stable APIs: + +* Publish endpoint: for HTTP, `/v1.0/publish/bulk//` was promoted from `/v1.0-alpha1/publish/bulk//`. For gRPC, `BulkPublishEvent` was promoted from `BulkPublishEventAlpha1`. +* Application callback: `OnBulkTopicEvent` was promoted from `OnBulkTopicEventAlpha1`. + +Application code should be updated to implement the stable endpoints/callbacks when using Bulk PubSub. All SDKs are updated accordingly to support and use the stable APIs on both Publish and Subscribe sides. Please check SDK release notes and examples for details. + +Backwards compatibility: If your application still implements the previous `OnBulkTopicEventAlpha1` callback, Dapr logs a deprecation warning and automatically falls back to the Alpha APIs (for now), giving you time to migrate to using the stable API. Alpha paths remain functional, but are deprecated in favor of the stable APIs. + +This stabilization follows the [Dapr API Lifecycle expectations](https://github.com/dapr/proposals/blob/main/guides/api-design.md), backed by extensive testing ensuring production readiness. + +**Links:** +- [Publish and subscribe to bulk messages](https://v1-17.docs.dapr.io/developing-applications/building-blocks/pubsub/pubsub-bulk/) + +### Workflow Tracing + +This release improves end-to-end tracing for Dapr Workflows by ensuring that incoming trace context is preserved when scheduling and executing workflows. + +Previously, traces could become disconnected when workflows were scheduled or orchestrations executed, making distributed traces harder to follow. Now workflow spans are correctly linked to the caller’s trace. + +### Conversation API Improvements + +The [Conversation API](https://v1-17.docs.dapr.io/developing-applications/building-blocks/conversation/conversation-overview/) received several enhancements in this release to improve reliability, flexibility, and observability. + +- Tool/function calling is now fully supported and tested across all components, with additional improvements specific to Ollama. +- Prompt caching has been introduced to improve efficiency—complementing the existing response cache with configurable TTL support. +- Timeouts can now be configured via resiliency policies, and new response formatting options make it easier for downstream consumers to process outputs. +- Responses also include extended metadata, such as usage metrics and model details, enabling improved observability and cost tracking for AI-powered applications. + +### Component Improvements + +Various component improvements were included in this release, focused on enhanced authentication, resiliency, and feature completeness: +- Apache Pulsar PubSub: new subscription options via metadata, message compression support, and OAuth2 client secret support from file path +- AWS Components + MySQL updated to latest client SDK version with compatibility guaranteed +- SQLServer state component v2 with support for workflows +- SFTP Binding improved concurrency handling for mutex-protected operations +- Redis Streams PubSub honors configured resiliency policies +- Kafka Components: + - Introduced additional JWT authentication support for Kafka OIDC scenarios + - JWT audience is now sent as a single string for improved IdP compatibility + - Optional kid header support in JWT +- Azure Service Bus now respects FIFO ordering guarantees +- PostgreSQL v2 corrected migration schema issues +- All State Components support new KeysLike API, enabling key listing using SQL LIKE-style wildcard patterns +- Conversation Components new features: + - Added tool call support (Ollama) + - Introduced prompt caching + - Response formatting support + - Resiliency policy timeout respected + - Extended response metadata to include usage metrics + model used + +#### New Components in this release +- [SqlServer State Store v2](https://v1-17.docs.dapr.io/reference/components-reference/supported-state-stores/setup-sqlserver-v2/) +- [RavenDB State Store](https://v1-17.docs.dapr.io/reference/components-reference/supported-state-stores/setup-ravendb/) + +## SDK Improvements +### Go SDK + +- Adds support for `FailurePolicy` on Actor Reminders to allow for controlling the retry behaviour of failed Actor Reminder invocations. +- Exposed the V1 BulkPublish APIs, used as the default over Beta. +- Removes the Workflow wrapper client, in favour of the upstream durabletask-go client. + +### .NET SDK + +The v1.17 release of the [Dapr .NET SDK](https://docs.dapr.io/developing-applications/sdks/dotnet/) features a complete overhaul of the `Dapr.Workflow` package removing all dependencies on DurableTask and updating to support all Dapr runtime functionality: task execution identifiers, multi-app workflows (workflows & activities), and both patch- and name-based workflow versioning. + +This release includes official support for .NET 10 in addition to the already supported .NET 8 and 9. + +The Conversation API has been updated to reflect the latest runtime capabilities for detailing token usage and specifying both response schema structure and prompt cache durations. + +The PubSub API has been updated to reflect the graduation of the bulk PubSub runtime support to stable. + +Finally, this release ships Testcontainers support via the `Dapr.Testcontainers` package facilitating integration tests across the SDK and better enabling developers to improve their own testing infrastructure with Dapr. + +### Python SDK + +The v1.17 release of the Dapr Python SDK introduces two new AI agent framework extensions: `dapr-ext-langgraph` and `dapr-ext-strands`, enabling durable and observable AI agent workflows backed by Dapr's building blocks. + +Workflow versioning is now supported with both patch-based and name-based versioning, allowing safe evolution of long-running workflow definitions without breaking in-flight instances. + +@sicoyle is now a maintainer and @CasperGN an approver of the python SDK. + +### Java SDK + +Workflow versioning is now supported with both patch-based and name-based versioning, allowing safe evolution of long-running workflow definitions without breaking in-flight instances. + +Spring Boot 4 support has been introduced, as Spring Boot 3 reaches end of support on June 30, 2026. + +The Conversation API has been updated to reflect the latest runtime capabilities for detailing token usage and specifying both response schema structure and prompt cache durations. + +PubSub API has been updated to reflect the graduation of the bulk PubSub runtime support to stable. + +Actor Reminders API has been updated to support failure policies + + +## List of issues addressed in this release + +### Dapr Runtime + +- **ADDED** [EPIC] Make Bulk Pubsub APIs stable [5567](https://github.com/dapr/dapr/issues/5567) +- **ADDED** Jobs API Metrics [8160](https://github.com/dapr/dapr/issues/8160), [8196](https://github.com/dapr/dapr/pull/8196), [9256](https://github.com/dapr/dapr/pull/9256) +- **ADDED** Add GetActorReminder to gRPC API [8632](https://github.com/dapr/dapr/pull/8632) +- **ADDED** Service Invocation Streaming request [8685](https://github.com/dapr/dapr/issues/8685) +- **ADDED** Add Features to Conversation API for Dapr Agents v1.0 [8784](https://github.com/dapr/dapr/issues/8784) +- **FIXED** Fix OpenTelemetry resource detection to respect OTEL_* environment variables [9006](https://github.com/dapr/dapr/pull/9006) +- **FIXED** Scheduler doesn't explicitly handle scenarios when workflow state is deleted [9018](https://github.com/dapr/dapr/issues/9018) +- **ADDED** Added support for binary cloudevent [9050](https://github.com/dapr/dapr/pull/9050) +- **ADDED** Add config to disable init endpoints [9077](https://github.com/dapr/dapr/pull/9077) +- **FIXED** Actor init timing to wait for app channel readiness [9079](https://github.com/dapr/dapr/pull/9079) +- **ADDED** Add CloudEvent Subject field [9101](https://github.com/dapr/dapr/pull/9101) +- **CHORE** Sync release-1.16 to master [9112](https://github.com/dapr/dapr/pull/9112), [9114](https://github.com/dapr/dapr/pull/9114) +- **FIXED** Fix usage of disseminate lock and fix missing MemberRemove command [9115](https://github.com/dapr/dapr/pull/9115) +- **FIXED** Fix placement dissemination during high churn events [9117](https://github.com/dapr/dapr/pull/9117) +- **FIXED** Delete state store reminders [9121](https://github.com/dapr/dapr/pull/9121) +- **FIXED** Fix placement client double lock [9122](https://github.com/dapr/dapr/pull/9122) +- **FIXED** Blocked Placement dissemination with high Scheduler dataset [9126](https://github.com/dapr/dapr/pull/9126) +- **ADDED** Add ConnectRPC generated files [9130](https://github.com/dapr/dapr/pull/9130) +- **FIXED** Fix panic during actor deactivation [9133](https://github.com/dapr/dapr/pull/9133) +- **FIXED** Injector no longer requires scheduler StatefulSet when scheduler is disabled; Helm chart now completely removes scheduler resources instead of scaling to zero [9138](https://github.com/dapr/dapr/issues/9138), [9175](https://github.com/dapr/dapr/pull/9175) +- **ADDED** Propagate APP_API_TOKEN in gRPC metadata for subscriptions, bindings, and jobs [9142](https://github.com/dapr/dapr/pull/9142) +- **ADDED** Add e2e SSE support [9149](https://github.com/dapr/dapr/pull/9149) +- **FIXED** Fix Scheduler connection during non-graceful network interruptions [9154](https://github.com/dapr/dapr/pull/9154) +- **FIXED** Prevent infinite loop when workflow state is corrupted or destroyed [9157](https://github.com/dapr/dapr/pull/9157) +- **CHORE** Update Go 1.24.6 to 1.24.9 [9159](https://github.com/dapr/dapr/pull/9159) +- **ADDED** [PROPOSAL] Workflow Versioning [9162](https://github.com/dapr/dapr/issues/9162) +- **ADDED** [PROPOSAL] Workflow tooling support [9164](https://github.com/dapr/dapr/issues/9164), [9190](https://github.com/dapr/dapr/issues/9190) +- **ADDED** [PROPOSAL] PlacementV2 [9165](https://github.com/dapr/dapr/issues/9165) +- **ADDED** Support topologySpreadConstraints/affinity in chart values [9168](https://github.com/dapr/dapr/issues/9168), [9169](https://github.com/dapr/dapr/pull/9169) +- **ADDED** Implements durabletask `ListInstanceIDs` & `GetInstanceHistory` [9170](https://github.com/dapr/dapr/pull/9170) +- **FIXED** Workflow: Delete associated reminders on workflow purge [9171](https://github.com/dapr/dapr/pull/9171) +- **FIXED** Ensure the TLS hostname of dapr-scheduler matches the trust domain [9173](https://github.com/dapr/dapr/pull/9173) +- **ADDED** Workflow: Purge Force [9176](https://github.com/dapr/dapr/pull/9176) +- **FIXED** Workflow: schedule reminders to first history [9179](https://github.com/dapr/dapr/pull/9179) +- **ADDED** Workflow: State Retention Policy [9185](https://github.com/dapr/dapr/pull/9185) +- **CHORE** Revert Windows runners actions setup-go [9186](https://github.com/dapr/dapr/pull/9186) +- **ADDED** Workflow: Schedule Tracing [9193](https://github.com/dapr/dapr/pull/9193) +- **PERF** Use bookworm base image [9194](https://github.com/dapr/dapr/pull/9194) +- **CHORE** Change kit go.mod to origin HEAD [9195](https://github.com/dapr/dapr/pull/9195) +- **SECURITY** Bump x/(net/sync/crypto) and pin dvsekhvalnov/jose2go [9197](https://github.com/dapr/dapr/pull/9197) +- **ADDED** Actor: Reminder Get & Overwrite [9199](https://github.com/dapr/dapr/pull/9199) +- **REFACTOR** Proto: refactor runtime `dapr.proto` into multiple files [9200](https://github.com/dapr/dapr/pull/9200) +- **ADDED** Actor Reminder/Jobs: Delete Prefix & List [9201](https://github.com/dapr/dapr/pull/9201) +- **ADDED** Actors: Reminder Failure Policy [9202](https://github.com/dapr/dapr/pull/9202) +- **ADDED** Workflow: Adds Rerun parent instance ID [9203](https://github.com/dapr/dapr/pull/9203) +- **ADDED** Scheduler: Namespaces loop [9205](https://github.com/dapr/dapr/pull/9205) +- **CHORE** Updates dapr/components-contrib to latest HEAD [9208](https://github.com/dapr/dapr/pull/9208) +- **ADDED** Workflow versioning (patching) [9163](https://github.com/dapr/dapr/issues/9163), [9217](https://github.com/dapr/dapr/pull/9217) +- **FIXED** Workflow: GetInstanceHistory panic when instance not found [9218](https://github.com/dapr/dapr/pull/9218) +- **FIXED** Workflow logging loop when no pending task completed [9219](https://github.com/dapr/dapr/pull/9219) +- **PERF** Scheduler: worker pool [9221](https://github.com/dapr/dapr/pull/9221), [9238](https://github.com/dapr/dapr/pull/9238) +- **SECURITY** Fix Go vulnerability [9224](https://github.com/dapr/dapr/pull/9224), [9250](https://github.com/dapr/dapr/pull/9250) +- **TEST** Perf tests align k8s versions [9225](https://github.com/dapr/dapr/pull/9225) +- **FIXED** Deleted Jobs in all prefix matching deleted Namespaces [9231](https://github.com/dapr/dapr/pull/9231) +- **ADDED** Enable sqlserver v2 with support for workflows [9233](https://github.com/dapr/dapr/pull/9233) +- **ADDED** Workflow: Rerun from Child Workflow Creation [9240](https://github.com/dapr/dapr/pull/9240) +- **ADDED** Conversation API: add resp format, model, prompt cache, usage metrics [9241](https://github.com/dapr/dapr/pull/9241), [9265](https://github.com/dapr/dapr/pull/9265), [9316](https://github.com/dapr/dapr/pull/9316) +- **CHORE** Update github.com/dapr/go-etcd-cron to head [9242](https://github.com/dapr/dapr/pull/9242) +- **ADDED** Remove SchedulerReminders from preview features [9244](https://github.com/dapr/dapr/issues/9244) +- **CHORE** Add dependency scanning with dependabot [9248](https://github.com/dapr/dapr/pull/9248) +- **DOCS** Fix typos in documentation [9255](https://github.com/dapr/dapr/pull/9255) +- **CHORE** make gen-proto [9259](https://github.com/dapr/dapr/pull/9259) +- **FIXED** Dapr sidecar injector: only record logs/metrics if patch was applied [9267](https://github.com/dapr/dapr/issues/9267), [9268](https://github.com/dapr/dapr/pull/9268) +- **SECURITY** Update UID check to check only root [9272](https://github.com/dapr/dapr/pull/9272) +- **CHORE** Sync release 1.16 branch to master [9273](https://github.com/dapr/dapr/pull/9273) +- **ADDED** BulkPublishEvent Stable [9274](https://github.com/dapr/dapr/pull/9274), [9306](https://github.com/dapr/dapr/pull/9306) +- **ADDED** Add support for custom Dapr service annotations [9276](https://github.com/dapr/dapr/pull/9276), [9307](https://github.com/dapr/dapr/pull/9307) +- **FIXED** Fix HTTPEndpoint ClientTLS parsing of only root CA [9280](https://github.com/dapr/dapr/pull/9280), [9287](https://github.com/dapr/dapr/pull/9287) +- **ADDED** Full workflow versioning [9282](https://github.com/dapr/dapr/issues/9282), [9291](https://github.com/dapr/dapr/pull/9291), [9292](https://github.com/dapr/dapr/pull/9292) +- **CHORE** Bump components-contrib to latest main [9284](https://github.com/dapr/dapr/pull/9284) +- **TEST** Integration: fix rerun child async test [9285](https://github.com/dapr/dapr/pull/9285), [9286](https://github.com/dapr/dapr/pull/9286) +- **FIXED** Fix Proto files java outer classname [9288](https://github.com/dapr/dapr/pull/9288) +- **ADDED** Add tracing to publish rawpayload events [9289](https://github.com/dapr/dapr/pull/9289), [9294](https://github.com/dapr/dapr/pull/9294), [9310](https://github.com/dapr/dapr/pull/9310) +- **TEST** Reduce test flakes [9293](https://github.com/dapr/dapr/pull/9293) +- **FIXED** Workflow: Clear cache when stalled [9297](https://github.com/dapr/dapr/pull/9297), [9298](https://github.com/dapr/dapr/pull/9298) +- **SECURITY** Placement authorize Dapr actor types [9299](https://github.com/dapr/dapr/pull/9299), [9300](https://github.com/dapr/dapr/pull/9300) +- **CHORE** ci: add repository dispatch to version skew [9303](https://github.com/dapr/dapr/pull/9303) +- **TEST** Integration: Fix tests [9305](https://github.com/dapr/dapr/pull/9305) +- **CHORE** durabletask-go: update go.mod ref to main HEAD [9312](https://github.com/dapr/dapr/pull/9312) +- **FIXED** Drop Unimplemented errors on DeleteByActorID [9313](https://github.com/dapr/dapr/pull/9313), [9314](https://github.com/dapr/dapr/pull/9314) +- **ADDED** OnBulkTopicEventAlpha1 stable [9317](https://github.com/dapr/dapr/pull/9317), [9319](https://github.com/dapr/dapr/pull/9319) +- **TEST** Fix IT & e2e test flakes [9318](https://github.com/dapr/dapr/pull/9318), [9320](https://github.com/dapr/dapr/pull/9320) +- **ADDED** Use Kube cluster domain for scheduler DNS [9322](https://github.com/dapr/dapr/pull/9322), [9323](https://github.com/dapr/dapr/pull/9323) +- **CHORE** Disable kitex [9324](https://github.com/dapr/dapr/pull/9324), [9325](https://github.com/dapr/dapr/pull/9325) +- **TEST** Test Fixes: ensure wf workers connected [9326](https://github.com/dapr/dapr/pull/9326) +- **FIXED** Placement client: force close send on shutdown [9328](https://github.com/dapr/dapr/pull/9328), [9329](https://github.com/dapr/dapr/pull/9329) +- **TEST** Subscriptions: Resiliency Integration Tests [9330](https://github.com/dapr/dapr/pull/9330), [9331](https://github.com/dapr/dapr/pull/9331) +- **FIXED** Rabbitmq panic fix [9334](https://github.com/dapr/dapr/pull/9334), [9337](https://github.com/dapr/dapr/pull/9337) +- **CHORE** Cherry pick disable init endpoints and daprd job metrics to 1.17 [9335](https://github.com/dapr/dapr/pull/9335) +- **FIXED** Fix HTTP path matching cardinality leak and support invocation auto-registration [9336](https://github.com/dapr/dapr/pull/9336), [9380](https://github.com/dapr/dapr/pull/9380) +- **ADDED** Add workflow failure stack trace to API response [9339](https://github.com/dapr/dapr/pull/9339), [9340](https://github.com/dapr/dapr/pull/9340) +- **FIXED** fix(ollama): bump contrib version for ollama tool call fix [9345](https://github.com/dapr/dapr/pull/9345) +- **FIXED** Correct streaming subscription integration test failure [9346](https://github.com/dapr/dapr/issues/9346) +- **TEST** Fix unit test failures [9350](https://github.com/dapr/dapr/pull/9350), [9351](https://github.com/dapr/dapr/pull/9351) +- **FIXED** Allow internal workflow events [9353](https://github.com/dapr/dapr/pull/9353), [9354](https://github.com/dapr/dapr/pull/9354) +- **FIXED** Fix: Copy header from response in SSE [9355](https://github.com/dapr/dapr/pull/9355), [9376](https://github.com/dapr/dapr/pull/9376) +- **SECURITY** Bump golang.org/x/crypto [9362](https://github.com/dapr/dapr/pull/9362) +- **SECURITY** Bump github.com/docker/docker [9363](https://github.com/dapr/dapr/pull/9363) +- **CHORE** Update Go to 1.24.12 [9367](https://github.com/dapr/dapr/pull/9367), [9368](https://github.com/dapr/dapr/pull/9368), [9369](https://github.com/dapr/dapr/pull/9369) +- **SECURITY** High security fixes [9375](https://github.com/dapr/dapr/pull/9375) +- **REFACTOR** Placement: Client Refactor [9377](https://github.com/dapr/dapr/pull/9377), [9382](https://github.com/dapr/dapr/pull/9382) +- **FIXED** Improve output message of ErrActorNoAddress [9378](https://github.com/dapr/dapr/pull/9378) +- **TEST** Integration: Eventually a raise on restart [9383](https://github.com/dapr/dapr/pull/9383), [9384](https://github.com/dapr/dapr/pull/9384) +- **FIXED** Consistent behavior between 200: DROP and 404 [9401](https://github.com/dapr/dapr/pull/9401), [9421](https://github.com/dapr/dapr/pull/9421) +- **FIXED** Sentry log line fix [9403](https://github.com/dapr/dapr/pull/9403), [9404](https://github.com/dapr/dapr/pull/9404) +- **REFACTOR** Placement server refactor [9405](https://github.com/dapr/dapr/pull/9405), [9439](https://github.com/dapr/dapr/pull/9439) +- **PERF** Perf fine tuning [9407](https://github.com/dapr/dapr/pull/9407) +- **ADDED** Support legacy scheduler env var [9408](https://github.com/dapr/dapr/pull/9408), [9409](https://github.com/dapr/dapr/pull/9409) +- **CHORE** Bump go.opentelemetry.io/otel/sdk to v1.40.0 [9410](https://github.com/dapr/dapr/pull/9410), [9430](https://github.com/dapr/dapr/pull/9430) +- **SECURITY** Bump github.com/coreos/go-oidc/v3 [9414](https://github.com/dapr/dapr/pull/9414) +- **CHORE** Bump actions/setup-go from 4 to 6 [9416](https://github.com/dapr/dapr/pull/9416) +- **TEST** Integration: Wait for placement leadership [9424](https://github.com/dapr/dapr/pull/9424), [9425](https://github.com/dapr/dapr/pull/9425) +- **CHORE** Upgrade Go to 1.25.7 [9426](https://github.com/dapr/dapr/pull/9426), [9427](https://github.com/dapr/dapr/pull/9427) +- **CHORE** Upgrade Go to 1.24.13 [9428](https://github.com/dapr/dapr/pull/9428), [9429](https://github.com/dapr/dapr/pull/9429) +- **TEST** Unit Test: fix flakes [9431](https://github.com/dapr/dapr/pull/9431), [9432](https://github.com/dapr/dapr/pull/9432) +- **CHORE** Bump go.etcd.io/etcd/client/pkg/v3 [9433](https://github.com/dapr/dapr/pull/9433) +- **FIXED** Update contrib to include redis streams honoring resiliency [9437](https://github.com/dapr/dapr/pull/9437), [9438](https://github.com/dapr/dapr/pull/9438) +- **ADDED** Replaced poll-based workflow completion check [9440](https://github.com/dapr/dapr/pull/9440) +- **FIXED** Operator: check closed on client connect [9441](https://github.com/dapr/dapr/pull/9441), [9442](https://github.com/dapr/dapr/pull/9442) +- **CHORE** Dependabot: only PR security updates [9443](https://github.com/dapr/dapr/pull/9443) +- **TEST** Quieter amenderror test [9444](https://github.com/dapr/dapr/pull/9444), [9445](https://github.com/dapr/dapr/pull/9445) +- **FIXED** Scheduler: print incorrect DNS names [9446](https://github.com/dapr/dapr/pull/9446), [9447](https://github.com/dapr/dapr/pull/9447) +- **REFACTOR** Proto: remove placement import ref from runtime [9448](https://github.com/dapr/dapr/pull/9448), [9449](https://github.com/dapr/dapr/pull/9449) +- **CHORE** Remove extraneous tab [9455](https://github.com/dapr/dapr/pull/9455) +- **ADDED** Feature Gate: WorkflowsRemoteActivityReminder [9457](https://github.com/dapr/dapr/pull/9457) +- **CHORE** github.com/diagridio/go-etcd-cron v1.12.1 [9458](https://github.com/dapr/dapr/pull/9458), [9459](https://github.com/dapr/dapr/pull/9459) +- **TEST** Version Skew: include scheduler int test path [9460](https://github.com/dapr/dapr/pull/9460) +- **FIXED** Fix hot reload subscription race [9461](https://github.com/dapr/dapr/pull/9461), [9462](https://github.com/dapr/dapr/pull/9462) +- **ADDED** V2.0.0 [9463](https://github.com/dapr/dapr/pull/9463) +- **FIXED** Metrics Path Matching Fix [9464](https://github.com/dapr/dapr/pull/9464) +- **CHORE** Add backport action [9465](https://github.com/dapr/dapr/pull/9465) +- **TEST** Fix pubsub e2e flake [9466](https://github.com/dapr/dapr/pull/9466) +- **TEST** Fix actor wf perf flakes [9467](https://github.com/dapr/dapr/pull/9467) +- **CHORE** Updates contrib to main HEAD [9468](https://github.com/dapr/dapr/pull/9468), [9469](https://github.com/dapr/dapr/pull/9469) +- **FIXED** Configuration CRD OtelSpec missing Headers, Timeout, and secret reference support [9524](https://github.com/dapr/dapr/issues/9524) + +### Dapr CLI +- **ADDED** Multi app run does not understand dependencies and ordering - leads to timing issues [1435](https://github.com/dapr/cli/issues/1435) +- **CHORE** Update k8s and kind versions [1546](https://github.com/dapr/cli/pull/1546) +- **CHORE** Merge 1.16 master [1557](https://github.com/dapr/cli/pull/1557) +- **ADDED** Adds `dapr scheduler` command [1559](https://github.com/dapr/cli/pull/1559) +- **ADDED** Workflow command support [1560](https://github.com/dapr/cli/pull/1560) +- **FIXED** Fix workflow resource path lookup [1564](https://github.com/dapr/cli/pull/1564) +- **FIXED** Workflow: no longer require DB connection string [1570](https://github.com/dapr/cli/pull/1570) +- **CHORE** ci: add create release workflow [1573](https://github.com/dapr/cli/pull/1573) +- **ADDED** Scheduler: add short help output [1576](https://github.com/dapr/cli/pull/1576), [1577](https://github.com/dapr/cli/pull/1577) +- **ADDED** Adds support for workflow versioning new types [1578](https://github.com/dapr/cli/pull/1578), [1579](https://github.com/dapr/cli/pull/1579) +- **CHORE** Bump go to 1.24.13 and containerd & helm [1583](https://github.com/dapr/cli/pull/1583), [1586](https://github.com/dapr/cli/pull/1586) +- **SECURITY** Bump helm and opentelemetry to fix HIGH vulnerabilities [1587](https://github.com/dapr/cli/pull/1587), [1588](https://github.com/dapr/cli/pull/1588) +- **FIXED** Env: Set DAPR_HOST_IP=127.0.0.1 [1589](https://github.com/dapr/cli/pull/1589), [1590](https://github.com/dapr/cli/pull/1590) + +### Components +- **ADDED** All components have been upgraded to use AWS SDK GO V2, the V1 SDK has been pruned from the dependencies. [4231](https://github.com/dapr/components-contrib/pull/4231) +- **ADDED** New component - state.ravendb [3318](https://github.com/dapr/components-contrib/issues/3318) +- **ADDED** Upgrade AWS Secrets Manager to AWS SDK v2 [3901](https://github.com/dapr/components-contrib/pull/3901) +- **ADDED** Upgrade paramstore to AWS SDK v2 [3908](https://github.com/dapr/components-contrib/pull/3908) +- **ADDED** Upgrade Bedrock to AWS SDK v2 [3909](https://github.com/dapr/components-contrib/pull/3909) +- **ADDED** Upgrade SES binding to AWS SDK v2 [3911](https://github.com/dapr/components-contrib/pull/3911) +- **ADDED** New v2 sqlserver state component with workflow support [4027](https://github.com/dapr/components-contrib/pull/4027) +- **FIXED** Fix regression in pubsub.kafka Avro message publication [4028](https://github.com/dapr/components-contrib/pull/4028) +- **CHORE** Cleanup daprbot [4033](https://github.com/dapr/components-contrib/pull/4033) +- **FIXED** Close file after write [4034](https://github.com/dapr/components-contrib/pull/4034) +- **FIXED** Fix Kafka AWS auth config bug [4043](https://github.com/dapr/components-contrib/pull/4043) +- **FIXED** Fix aws secrets manager yaml [4044](https://github.com/dapr/components-contrib/pull/4044) +- **FIXED** Reuse kafka clients [4049](https://github.com/dapr/components-contrib/pull/4049) +- **ADDED** Support client JWT auth method for kafka OIDC [4057](https://github.com/dapr/components-contrib/pull/4057) +- **CHORE** ci: add ravendb secrets to gh workflow [4058](https://github.com/dapr/components-contrib/pull/4058) +- **FIXED** SFTP binding overloads SFTP server with connections; handle reconnections [4061](https://github.com/dapr/components-contrib/issues/4061), [4075](https://github.com/dapr/components-contrib/pull/4075) +- **TEST** Enable dynamodb state store tests [4069](https://github.com/dapr/components-contrib/pull/4069) +- **FIXED** Fix goavro bug due to codec state mutation [4070](https://github.com/dapr/components-contrib/pull/4070), [4071](https://github.com/dapr/components-contrib/pull/4071) +- **ADDED** Support base64 decode of data transmitted for SFTP binding [4072](https://github.com/dapr/components-contrib/issues/4072) +- **FIXED** Fix SFTP connection poisoning with enterprise/Axway MFT servers [4078](https://github.com/dapr/components-contrib/issues/4078) +- **FIXED** Fix token renewal for pulsar oauth2 [4079](https://github.com/dapr/components-contrib/pull/4079) +- **ADDED** State: KeysLike [4087](https://github.com/dapr/components-contrib/pull/4087) +- **ADDED** ASB Concurrent Session FIFO [4092](https://github.com/dapr/components-contrib/pull/4092) +- **ADDED** Add `kid` header to kafka JWT auth [4099](https://github.com/dapr/components-contrib/pull/4099) +- **FIXED** postgres v2: fix migration column name [4100](https://github.com/dapr/components-contrib/pull/4100) +- **FIXED** Send audience as a single string in the JWT [4111](https://github.com/dapr/components-contrib/pull/4111) +- **SECURITY** Fix critical NATS vulnerability [4114](https://github.com/dapr/components-contrib/pull/4114) +- **FIXED** Fix pulsar secret filepath [4116](https://github.com/dapr/components-contrib/pull/4116) +- **CHORE** Add dependency scanning with dependabot for git actions and gomod [4118](https://github.com/dapr/components-contrib/pull/4118) +- **ADDED** Add response format and timeout to conversation API [4129](https://github.com/dapr/components-contrib/pull/4129) +- **CHORE** dependabot modtidy and workflow improvements [4131](https://github.com/dapr/components-contrib/pull/4131), [4146](https://github.com/dapr/components-contrib/pull/4146), [4152](https://github.com/dapr/components-contrib/pull/4152), [4155](https://github.com/dapr/components-contrib/pull/4155), [4182](https://github.com/dapr/components-contrib/pull/4182) +- **ADDED** Enhance Pulsar pub/sub to enable message compression [4148](https://github.com/dapr/components-contrib/pull/4148) +- **ADDED** feat(conversation): add prompt cache and usage metrics [4154](https://github.com/dapr/components-contrib/pull/4154) +- **CHORE** Bump cloudwego/kitex to v0.15.4 [4158](https://github.com/dapr/components-contrib/pull/4158) +- **ADDED** Propagate message metadata in pubsub [4160](https://github.com/dapr/components-contrib/pull/4160), [4171](https://github.com/dapr/components-contrib/pull/4171) +- **FIXED** Fix Pulsar pubsub initialization when using oauth2ClientSecretPath [4161](https://github.com/dapr/components-contrib/pull/4161) +- **ADDED** Upgrade SNS binding to AWS SDK v2 [4169](https://github.com/dapr/components-contrib/pull/4169) +- **ADDED** Upgrade SQS binding to AWS SDK v2 [4170](https://github.com/dapr/components-contrib/pull/4170) +- **ADDED** Upgrade DynamoDB binding to AWS SDK v2 [4172](https://github.com/dapr/components-contrib/pull/4172) +- **ADDED** Upgrade Kinesis binding to AWS SDK v2 [4173](https://github.com/dapr/components-contrib/pull/4173) +- **TEST** Fix MySQL certification test failure check [4180](https://github.com/dapr/components-contrib/issues/4180), [4185](https://github.com/dapr/components-contrib/pull/4185) +- **ADDED** Update postgres configuration AWS authentication to use new credential provider [4181](https://github.com/dapr/components-contrib/pull/4181) +- **SECURITY** Fix high vulnerability on cloudflare worker [4184](https://github.com/dapr/components-contrib/pull/4184) +- **FIXED** Fix race condition in RabbitMQ [4190](https://github.com/dapr/components-contrib/pull/4190) +- **FIXED** Remove in-memory pubsub retries [4191](https://github.com/dapr/components-contrib/pull/4191) +- **FIXED** fix(ollama): use openai client to support tool calling [4192](https://github.com/dapr/components-contrib/pull/4192) +- **CHORE** Bump cloudflare worker dependencies (wrangler, jose, esbuild) [4199](https://github.com/dapr/components-contrib/pull/4199), [4200](https://github.com/dapr/components-contrib/pull/4200), [4201](https://github.com/dapr/components-contrib/pull/4201) +- **FIXED** Fix MySQL regression [4202](https://github.com/dapr/components-contrib/pull/4202) +- **TEST** Add MySQL certification tests [4204](https://github.com/dapr/components-contrib/pull/4204) +- **CHORE** Update main and test dependencies [4205](https://github.com/dapr/components-contrib/pull/4205) +- **FIXED** Make Redis Streams PubSub honor resiliency policy [4208](https://github.com/dapr/components-contrib/pull/4208) +- **ADDED** feat: strict SFTP operations [4211](https://github.com/dapr/components-contrib/pull/4211) +- **CHORE** SFTP binding: check for error message [4214](https://github.com/dapr/components-contrib/pull/4214) +- **CHORE** Ensure all components properly registered [4215](https://github.com/dapr/components-contrib/pull/4215) +- **FIXED** fix(nr): update AWS auth support to match docs [4216](https://github.com/dapr/components-contrib/pull/4216) +- **FIXED** fix(pulsar): update subscription options to use metadata values [4218](https://github.com/dapr/components-contrib/pull/4218) + +### .NET SDK +#### General +- **ADDED** Support for .NET 10 [1676](https://github.com/dapr/dotnet-sdk/pull/1676) +- **ADDED** NuGet Trusted Publishing - OIDC Support [1651](https://github.com/dapr/dotnet-sdk/pull/1651) +- **UPDATED** Fix typos and improve code consistency [1659](https://github.com/dapr/dotnet-sdk/pull/1659) +- **UPDATED** Facilitating changes to GitHub branch merge rules in build steps [1668](https://github.com/dapr/dotnet-sdk/pull/1668) +- **UPDATED** Expand output binding invocation docs [1652](https://github.com/dapr/dotnet-sdk/pull/1652) +- **UPDATED** Fix markdown link syntax in dotnet-messaging docs [1654](https://github.com/dapr/dotnet-sdk/pull/1654) +- **UPDATED** Migrate docs from SDK repository to dapr/docs [1655](https://github.com/dapr/dotnet-sdk/pull/1655) + +#### Examples +- **ADDED** Added workflow versioning (patch + named) example [1706](https://github.com/dapr/dotnet-sdk/pull/1706) +- **ADDED** Example demonstrating how to unit test workflows/activities [1708](https://github.com/dotnet-sdk/pull/1708) +- **UPDATED** Update to Aspire 13.x [1661](https://github.com/dapr/dotnet-sdk/pull/1661) +- **REMOVED** Obsolete service invocation example [1698](https://github.com/dapr/dotnet-sdk/pull/1698) + +#### Actors +- **FIXED** UseJsonSerialization setting properly applied at startup [1648](https://github.com/dotnet-sdk/pull/1648) + +#### Conversation +- **UPDATED** Support latest API updates [1696](https://github.com/dapr/dotnet-sdk/pull/1696) + +#### PubSub +- **UPDATED** Marking PubSub bulk publish as API stable [1681](https://github.com/dapr/dotnet-sdk/pull/1681) +- **FIXED** Handling graceful cancellation in CloudEventsMiddleware to prevent 499 errors [1713](https://github.com/dapr/dotnet-sdk/pull/1713) + +#### Service Invocation +- **UPDATED** Marking service invocation methods as [Obsolete] per best practices [1698](https://github.com/dapr/dotnet-sdk/pull/1698) + +#### Workflows +- **ADDED** Multi-app workflow support in .NET [1675](https://github.com/dapr/dotnet-sdk/pull/1675) +- **ADDED** Add logging message indicating established gRPC workflow stream [1688](https://github.com/dapr/dotnet-sdk/pull/1688) +- **ADDED** Add Workflow patch-based versioning support [1687](https://github.com/dapr/dotnet-sdk/pull/1687) +- **ADDED** Add Workflow name-based versioning support [1700](https://github.com/dapr/dotnet-sdk/pull/1700) +- **ADDED** Added built-in workflow versioning strategies [1707](https://github.com/dapr/dotnet-sdk/pull/1707), [1710](https://github.com/dapr/dotnet-sdk/pull/1710) +- **ADDED** Added support for automatic workflow registration across referenced projects for named versioning [1711](https://github.com/dapr/dotnet-sdk/pull/1711) +- **UPDATED** Clean implementation of Dapr.Workflow [1662](https://github.com/dapr/dotnet-sdk/pull/1662) +- **UPDATED** Make resilient to load order differences (dapr/app) + workflow reconnection [1680](https://github.com/dapr/dotnet-sdk/pull/1680) +- **FIXED** Fix workflow execution is uncertain [1667](https://github.com/dapr/dotnet-sdk/pull/1667) +- **FIXED** Fix workflow gRPC streaming is blocked [1671](https://github.com/dapr/dotnet-sdk/pull/1671) +- **FIXED** Fix workflow execution order [1684](https://github.com/dapr/dotnet-sdk/pull/1684) +- **FIXED** Fix activity track failure [1692](https://github.com/dapr/dotnet-sdk/pull/1692) +- **FIXED** Ensure TFMs populate in `Dapr.Workflow.Versioning` package [1709](https://github.com/dapr/dotnet-sdk/pull/1709) + +#### Testing +- **ADDED** Add Testcontainer support for .NET [1664](https://github.com/dapr/dotnet-sdk/pull/1664) +- **ADDED** Adding integration testing for Dapr.Workflow [1669](https://github.com/dapr/dotnet-sdk/pull/1669) +- **ADDED** Adding integration testing for Dapr.Jobs [1674](https://github.com/dapr/dotnet-sdk/pull/1674) +- **ADDED** Adding integration testing for Dapr.DistributedLock [1682](https://github.com/dapr/dotnet-sdk/pull/1682) +- **ADDED** Adding mechanism to enable container log capture to file [1701](https://github.com/dapr/dotnet-sdk/pull/1701) +- **UPDATED** Improved GitHub build action to better perform integration and unit testing [1693](https://github.com/dapr/dotnet-sdk/pull/1693) +- **UPDATED** Added automated last X RC runtime version testing to matrix [1701](https://github.com/dapr/dotnet-sdk/pull/1703) +- **UPDATED** Improved Dapr readiness checks in Dapr.Testcontainers [1705](https://github.com/dapr/dotnet-sdk/pull/1705) +- **FIXED** Fix timezone-dependent ArgumentOutOfRangeException in WorkflowState test [1690](https://github.com/dapr/dotnet-sdk/pull/1690) + +A big thank you to the following .NET SDK contributors that made this release possible: @whitwaldo, @zglp, @sunnynagavo, @atrauzzi, @marcduiker, @daanschutte, @ali-Hamza817, @ZeBobo5 + + +### Java SDK +- **FIXED** Inconsistent behaviour between docs and implementation in Actor Timers and Reminders [681](https://github.com/dapr/java-sdk/issues/681) +- **ADDED** FEATURE PREVIEW: Add Actor State TTL support [849](https://github.com/dapr/java-sdk/issues/849) +- **ADDED** Add Cryptography API to Java SDK [1073](https://github.com/dapr/java-sdk/issues/1073), [1599](https://github.com/dapr/java-sdk/pull/1599) +- **ADDED** Add OpenFeign Client for Dapr service invocation [1181](https://github.com/dapr/java-sdk/issues/1181), [1294](https://github.com/dapr/java-sdk/pull/1294) +- **ADDED** Spring Boot Cloud Config integration [1225](https://github.com/dapr/java-sdk/issues/1225), [1230](https://github.com/dapr/java-sdk/pull/1230) +- **CHORE** Automate syncing dapr/durabletask-java [1397](https://github.com/dapr/java-sdk/issues/1397) +- **ADDED** Add taskName and input to retry context [1423](https://github.com/dapr/java-sdk/pull/1423) +- **ADDED** Trace propagation for durabletask-java and durabletask-go [1485](https://github.com/dapr/java-sdk/pull/1485) +- **ADDED** Add Dapr Testcontainers subscription scopes [1491](https://github.com/dapr/java-sdk/issues/1491) +- **ADDED** Support native compilation for the Java SDK [1509](https://github.com/dapr/java-sdk/issues/1509) +- **CHORE** Remove shaded deps [1543](https://github.com/dapr/java-sdk/pull/1543) +- **DOCS** Add architecture diagram to README [1549](https://github.com/dapr/java-sdk/pull/1549) +- **REFACTOR** Align Java API with workflow naming conventions [1554](https://github.com/dapr/java-sdk/issues/1554), [1560](https://github.com/dapr/java-sdk/pull/1560) +- **CHORE** Update Spring Boot Matrix for 3.5.x and 3.4.x [1558](https://github.com/dapr/java-sdk/pull/1558) +- **ADDED** Check Dapr runtime containers before starting another one [1562](https://github.com/dapr/java-sdk/pull/1562) +- **CHORE** Centralize Maven dependency version management [1564](https://github.com/dapr/java-sdk/pull/1564) +- **ADDED** Setting default props for DaprClient [1567](https://github.com/dapr/java-sdk/pull/1567) +- **FIXED** Pass metadata in saveState [1569](https://github.com/dapr/java-sdk/issues/1569), [1570](https://github.com/dapr/java-sdk/pull/1570) +- **FIXED** Fix dependencies for multi app build [1572](https://github.com/dapr/java-sdk/pull/1572) +- **CHORE** Replace openjdk:17-jdk-slim with eclipse-temurin:17-jdk-jammy [1574](https://github.com/dapr/java-sdk/pull/1574) +- **ADDED** Bring Durable Task Java as a Maven module inside the Java SDK [1575](https://github.com/dapr/java-sdk/pull/1575) +- **ADDED** Register activity with @Component value when provided [1577](https://github.com/dapr/java-sdk/pull/1577) +- **ADDED** Add withAppProtocol and gRPC support to Dapr testcontainer [1578](https://github.com/dapr/java-sdk/issues/1578), [1586](https://github.com/dapr/java-sdk/pull/1586) +- **DOCS** Add statestore example with Outbox pattern [1582](https://github.com/dapr/java-sdk/pull/1582) +- **ADDED** Add support for HttpPipeline [1585](https://github.com/dapr/java-sdk/pull/1585) +- **CHORE** Bump actions/upload-artifact [1587](https://github.com/dapr/java-sdk/pull/1587), [1606](https://github.com/dapr/java-sdk/pull/1606) +- **CHORE** Use dependencies BOM and remove duplicates [1588](https://github.com/dapr/java-sdk/pull/1588) +- **DOCS** Examples and docs for App API Token authentication (gRPC and HTTP) [1589](https://github.com/dapr/java-sdk/pull/1589) +- **ADDED** Add micrometer traces to DaprWorkflowClient [1592](https://github.com/dapr/java-sdk/pull/1592) +- **CHORE** Remove SDK docs (migrated to main Docs repo) [1593](https://github.com/dapr/java-sdk/pull/1593) +- **CHORE** Bump actions/checkout from 5 to 6 [1595](https://github.com/dapr/java-sdk/pull/1595) +- **CHORE** Maven version, properties and plugin improvements [1596](https://github.com/dapr/java-sdk/pull/1596) +- **ADDED** Add Flux-based subscribeToEvents method [1598](https://github.com/dapr/java-sdk/pull/1598) +- **ADDED** Initial workflow dashboard config for testcontainers [1601](https://github.com/dapr/java-sdk/pull/1601) +- **ADDED** Jobs API promotion to DaprClient [1602](https://github.com/dapr/java-sdk/pull/1602) +- **TEST** Fix flaky DaprPubSubOutboxIT test [1605](https://github.com/dapr/java-sdk/pull/1605) +- **CHORE** Bump codecov/codecov-action [1607](https://github.com/dapr/java-sdk/pull/1607) +- **ADDED** Add support for dead-letter topics in streaming subscriptions [1608](https://github.com/dapr/java-sdk/issues/1608), [1615](https://github.com/dapr/java-sdk/pull/1615) +- **ADDED** Create Dapr WaitStrategy to improve integration test ergonomics [1609](https://github.com/dapr/java-sdk/pull/1609) +- **ADDED** Add DaprSpringBootTest and DaprSidecarContainer annotations for integration tests [1610](https://github.com/dapr/java-sdk/pull/1610) +- **CHORE** Upgrade Protobuf to 4.x.x [1611](https://github.com/dapr/java-sdk/pull/1611) +- **ADDED** Add raw event subscription alongside CloudEvent subscription [1617](https://github.com/dapr/java-sdk/pull/1617) +- **CHORE** Bring DurableTask Client to Maven standards [1618](https://github.com/dapr/java-sdk/pull/1618) +- **ADDED** feat: Propagate tracing info [1619](https://github.com/dapr/java-sdk/pull/1619) +- **CHORE** Update dapr version to 1.17.0 [1620](https://github.com/dapr/java-sdk/pull/1620), [1651](https://github.com/dapr/java-sdk/pull/1651) +- **ADDED** Add PATCH to HttpMethods enum and HttpExtension for service invocation [1623](https://github.com/dapr/java-sdk/pull/1623), [1644](https://github.com/dapr/java-sdk/pull/1644) +- **ADDED** feat: Add workflow versioning [1624](https://github.com/dapr/java-sdk/pull/1624) +- **CHORE** Bump org.assertj:assertj-core [1627](https://github.com/dapr/java-sdk/pull/1627) +- **ADDED** Add Named Timers to the Java SDK [1628](https://github.com/dapr/java-sdk/pull/1628) +- **ADDED** Allow registering custom TaskOrchestrationFactory and TaskActivityFactory [1629](https://github.com/dapr/java-sdk/issues/1629), [1630](https://github.com/dapr/java-sdk/pull/1630) +- **ADDED** Introduce closeNow() for immediate shutdown [1632](https://github.com/dapr/java-sdk/pull/1632) +- **CHORE** Remove unnecessary variable; replace log-based waits with DaprWait strategy [1634](https://github.com/dapr/java-sdk/pull/1634), [1635](https://github.com/dapr/java-sdk/pull/1635) +- **CHORE** Cherry-pick master to 1.17 branch [1637](https://github.com/dapr/java-sdk/pull/1637) +- **ADDED** Add new fields to conversation API [1639](https://github.com/dapr/java-sdk/issues/1639), [1640](https://github.com/dapr/java-sdk/pull/1640) +- **ADDED** Make bulk pubsub stable [1641](https://github.com/dapr/java-sdk/pull/1641) +- **ADDED** feat: Add failure policy to actor reminders [1643](https://github.com/dapr/java-sdk/pull/1643) +- **ADDED** Support Jackson3 with Spring Boot 4.x using DefaultObjectSerializer [1647](https://github.com/dapr/java-sdk/issues/1647) + + +### Python SDK +- **CHORE** Bump actions/setup-python from 5 to 6 [830](https://github.com/dapr/python-sdk/pull/830) +- **FIXED** Wait for Dapr health check asynchronously to avoid blocking gRPC stream close [839](https://github.com/dapr/python-sdk/pull/839) +- **CHORE** Extend key generation time [845](https://github.com/dapr/python-sdk/pull/845) +- **CHORE** Merge release-1.16 branch changes to main [851](https://github.com/dapr/python-sdk/pull/851) +- **CHORE** Lint update [854](https://github.com/dapr/python-sdk/pull/854) +- **CHORE** Remove python 3.9 support [860](https://github.com/dapr/python-sdk/pull/860) +- **ADDED** Async workflow client implementation [861](https://github.com/dapr/python-sdk/pull/861) +- **ADDED** Add Dapr checkpointer for LangGraph [862](https://github.com/dapr/python-sdk/pull/862), [868](https://github.com/dapr/python-sdk/pull/868) +- **CHORE** Fix CI - CLI version step [863](https://github.com/dapr/python-sdk/pull/863) +- **CHORE** Bump mypy-protobuf [864](https://github.com/dapr/python-sdk/pull/864), [888](https://github.com/dapr/python-sdk/pull/888) +- **CHORE** Remove SDK docs (migrated to main docs repo) [866](https://github.com/dapr/python-sdk/pull/866) +- **CHORE** Bump actions/checkout from 5 to 6 [867](https://github.com/dapr/python-sdk/pull/867) +- **CHORE** Fix ext package typing [869](https://github.com/dapr/python-sdk/pull/869) +- **ADDED** Add Strands Agent Session Manager [872](https://github.com/dapr/python-sdk/pull/872) +- **CHORE** Update grpcio and regenerate gRPC files [877](https://github.com/dapr/python-sdk/pull/877) +- **TEST** Fix metadata testcase for release 1.17 [878](https://github.com/dapr/python-sdk/pull/878) +- **DOCS** Fix subscribe docstring typo [883](https://github.com/dapr/python-sdk/pull/883) +- **CHORE** Trigger CI for new ext tags [886](https://github.com/dapr/python-sdk/pull/886) +- **FIXED** Fix workflow client missing close function [889](https://github.com/dapr/python-sdk/pull/889) +- **ADDED** Workflow versioning [893](https://github.com/dapr/python-sdk/pull/893) +- **FIXED** Fix signal when dt reader stream is ready within workflow client start [901](https://github.com/dapr/python-sdk/pull/901) +- **ADDED** feat(convo): add new fields to conversation API [902](https://github.com/dapr/python-sdk/pull/902) +- **CHORE** Bump fossas/fossa-action [904](https://github.com/dapr/python-sdk/pull/904), [912](https://github.com/dapr/python-sdk/pull/912) +- **CHORE** Bump durabletask-dapr [905](https://github.com/dapr/python-sdk/pull/905) +- **CHORE** fix(build): capture latest + rereleases for dapr runtime + CLI [906](https://github.com/dapr/python-sdk/pull/906), [913](https://github.com/dapr/python-sdk/pull/913) +- **CHORE** Update durabletask [908](https://github.com/dapr/python-sdk/pull/908), [909](https://github.com/dapr/python-sdk/pull/909) +- **CHORE** Update mypy_protobuf [910](https://github.com/dapr/python-sdk/pull/910), [914](https://github.com/dapr/python-sdk/pull/914) +- **CHORE** Use backport GitHub action [911](https://github.com/dapr/python-sdk/pull/911) + + +### Documentation +- **DOCS** State Store: Alicloud table store missing [4795](https://github.com/dapr/docs/issues/4795) +- **DOCS** bindings.dubbo component missing in docs [4798](https://github.com/dapr/docs/issues/4798) +- **DOCS** OCI Object Storage missing [4799](https://github.com/dapr/docs/issues/4799) +- **DOCS** Twilio bindings need addition/edit [4800](https://github.com/dapr/docs/issues/4800) +- **DOCS** Alibaba Cloud Log Storage binding missing from table [4804](https://github.com/dapr/docs/issues/4804) +- **DOCS** RocketMQ binding missing [4806](https://github.com/dapr/docs/issues/4806) +- **DOCS** Secret store tencentcloud.ssm missing [4808](https://github.com/dapr/docs/issues/4808) +- **DOCS** Huaweicloud missing from Secret Store table [4809](https://github.com/dapr/docs/issues/4809) +- **DOCS** Add documentation for Pulsar PubSub message compression [4990](https://github.com/dapr/docs/pull/4990) +- **DOCS** Document Dapr.Workflow .NET SDK changes for 1.17 release [4991](https://github.com/dapr/docs/pull/4991) +- **DOCS** Added docs for RavenDB as State Store [4738](https://github.com/dapr/docs/pull/4738) +- **DOCS** doc: add openbao.md [4917](https://github.com/dapr/docs/pull/4917) +- **DOCS** [1.16] Update perf test docs to point to the new source of truth [4961](https://github.com/dapr/docs/pull/4961) +- **DOCS** docs: update bedrock metadata [4980](https://github.com/dapr/docs/pull/4980) +- **DOCS** .NET SDK - Updated guidance around specifying both HTTP and gRPC sidecar ports for SDK [4993](https://github.com/dapr/docs/pull/4993) +- **DOCS** Added docs for workflow versioning [5003](https://github.com/dapr/docs/pull/5003) +- **DOCS** Add support for custom annotations in dapr sidecar service [5005](https://github.com/dapr/docs/pull/5005) +- **DOCS** [1.17] Workflow/CLI/Reminder Documentation [5017](https://github.com/dapr/docs/pull/5017) +- **DOCS** Added low-level workflow protocol documentation [5024](https://github.com/dapr/docs/pull/5024) +- **DOCS** docs(convo): add new fields and make corrections on caching [5027](https://github.com/dapr/docs/pull/5027) +- **DOCS** Add new documentation to enable Pulsar PubSub message compression [5028](https://github.com/dapr/docs/pull/5028) +- **DOCS** feat: Introduce sqlserver state store v2 [5032](https://github.com/dapr/docs/pull/5032) +- **DOCS** style: update agents api [5034](https://github.com/dapr/docs/pull/5034) +- **DOCS** Feature workflows remote activity reminder [5036](https://github.com/dapr/docs/pull/5036) +- **DOCS** Feature workflows remote activity reminder 1.17 [5039](https://github.com/dapr/docs/pull/5039) +- **DOCS** [1.17] Docs redis honor resiliency [5044](https://github.com/dapr/docs/pull/5044) +- **DOCS** docs: configuration otel headers secretref [5047](https://github.com/dapr/docs/pull/5047) +- **DOCS** Added ravendb to the docs [5050](https://github.com/dapr/docs/pull/5050) + +### Quickstarts +- **CHORE** JS SDK version 3.6.1 [1265](https://github.com/dapr/quickstarts/pull/1265) +- **FIXED** Remove HTTPS redirection (known issue with Dapr SDK) from quickstart test [1268](https://github.com/dapr/quickstarts/pull/1268) +- **CHORE** Rename assembly outputs to remove "App"/"Service" suffixes [1271](https://github.com/dapr/quickstarts/pull/1271) +- **CHORE** Update Conversation example to use Conversation Alpha 2 [1272](https://github.com/dapr/quickstarts/pull/1272) +- **CHORE** Bump Runtime, CLI and SDK to RCs [1278](https://github.com/dapr/quickstarts/pull/1278) + + +## Upgrading to Dapr 1.17 + +To upgrade to this release of Dapr, follow the steps below to ensure a smooth upgrade. + +### Local Machine / Self-hosted + +Uninstall Dapr using the CLI you currently have installed. Note that this will remove the default $HOME/.dapr directory, binaries and all containers dapr_redis, dapr_placement and dapr_zipkin. Linux users need to run sudo if docker command needs sudo: + +```bash +dapr uninstall --all +``` + +Download the latest release from [here](https://github.com/dapr/cli/releases) and put the `dapr` binary in your PATH. + +Once you have installed the CLI, run: + +```bash +dapr init --runtime-version=1.17 +``` + +Wait for the update to finish, ensure you are using the latest version of Dapr(1.17) with: + +```bash +$ dapr --version + +CLI version: 1.17 +Runtime version: 1.17 +``` + +### Kubernetes + +#### Upgrading from previous version + +You can perform zero-downtime upgrades using both Helm 3 and the Dapr CLI. + +##### Upgrade using the CLI + +Download the latest release from [here](https://github.com/dapr/cli/releases) and put the `dapr` binary in your PATH. + +To upgrade Dapr, run: + +``` +dapr upgrade --runtime-version 1.17 -k +``` + +To upgrade with high availability mode: + +``` +dapr upgrade --runtime-version 1.17 --enable-ha=true -k +``` + +Wait until the operation is finished and check your status with `dapr status -k`. + +All done! + +*Note: Make sure your deployments are restarted to pick the latest version of the Dapr sidecar* + +##### Upgrade using Helm + +To upgrade Dapr using Helm, run: + +``` +helm repo add dapr https://dapr.github.io/helm-charts/ +helm repo update + +helm upgrade dapr dapr/dapr --version 1.17 --namespace=dapr-system --wait +``` + +Wait until the operation is finished and check your status with `dapr status -k`. + +All done! + +*Note: Make sure your deployments are restarted to pick the latest version of the Dapr sidecar* + +#### Starting a fresh install on a cluster + +Please see [how to deploy Dapr on a Kubernetes cluster](https://docs.dapr.io/operations/hosting/kubernetes/kubernetes-deploy/) for a complete guide to installing Dapr on Kubernetes + +You can use Helm 3 to install Dapr: +``` +helm repo add dapr https://dapr.github.io/helm-charts/ +helm repo update + +kubectl create namespace dapr-system + +helm install dapr dapr/dapr --version 1.17 --namespace dapr-system --wait +``` + +Alternatively, you can use the latest version of CLI: + +``` +dapr init --runtime-version=1.17 -k +``` + +##### Post Installation + +Verify the control plane pods are running and are healthy: + +``` +$ dapr status -k + NAME NAMESPACE HEALTHY STATUS REPLICAS VERSION AGE CREATED + dapr-sidecar-injector dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39 + dapr-sentry dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39 + dapr-operator dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39 + dapr-placement dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39 +``` + +After Dapr 1.17 has been installed, perform a rolling restart for your deployments to pick up the new version of the sidecar. +This can be done with: + +``` +kubectl rollout restart deploy/ +``` + +## Breaking Changes + +None. + +## Deprecation Notices + +Alpha Bulk PubSub APIs are being deprecated in favor of the stable Bulk PubSub APIs. The alpha Bulk Publish and Bulk Subscribe APIs (`/v1.0-alpha1/publish/bulk//` and `BulkPublishEventAlpha1`) are now deprecated. The app callback `OnBulkTopicEventAlpha1` is also now deprecated. + +The alpha APIs remain functional in Dapr v1.17 - Dapr will log a deprecation warning and automatically fallback to them if your application still uses them. This gives users time to migrate to the stable APIs (`/v1.0/publish/bulk//` and `BulkPublishEvent`) and `OnBulkTopicEvent` for the app callback. + +See the section above titled `Bulk PubSub API is now Stable` for full details on the promoted APIs, migration steps, backwards compatibility behavior, and documentation links.