2.2.5

(chore): Revert “fix(openapi): handle situations where discriminated unions reference unknown variants”

2.2.4

(fix): Re-publish CLI.

2.2.3

(fix): Support <Code /> components with props formatted on multiple lines.

2.4.0

(feat): Add branch support to self-hosted GitHub generation. Users can now specify a target branch in their generators.yml configuration using the branch field. When specified, generated code will be pushed to that branch instead of the default branch.

2.2.1

(fix): Add clarified output for unchanged generator versions (i.e., generators already on the latest version) to fern generator upgrade.

2.2.0

(feat): Support x-code-samples in OpenAPI specs on the latest version of the OpenAPI parser.


2.3.0

(fix): Add messaging about AI example generation to the CLI.

2.1.0

(feat): Add detailed output to fern generator upgrade showing which generators were upgraded, their version changes, and changelog links. The command now displays a summary grouped by workspace and group, or reports “All generators are already up to date” when no upgrades are applied.

2.0.4

(fix): Optimize docs generation and image path parsing and replacement for large markdown files (>5MB) using batched edits, precomputed line positions, and filtered AST traversal.

2.0.3

(fix): Updates CLI dependencies to fix fern commands.

2.0.2

(fix): Updates dependencies to fix fern commands.

2.0.1

(fix): Updates the beta write-translation command to use --stub flag for mocking translation configuration.

2.0.0

(feat): Support sidebar title overrides in the frontmatter of markdown files.

2.0.0-rc2

(fix): Improve misc error handling, including for illegal version strings.

2.0.0-rc1

(fix): Fix migration directory name to match exported version (2.0.0-rc0).

2.0.0-rc0

(break): Change default for OpenAPI parsing setting:

  • coerce-enums-to-literals: false (was true) The CLI will automatically upgrade your generators.yml to explicitly set the old default to preserve existing behavior. New users will get the new default.

1.11.3

(fix): Improve misc error handling, including for illegal version strings


1.11.2

(fix): Fix OpenAPI enum references being inlined instead of preserved as references. Enum schemas (type: string with enum property) are no longer treated as inlinable primitives, ensuring that $ref to enum schemas maintain their reference structure in the generated IR.

1.11.1

(fix): Fix AutoVersioning to exclude Fern branding from commit messages and PR titles/descriptions when whitelabel config is present.

1.11.0

(feat): Use commit message for auto versioning PR title and description. When auto versioning is successful, the first line of the commit message becomes the PR title and the rest becomes the PR body.

1.10.3

(fix): Fix whitelabel behavior for local generation.


1.10.2

(fix): Support JSX titles in <Code /> components.

1.10.1

(fix): Tweak SDK diffing AI prompt to work better with larger diffs.

1.10.0

(feat): Add automatic semantic versioning to local generation with --version AUTO --local flags.

1.9.2

(fix): Fix issue where x-fern-explorer was not hiding routes from the API Explorer

1.9.1

(fix): Fix issue where <Code /> components were not able to be added during fern docs dev mode.

1.9.0

