Skip to content

release: 0.10.0#15

Open
stainless-app[bot] wants to merge 44 commits into
mainfrom
release-please--branches--main--changes--next
Open

release: 0.10.0#15
stainless-app[bot] wants to merge 44 commits into
mainfrom
release-please--branches--main--changes--next

Conversation

@stainless-app

@stainless-app stainless-app Bot commented Feb 20, 2026

Copy link
Copy Markdown
Contributor

Automated Release PR

0.10.0 (2026-07-07)

Full Changelog: v0.9.0...v0.10.0

Features

  • api: add analytics api (ce7c027)
  • api: add apiUrl to android (becfdd5)
  • api: add spec.model to ios creation api (c876fe5)
  • api: add status.mcpUrl to android (a8f1902)
  • api: add version to android playwright (bf95382)
  • api: add xcode build logs and signedStreamUrl (417e67c)
  • api: add xcode instances endpoints (87ad94c)
  • api: analytics api, make platform enum (8c6a2da)
  • api: fix indentation (24bc445)
  • api: fix model name for xcode_instance in stainless config (e43f5f7)
  • api: manual updates (9b79c70)
  • api: manual updates (79c6b51)
  • api: simplify the models for analytics endpoint (a45fddf)
  • api: update stainless config for xcode_instances resource (420adf1)
  • api: update to latest main (b29a9c7)
  • internal: support comma format in multipart form encoding (167880a)

Bug Fixes

  • allow canceling a request while it is waiting to retry (2b24378)
  • internal: skip tests that depend on mock server (08703b0)
  • prevent duplicate ? in query params (3ba98cd)

Chores

  • ci: skip lint on metadata-only changes (558c7fc)
  • ci: skip uploading artifacts on stainless-internal branches (5b9bc78)
  • ci: support opting out of skipping builds on metadata-only commits (9f914bd)
  • client: fix multipart serialisation of Default() fields (759d9ea)
  • internal: codegen related update (44b0352)
  • internal: codegen related update (c0a4ba5)
  • internal: codegen related update (6698aee)
  • internal: codegen related update (8adc4fa)
  • internal: codegen related update (47a92fe)
  • internal: codegen related update (660aded)
  • internal: codegen related update (5382d75)
  • internal: minor cleanup (e413e98)
  • internal: move custom custom json tags to api (9f208bc)
  • internal: remove mock server code (823a8f0)
  • internal: support default value struct tag (78cbe02)
  • internal: tweak CI branches (39643cc)
  • internal: update gitignore (e99a4bc)
  • internal: use explicit returns (ba81464)
  • internal: use explicit returns in more places (525abc0)
  • remove unnecessary error check for url parsing (b9f32c7)
  • update docs for api:"required" (4d52f9c)
  • update mock server docs (dab2133)

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
Large generated API expansion plus changes to retries, query URL building, and required-field tagging affect all callers; risk is moderate but mostly additive API surface with some behavioral fixes in the HTTP layer.

Overview
Release 0.10.0 bumps the SDK from 0.9.0 and syncs generated clients to a larger OpenAPI surface (18 endpoints).

The client gains Analytics (Get, GetInstances) and XcodeInstances (create/list/get/delete), wired on NewClient alongside existing instance and asset services.

Instance and asset models pick up new API fields and semantics: Android/iOS status adds URLs (apiUrl, mcpUrl, signedStreamUrl), terminationReason, and updated inactivity-timeout docs; iOS create supports model and Keychain initial assets; assets add kind, platform, expiresAt, ttl, and richer list filters (kindFilter, namePrefixFilter).

HTTP/runtime behavior changes include a default client with response header timeout, LIMRUN_CUSTOM_HEADERS, retry waits that respect context cancel, merging query strings when the path already has ?, and debug logging that redacts sensitive headers.

Codegen/serialization moves required-field markers from json:"...,required" to api:"required", adds default struct tag support for JSON/multipart, and tightens param JSON marshaling (skip-compaction optimization).

CI/testing adds a build job with OIDC source zip upload to Stainless (upstream repo only), pins action SHAs, adjusts push branch filters, removes Prism mock bootstrap from scripts/test / scripts/mock, and skips mock-server integration tests by default.

Reviewed by Cursor Bugbot for commit 3d55e1b. Bugbot is set up for automated code reviews on this repo. Configure here.

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch 4 times, most recently from 1120576 to 5360552 Compare February 25, 2026 05:03
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 5360552 to 583a35b Compare March 3, 2026 07:26
@stainless-app

stainless-app Bot commented Mar 3, 2026

Copy link
Copy Markdown
Contributor Author

🧪 Testing

To try out this version of the SDK:

Download and unzip: 'https://pkg.stainless.com/s/limrun-v1-go/9b79c705ce79c86013bc60a526f90ccdf1c39236/source.zip'. Run 'go mod edit -replace github.com/limrun-inc/go-sdk=/path/to/unzipped_directory'.

