3.40.0

(feat): Add support for OpenAPI min/max validation keywords in the IR. This includes minimum, maximum, exclusiveMinimum, exclusiveMaximum, and multipleOf for numeric types (float, long, uint, uint64), as well as minItems/maxItems for list and set containers, and minProperties/maxProperties for map containers and objects.

3.39.3

(fix): Fix protobuf air-gapped support to properly catch execa exceptions when buf dep update fails. The execa library throws exceptions on non-zero exit codes rather than returning a result object, so the network error detection logic was never being reached. Both ProtobufOpenAPIGenerator and ProtobufIRGenerator now wrap buf dep update in a try-catch block to properly handle network errors in air-gapped environments.

3.39.2

(chore): Add debug logging to protobuf air-gapped support to help diagnose buf.lock detection issues. The CLI now logs the buf.lock path being checked, whether it was found, and detailed error information when buf dep update fails.

3.39.1

(fix): Fix protobuf air-gapped support to properly populate buf cache at build time. Both ProtobufOpenAPIGenerator and ProtobufIRGenerator now always attempt buf dep update first to populate the cache, and only continue on network errors if a pre-cached buf.lock file exists. This ensures dependencies are cached at build time while still supporting air-gapped runtime environments.

3.38.1

(fix): Fix protobuf OpenAPI generation to support air-gapped environments. The CLI now checks for a pre-cached buf.lock file in the proto directory before calling buf dep update. This enables self-hosted deployments with from-openapi: true proto specs to work in air-gapped environments by pre-caching dependencies.


3.38.0

(feat): Add support for parsing response headers from OpenAPI specs. Response headers defined on success responses (2xx) are now captured in the IR and available for SDK generators and documentation.

3.37.6

(chore): Bump IR version to 63.

3.37.5

(fix): Fix fern docs preview delete and fern docs preview list commands to support preview URLs with UUID-style hashes containing hyphens (e.g., org-preview-9b2b47f0-c44b-4338-b579-46872f33404a.docs.buildwithfern.com).



3.37.4

(fix): Fix protobuf IR generation to support air-gapped environments. The CLI now uses a pre-cached buf.lock file if it exists, skipping the network call to buf dep update. This enables self-hosted deployments to work in air-gapped environments by running buf dep update at build time to cache dependencies.

3.38.0

(feat): Add support for automatic configuration migration in generators.yml when running fern generator upgrade --include-major. Major version upgrades with breaking configuration changes will now automatically update your generator configuration, eliminating manual migration steps.

3.37.3

(fix): no-op: initiate bulk cli update

3.37.2

(fix): Fix fern generate --preview failing with permission errors when the .preview folder already exists. The CLI now properly handles read-only files (like .git/objects) by making them writable before deletion.

3.37.1

(fix): Push full channel message payload schemas through when creating type references; helps support ‘bytes’ for websocket methods.


3.37.0

(chore): Add Excel file support (.xlsx) to the allowed file types for documentation uploads. This enables users to host Excel files using the <Download /> component.


3.36.0

(feat): The fern init command now automatically creates a .gitignore file inside the fern/ folder with entries to ignore .preview and .definition directories.

3.35.2

(fix): Default dynamic SDK snippets on if the experimental configuration is already present.


3.35.1

(fix): Respect the path-parameter-order setting from generators.yml when importing OpenAPI specs, which is different from the path-parameter-order on the api.settings level. By setting both levels to spec-order, you can preserve the old behavior of using the order defined in the OpenAPI spec.

(fix): Fix local generation to convert self-hosted GitHub URI (owner/repo) to full URL format, matching Fiddle’s remote generation behavior.

3.33.0

(fix): Fix handling of OpenAPI schemas that use discriminator.mapping without explicit oneOf/anyOf. These schemas are now correctly converted as discriminated unions instead of plain objects. This pattern is used by APIs like Dropbox Sign where a base schema defines a discriminator with mapping to variant schemas.


3.35.0

(feat): Add x-fern-parameter-name extension support for AsyncAPI parameters. This allows customizing parameter names in generated SDKs for AsyncAPI specs, similar to existing OpenAPI support.

3.34.0

(feat): Updates the SDK snippet generation to use dynamic snippets by default. To disable, set experimental.dynamicSnippets to false in your docs.yml file.


3.32.0

(feat): Add extends field to dynamic IR ObjectType to expose inheritance information for generators that need to handle inheritance patterns differently (e.g., Rust uses flattened wrapper fields).

3.31.2

(fix): Fix broken link checker incorrectly flagging internal paths with external redirects as broken. Links to paths that redirect to external URLs (e.g., /ui → https://auth-platform.example.com) are now correctly validated.


3.31.1

(fix): Fix double JSON.stringify in dynamic IR upload, reducing memory usage and ensuring correct Content-Length header calculation with Buffer.byteLength.

3.31.0

(fix): Add a --dynamic-ir-only flag to SDK generation to enable access to dynamic snippets from SDKs without regenerating the entire SDK.

3.30.6

(fix): Only upload dynamic IR for SDK generation after confirmed success and when not in preview mode.