1.41.1

(chore): Patch Go SDK + Go model generator container CVEs flagged in the AWS ECR / grype scan. Bump the Go base image to golang:1.26.3-alpine3.23, refresh apk upgrade, and patch npm’s bundled picomatch@4.0.3 -> 4.0.4 and brace-expansion@5.0.4 -> 5.0.5 via tarball replacement so the published image no longer ships the vulnerable bundled JS dependencies that grype flags. Also drop the internal/testdata/** test fixtures and clear the /go/pkg/mod + /root/.cache/go-build build caches from the runtime image so grype no longer scans them as a source of stale yaml.v3 and golang.org/x/net pseudo-versions that are not actually linked into /fern-go-sdk.


1.41.0

(feat): Add a With<AuthToken>Func option for bearer auth that accepts a func() (string, error) callable. The callable is evaluated at request time when no static token is set, matching the callable auth behavior available in the Python and TypeScript SDK generators.

1.40.4

(chore): Bump the Go SDK and Go model generator containers’ Node base image from node:22.22-alpine3.23 to node:24.15-alpine3.23. Aligns the generators with the rest of the Fern generator containers on a single Node major version (Node 24) and picks up Node 24’s CVE patches. The existing npm pack <pkg>@latest loop that swaps in patched ip-address, brace-expansion, and picomatch is retained because npm pack @latest continues to resolve the same fixed releases on Node 24.


1.40.3

(chore): Bump generator container Node.js base image to node:22.22-alpine3.23 and apply latest Alpine package security updates at build time.

1.40.2

(chore): Bumped the Node stage of the go-sdk container from node:22.12-alpine3.20 to node:22.22-alpine3.22 (Node 22.22.2) and replaced the still-vulnerable copies of ip-address (10.1.0 -> 10.2.0), brace-expansion (2.0.2 -> 5.0.5), and picomatch (4.0.3 -> 4.0.4) bundled inside npm’s node_modules to remediate the CVEs flagged by Grype. No runtime behavior changes.


1.40.1

(fix): Apply canonical “all user-specified examples, else first autogenerated” selection in the Go v2 SDK snippet output path. Aligns the v2 generator’s snippet.json / README example selection with the existing v1 behavior so dynamic-IR-driven snippets are deterministic across runs.



1.39.2

(fix): Fix wire test generator using hard-coded WithToken for bearer auth instead of deriving the option function name from the IR token name. APIs that name their bearer token field something other than token (e.g. authToken) now generate the correct option call (e.g. option.WithAuthToken) in both wire tests and README snippets.


1.39.1

(fix): Fix OAuth token endpoint to use application/x-www-form-urlencoded content type. Per RFC 6749 §4.4.2, the OAuth 2.0 client credentials token request must be form-encoded. The generated raw_client.go now emits the correct Content-Type header for the token endpoint instead of application/json.

(fix): Fix wire test generation for endpoints with service-level base-path parameters. The wiremock mapping now includes service and root path parameters alongside endpoint path parameters, so test verification URLs use actual example values instead of URL-encoded placeholder syntax.

1.39.0

(feat): Add retryStatusCodes config with "legacy" and "recommended" modes. Legacy (default) preserves current behavior (408, 429, >= 500). Recommended retries only transient codes (408, 429, 502, 503, 504), avoiding idempotency issues with 500. A 1.0.0 migration auto-pins legacy for upgrading users.

1.38.3

(chore): Only generate EncodeQueryValues on undiscriminated unions that are reachable from a query parameter position, instead of on every union.

1.38.2

(fix): Generate an EncodeQueryValues method on undiscriminated unions so they are no longer silently dropped when used as query parameters.


1.38.1

(fix): Fix casing bug where a single-letter uppercase word between a lowercase word and a PascalCase word (e.g. the I in WhoAmIResponseData) was merged into the following word, producing WhoAmIresponseData. splitWords now matches lodash’s words() behaviour and tokenizes this as Who|Am|I|Response|Data.

1.38.0

(feat): Use auth scheme placeholder values in README snippets when configured via placeholder field on auth schemes.


1.37.0

(feat): Add clientDefault support for headers, query parameters, and path parameters. When a parameter has a clientDefault value (set via the x-fern-default OpenAPI extension), the generated SDK uses that value as a fallback when the caller does not provide one. Parameters with clientDefault become optional in the client constructor and endpoint signatures.

1.36.0

(feat): Support omitting username or password from basic auth when configured via usernameOmit/passwordOmit in the IR. When a field is omitted, it is removed from the SDK’s public API (WithBasicAuth takes fewer arguments) and an empty string is used internally for the auth header encoding. When both fields are omitted, the WithBasicAuth call and Authorization header are skipped entirely.


1.35.1

(chore): Bump @fern-api/generator-cli to 0.9.11. The GitHub pipeline step now creates signed commits via the GitHub REST API (matching fiddle’s legacy InMemoryGitRepo push path), restoring verified fern-api[bot] commits on replay-enabled orgs.

1.35.0

(feat): Add offsetSemantics config option. When set to "item-index", offset pagination increments by the number of items returned each page instead of by 1 ("page-index", the default).

1.34.12

(fix): Fix wire test verification for endpoints with multi-value array query parameters.

1.34.11

(chore): Add crash reporting via Sentry to the generator runtime, and classify thrown errors using the new shared GeneratorError taxonomy so user-facing failures (config, validation, auth, network, environment) are kept distinct from internal Fern bugs — only the latter are forwarded to Sentry. No change to generated output.