(feat): Add external configuration to tsup build to prevent dev-only dependencies (prettier, vitest, typescript, tsup, depcheck, @types/*) from being accidentally bundled. This ensures the CLI bundle only includes runtime dependencies and enables metafile generation for bundle analysis.

1.8.1

(fix): Fix issue where local generation for github output mode wasn’t producing README.md files

1.8.0

(feat): Add fern sdk-diff command to analyze the differences between two SDKs and generate a commit message and version bump.

1.7.0

(feat): Replace prettier2 with yaml package in fern format command to reduce CLI bundle size by ~4.3 MB (11.4% reduction from 38 MB to 33.67 MB). YAML formatting output may have minor differences (e.g., extra blank lines after section headers like types: and errors:).


1.6.0

(feat): Add fern self-update command to update the globally installed Fern CLI. The command detects how the CLI was installed (npm, pnpm, yarn, bun, or brew) and runs the appropriate update command. Supports updating to a specific version (e.g., fern self-update 0.85.0) or the latest version (e.g., fern self-update). Includes --dry-run flag to preview the update command without executing it.

1.5.0

(feat): Add fern downgrade <version> command to set the CLI version in fern.config.json. This allows users to pin their project to a specific CLI version without running migrations.

1.4.0

(feat): Enable local generation with preview mode by removing incompatibility restriction and migrating github operations handling from generator-cli to fern-cli.

1.3.1

(fix): Fix duplicate upgrade messages when one CLI version reruns another. The parent process now properly suppresses its upgrade nudge so only a single message is shown.

1.3.0

(fix): Made fern upgrade safer by running migrations before updating fern.config.json. If migrations fail, your config stays unchanged.

(feat): Added --from flag to fern upgrade to manually specify the version to migrate from when needed.

(fix): Improved fern upgrade reliability by automatically detecting and recovering from faulty CLI upgrades. When upgrading from a problematic CLI version, Fern now retrieves the correct previous version from git history to ensure migrations run properly.

1.3.0-rc2

(fix): Make sure fern upgrade with --rc follows the same migration logic as non-rc upgrades.

1.3.0-rc1

(fix): Make sure fern upgrade with --rc follows the same migration logic as non-rc upgrades.

1.3.0-rc0

(fix): Made fern upgrade safer by running migrations before updating fern.config.json. If migrations fail, your config stays unchanged.

(feat): Added --from flag to fern upgrade to manually specify the version to migrate from when needed.

(fix): Improved fern upgrade reliability by automatically detecting and recovering from faulty CLI upgrades. When upgrading from a problematic CLI version, Fern now retrieves the correct previous version from git history to ensure migrations run properly.


1.2.0

(feat): Show AI example generation progress in the spinner line. When generating AI examples, the spinner displays generating AI examples for {API name} - X/Y to track progress without creating terminal noise.

1.0.5

(fix): Ensure 1.0.0 settings migration runs for users upgrading from pre-1.0.0 versions. This addresses a previous off-by-one error in migration selection that could cause the 1.0.0 migration to be skipped.

1.0.4

(fix): Fix CLI migration selection to include the target version’s migrations during fern upgrade. Previously, an off-by-one error excluded the target version (e.g., 1.0.0), causing its migration not to run. Users who upgraded to 1.0.0 should upgrade to 1.0.4 and run fern upgrade again to apply the 1.0.0 migration.

1.0.3

(fix): Specify the target of links throughout the docs navigation.


1.1.0

(feat): Add path-parameter-order, which configures how path parameters are ordered in generated code. If set to url-order (the default), path parameters are ordered in the same order as they appear in the URL. If set to spec-order, path parameters are ordered in the same order as they are listed in the spec.

Can be configured as follows in generators.yml:

1api:
2 settings:
3 path-parameter-order: url-order

1.0.2

(fix): Display OpenAPI validation warnings when using the —warnings flag with fern check. Previously, warnings were counted but not shown; now they are logged with location details when —warnings is specified.

1.0.1

(fix): Update OpenAPI operation converter to use x-fern-explorer extension instead of x-fern-explorer-enabled for setting apiPlayground property in the IR. Operations now check for the x-fern-explorer boolean value to determine API playground availability.

1.0.0

(feat): Change defaults for OpenAPI and AsyncAPI parsing settings:

  • title-as-schema-name: false (was true)
  • respect-nullable-schemas: true (was false)
  • inline-path-parameters: true (was false)
  • idiomatic-request-names: true (was false)
  • type-dates-as-strings: true (was false)
  • wrap-references-to-nullable-in-optional: false (was true)
  • coerce-optional-schemas-to-nullable: false (was true)
  • object-query-parameters: true (was false) The CLI will automatically upgrade your generators.yml to explicitly set the old defaults to preserve existing behavior. New users will get the new defaults.

0.121.2

(chore): Refactor how settings from specs are parsed and applied in the CLI.

0.121.1

(feat): Match endpoints to AI overrides examples.

0.121.0

(feat): Add batching support for AI example enhancement. The CLI now processes up to 10 endpoints at once with a single pruned OpenAPI spec, improving performance. Non-OpenAPI specs are automatically skipped.

0.120.0

(break): Rename OpenAPI extensions: x-fern-playground → x-fern-explorer and x-fern-playground-enabled → x-fern-explorer-enabled. The old extension keys are no longer recognized.


0.120.1

(fix): Support adding arbitrary metadata to <Code /> components. Title and language are set by default, but can be overridden with title and language props.

0.119.1

(feat): Add x-fern-playground extension to OpenAPI importer to control API playground visibility. Defaults to true.

0.119.0

(feat): Add global settings flag to generators.yml configuration. Overrideable by api.specs[].settings (which is itself overrideable by group.generators[].settings as before).

0.118.0

(feat): Add support for external URLs in <Code src="..."> tags in docs markdown. Code snippets can now reference external URLs (e.g., raw.githubusercontent.com) to fetch code content dynamically.

0.117.0

(feat): Add support for hidden versions.


0.116.1

(fix): Retrieve package name from module.path configuration for Go SDK generator to support local generation workflows

0.116.0

(feat): Add support for a minimal footer navigation theme.

0.115.6

(fix): Do not upload snippet-templates.json files to FDR.

0.115.5

(fix): Fix PyPI credentials to use standard environment variable names (PYPI_USERNAME, PYPI_PASSWORD) and correct package version propagation for local generation

0.115.4

(fix): Improve error message for unknown API definitions in docs.yml.

0.115.3

(fix): Fix name deconfliction for subtypes of an undiscriminated union (especially when one is an enum).

0.115.2

(fix): Fix gRPC source resolution to log warnings instead of throwing errors when protobuf sources cannot be resolved, matching OpenAPI behavior.

0.115.0

(feat): Add support for multiAuth field in FDR endpoint definitions to represent OpenAPI security with OR-of-AND semantics.


0.115.1

(fix): Update markdown variable replacement to use double curly braces for variable interpolation.

0.114.0

(feat): Add new remove-discriminants-from-schemas setting for OpenAPI/AsyncAPI imports in generators.yml.

If "always", discriminant properties are removed from schemas when generating types, unless the schema is also used outside of a discriminated union. If "never", schemas are left untouched. Defaults to "always".

(fix): Do not remove discriminant properties from schemas when generating types if the schema is also used outside of a discriminated union.

0.113.1

(fix): Make individual theme options optional in docs.yml.

0.113.0

(feat): Add support for page actions theme in docs.yml.

0.112.2

(fix): - Gracefully circuit-break from recursive examples

0.112.1

(fix): Fix OpenAPI importer to correctly handle oneOf[Type, null] and anyOf[Type, null] patterns for non-required properties. These properties are now properly represented as optional(nullable(T)) in the IR, ensuring autogenerated examples omit the field instead of generating {}. This preserves tri-state semantics (absent, null, present) for both collapsed Optional<T> and non-collapsed OptionalNullable<T> modes.