release: 0.20.0#38
Conversation
|
Firetiger deploy monitoring skipped This PR didn't match the auto-monitor filter configured on your GitHub connection:
Reason: This is an automated release PR with no actual code changes shown; the filter requires monitoring of specific API endpoint and Temporal workflow changes, which cannot be verified from a release commit message alone. To monitor this PR anyway, reply with |
Pin all GitHub Actions referenced in generated workflows (both first-party `actions/*` and third-party) to immutable commit SHAs. Updating pinned actions is now a deliberate codegen-side bump rather than implicit on every workflow run.
|
🧪 Testing To try out this version of the SDK: Expires at: Sat, 13 Jun 2026 15:59:53 GMT |
7029010 to
339be80
Compare
339be80 to
dcac10a
Compare
dcac10a to
8289a73
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 8289a73. Configure here.
| return func(eos *encOpts) { | ||
| eos.skipCompaction = true | ||
| } | ||
| } |
There was a problem hiding this comment.
WithSkipCompaction ignores its bool parameter
Medium Severity
WithSkipCompaction accepts a bool parameter b but never uses it — the closure unconditionally sets eos.skipCompaction = true. Calling WithSkipCompaction(false) would still enable skip-compaction, which contradicts the function's API contract.
Reviewed by Cursor Bugbot for commit 8289a73. Configure here.
| t.Fatalf("didn't expect error %v, expected %s", err, test.expected) | ||
| } | ||
| if string(b) != test.expected { | ||
| t.Logf("expected %s (%s), received %s", test.expected, reflect.TypeOf(test.value), string(b)) |
There was a problem hiding this comment.
Test assertion uses t.Logf instead of t.Fatalf
Low Severity
The shimjson-marshal sub-test uses t.Logf for its output comparison, while the sibling sub-tests (marshal-json and json-marshal) both use t.Fatalf. This means a mismatch between actual and expected output is silently logged without failing the test, making the assertion a no-op that provides no regression protection.
Reviewed by Cursor Bugbot for commit 8289a73. Configure here.
8289a73 to
f5b9b5d
Compare


Automated Release PR
0.20.0 (2026-05-14)
Full Changelog: v0.19.0...v0.20.0
Features
This pull request is managed by Stainless's GitHub App.
The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.
For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.
🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions
Note
Medium Risk
Medium risk because it changes core request JSON encoding behavior (skipping compaction for
json.MarshalerSDK types) and adds new instance state/operations that could affect state handling in client code.Overview
Releases
0.20.0(version manifest,internal/version.go, README install snippet, changelog, stats/spec metadata) and pins GitHub Actions used in CI to specific SHAs.Adds template lifecycle support to the Instances client: new
POST /instances/{id}/promote-templateandPOST /instances/{id}/demote-templatemethods, introducesTemplateas a first-classInstanceState(propagated to list/wait response enums), and updates generated docs/tests accordingly.Optimizes the internal shim
encoding/jsonby addingMarshal(...opts)options and aWithSkipCompactionfast-path that avoids compacting bytes returned from SDKjson.Marshalerimplementations; the param encoder now uses this option for normal request encoding, with new tests covering the behavior and edge cases.Reviewed by Cursor Bugbot for commit f5b9b5d. Bugbot is set up for automated code reviews on this repo. Configure here.