Skip to content

Commit e613e57

Browse files
authored
Prep for v1.4.0 release (#130)
* Prep for 1.4.0 * Remove committed release drafts and update release-prep skill * Update skill ordering * Better changlog syntax, agent instructions * Focus CHANGELOGS to user-facing
1 parent 7c82f24 commit e613e57

File tree

6 files changed

+155
-19
lines changed

6 files changed

+155
-19
lines changed

.github/copilot-instructions.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,17 @@ building durable orchestrations. The repo contains two packages:
88
- `durabletask` — core SDK (in `durabletask/`)
99
- `durabletask.azuremanaged` — Azure Durable Task Scheduler provider (in `durabletask-azuremanaged/`)
1010

11+
## Changelog Requirements
12+
13+
- ALWAYS document user-facing changes in the appropriate changelog under
14+
`## Unreleased`.
15+
- Update `CHANGELOG.md` for core SDK changes and
16+
`durabletask-azuremanaged/CHANGELOG.md` for provider changes.
17+
- If a change affects both packages, update both changelogs.
18+
- Do NOT document internal-only changes in changelogs, including CI/workflow
19+
updates, test-only changes, refactors with no user-visible behavior change,
20+
and implementation details that do not affect public behavior or API.
21+
1122
## Language and Style
1223

1324
- Python 3.10+ is required.
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
---
2+
name: release-prep
3+
description: >-
4+
Prepare a release for durabletask and durabletask.azuremanaged. Use when the
5+
user asks for release prep, version bumping, changelog updates, or release
6+
body drafting. Trigger phrases include: release prep, prepare vX.Y.Z,
7+
changelog for release, and draft GitHub release notes.
8+
---
9+
10+
# Release Prep
11+
12+
This skill prepares a coordinated release for both packages in this repository:
13+
14+
- `durabletask`
15+
- `durabletask.azuremanaged`
16+
17+
The skill accepts a target version (for example `1.4.0`) and performs the
18+
required changes consistently.
19+
20+
## Inputs
21+
22+
- `version`: Target semantic version (for example `1.4.0`)
23+
- Optional: `baseTag` overrides for comparison if tags are non-standard
24+
25+
If `version` is not provided, ask the user before continuing.
26+
27+
## Steps
28+
29+
### 1. Determine source range and collect commits
30+
31+
- Root package range: `v<previousVersion>..HEAD`
32+
- Azure managed package range: `azuremanaged-v<previousVersion>..HEAD`
33+
- Use commit subjects and touched files to classify each change as:
34+
- `durabletask` only
35+
- `durabletask.azuremanaged` only
36+
- shared/infra/docs changes
37+
38+
### 2. Update package versions
39+
40+
Update both project versions:
41+
42+
- `pyproject.toml` -> `version = "<version>"`
43+
- `durabletask-azuremanaged/pyproject.toml` -> `version = "<version>"`
44+
45+
Update azuremanaged dependency floors:
46+
47+
- `durabletask>=<version>`
48+
- `durabletask[azure-blob-payloads]>=<version>`
49+
50+
### 3. Update changelogs
51+
52+
- Add a new `## v<version>` section directly under `## Unreleased` in:
53+
- `CHANGELOG.md`
54+
- `durabletask-azuremanaged/CHANGELOG.md`
55+
- Ensure user-facing changes since the previous release tags are represented.
56+
- Keep entries concise and grouped by type (`ADDED`, `CHANGED`, `FIXED`, `REMOVED`) where
57+
applicable.
58+
- Exclude internal-only changes from changelogs (for example CI/workflow-only
59+
updates, test-only changes, and implementation refactors with no public
60+
behavior or API impact).
61+
62+
### 4. Validate
63+
64+
- Run diagnostics on changed markdown and TOML files.
65+
- Fix formatting or heading issues introduced by release prep changes.
66+
- Verify the final diff only contains release-prep updates.
67+
68+
### 5. Wait for merge and tags before release drafting
69+
70+
Before creating draft releases in GitHub UI, require explicit user
71+
confirmation of both conditions:
72+
73+
- The version-bump/release-prep PR is merged
74+
- Tags `v<version>` and `azuremanaged-v<version>` already exist in the target
75+
repository
76+
77+
If either condition is not met, stop after preparing release body text and ask
78+
the user to confirm once merge and tags are complete.
79+
80+
### 6. Draft GitHub release bodies
81+
82+
Draft two release body texts for the GitHub Releases UI (do not add files to
83+
the repository):
84+
85+
- Tag: `v<version>`
86+
- Tag: `azuremanaged-v<version>`
87+
88+
Match existing release structure:
89+
90+
- Title (`# v<version>` or `# azuremanaged-v<version>`)
91+
- `## What's Changed`
92+
- `## External Links`
93+
- `### Contributors`
94+
95+
Include:
96+
97+
- PyPI link for the exact release version
98+
- Full changelog compare link
99+
- Contributor handles from the commit range
100+
- Keep drafts in the assistant response (or PR comment) so they can be pasted
101+
directly into the Releases section
102+
- Keep the release body focused on user-facing changes and avoid internal-only
103+
details (CI/test updates or implementation-only notes)
104+
105+
106+
## Output
107+
108+
Return a short summary with:
109+
110+
- Updated files
111+
- Commit coverage confirmation
112+
- Any manual follow-ups (for example, tag creation or publishing)

CHANGELOG.md

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Unreleased
99

10+
## v1.4.0
11+
1012
ADDED
1113

1214
- Added large payload externalization support for automatically
@@ -22,16 +24,21 @@ ADDED
2224
- Added `AsyncTaskHubGrpcClient` for asyncio-based applications using `grpc.aio`
2325
- Added `DefaultAsyncClientInterceptorImpl` for async gRPC metadata interceptors
2426
- Added `get_async_grpc_channel` helper for creating async gRPC channels
27+
- Added orchestration restart client support
28+
- Added batch client actions for purge and query operations across orchestrations and entities
29+
- Added worker work item filtering support
30+
- Added new `work_item_filtering` sample
2531
- Improved distributed tracing support with full span coverage for orchestrations, activities, sub-orchestrations, timers, and events
2632

2733
CHANGED
2834

29-
- Refactored `TaskHubGrpcClient` to share request-building and validation logic
30-
with `AsyncTaskHubGrpcClient` via module-level helper functions
35+
- Improved timer scheduling behavior for orchestrator timers
3136

3237
FIXED:
3338

3439
- Fix unbound variable in entity V1 processing
40+
- Fixed `compute_next_delay` returning `None` when `max_retry_interval` is not set
41+
- Fixed multiple entity-related bugs across ID parsing and failure handling
3542

3643
## v1.3.0
3744

@@ -103,72 +110,72 @@ FIXED:
103110

104111
## v0.3.0
105112

106-
### New
113+
ADDED
107114

108115
- Added `ConcurrencyOptions` class for fine-grained concurrency control with separate limits for activities and orchestrations. The thread pool worker count can also be configured.
109116

110-
### Fixed
117+
FIXED
111118

112119
- Fixed an issue where a worker could not recover after its connection was interrupted or severed
113120

114121
## v0.2.1
115122

116-
### New
123+
ADDED
117124

118125
- Added `set_custom_status` orchestrator API ([#31](https://github.com/microsoft/durabletask-python/pull/31)) - contributed by [@famarting](https://github.com/famarting)
119126
- Added `purge_orchestration` client API ([#34](https://github.com/microsoft/durabletask-python/pull/34)) - contributed by [@famarting](https://github.com/famarting)
120127
- Added new `durabletask-azuremanaged` package for use with the [Durable Task Scheduler](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler) - by [@RyanLettieri](https://github.com/RyanLettieri)
121128

122-
### Changes
129+
CHANGED
123130

124131
- Protos are compiled with gRPC 1.62.3 / protobuf 3.25.X instead of the latest release. This ensures compatibility with a wider range of grpcio versions for better compatibility with other packages / libraries ([#36](https://github.com/microsoft/durabletask-python/pull/36)) - by [@berndverst](https://github.com/berndverst)
125132
- Http and grpc protocols and their secure variants are stripped from the host name parameter if provided. Secure mode is enabled if the protocol provided is https or grpcs ([#38](https://github.com/microsoft/durabletask-python/pull/38) - by [@berndverst)(https://github.com/berndverst)
126133
- Improve ProtoGen by downloading proto file directly instead of using submodule ([#39](https://github.com/microsoft/durabletask-python/pull/39) - by [@berndverst](https://github.com/berndverst)
127134

128-
### Updates
135+
CHANGED
129136

130137
- Updated `durabletask-protobuf` submodule reference to latest
131138

132139
## v0.1.1a1
133140

134-
### New
141+
ADDED
135142

136143
- Add recursive flag in terminate_orchestration to support cascade terminate ([#27](https://github.com/microsoft/durabletask-python/pull/27)) - contributed by [@shivamkm07](https://github.com/shivamkm07)
137144

138145
## v0.1.0
139146

140-
### New
147+
ADDED
141148

142149
- Retry policies for activities and sub-orchestrations ([#11](https://github.com/microsoft/durabletask-python/pull/11)) - contributed by [@DeepanshuA](https://github.com/DeepanshuA)
143150

144-
### Fixed
151+
FIXED
145152

146153
- Fix try/except in orchestrator functions not being handled correctly ([#21](https://github.com/microsoft/durabletask-python/pull/21)) - by [@cgillum](https://github.com/cgillum)
147154
- Updated `durabletask-protobuf` submodule reference to latest distributed tracing commit - by [@cgillum](https://github.com/cgillum)
148155

149156
## v0.1.0a5
150157

151-
### New
158+
ADDED
152159

153160
- Adds support for secure channels ([#18](https://github.com/microsoft/durabletask-python/pull/18)) - contributed by [@elena-kolevska](https://github.com/elena-kolevska)
154161

155-
### Fixed
162+
FIXED
156163

157164
- Fix zero argument values sent to activities as None ([#13](https://github.com/microsoft/durabletask-python/pull/13)) - contributed by [@DeepanshuA](https://github.com/DeepanshuA)
158165

159166
## v0.1.0a3
160167

161-
### New
168+
ADDED
162169

163170
- Add gRPC metadata option ([#16](https://github.com/microsoft/durabletask-python/pull/16)) - contributed by [@DeepanshuA](https://github.com/DeepanshuA)
164171

165-
### Changes
172+
CHANGED
166173

167174
- Removed Python 3.7 support due to EOL ([#14](https://github.com/microsoft/durabletask-python/pull/14)) - contributed by [@berndverst](https://github.com/berndverst)
168175

169176
## v0.1.0a2
170177

171-
### New
178+
ADDED
172179

173180
- Continue-as-new ([#9](https://github.com/microsoft/durabletask-python/pull/9))
174181
- Support for Python 3.7+ ([#10](https://github.com/microsoft/durabletask-python/pull/10)) - contributed by [@DeepanshuA](https://github.com/DeepanshuA)

durabletask-azuremanaged/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Unreleased
99

10+
## v1.4.0
11+
12+
- Updates base dependency to durabletask v1.4.0
13+
- Includes restart support, batch actions, work item filtering, timer improvements,
14+
distributed tracing improvements, and entity bug fixes
1015
- Added `AsyncDurableTaskSchedulerClient` for async/await usage with `grpc.aio`
1116
- Added `DTSAsyncDefaultClientInterceptorImpl` async gRPC interceptor for DTS authentication
1217
- Added `payload_store` parameter to `DurableTaskSchedulerWorker`,
@@ -15,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1520
- Added `azure-blob-payloads` optional dependency that installs
1621
`durabletask[azure-blob-payloads]` — install with
1722
`pip install durabletask.azuremanaged[azure-blob-payloads]`
23+
- Improved worker timer handling to align with durabletask timer updates
1824

1925
## v1.3.0
2026

durabletask-azuremanaged/pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta"
99

1010
[project]
1111
name = "durabletask.azuremanaged"
12-
version = "1.3.0"
12+
version = "1.4.0"
1313
description = "Durable Task Python SDK provider implementation for the Azure Durable Task Scheduler"
1414
keywords = [
1515
"durable",
@@ -26,13 +26,13 @@ requires-python = ">=3.10"
2626
license = {file = "LICENSE"}
2727
readme = "README.md"
2828
dependencies = [
29-
"durabletask>=1.3.0",
29+
"durabletask>=1.4.0",
3030
"azure-identity>=1.19.0"
3131
]
3232

3333
[project.optional-dependencies]
3434
azure-blob-payloads = [
35-
"durabletask[azure-blob-payloads]>=1.3.0"
35+
"durabletask[azure-blob-payloads]>=1.4.0"
3636
]
3737

3838
[project.urls]

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta"
99

1010
[project]
1111
name = "durabletask"
12-
version = "1.3.0"
12+
version = "1.4.0"
1313
description = "A Durable Task Client SDK for Python"
1414
keywords = [
1515
"durable",

0 commit comments

Comments
 (0)