Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
c8fc5c4
update performance benchmarks
yaron2 Oct 12, 2023
f054f33
Merge branch 'v1.12' into perf-1
yaron2 Oct 12, 2023
52576fc
Merge branch 'v1.12' into perf-1
yaron2 Oct 13, 2023
64084b3
Merge branch 'v1.12' into perf-1
msfussell Oct 16, 2023
5b9ecdb
prep 1.12 for endgame
hhunter-ms Jan 26, 2024
af8dc61
Merge branch 'v1.12' into perf-1
hhunter-ms Feb 1, 2024
d8a5628
Merge branch 'v1.12' into perf-1
hhunter-ms Feb 13, 2024
8d63baa
Merge branch 'v1.12' into issue_3965_1.12
hhunter-ms Feb 16, 2024
be69ded
Added environment variable documentation indicating how the service n…
WhitWaldo Jan 26, 2024
87c70c0
Merge branch 'v1.12' into issue_3965_1.12
hhunter-ms Mar 5, 2024
6d5de8f
Merge pull request #3979 from hhunter-ms/issue_3965_1.12
hhunter-ms Mar 5, 2024
836906d
Merge branch 'v1.12' into otel_override_service_name
WhitWaldo Apr 19, 2024
8bf63e5
Merge branch 'v1.12' into perf-1
yaron2 Apr 24, 2024
162eb37
Merge pull request #3971 from WhitWaldo/otel_override_service_name
hhunter-ms May 6, 2024
1d51450
Enable manual trigger
paulyuk May 30, 2024
83d13b9
Merge pull request #4169 from dapr/paulyuk-patch-3
hhunter-ms May 31, 2024
c6de31f
Merge branch 'v1.12' into perf-1
hhunter-ms Jul 29, 2024
9707d56
update python versions
hhunter-ms Jan 6, 2025
b5f1aed
Merge pull request #4481 from hhunter-ms/v1.12
hhunter-ms Jan 6, 2025
b43fd26
Merge branch 'v1.12' into perf-1
hhunter-ms Jan 6, 2025
c52b0e6
Update daprdocs/content/en/operations/performance-and-scalability/per…
yaron2 Jan 8, 2025
d43df22
Update daprdocs/content/en/operations/performance-and-scalability/per…
yaron2 Jan 8, 2025
4057f31
Update daprdocs/content/en/operations/performance-and-scalability/per…
yaron2 Jan 8, 2025
94bcd49
Update daprdocs/content/en/operations/performance-and-scalability/per…
yaron2 Jan 13, 2025
91c4eab
Merge remote-tracking branch 'yaron/perf-1' into perf-benchmarks-v1.16
MyMirelHub Sep 15, 2025
80dc3d6
Revert "Merge remote-tracking branch 'yaron/perf-1' into perf-benchma…
MyMirelHub Sep 17, 2025
66084d5
git magic to resolve conflicts for perf
MyMirelHub Sep 17, 2025
4a83a61
Updated conversation api docs to latest alpha v2, refresh sample requ…
bibryam Sep 12, 2025
2eb604f
Reverting back from snake case to camel case
bibryam Sep 15, 2025
c08077d
Multi-app workflows: improve docs and images (#4878)
cicoyle Sep 16, 2025
bbb5516
Prepare branch 1.16 to be latest (#4858)
marcduiker Sep 16, 2025
c6a130c
Update to download-artifact@v4
marcduiker Sep 16, 2025
81b0967
Update supported version table (+ procedure) (#4890)
marcduiker Sep 16, 2025
a93b3a4
[1.16] Adds configuration-overview.md section on Workflow (#4889)
JoshVanL Sep 16, 2025
464a54d
Enhanced the OpenAI conversation component docs to include Azure seci…
bibryam Sep 16, 2025
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
16 changes: 5 additions & 11 deletions .github/workflows/website-root.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ on:
workflow_dispatch:
push:
branches:
- v1.15
- v1.16
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- v1.15
- v1.16

concurrency:
# Cancel the previously triggered build for only PR build.
Expand Down Expand Up @@ -50,23 +50,17 @@ jobs:
if [ $GITHUB_EVENT_NAME == 'pull_request' ]; then
STAGING_URL="https://${SWA_BASE}-${{github.event.number}}.westus2.azurestaticapps.net/"
fi
hugo ${STAGING_URL+-b "$STAGING_URL"}
hugo ${STAGING_URL+-b "$STAGING_URL"} --minify
- name: Deploy docs site
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_PROUD_BAY_0E9E0E81E }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: "upload"
app_location: "/daprdocs/public/"
app_location: "/daprdocs/public"
output_location: "/"
skip_app_build: true
skip_deploy_on_missing_secrets: true
- name: Upload Hugo artifacts
uses: actions/upload-artifact@v4
with:
name: hugo_build
path: ./daprdocs/public/
if-no-files-found: error

close_staging_site:
if: github.event_name == 'pull_request' && github.event.action == 'closed'
Expand Down Expand Up @@ -96,7 +90,7 @@ jobs:
with:
submodules: false
- name: Download Hugo artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: hugo_build
path: site/
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ The following branches are currently maintained:

| Branch | Website | Description |
| ------------------------------------------------------------ | -------------------------- | ------------------------------------------------------------------------------------------------ |
| [v1.15](https://github.com/dapr/docs) (primary) | https://docs.dapr.io | Latest Dapr release documentation. Typo fixes, clarifications, and most documentation goes here. |
| [v1.16](https://github.com/dapr/docs/tree/v1.16) (pre-release) | https://v1-16.docs.dapr.io/ | Pre-release documentation. Doc updates that are only applicable to v1.15+ go here. |
| [v1.16](https://github.com/dapr/docs) (primary) | https://docs.dapr.io | Latest Dapr release documentation. Typo fixes, clarifications, and most documentation goes here. |
| [v1.17](https://github.com/dapr/docs/tree/v1.16) (pre-release) | https://v1-17.docs.dapr.io/ | Pre-release documentation. Doc updates that are only applicable to v1.16+ go here. |

For more information visit the [Dapr branch structure](https://docs.dapr.io/contributing/docs-contrib/contributing-docs/#branch-guidance) document.

Expand Down
70 changes: 34 additions & 36 deletions daprdocs/content/en/contributing/docs-contrib/maintainer-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,24 +103,22 @@ These steps will prepare the latest release branch for archival.
git checkout -b release_v1.0
```

1. In VS Code, navigate to `/daprdocs/config.toml`.
1. Add the following TOML to the `# Versioning` section (around line 154):

```toml
version_menu = "v1.0"
version = "v1.0"
archived_version = true
url_latest_version = "https://docs.dapr.io"

[[params.versions]]
version = "v1.2 (preview)"
url = "v1-2.docs.dapr.io"
[[params.versions]]
version = "v1.1 (latest)"
url = "#"
[[params.versions]]
version = "v1.0"
url = "https://v1-0.docs.dapr.io"
1. In VS Code, navigate to `hugo.yaml` located in the root.
1. Add the following configuration to the `# Versioning` section (around line 121 and onwards):

```yaml
version_menu: "v1.0"
version: "v1.0"
archived_version: true
url_latest_version: "https://docs.dapr.io"

versions:
- version: v1.2 (preview)
url: https://v1-2.docs.dapr.io
- version: v1.1 (latest)
url: "#"
- version: v1.0
url: https://v1-0.docs.dapr.io
```

1. Delete `.github/workflows/website-root.yml`.
Expand All @@ -146,26 +144,25 @@ These steps will prepare the upcoming release branch for promotion to latest rel
git checkout -b release_v1.1
```

1. In VS Code, navigate to `/daprdocs/config.toml`.
1. Update line 1 to `baseURL - https://docs.dapr.io/`.
1. Update the `# Versioning` section (around line 154) to display the correct versions and tags:
1. In VS Code, navigate to `hugo.yaml` located in the root.
1. Update line 1 to `baseURL: https://docs.dapr.io/`.
1. Update the `# Versioning` section (around line 121 and onwards) to display the correct versions and tags:

```toml
```yaml
# Versioning
version_menu = "v1.1 (latest)"
version = "v1.1"
archived_version = false
url_latest_version = "https://docs.dapr.io"

[[params.versions]]
version = "v1.2 (preview)"
url = "v1-2.docs.dapr.io"
[[params.versions]]
version = "v1.1 (latest)"
url = "#"
[[params.versions]]
version = "v1.0"
url = "https://v1-0.docs.dapr.io"
version_menu: "v1.1 (latest)"
version: "v1.1"
archived_version: false
url_latest_version: https://docs.dapr.io
github_branch: v1.1

versions:
- version: v1.2 (preview)
url: https://v1-2.docs.dapr.io
- version: v1.1 (latest)
url: "#"
- version: v1.0
url: https://v1-0.docs.dapr.io
```

1. Navigate to `.github/workflows/website-root.yml`.
Expand Down Expand Up @@ -194,6 +191,7 @@ These steps will prepare the upcoming release branch for promotion to latest rel
| [v1.2](https://github.com/dapr/docs/tree/v1.2) (pre-release) | https://v1-2.docs.dapr.io/ | Pre-release documentation. Doc updates that are only applicable to v1.2+ go here. |
```

1. Update the _Supported versions_ table in `support-release-policy.md`; add a new line at the top of the table with the new version of the runtime and SDKs. Change the releases which are older than n-2 to be `Unsupported`.
1. Update the `dapr-latest-version.html` shortcode partial to the new minor/patch version (in this example, `1.1.0` and `1.1`).
1. Commit the staged changes and push to your branch (`release_v1.1`).
1. Open a PR from `release/v1.1` to `v1.1`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ In addition to enabling critical performance and security functionality (like [p
- **OpenAI-compatible interface** for seamless integration with existing AI workflows and tools

You can also pair the conversation API with Dapr functionalities, like:
- Resiliency circuit breakers and retries to circumvent limit and token errors, or
- Middleware to authenticate requests coming to and from the LLM

Dapr provides observability by issuing metrics for your LLM interactions.
- Resiliency policies including circuit breakers to handle repeated errors, timeouts to safeguards from slow responses, and retries for temporary network failures
- Observability with metrics and distributed tracing using OpenTelemetry and Zipkin
- Middleware to authenticate requests to and from the LLM

## Features

Expand Down Expand Up @@ -67,7 +67,7 @@ Watch the demo presented during [Diagrid's Dapr v1.15 celebration](https://www.d

{{< youtube id=NTnwoDhHIcQ start=5444 >}}

## Try out conversation
## Try out conversation API

### Quickstarts and tutorials

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,10 +197,12 @@ public class DemoWorkflowActivity implements WorkflowActivity {

<!--go-->

### Define workflow activities

Define each workflow activity you'd like your workflow to perform. The Activity input can be unmarshalled from the context with `ctx.GetInput`. Activities should be defined as taking a `ctx workflow.ActivityContext` parameter and returning an interface and error.

```go
func TestActivity(ctx workflow.ActivityContext) (any, error) {
func BusinessActivity(ctx workflow.ActivityContext) (any, error) {
var input int
if err := ctx.GetInput(&input); err != nil {
return "", err
Expand All @@ -211,6 +213,87 @@ func TestActivity(ctx workflow.ActivityContext) (any, error) {
}
```

### Define the workflow

Define your workflow function with the parameter `ctx *workflow.WorkflowContext` and return any and error. Invoke your defined activities from within your workflow.

```go
func BusinessWorkflow(ctx *workflow.WorkflowContext) (any, error) {
var input int
if err := ctx.GetInput(&input); err != nil {
return nil, err
}
var output string
if err := ctx.CallActivity(BusinessActivity, workflow.ActivityInput(input)).Await(&output); err != nil {
return nil, err
}
if err := ctx.WaitForExternalEvent("businessEvent", time.Second*60).Await(&output); err != nil {
return nil, err
}

if err := ctx.CreateTimer(time.Second).Await(nil); err != nil {
return nil, nil
}
return output, nil
}
```

### Register workflows and activities

Before your application can execute workflows, you must register both the workflow orchestrator and its activities with a workflow registry. This ensures Dapr knows which functions to call when executing your workflow.

```go
func main() {
// Create a workflow registry
r := workflow.NewRegistry()

// Register the workflow orchestrator
if err := r.AddWorkflow(BusinessWorkflow); err != nil {
log.Fatal(err)
}
fmt.Println("BusinessWorkflow registered")

// Register the workflow activities
if err := r.AddActivity(BusinessActivity); err != nil {
log.Fatal(err)
}
fmt.Println("BusinessActivity registered")

// Create workflow client and start worker
wclient, err := client.NewWorkflowClient()
if err != nil {
log.Fatal(err)
}
fmt.Println("Worker initialized")

ctx, cancel := context.WithCancel(context.Background())
if err = wclient.StartWorker(ctx, r); err != nil {
log.Fatal(err)
}
fmt.Println("runner started")

// Your application logic continues here...
// Example: Start a workflow
instanceID, err := wclient.ScheduleWorkflow(ctx, "BusinessWorkflow", workflow.WithInput(1))
if err != nil {
log.Fatalf("failed to start workflow: %v", err)
}
fmt.Printf("workflow started with id: %v\n", instanceID)

// Stop workflow worker when done
cancel()
fmt.Println("workflow worker successfully shutdown")
}
```

**Key points about registration:**
- Use `workflow.NewRegistry()` to create a workflow registry
- Use `r.AddWorkflow()` to register workflow functions
- Use `r.AddActivity()` to register activity functions
- Use `client.NewWorkflowClient()` to create a workflow client
- Call `wclient.StartWorker()` to begin processing workflows
- Use `wclient.ScheduleWorkflow` to schedule a named instance of a workflow

[See the Go SDK workflow activity example in context.](https://github.com/dapr/go-sdk/tree/main/examples/workflow/README.md)

{{% /tab %}}
Expand Down Expand Up @@ -383,16 +466,16 @@ public class DemoWorkflowWorker {
Define your workflow function with the parameter `ctx *workflow.WorkflowContext` and return any and error. Invoke your defined activities from within your workflow.

```go
func TestWorkflow(ctx *workflow.WorkflowContext) (any, error) {
func BusinessWorkflow(ctx *workflow.WorkflowContext) (any, error) {
var input int
if err := ctx.GetInput(&input); err != nil {
return nil, err
}
var output string
if err := ctx.CallActivity(TestActivity, workflow.ActivityInput(input)).Await(&output); err != nil {
if err := ctx.CallActivity(BusinessActivity, workflow.ActivityInput(input)).Await(&output); err != nil {
return nil, err
}
if err := ctx.WaitForExternalEvent("testEvent", time.Second*60).Await(&output); err != nil {
if err := ctx.WaitForExternalEvent("businessEvent", time.Second*60).Await(&output); err != nil {
return nil, err
}

Expand Down Expand Up @@ -864,7 +947,7 @@ public class DemoWorkflow extends Workflow {
[As in the following example](https://github.com/dapr/go-sdk/tree/main/examples/workflow/README.md), a hello-world application using the Go SDK and Dapr Workflow would include:

- A Go package called `client` to receive the Go SDK client capabilities.
- The `TestWorkflow` method
- The `BusinessWorkflow` method
- Creating the workflow with input and output.
- API calls. In the example below, these calls start and call the workflow activities.

Expand All @@ -889,15 +972,15 @@ var failActivityTries = 0
func main() {
r := workflow.NewRegistry()

if err := r.AddWorkflow(TestWorkflow); err != nil {
if err := r.AddWorkflow(BusinessWorkflow); err != nil {
log.Fatal(err)
}
fmt.Println("TestWorkflow registered")
fmt.Println("BusinessWorkflow registered")

if err := r.AddActivity(TestActivity); err != nil {
if err := r.AddActivity(BusinessActivity); err != nil {
log.Fatal(err)
}
fmt.Println("TestActivity registered")
fmt.Println("BusinessActivity registered")

if err := r.AddActivity(FailActivity); err != nil {
log.Fatal(err)
Expand All @@ -921,7 +1004,7 @@ func main() {
// "start". This is useful for increasing the throughput of creating
// workflows.
// workflow.WithStartTime(time.Now())
instanceID, err := wclient.ScheduleWorkflow(ctx, "TestWorkflow", workflow.WithInstanceID("a7a4168d-3a1c-41da-8a4f-e7f6d9c718d9"), workflow.WithInput(1))
instanceID, err := wclient.ScheduleWorkflow(ctx, "BusinessWorkflow", workflow.WithInstanceID("a7a4168d-3a1c-41da-8a4f-e7f6d9c718d9"), workflow.WithInput(1))
if err != nil {
log.Fatalf("failed to start workflow: %v", err)
}
Expand Down Expand Up @@ -963,9 +1046,8 @@ func main() {

fmt.Printf("stage: %d\n", stage)

// Raise Event Test

err = wclient.RaiseEvent(ctx, instanceID, "testEvent", workflow.WithEventPayload("testData"))
// Raise Event
err = wclient.RaiseEvent(ctx, instanceID, "businessEvent", workflow.WithEventPayload("testData"))
if err != nil {
fmt.Printf("failed to raise event: %v", err)
}
Expand Down Expand Up @@ -1008,7 +1090,7 @@ func main() {
fmt.Printf("stage: %d\n", stage)

// Terminate workflow test
id, err := wclient.ScheduleWorkflow(ctx, "TestWorkflow", workflow.WithInstanceID("a7a4168d-3a1c-41da-8a4f-e7f6d9c718d9"), workflow.WithInput(1))
id, err := wclient.ScheduleWorkflow(ctx, "BusinessWorkflow", workflow.WithInstanceID("a7a4168d-3a1c-41da-8a4f-e7f6d9c718d9"), workflow.WithInput(1))
if err != nil {
log.Fatalf("failed to start workflow: %v", err)
}
Expand Down Expand Up @@ -1037,22 +1119,22 @@ func main() {
fmt.Println("workflow worker successfully shutdown")
}

func TestWorkflow(ctx *workflow.WorkflowContext) (any, error) {
func BusinessWorkflow(ctx *workflow.WorkflowContext) (any, error) {
var input int
if err := ctx.GetInput(&input); err != nil {
return nil, err
}
var output string
if err := ctx.CallActivity(TestActivity, workflow.WithActivityInput(input)).Await(&output); err != nil {
if err := ctx.CallActivity(BusinessActivity, task.WithActivityInput(input)).Await(&output); err != nil {
return nil, err
}

err := ctx.WaitForExternalEvent("testEvent", time.Second*60).Await(&output)
err := ctx.WaitForSingleEvent("businessEvent", time.Second*60).Await(&output)
if err != nil {
return nil, err
}

if err := ctx.CallActivity(TestActivity, workflow.WithActivityInput(input)).Await(&output); err != nil {
if err := ctx.CallActivity(BusinessActivity, task.WithActivityInput(input)).Await(&output); err != nil {
return nil, err
}

Expand All @@ -1068,7 +1150,7 @@ func TestWorkflow(ctx *workflow.WorkflowContext) (any, error) {
return output, nil
}

func TestActivity(ctx workflow.ActivityContext) (any, error) {
func BusinessActivity(ctx task.ActivityContext) (any, error) {
var input int
if err := ctx.GetInput(&input); err != nil {
return "", err
Expand Down
Loading