3.44.1
(fix): Fix enable-forward-compatible-enums config flag being ignored in
download files mode. The flag was missing from
JavaSdkDownloadFilesCustomConfig, so enable-forward-compatible-enums: false
in generators.yml had no effect when using --local generation.
3.43.0
(fix): Fix WebSocket client compilation error when a server message type
produces the same method name as a lifecycle handler. For example,
a message type error generated onError(Consumer<Error>) which
clashed with the lifecycle onError(Consumer<Exception>) due to
Java generics type erasure. Colliding message handler methods are
now suffixed with Message (e.g. onErrorMessage).
3.44.0
(feat): Add omit-fern-headers configuration option. When enabled, Fern platform headers
(X-Fern-Language, X-Fern-SDK-Name, X-Fern-SDK-Version, User-Agent) are omitted
from generated SDK requests.
3.42.9
(chore): Update bundled npm tar package from 7.5.10 to 7.5.11.
3.42.8
(fix): Add equals(), hashCode(), and toString() methods to
interface-based discriminated union wrapper classes. Previously,
the outer wrapper class fell back to Object.equals() (reference
identity), breaking equality for any type that transitively
contained the union. The methods now delegate to the inner Value
field.
3.42.7
(chore): Add concurrency configuration to generated CI workflow with cancel-in-progress: false
to prevent stacked runs from being cancelled when a newer run starts.
3.42.6
(fix): Fix dynamic snippets to include global headers in generated code examples.
Previously, required global headers (e.g., X-Organization-ID) configured via
x-fern-global-headers were missing from dynamic snippet output. Also fixes
header value lookup to use wire values instead of a non-existent property.
3.42.5
(fix): Fix custom-interceptors support for OAuth staged builders. When
custom-interceptors: true is enabled, the _Builder inner class now
generates an interceptors field, addInterceptor(Interceptor) method,
and forwards interceptors to _TokenAuth and _CredentialsAuth via
token() and credentials() methods. Previously, only the root builder
received interceptor support, causing OAuth staged builders to lose
interceptor configuration.
3.42.4
(chore): Parallelize endpoint snippet generation in populateSnippetsCache(). All
endpoints are now processed concurrently via Promise.all instead of
sequentially, reducing snippet generation time for large APIs.
3.42.3
(chore): Update bundled npm tar package from 7.5.8 to 7.5.10 to fix
GHSA-qffp-2rhf-9h96 (Hardlink Path Traversal via Drive-Relative
Linkpath).
3.42.2
(fix): Fix custom-plugins configuration not being applied when running in
local/download-files mode (fern generate --local). The download-files
config class was missing the customPlugins field, causing the values
to be silently dropped during deserialization.
3.42.1
(fix): Fix compilation error for objects with many properties that exceed the
JVM 255-parameter-slot limit. Types like CMS-1500 claim forms caused
too many parameters javac errors. The generator now computes precise
JVM slot counts (long/double consume two slots, all other types one)
and, when the threshold is exceeded, generates a constructor that accepts
the Builder as a single parameter, keeping the public API unchanged.
3.42.0
(feat): Add support for custom Gradle plugins via the custom-plugins configuration
option. Users can now specify custom Gradle plugins (with optional versions)
that will be added to the generated build.gradle file. Format:
["plugin-id:version", "plugin-id"]. Plugins are applied after built-in
plugins (java-library, maven-publish, spotless).
3.41.0
(feat): Add custom-interceptors configuration option for the Java SDK generator.
When enabled (custom-interceptors: true in generators.yml), the generated
client builder exposes an addInterceptor(Interceptor) method that allows SDK
users to add custom OkHttp interceptors. Interceptors are applied to the
OkHttpClient when the client is built. This enables use cases like PKCV (Public
Key Client Validation), custom request signing, and other HTTP-level
customizations via custom code protected by .fernignore.
3.40.9
(fix): Fix wire test generation for form-urlencoded request bodies: objects
now serialize as Java’s Map.toString() format ({key=value}) instead
of JSON ({"key":"value"}), and ISO 8601 dates with zero seconds drop
the :00 to match Java’s OffsetDateTime.toString() output (e.g.
2015-07-30T20:00Z instead of 2015-07-30T20:00:00Z).
3.40.8
(fix): Fix wire test generation to convert RFC 2822 dates to ISO 8601 in both
the mock response body (served by MockWebServer) and the expected response
assertion. Previously, only the expected response was converted, leaving
RFC 2822 dates in the mock response which caused DateTimeParseException
during Jackson deserialization for fields typed as dateTime (not
dateTimeRfc2822). The conversion now happens upfront so a single
normalized resource file is shared by both mock setup and validation.
3.40.7
(fix): Fix wire test generation for URI and path paginated endpoints returning
wrong type. The published @fern-fern/ir-sdk doesn’t include uri/path
as Pagination union members, so the raw IR JSON passes through
undeserialized with _type discriminant fields instead of type. The
generator now normalizes raw IR JSON (_type → type) before extracting
the pagination item type, so wire tests correctly use
SyncPagingIterable<T> instead of the raw response type.
3.40.6
(fix): Fix wire test generation for form-urlencoded request body encoding.
The generator now uses + for spaces (matching Java’s URLEncoder.encode())
instead of %20 (from encodeURIComponent), serializes arrays as
[val1, val2] (matching Java’s List.toString()), and serializes objects
as JSON strings.
(fix): Fix wire test generation for RFC 2822 date fields. The expected response
body in wire tests now converts RFC 2822 dates (e.g.
Thu, 30 Jul 2015 20:00:00 +0000) to ISO 8601 with Z suffix (e.g.
2015-07-30T20:00:00Z) to match Jackson’s JavaTimeModule serialization
of OffsetDateTime. The mock response body retains RFC 2822 dates since
the SDK’s Rfc2822DateTimeDeserializer handles them correctly.
3.40.5
(fix): Fix wire test generation for URI and path paginated endpoints. The generated
wire tests incorrectly used the raw response type (e.g. ListMessagesResponse)
instead of the paginated return type (SyncPagingIterable<T>) for endpoints
using URI or path-based pagination, causing compilation failures.