Expires at: Thu, 06 Aug 2026 15:51:06 GMT
Updated at: Tue, 07 Jul 2026 15:51:06 GMT

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch 2 times, most recently from 63d78de to 9e4fee6 Compare March 7, 2026 17:07
case <-ctx.Done():
return ctx.Err()
case <-time.After(retryDelay(res, retryCount)):
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Retry select uses per-request timeout context incorrectly

Medium Severity

The select waiting for retry delay uses ctx, which may include a per-request timeout (created via context.WithTimeout at line 427). If RequestTimeout is set and the request completes near its deadline, the remaining timeout can expire during the retry delay, causing a spurious context.DeadlineExceeded return — even though the user's original context is still active. Previously, time.Sleep was unaffected by the per-request timeout, and the next iteration would create a fresh timeout. This is worsened by the removal of the < time.Minute cap on Retry-After, since large server-specified delays now increase the chance of hitting the per-request timeout during the wait. The select needs to use cfg.Request.Context() (the user's original context) instead of ctx.

Additional Locations (1)

Fix in Cursor Fix in Web

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9e4fee6 to da91790 Compare March 11, 2026 08:04
// If the API asks us to wait a certain amount of time (and it's a reasonable amount),
// just do what it says.

if retryAfterDelay, ok := parseRetryAfterHeader(res); ok && 0 <= retryAfterDelay && retryAfterDelay < time.Minute {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Retry delay removes upper bound on server-specified waits

Medium Severity

The retryDelay function previously capped the Retry-After header value at under one minute, falling back to exponential backoff (max 8 seconds) for larger values. Now it uses max(0, retryAfterDelay) with no upper bound. A misconfigured or malicious server returning a large Retry-After value (e.g., 86400 seconds) causes the SDK to wait an extremely long time per retry. While the new select on ctx.Done() allows cancellation, callers using context.Background() (common pattern, including in the test suite) have no deadline and will block indefinitely.

Fix in Cursor Fix in Web

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch 3 times, most recently from d460ffe to 31f1efb Compare March 17, 2026 10:49
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 31f1efb to 3ead8f0 Compare March 20, 2026 18:37
@stainless-app stainless-app Bot changed the title release: 0.9.1 release: 0.10.0 Mar 20, 2026
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch 8 times, most recently from 26bd6d6 to 09ff1eb Compare March 27, 2026 05:41
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch 3 times, most recently from 53b2bfc to 9b49e99 Compare March 29, 2026 18:24
if params != "" {
u = u + "?" + params
parsed, _ := url.Parse(u)
if parsed.RawQuery != "" {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ignored url.Parse error risks nil pointer dereference

Medium Severity

The error from url.Parse(u) is discarded on line 124 with parsed, _ := url.Parse(u). Go's url.Parse returns nil for the URL when it encounters a parse error. If that happens, the immediately following parsed.RawQuery access on line 125 will panic with a nil pointer dereference. While u is typically a well-formed path, propagating a malformed URL via request options or an unusual base URL could trigger this.

Fix in Cursor Fix in Web

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9b49e99 to 19bc880 Compare April 9, 2026 12:59
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 8025b18 to ed651da Compare June 30, 2026 09:57
@stainless-app

stainless-app Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

Note: this release PR has been open for more than 60 days. Until this PR is merged, we will temporarily stop pushing codegen updates due to changes to Stainless' codegen.

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from ed651da to 440fc04 Compare July 1, 2026 12:32
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 440fc04 to 40b83ac Compare July 1, 2026 12:47
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 40b83ac to 6f20040 Compare July 1, 2026 12:48

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 4 total unresolved issues (including 3 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 6f20040. Configure here.

Comment thread .github/workflows/ci.yml
- '!stl-preview-base/**'
- '!generated'
- '!codegen/**'
- 'codegen/stl/**'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Codegen STL CI never runs

Medium Severity

Push filters list !codegen/** and then codegen/stl/**. GitHub Actions treats a matching exclude as blocking even when a later include also matches, so pushes to codegen/stl/** still skip this workflow despite the extra include line.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 6f20040. Configure here.

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 6f20040 to 9554d66 Compare July 1, 2026 12:53
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9554d66 to fd05736 Compare July 1, 2026 12:57
@stainless-app

stainless-app Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

Note: this release PR has been open for more than 60 days. Until this PR is merged, we will temporarily stop pushing codegen updates due to changes to Stainless' codegen.

4 similar comments
@stainless-app

stainless-app Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

Note: this release PR has been open for more than 60 days. Until this PR is merged, we will temporarily stop pushing codegen updates due to changes to Stainless' codegen.

@stainless-app

stainless-app Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

Note: this release PR has been open for more than 60 days. Until this PR is merged, we will temporarily stop pushing codegen updates due to changes to Stainless' codegen.

@stainless-app

stainless-app Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor Author

Note: this release PR has been open for more than 60 days. Until this PR is merged, we will temporarily stop pushing codegen updates due to changes to Stainless' codegen.

@stainless-app

stainless-app Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor Author

Note: this release PR has been open for more than 60 days. Until this PR is merged, we will temporarily stop pushing codegen updates due to changes to Stainless' codegen.

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from fd05736 to 3d55e1b Compare July 7, 2026 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants