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.