---
title: "Change log"
description: "This page lists user-visible changes to the Go SDK, newest first; each section covers the changes since the previous release of this component."
canonical_url: "https://docs.superdurable.io/zh-Hans/reference/go/changelog/"
source: "docs/reference/go/changelog.mdx"
locale: "zh-Hans"
---

# Change log

This page lists user-visible changes to the Go SDK, newest first; each section covers the changes since the previous release of this component.

<a id="v1-45"></a>

## 1.45

Released 2026-11-11 as [sdk-go/v1.45.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.45.0).

### Added

- **WorkerOptions.FlowDefinitionPaths** and **WorkerOptions.FlowDefinitions** upload the Flow Definition Graph 2.0 documents of the Worker's registered Flow types when the Worker starts. A failed upload only logs a warning. **ReadFlowDefinitionFiles** reads documents with the same rules, and **Client.UploadFlowDefinitions** uploads them from a deployment script and reports each **FlowDefinitionUploadOutcome**. [Reference](https://docs.superdurable.io/zh-Hans/reference/go/workers.md#flow-definitions).

### Breaking

- A Step whose Step type contains "-" can no longer start SubFlows. The child Flow ID joins the parent Flow ID, Step execution ID, and SubFlow index with "-", so a dash made it ambiguous. When such a Step returns a **SubFlow** Condition from **WaitFor**, Dex Server rejects the result and fails the attempt without retry. The Worker logs a warning. Default Step types are Go type names and are not affected; only a **GetStepType** override can contain "-". To migrate, change the **GetStepType** override to return a name without "-". [Reference](https://docs.superdurable.io/zh-Hans/reference/go/subflow.md#step-type-rule).

### Fixed

- The **Join** documentation no longer recommends reporting a result for a cancelled branch from the cancelling RPC, which could count that branch twice. A cancelled branch never reports, and no other code can safely report for it. [API reference](https://docs.superdurable.io/api/go/latest/dex/#type-join).

<a id="v1-44"></a>

## 1.44

Released 2026-11-10 as [sdk-go/v1.44.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.44.0).

### Added

- **Join** and **JoinRound** synchronize parallel branches of one Flow. **DefineJoin** defines a Join over a ChannelMap of branch results. **Join.Fork** starts the branches and the join Step with one **JoinRound**; **Join.ForkWithRoundKey** takes an explicit round key for RPCs. Branches report with **Join.EndBranch** or **Join.ReportBranchResult**. The join Step waits with **Join.ForAllBranches**, **Join.ForFirstBranch**, or **Join.ForBranches** and reads **Join.BranchResults**. The next round's split Step resets the previous round with **Join.ForRemainingBranches** and reads **Join.RemainingBranchResults**. **Join.ChannelMap** returns the underlying ChannelMap for reading or loading a round's pending results. [API reference](https://docs.superdurable.io/api/go/latest/dex/#type-join).

<a id="v1-43"></a>

## 1.43

Released 2026-11-10 as [sdk-go/v1.43.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.43.0).

### Breaking

- Removed **Client.TriggerContinueAsNew**, **FlowContinuedAsNew**, **FlowConfig.ContinueAsNewThreshold**, **FlowConfig.ContinueAsNewPageSizeBytes**, **SearchFlowsOptions**, **Client.SearchFlowsWithOptions**, and **IncludeContinuedAsNew**. Use **Client.SearchFlows** for run searches. [Reference](https://docs.superdurable.io/zh-Hans/reference/go/flow.md#flow-config).
- Removed **WaitForStepCompletionOptions.InternalHandlerTimeout** and **WaitForAttributeOptions.InternalHandlerTimeout**. **RequestID** remains accepted but the server does not read it for these waits. [Reference](https://docs.superdurable.io/zh-Hans/reference/server/runtime-client.md#wait-timeouts-and-limits).
- Generated bindings rename **FlowExecutionID** to **FlowRunID** and **FlowExecutionId** to **FlowRunId** on response and history messages. ProtoJSON uses **flowRunId**. [Reference](https://docs.superdurable.io/zh-Hans/reference/server/runtime-client.md#describe-a-flow).

### Added

- **NewStandaloneContext** and **StandaloneContextOptions** create a **Context** for running Step code outside a Worker, such as in a tool server or a test. The caller supplies the metadata, including the required **Attempt**, and seeds the last heartbeat value and step-execution locals. The **OnRecordHeartbeat**, **OnSetStepExecutionLocal**, and **OnRecordEvent** hooks receive what the Step code records, so the caller can persist it. [API reference](https://docs.superdurable.io/api/go/latest/dex/#type-standalonecontextoptions).

<a id="v1-40"></a>

## 1.40

Released 2026-11-09 as [sdk-go/v1.40.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.40.0). Patch release [sdk-go/v1.40.2](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.40.2) followed the same day.

### Added

- **FlowConfig.OffloadHistory** chooses whether a run offloads its history to object storage. Nil means true. Set it to false for many short runs that close soon. Set it at start through **StartFlowOptions.ConfigOverride** or in **SubFlowOptions.ConfigOverride**. A SubFlow otherwise inherits its parent's value, and **Client.UpdateFlowConfig** rejects it with INVALID_ARGUMENT. It requires server-zd 0.1.23 or later. [Reference](https://docs.superdurable.io/zh-Hans/reference/server/configuration.md#history-offload).

### Changed

- **FlowConfig.DeleteExpiredHistoryObjects** is deprecated. It has no effect, and the SDK no longer sends it. Existing code that sets it still compiles.
- The Worker error type now reports the original error's type for an error wrapped by **dex.ErrorWithStack**, instead of the wrapper type. The message and stack are unchanged. This arrived in 1.40.2.

<a id="v1-39"></a>

## 1.39

Released 2026-11-09 as [sdk-go/v1.39.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.39.0).

### Added

- **FlowConfig.DeleteExpiredHistoryObjects** controls expired history object deletion at start, on update, and for SubFlows. It requires history offload and server-zd 0.1.22 or later.

### Changed

- A LoadBlobs request names at most 1,000 entries. The SDK batches larger requests and keeps the input order.

<a id="v1-38"></a>

## 1.38

Released 2026-11-07 as [sdk-go/v1.38.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.38.0).

### Added

- **FlowConfig.HistoryWindowEvents** sets about how many of the newest history events a run keeps for history reads and Time Travel. Set it at start, change it with **Client.UpdateFlowConfig**, or override it for a SubFlow. Nil uses the server's **history.windowEvents** setting. Dex rejects a value that is not positive or exceeds **history.maxWindowEvents** with INVALID_ARGUMENT. It requires server-zd 0.1.21 or later. [Reference](https://docs.superdurable.io/zh-Hans/reference/server/configuration.md#history-window).

### Fixed

- A LoadBlobs request splits when the server rejects its response with OUT_OF_RANGE for exceeding the send limit. Before, hydrating more than 32 MiB of uncached blobs failed.

<a id="v1-37"></a>

## 1.37

Released 2026-11-06 as [sdk-go/v1.37.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.37.0). Reference: [1.37.x](https://docs.superdurable.io/zh-Hans/reference/go/1.37.x.md).

This release has no runtime behavior changes; the SDK changes in this interval are API documentation updates.

<a id="v1-35"></a>

## 1.35

Released 2026-11-06 as [sdk-go/v1.35.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.35.0). Reference: [1.35.x](https://docs.superdurable.io/zh-Hans/reference/go/1.35.x.md).

### Breaking

- Workers and the Client’s first call now require server-zd 0.1.17 or later (protocol version 4). Upgrade all server processes before upgrading the SDK. [Reference](https://docs.superdurable.io/zh-Hans/reference/server/upgrades.md).
- Worker startup fails when **MaxConcurrentTasks** exceeds **matching.maxConcurrentTasksCap** (256 by default). Lower the Worker setting or raise the server cap and **matching.maxStreams** first. [Reference](https://docs.superdurable.io/zh-Hans/reference/go/workers.md#capacity-and-shutdown).
- **RetryPolicy.TotalDuration** now starts at the first hand-out and only gates scheduling another retry. Set method timeouts to bound running attempts. [API reference](https://docs.superdurable.io/api/go/latest/dex/#type-retrypolicy).
- A Step with no available or supporting Worker waits durably without consuming a retry. Set a Flow timeout to bound that wait. [Reference](https://docs.superdurable.io/zh-Hans/reference/server/workers.md#step-task-queue).
- A Step attempt interrupted after its hand-out was committed fails with **NOT_COMPLETED** and consumes a retry. Review retry policies and side effects before upgrading. [Reference](https://docs.superdurable.io/zh-Hans/reference/go/failure-and-retries.md#same-attempt-redelivery).

### Added

- **RecoveryErrorInfo.AttemptProgress** distinguishes a failed Step method that never started from one that may have run. [API reference](https://docs.superdurable.io/api/go/latest/dex/#type-recoveryerrorinfo).
- **RPCOptions.Name** sets an RPC’s protocol name while Go callers continue referring to its bound method. [API reference](https://docs.superdurable.io/api/go/latest/dex/#type-rpcoptions).

### Changed

- Workers open one execution stream per slot; **ReservedRPCTasks** selects RPC-only slots. By default, a Worker with at least two slots reserves one for RPCs. [Reference](https://docs.superdurable.io/zh-Hans/reference/go/workers.md#capacity-and-shutdown).
- **Stop** drains running handlers and returns tasks that did not start without consuming a retry. [Reference](https://docs.superdurable.io/zh-Hans/reference/go/workers.md#capacity-and-shutdown).

### Deprecated

- **IdleStreamsPerQueue** is accepted but ignored, and **PullReservedRPCDeclines()** always reports zero. Use execution-slot capacity and queue metrics instead. [Reference](https://docs.superdurable.io/zh-Hans/reference/go/workers.md#reserved-rpc-capacity).

### Fixed

- A Worker accepts omitted input for an RPC whose input type is **dex.None**, allowing TypeScript Clients to invoke it. Missing input for other RPC types still fails with **INVALID_ARGUMENT**. [API reference](https://docs.superdurable.io/api/go/latest/dex/).

<a id="v1-32"></a>

## 1.32

Released 2026-11-01 as [sdk-go/v1.32.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.32.0). Reference: [1.32.x](https://docs.superdurable.io/zh-Hans/reference/go.md).

### Added

- Generated protocol bindings include **AdminService**, with **DescribeActiveNode** and **StepDownActiveNode** for inspecting and stepping down the active server process. [Release notes](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.32.0).

<a id="v1-30"></a>

## 1.30

Released 2026-10-31 as [sdk-go/v1.30.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.30.0). Reference: [1.30.x](https://docs.superdurable.io/zh-Hans/reference/go.md).

### Added

- Generated protocol bindings add **ERROR_SUB_STATUS_ATTRIBUTE_INDEX_CAPACITY_EXCEEDED** and **ERROR_SUB_STATUS_INDEXED_KEYWORD_TOO_LONG** for Attribute index admission errors. [Release notes](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.30.0).

<a id="v1-29"></a>

## 1.29

Released 2026-10-31 as [sdk-go/v1.29.0](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.29.0). Reference: [1.29.x](https://docs.superdurable.io/zh-Hans/reference/go.md).

### Added

- Generated history responses expose the pruned event range and first retained event ID. Step event contexts also carry related event IDs and the WaitFor completion time. [Release notes](https://github.com/superdurable/dex/releases/tag/sdk-go%2Fv1.29.0).

Older releases: [GitHub releases](https://github.com/superdurable/dex/releases?q=sdk-go\&expanded=true).
