3.55.7

(fix): Improve fern docs diff region detection with top-down and bottom-up scanning. The algorithm now finds the first change by scanning from the top, and the last change by scanning from the bottom (aligning footers). This handles content shifts naturally and skips small footer changes like timestamps.


3.55.5

(fix): Fix default value for switcher-placement in docs.yml layout configuration.

3.55.4

(fix): Fix discriminated union variants with optional or nullable object types incorrectly using samePropertiesAsObject. When a union variant has a type like body: optional<SomeObjectType>, the IR generator now correctly uses singleProperty instead of samePropertiesAsObject, which ensures the generated TypeScript code has a value property with the optional type instead of extending the object type directly.

3.55.3

(fix): Fix schema namespace resolution to OpenAPI importers for proper type reference targeting

3.55.2

(fix): Fix fern docs diff production URL construction when docs instance URL has a base path (e.g., /learn).

3.55.1

(chore): Add docs param when publishing a doc site to support fine grain access controlls

3.55.0

(feat): Add fern docs diff command for visual regression testing of docs. This command captures screenshots of preview and production docs pages, generates visual diffs using pixelmatch, and outputs JSON with change percentages.

3.54.1

(fix): Fix dynamic snippets not being generated when using the v3 OpenAPI parser. The workspace is now loaded for dynamic snippet generation even when the v3 parser successfully generates the IR, ensuring that generators.yml configuration is available for snippet generation.

3.53.2

(fix): Reduce memory usage when generating docs for customers with many API versions by processing versions in batches of 5 instead of all in parallel.


3.55.6

(internal): Regenerate types for fern-definition, docs-yml, generators-yml, conjure-sdk, openapi-ir, and ir-types-latest schemas.

3.54.0

(feat): Add support for switcher-placement field in docs.yml layout configuration. This allows users to specify the placement of the version and language switcher, with options header or sidebar (default: header).

3.53.1

(chore): Fix primitive example generation to handle zero-length strings correctly.

3.53.0

(feat): Add internal support for ListType/SetType/MapType validation into IR.

3.52.1

(fix): Fix OpenAPI oneOf with discriminator to be parsed as discriminated union. Previously, when the discriminant property was defined in each variant schema (which is the standard OpenAPI pattern), the union was incorrectly parsed as an undiscriminated union. Now, any oneOf with a discriminator is correctly parsed as a discriminated union, and the discriminant property is filtered out from variant schemas to avoid duplication.


3.52.0

(feat): Add support for branch property in pull-request GitHub mode. When specified, the PR will target this branch instead of the repository’s default branch.

3.51.3

(fix): Fix fern check incorrectly reporting “Invalid OpenAPI reference” errors for AsyncAPI JSON files. The validation rule now detects both YAML format (asyncapi:) and JSON format ("asyncapi":) when skipping AsyncAPI files.


3.51.2

(fix): Fix air-gapped environment support for fern generate --docs. Added airgapped detection to skip external services that don’t have local equivalents (Python docs generation, Venus organization lookup). Fixed protobuf air-gapped detection to use detectAirGappedModeForProtobuf() instead of detectAirGappedMode(). Added Venus-specific connectivity check for AI example enhancement that doesn’t rely on the global cache.

3.51.1

(fix): Fix fern docs dev --broken-links failing with “Failed to load API Definition” error for valid API configurations. The broken links validator now properly handles OpenAPI-only workspaces.

3.51.0

(feat): Add support for OAS 3.2’s itemSchema standard for SSE endpoints. When text/event-stream content type uses itemSchema instead of schema, it is now automatically treated as an SSE streaming endpoint with x-fern-streaming: format: sse.

3.50.3

(fix): Fix Python library docs placeholder page appearing on published sites. The placeholder page is now only created during fern docs dev (local development), not during fern generate --docs (publishing).

3.50.2

(fix): Fix python-docs configuration not being detected when placed inside product or version files. Previously, python-docs only worked when placed in the top-level docs.yml navigation. Now it correctly searches through product files and version files referenced via config.products and config.versions.


3.50.1

(fix): Fix tag-description-pages not matching OpenAPI tags with spaces or hyphens. The tag ID lookup now normalizes tag names to camelCase to match how subpackage names are derived from OpenAPI tags.

3.50.0

