4.4.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.

4.4.0

(feat): Add offset-semantics 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).

4.3.1

(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.


4.3.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 wrapped request and use .orElse(defaultValue) to apply the fallback.


4.2.3

(chore): Bump Bouncy Castle jars bundled with the Gradle base image from 1.78.1 to 1.84 to address CVE-2026-3505 (unbounded PGP AEAD chunk size in bcpg leading to pre-auth resource exhaustion).


4.2.2

(chore): Bump @fern-api/generator-cli to 0.9.8. Changelog URLs in generated PRs now use the commit SHA instead of the PR branch name, keeping the link valid after the branch is deleted or squash-merged.


4.2.0

(chore): Fix 3 high container vulnerabilities: update python3/python3-libs to 3.9.25-1.amzn2023.0.4 (ALAS2023-2026-1583) and libnghttp2 to 1.59.0-3.amzn2023.0.2 (ALAS2023-2026-1542, CVE-2026-27135).


4.2.1

(fix): Propagate the as: "request" context through discriminated and undiscriminated union type conversion in the dynamic snippets generator. Literal-typed properties (e.g., method: literal<"card">) are now correctly filtered from builder calls inside union variants, matching the Java SDK builder which excludes literal properties from setters. Fixes cannot find symbol compilation errors in generated wire tests for types with literal discriminant fields.

(fix): Fix undiscriminated union deserialization for String | int (and similar) unions. Previously, convertValue(Integer, String.class) would silently coerce integers to strings, causing the String variant to always win. Primitive instanceof checks now run before convertValue branches so exact type matches take precedence over lossy coercion.

(fix): Fix wire test response assertions for several round-trip serialization quirks: (1) allow explicit null fields in expected JSON to match missing fields in actual (Jackson’s @JsonInclude(NON_ABSENT) drops Optional.empty()); (2) normalize timezone-less ISO 8601 datetimes in expected JSON to include the Z suffix that Jackson adds on re-serialization. Unified the two recursive JSON normalization passes into a single tree walk.


4.2.0-rc.1

(chore): Bump IR dependency to v66.1.0 Maven artifact, replacing custom deserializer workarounds with native irV66 types.

(feat): Support default discriminant values on unions. When a discriminated union variant has a default value on its discriminator field, the Java SDK now falls back to that variant instead of treating missing discriminators as unknown. This fixes deserialization of payloads where the discriminator is omitted and the API expects a default variant.

4.1.4

(chore): Update Node.js from 24.13.0 to 24.14.1 in the generator Docker image to fix 7 CVEs (CVE-2026-21710, CVE-2026-21717, CVE-2026-21713, CVE-2026-21714, CVE-2026-21712, CVE-2026-21715, CVE-2026-21716).


4.1.3

(fix): Fix undiscriminated union variant matching in dynamic snippets selecting incorrect variants when errors are added during conversion. The matcher now checks whether errors were added (via errors.size() > errorsBefore) alongside the existing isNop check, preventing empty objects from being returned for union fields like options in generated code snippets.


4.1.2

(fix): Fix wire test snippets dropping additional properties not declared in the schema. Types with @JsonAnySetter now emit .additionalProperty() builder calls for extra fields present in example data, so the serialized output matches the expected JSON.


4.1.1

(fix): Fix custom-dependencies not being able to override bundled dependency versions (OkHttp, Jackson, etc.). Previously, custom dependencies were appended alongside bundled ones, so Gradle’s dependency resolution would pick the higher version. Custom dependencies now replace any bundled dependency with the same group and artifact, allowing users to pin specific versions for CVE remediation or compatibility.

4.1.0

(feat): Add maxRetries custom config option to override the default maximum number of retries for failed requests. The default remains 2 when not specified.