4.62.0
(feat): Make the fern api enrich command public. This command merges an
AI examples overrides file into an OpenAPI spec, integrating
x-fern-examples into native OpenAPI example fields.
4.60.0
(feat): Add agents.page-description-source to docs.yml to control which
frontmatter field is preferred for one-line page descriptions in llms.txt.
Supports description and subtitle, and falls back to other supported
frontmatter fields when the preferred field is not present.
4.61.0
(feat): Add --email flag to fern login for enterprise SSO support.
4.59.0
(feat): Add support for pulling generator Docker images from custom container registries
during fern generate --local via a new image: { name, registry } field in
generators.yml. Custom image generators are blocked for remote generation and
skipped during auto-upgrade.
4.58.0
(feat): Support x-fern-default on x-fern-global-headers entries. When a
global header includes x-fern-default, the value is carried through
to the IR clientDefault field so generators can emit optional
parameters with a default value (e.g. version: Optional[str] = '2024-02-08').
4.57.0
(feat): Add a missing-redirects docs validation rule to fern check that compares
the current docs navigation against the previously published markdown slug
table in FDR. The check warns when a published page is removed or moved
without a redirect in docs.yml, helping prevent broken historical docs URLs.
The rule also handles first-publish, unauthenticated, offline, and timeout
scenarios gracefully based on the configured check severity.
4.56.0
(feat): Add an agents config block to docs.yml for agent-serving endpoints.
agents.page-directive prepends custom instructions to each page served
through agent endpoints.
4.55.0
(feat): Send X-Deployer-Author and X-Deployer-Author-Email headers on docs
registration requests so CI-triggered deployments can be attributed to
the user who initiated the deploy.
4.54.1
(fix): Skip the CLI upgrade suggestion when the current version is 0.0.0,
which is the placeholder used for local development builds.
4.53.2
(chore): Improve error messages for cli docs publishing.
4.54.0
(feat): Add x-fern-default OpenAPI extension for path, header, and query parameters.
When present on a parameter, the value is carried through the OpenAPI IR
and Fern definition into the IR clientDefault field (a Literal).
Generators can read this field to emit optional parameters that
automatically send the default value when the caller omits them.
Supports string and boolean literal values.
4.53.1
(fix): Fix auto-generated path parameter examples producing object values
(e.g. { key: "value" }) for unknown-typed path parameters.
generatePathParameterExamples now coerces non-primitive values to
a string fallback derived from the parameter name, preventing
[object Object] from appearing in generated wire test URLs.
4.53.0
(feat): Log which group is being used when fern generate falls back to the
default-group configured in generators.yml, so it is clear which
group is running even when --group is not explicitly passed.
4.52.2
(chore): Fall back to reading auth and auth-schemes from the spec’s overrides
file when no auth is configured in generators.yml. This allows auth
configuration to live exclusively in the overrides file alongside other
OpenAPI overrides, without needing to duplicate it in generators.yml.
4.52.1
(fix): Fix OpenAPI importer not converting boolean enums with a single value
(type: boolean, enum: [true] or enum: [false]) into literal types.
Previously these were treated as plain boolean; now they correctly
produce literal<true> or literal<false> in the IR, resulting in
literal types in generated SDKs (e.g. true in TypeScript,
typing.Literal[True] in Python).
4.52.0
(feat): Add integrations.context7 to docs.yml so Fern can upload and publish a customer-provided
context7.json verification file for docs sites.
4.51.0
(feat): Make dashboard the default launch option for the “Edit this page” button.
Previously the default was github, which required users to configure
launch: dashboard explicitly.
4.50.5
(fix): Fix example validation rejecting valid null values in anyOf/oneOf
schemas. The ExampleConverter now correctly preserves explicit null
examples (e.g. anyOf: [{type: "string"}, {type: "null"}] with
"query": null) instead of treating them as missing or undefined. This
affected both union conversion (nullish coalescing dropped null) and
object property validation (null was treated as omitted when the schema
allowed it via anyOf/oneOf).
4.50.4
(fix): Cache loaded OpenAPI documents across OSS validation rules to avoid
redundant parsing and overlay application. Previously each of the
4 validator rules independently called loadOpenAPI(), causing the
overlay log message to appear multiple times. Documents are now
pre-loaded once and shared. Also demotes the overlay temp-file log
from info to debug.
4.50.3
(fix): Improve MDX validation error formatting in fern docs md check.
4.50.2
(fix): Don’t exclude streaming request body ref schemas during stream condition
processing, as they may be referenced by other operations and need to
remain in the generated output.
4.50.1
(fix): Fix OpenAPI importer dropping object properties with type: "null"
(valid in OpenAPI 3.1). Properties declared as type: "null" were
silently filtered out before conversion, causing fields like
conversation_id to disappear from generated SDK response models.
The importer now represents type: "null" as nullable(unknown),
producing unknown | null in TypeScript and Optional[Any] in Python.
4.50.0
(feat): Auto-infer x-fern-discriminator-context for discriminated unions that
match the SSE event spec shape. When all variants of a discriminated union
have properties exclusively drawn from {event, data, id, retry} with
correct types, the discriminator context is now inferred as protocol
instead of defaulting to data. This applies to the legacy OpenAPI importer.
4.49.0
(feat): Add body-sort option to webhook signature payload format. When set to
alphabetical, POST body parameters are sorted by key before being
concatenated into the signing payload. This is required by providers like
Twilio. Supported in both Fern Definition (body-sort: alphabetical inside
payload-format) and OpenAPI specs (body-sort: alphabetical inside the
payload-format block of x-fern-webhook-signature).
4.48.1
(fix): Fix OpenAPI importer handling of security: [] on endpoints. Previously,
endpoints with an explicit empty security array (meaning no auth required)
inherited the global auth scheme instead of being marked as unauthenticated.
This caused generated SDKs to require auth tokens at construction time,
preventing use of unauthenticated endpoints like signup or signin.
4.47.0
(feat): Add fern sdk preview command for publishing preview SDK packages.
Generates an SDK via Docker and publishes it to the Fern preview
registry (npm.buildwithfern.com). Outputs an npm install alias
command so consumers can test the preview with zero import changes.
4.46.7
(fix): Fix OpenAPI-to-Fern conversion using wire names instead of SDK names
(from x-fern-parameter-name) for query parameter conflict detection.
When a query parameter has a name override, the override name is now used
to check for conflicts with body properties, preventing unnecessary body
property renames.
4.46.6
(fix): Fix tag description pages not being generated when a tag reference in
docs.yml uses a title override. Tags with title overrides are parsed
as Package type items, but the #convertPackage method did not call
createTagDescriptionPageId, so the overview page was silently dropped.
The method now falls back to creating a tag description page when no
explicit overview is provided.
4.46.5
(fix): Internal improvements to GitHub integration for server-side operations.
4.46.4
(fix): Fix OAuth client-credentials auth from generators.yml being converted to
bearer token instead of proper OAuth in the new OpenAPI parser. The
convertApiAuth in ir-utils had a TODO stub that fell back to bearer auth
for OAuth schemes. A post-processing step in OpenAPIConverter now resolves
OAuth endpoint references after paths are converted, constructing the full
AuthScheme.oauth with resolved endpoint and property references.
4.46.3
(fix): Fix OpenAPI-to-Fern conversion producing malformed discriminated union
definitions when x-fern-discriminator-context is set. The context
value was placed as a sibling of discriminant instead of being nested
inside it, so the information was silently lost during IR generation.
This caused generated SDKs to always use the default discriminator context
of data and never use the alternate protocol which is used in SSE when
the SSE envelope’s event field is the discriminant.
4.46.2
(fix): Fix Go SDK auto-versioning returning incorrect versions for modules with
major version >= 2. The Go module proxy treats github.com/owner/repo and
github.com/owner/repo/v2 as separate modules, but getGoPackageName()
only constructed the base path without the /vN suffix. This caused the
version resolver to find ancient v0.x versions instead of the current v2.x+
versions, producing wrong sdkVersion values in .fern/metadata.json and
incorrect module paths in generated code. The Go proxy lookup now probes
/v2 through /v10 in parallel to discover the highest published major
version.
4.46.0
(feat): Add check.rules to docs.yml to configure severities for selected docs
validation rules, including OpenAPI example validation, broken links,
non-component refs, local refs, circular redirects, and docs endpoint checks.
Deprecate the --broken-links and --strict-broken-links CLI flags in favor
of configuring broken link behavior in docs.yml.
4.44.0
(feat): Nest tabs configuration under theme.tabs as an object with style,
alignment, and placement properties. theme.tabs: bubble (string)
is still supported for backward compatibility. The layout.tabs-placement
field is preserved for backward compat. Tab alignment is only available
via theme.tabs.alignment. Warn when sidebar placement is combined with
center alignment since centering is only supported for header tabs.
4.48.0
(feat): Automatically unlock docs deploy when the CLI exits early or crashes.
If the process receives SIGINT or SIGTERM after starting a docs publish,
the CLI now calls the FDR unlock endpoint to release the deploy lock so
subsequent publishes are not blocked.
4.46.1
(fix): Fix tag description pages incorrectly escaping curly braces and angle
brackets inside fenced code blocks and inline code. The blanket
character escaping has been removed in favor of the downstream MDX
sanitizer which correctly handles special characters only where needed.
4.45.0
(feat): Add validation for OpenAPI specs that contain non-ASCII characters
(e.g. emojis) in tag names or --- frontmatter delimiters in endpoint
descriptions. Tag names with non-ASCII characters end up in URL paths
and HTTP headers which only support ASCII, causing ERR_INVALID_CHAR
errors at runtime. Descriptions with --- delimiters are interpreted
as YAML frontmatter by the docs renderer, causing parsing failures and
500 errors on generated docs sites. Both fern check and docs
generation now surface these as errors so users can fix their specs
before publishing.
4.44.1
(fix): Fix OpenAPI importer discarding response body examples when the 2xx
response has examples but no schema. The synthetic empty-object
fallback now preserves examples and example from the original
media type object, so example names, response bodies, and ordering
are correctly carried through to the IR.
4.43.4
(fix): Thread endpoint ID through dynamic snippet generators to differentiate
generated snippets by endpoint.
4.43.3
(fix): Include version number in the Gradle installation snippet for Java SDKs
in generated README.md files. Previously only the Maven snippet included
the version.
4.43.2
(fix): Fix OpenAPI importer to produce optional response types when an endpoint
has both a 200 (with body) and a 204 (No Content) response. Previously the
204 response was silently ignored, causing generators to emit non-nullable
return types and attempt deserialization on empty bodies. Both the v3 parser
and v3.1 importer paths are fixed.
4.43.1
(fix): Fix OpenAPI importer stripping the discriminant property from shared
allOf base schemas when they are used by oneOf discriminated union
variants. Previously, if a base schema like Error was extended by both
union members and standalone schemas, the discriminant property (e.g.
code) would be removed from the base, causing downstream fern check
errors on the union variant types.
4.42.1
(fix): Strip MDX comments ({/* ... */}) from markdown.
4.43.0
(feat): Add fern docs md check command to validate MDX syntax in documentation files.
The command parses all MDX files referenced in docs.yml and reports syntax
errors with accurate file paths and line:column numbers, accounting for
frontmatter offsets.