(feat): Add --output option to fern generate command. This allows users to specify a custom output directory for preview generation when using the --preview flag for SDK generation, instead of the default .preview directory.

3.49.8

(fix): Fix OpenAPI error response example names not using the summary field. Error examples now use the OpenAPI summary field as the example name (similar to success response examples), enabling proper display names like “Validation Error” instead of generic keys like “validationError”. Falls back to the original key if summary is undefined or empty.

3.49.7

(fix): Fix group-multi-api-environments URL name extraction for hyphenated subdomains (e.g., ip-messaging.twilio.com now extracts as ip-messaging instead of colliding with other URLs).

3.49.6

(fix): Fix group-multi-api-environments to properly accumulate all URLs when merging many OpenAPI specs. Previously only the first two URLs were preserved.

(fix): Fix group-multi-api-environments setting to be inherited from global api.settings.

3.49.5

(fix): Fix docs API registration to use folder name when api-name is not set. When registering APIs with FDR for docs, the folder name (workspace name) is now used as the API identifier when api-name is not explicitly set in docs.yml. This enables users to reference APIs by folder name in docs components like <Schema api="latest" />.


3.49.4

(fix): Fix ANY auth conversion to FDR multiAuth format. When the IR has AuthSchemesRequirement.ANY, the converter now properly represents this as multiple auth options (OR semantics) with each scheme in its own array element, rather than all schemes grouped together (AND semantics).

3.49.3

(fix): Fix per-generator API overrides incorrectly falling back to workspace name for namespace. The namespace field in per-generator specs configuration now correctly uses the provided value (or undefined if not set) instead of falling back to the workspace folder name.

3.49.2

(feat): Add support for omit field in basic auth configuration. This allows omitting the username or password from the SDK when defining basic authentication, useful for APIs that only require one of the two credentials.

3.48.3

(fix): Upgrade FDR and fix webhook example names not appearing in API reference docs. The name field is now included in webhook example FDR conversion, enabling the frontend to display user-specified example names instead of generic “Example 1”, “Example 2” labels.


3.48.2

(fix): Fix OpenAPI example summary not appearing as tab titles in API reference docs. The displayName (derived from OpenAPI summary field) is now always preserved in FDR output, even when there’s only one example per status code. Previously, example names were only shown when multiple examples had the same status code.

3.48.1

(fix): Fix x-fern-basic, x-fern-bearer, and x-fern-header OpenAPI extensions not being read in the OpenAPI to IR converter. Custom field names and environment variables specified in these extensions are now correctly propagated to the IR and FDR output, enabling custom labels in the API explorer.

3.48.0

(feat): Add support for extracting examples from multipart/form-data webhook payloads. Webhooks using multipart content type now properly display example names from the OpenAPI summary field instead of generic “Example 1”, “Example 2” labels. Also fixes webhook and WebSocket example names in FDR conversion to properly use the name field.

3.47.9

(fix): Fix Go package name normalization in dynamic IR generation. The CLI now normalizes Go package names by stripping the https:// prefix to match how upload keys are generated.

3.47.8

(fix): Support auth schemes Bearer and Basic with a capital B.

3.47.7

(fix): Fix duplicate summary collision in OpenAPI examples. When multiple examples have the same summary, the second example is now disambiguated as ${summary} (${key}) instead of silently overwriting the first.

3.47.6

(fix): Fix OpenAPI example summary field propagation. The summary field from OpenAPI examples is now correctly propagated to the IR displayName field and FDR name field. Previously, when examples were referenced via $ref, the summary field was lost because the reference was not resolved before checking for the summary. Also adds support for recursive $ref resolution in examples.


3.47.5

(fix): Fix AsyncAPI query parameters with $ref types being incorrectly marked as required.

3.47.4

(fix): Fix AI examples headers/path/query params not appearing in docs immediately after generation.

3.47.3

(fix): Improve error messages for authentication errors when publishing docs.

3.47.2

(fix): Skip loading AI examples during SDK generation. AI examples are now only loaded for docs generation (fern generate --docs), not for SDK generation (fern generate).


3.47.1

(fix): Fix AI example generation to filter path/query/header parameters from request bodies and omit empty request/response bodies. The AI model sometimes incorrectly includes these parameters in the request body, which causes SDK validation errors.