Skip to content

🌿 ✨ [Scheduled] Upgrade Fern CLI #1

Open
fern-api[bot] wants to merge 1 commit intomainfrom
upgrade-cli-latest
Open

🌿 ✨ [Scheduled] Upgrade Fern CLI #1
fern-api[bot] wants to merge 1 commit intomainfrom
upgrade-cli-latest

Conversation

@fern-api
Copy link

@fern-api fern-api bot commented Jan 9, 2026

Upgrading from 0.117.0 to 3.37.3 - Changelog

    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.1

  • 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.

  • 174 additional updates, see more

    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.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.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.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., /uihttps://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.

  • 3.30.5

  • fix: Support x-fern-base-path extension in the OpenAPI v3 parser.

  • 3.30.4

  • chore: Add ACH to special tokens list to preserve capitalization in docs sidebar navigation.

  • 3.30.3

  • chore: Adds a product-switcher.toggle theme option to the docs configuration.

  • 3.30.2

  • fix: Export all defined auth schemes when using endpoint-security auth in generators.yml.

  • 3.30.1

  • fix: Update generators.yml schema SDK update to include api.auth.endpoint-security support.

  • 3.30.0

  • feat: Support using local icons in <Card /> and <Icon /> components.

  • 3.29.1

  • chore: Make version optional when fetching dynamic IR from SDK uploads. If no version is explicitly specified in the api snippets config, the CLI will not send a version and the API will use the latest available version.

  • 3.29.0

  • feat: Add fern docs preview delete <url> command to delete preview deployments. This allows users to clean up preview sites that were generated with fern generate --docs --preview.

  • feat: Add fern docs preview list command to list all preview deployments with pagination support via --limit and --page options.

  • 3.28.0

  • feat: Refactor fern check output with improved formatting and severity labels. Violations are now displayed in a hierarchical format grouped by [sdk] and [docs], with [error] (red) and [warning] (yellow) labels for each violation. When multiple APIs exist, violations are further grouped by API name. Additional UX improvements include: blue-colored paths, cyan [sdk] and magenta [docs] headers for visual distinction, warnings displayed before errors, blank lines between violations for readability, and inline issue display when path is empty.

  • 3.27.3

  • chore: Updates dynamic snippets to pull from an SDK version, if available and specified in the api.snippets configuration.

  • 3.27.2

  • fix: Fix example resolution to treat dollar-prefixed strings as literals when they don't match the valid example reference format. Strings like "$3.00", "$USD", or "$PATH" are now treated as literal values without requiring escaping. Valid example references (e.g., $Type.Example or $import.Type.Example) continue to work as expected.

  • 3.27.1

  • fix: Fix fern docs dev hot reload to properly restart the docs server when files change.

  • 3.27.0

  • feat: Add ENDPOINT_SECURITY value to AuthSchemesRequirement enum in the IR.
    This allows users to specify that authentication requirements are defined per-endpoint rather than globally.
    Users can now use endpoint-security: {} in their Fern API definition's auth field to indicate that security is configured on individual endpoints via the security field.

  • 3.26.3

  • chore: Add x-fern-sdk-method-name support for AsyncAPI operations.

  • 3.26.2

  • chore: Support custom environment variables and shell command operators in native local generation for seed testing.

  • 3.26.1

  • fix: Fix fern docs dev to start the backend server before Next.js. Previously, Next.js would start immediately while the backend was still initializing, causing requests to fail if users opened the browser too quickly. The backend now fully initializes before Next.js starts accepting requests.

  • 3.26.0

  • feat: Allow omitting the fernapi/ prefix in generator names in generators.yml. The prefix is now inferred by default, so fern-typescript-sdk is equivalent to fernapi/fern-typescript-sdk. Custom Docker orgs can still be specified explicitly (e.g., myorg/my-generator).

  • 3.25.2

  • chore: Add --force-download flag to fern docs dev command.

  • 3.25.1

  • fix: Fix endpoint resolver to use caller's casing generator instead of hardcoded
    constant, ensuring OAuth endpoints respect smart casing settings.

  • 3.25.0

  • feat: Add user email to CLI PostHog events when not using an access token. This enables better user analytics by capturing the primary email address from Auth0 for logged-in users.

  • 3.24.6

  • chore: Remove unnecessary debug logging from fern docs dev.

  • 3.24.5

  • fix: Fix discriminated unions with nullable object types to use samePropertiesAsObject instead of wrapping in a value property.

  • 3.24.4

  • fix: Use Set for O(1) deduplication of referenced markdown files in fern docs dev to improve hot reload performance.

  • 3.24.3

  • fix: Fix handling of empty allOf in additionalProperties by treating schemas with only metadata (example, description) as "any" type.

  • 3.24.2

  • fix: Prevents incorrect collapsing of an allOf with additionalProperties: true into a map.

  • 3.24.1

  • chore: Collects fern docs dev metrics in .fern/logs/<timestamp>.debug.log file.

  • 3.24.0

  • feat: Store referenced markdown snippet files (from <Markdown src="..."/> components) in the docs definition's jsFiles map. This allows downstream consumers like docs-loader to access the original snippet contents by file path, preserving references that were previously lost during markdown replacement.

  • 3.23.3

  • chore: Upload dynamic IR during SDK generation (fern generate --group) to enable dynamic snippets. This uploads language-specific IR to FDR for each generator, allowing dynamic code snippet generation in documentation.

  • 3.23.2

  • chore: Hide fern mock and fern test commands from the main CLI help output.

  • 3.23.1

  • fix: Adds a warning to fern check that detects infinite redirect loops.

  • 3.23.0

  • feat: Update the default page actions to include ChatGPT, Claude, and Cursor.

  • 3.22.3

  • fix: Improve dynamic IR generation for inferred auth.

  • 3.22.2

  • fix: Fix OpenAPI example parsing to preserve explicit null values. Previously, explicit null values in OpenAPI response examples (e.g., balance_max: null for unbounded tiers) were being incorrectly replaced with schema example values or generated placeholders.

  • 3.22.1

  • fix: Fix OpenAPI 3.1+ parsing to respect $ref sibling examples. When a property has both a $ref and sibling example/examples properties, the sibling examples now correctly take precedence over the referenced schema's examples. This fix applies to both the old and new OpenAPI parsers.

    # OpenAPI 3.1+ allows $ref siblings like example/examples
    Company:
      type: object
      properties:
        logo:
          $ref: '#/components/schemas/File'
          example:
            url: https://images.example.com/logo.png  # This example is now used
  • 3.22.0

  • feat: Share .fernignore handling between local and remote task handlers. When running remote generation with local-file-system output mode, the .fernignore file is now respected, matching the behavior of local generation.

  • 3.21.1

  • fix: Fix ExampleValidator to validate response examples against their corresponding status code schemas instead of always using the 200/201 success schema. Error response examples (400, 404, 500, etc.) are now correctly validated against their respective schemas.

  • 3.21.0

  • feat: Add a custom field to the page-actions configuration. This allows users to add custom page actions to the docs.

  • 3.20.0

  • feat: Add docs field to HttpResponse in the IR to capture response descriptions for webhook responses. This enables webhook response descriptions (e.g., for 204, 400, 500 status codes) to be properly propagated from OpenAPI specs to documentation.

  • 3.19.0

  • feat: Add explode field to PathParameter and QueryParameter types in the IR for OpenAPI parameter serialization control.

  • 3.18.4

  • fix: Revert regex parsing of <Code> components.

  • 3.18.3

  • fix: Fix duplicate type declarations when OpenAPI specs use allOf references in inline request bodies.

  • 3.18.2

  • fix: Remove fern check validation rule that rejected HEAD endpoints with response bodies. HEAD endpoints can now define response bodies without triggering validation errors.

  • 3.18.1

  • fix: Fix fern check errors when OpenAPI specs use allOf with multiple schemas that share the same property names in inline request bodies. The OpenAPI importer now correctly inlines conflicting schemas instead of extending them, preventing duplicate property errors.

  • 3.18.0

  • feat: Add ai-example-style-instructions field to docs.yml experimental config. This allows providing custom styling instructions for AI-generated examples to guide the AI in generating examples that match your preferred style, naming conventions, or domain-specific terminology.

  • 3.17.0

  • feat: Enable AI-generated endpoint examples by default. To disable, set ai-examples to false in docs.yml's experimental settings.

  • 3.16.1

  • feat: Include examples for AI processing if 30% or more of the values are generic.

  • 3.16.0

  • feat: Docs linting (fern check) now respects settings.substitute-env-vars and throws errors for missing environment variables, matching the behavior of fern generate --docs. The full instances: config including custom domains now goes through env var substitution when this setting is enabled.

  • fix: Improved error logging for docs publishing failures. When API definition registration fails with a "fetch failed" error, the CLI now logs detailed error information including status code, error type, reason, and error message to help debug network issues.

  • 3.15.1

  • chore: Use Venus JWT for AI example enhancement requests.

  • 3.15.0

  • feat: Add fern overrides compare command to generate OpenAPI overrides by diffing two specs. This enables a new workflow where you can copy your OpenAPI spec, edit the copy directly, and compile the differences into an overrides file.

  • 3.14.0

  • fix: Fix coerce-enums-to-literals: false setting not being respected for SDK generation. Single-value enums are now correctly preserved as enum types instead of being coerced to literals.

  • 3.13.0

  • feat: Add support for autorelease flag in generators.yml.
    See: https://buildwithfern.com/learn/sdks/overview/autorelease#disable-autorelease

  • 3.12.0

  • feat: Add inferred auth parameters to the dynamic IR so dynamic snippet generators can consume them.

  • 3.11.0

  • feat: Fully propagate webhook responses (e.g., 204, 400, 500 status codes) from OpenAPI specs from IR to FDR.

  • 3.10.0

  • feat: Adds new right-text field to logo configuration in docs.yml. This allows users to display custom text to the right of the logo image.

  • 3.9.0

  • feat: Propagate webhook responses (e.g., 204, 400, 500 status codes) from OpenAPI specs to the IR. Webhook endpoints can now define expected response status codes and descriptions, which are captured in the IR for use by generators and documentation.

  • 3.8.0

  • feat: Include -y flag for the upgrade for non-interactive environments.

  • 3.8.0-rc0

  • chore: Test automated CLI publishing.

  • 3.7.0

  • feat: Add API flag default-integer-format to configure which format is assumed for type: "integer"
    properties in OpenAPI that do not specify a format.

    # generators.yml
    api:
      specs:
        - openapi: openapi.yml
          settings:
            default-integer-format: int64

    Possible values are int32, int64, uint32, and uint64; defaults to int32.

  • 3.6.0

  • feat: Validate examples in fern check against OpenAPI schemas.

  • 3.5.0

  • feat: Add support for vendor-specific JSON content types in example validation. Content types like application/vnd.bc.v1+json are now accepted as valid JSON content types when validating examples against literal<"application/json"> types.

  • 3.4.5

  • fix: Fix parsing of <Code> components with for attribute for synced tabs. The for attribute is now properly preserved when converting <Code> components to markdown code blocks, allowing synced tabs to work correctly across multiple <CodeGroup> sections.

  • 3.4.4

  • fix: Fallback to variant type for display name if title and mapping are not present.

  • 3.4.3

  • fix: Disallow absolute URLs as redirects in frontmatter slug definitions. links should be used in the navigation instead.

  • 3.4.2

  • fix: Fix fern generate crash when inheriting from a schema with top-level nullable: true via allOf. The OpenAPI importer now correctly strips nullable wrappers from type references in extends lists.

  • 3.4.1

  • fix: Map error response headers from IR to FDR for docs display.

  • 3.4.0

  • chore: Upgrade @fern-api/fdr-sdk to version 0.142.1-b1f6b6363 which adds support for error response headers.

  • 3.3.0

  • feat: Extend substitute-env-vars to apply to API specs (OpenAPI and Fern definitions) when generating docs. Environment variables using ${VAR_NAME} syntax in API spec descriptions, examples, and other string fields are now substituted when substitute-env-vars: true is set in docs.yml.

  • 3.2.0

  • feat: Add recursive markdown snippet resolution for docs. Markdown snippets can now reference other markdown snippets, with automatic detection and warning for circular references to prevent infinite loops.

  • 3.1.0

  • feat: Preserve error response headers (e.g., Retry-After for 429 errors) from OpenAPI specs in the IR.

  • 3.0.5

  • fix: Fix AsyncAPI validation: exclude AsyncAPI files from OpenAPI-specific validation rules

  • 3.0.4

  • fix: Fix error response examples not displaying in docs when examples are defined at the property level in OpenAPI specs.

  • 3.0.3

  • fix: Add basic preprocessing of names in the IR parser; for starters, [] -> Array.

  • 3.0.2

  • fix: Fix OpenAPI parsing to properly handle allOf with $ref references inside oneOf/anyOf schemas. Previously, inline objects with allOf references but no direct properties were incorrectly converted to map<string, any>. Now they are properly preserved as named types with inheritance.

  • 3.0.1

  • fix: Fix substitute-env-vars not applying to arrays in docs configuration. The replaceEnvVariables function now recursively processes array elements, enabling environment variable substitution in arrays of strings, arrays of objects, and deeply nested array structures (such as navigation items, navbar links, footer links, redirects, etc.).

  • 3.0.0

  • break: Breaking Change: Enable smart-casing by default for all generators.

    Smart-casing improves naming conventions in generated SDKs by:

    • Capitalizing common initialisms like API, HTTP, ID, UUID, URL, HTML, JSON, XML, etc. in camelCase and PascalCase identifiers
    • Better handling of number-letter combinations (e.g., v2 stays as v2 instead of becoming v_2, md5 stays as md5 instead of md_5)

    Migration Behavior: The CLI will automatically upgrade your generators.yml to explicitly set smart-casing: false for all existing generators that don't have it configured. This preserves backwards compatibility for existing projects while enabling the improved naming for new projects.

    Opting In: To enable smart-casing for existing generators, remove the smart-casing: false line that the migration adds, or explicitly set smart-casing: true.

  • 2.18.1

  • fix: Improve enum validation error messages to show which enum value has an invalid name. When the API source is OpenAPI, the error message now includes guidance about using the x-fern-enum extension to specify valid names.

  • 2.18.0

  • feat: Add --fernignore CLI option for remote generation. This allows users to provide a custom .fernignore file that will replace the existing one on the main branch during remote generation. The custom fernignore will be applied during generation and committed to the repository.

  • 2.17.3

  • fix: Gracefully handle null values in docs.yml structure.

  • 2.17.2

  • fix: Escape when inferring examples from literals that start with.
    This fixes validation issues like Example $ending is malformed. Examples should be formatted like $YourType.ExampleName.

  • 2.17.1

  • fix: Fix file scope type resolution for inline request properties

  • 2.17.0

  • feat: Add substitute-env-vars flag to docs.yml settings configuration. When set to true,
    environment variables using ${VAR_NAME} syntax are substituted across all files in the docs bundle,
    including markdown/MDX content. This is useful for injecting dynamic values like API keys or URLs.
    Use \$\{VAR\} to escape and output literal ${VAR} without substitution.

  • 2.16.0

  • feat: Add support for aliases in generators.yml. You can now define aliases that map to multiple groups, allowing you to run multiple groups with a single command.

    # generators.yml
    aliases:
      all: ["php-sdk", "ts-sdk", "go-sdk"]
    
    groups:
      php-sdk:
        generators: ...
      ts-sdk:
        generators: ...
      go-sdk:
        generators: ...

    Then run fern generate all to generate all three SDKs at once.

  • 2.15.2

  • fix: Fix fern check incorrectly reporting SDK method conflicts for endpoints with the same x-fern-sdk-group-name and x-fern-sdk-method-name when they are in different namespaces. The validator now correctly allows duplicate SDK method names across different namespaces, matching the generator behavior where namespace is prepended to the SDK group name.

  • 2.15.1

  • fix: Improve CI environment detection to properly detect Azure Pipelines and other CI systems. This prevents unnecessary prompts when running fern generate --docs in CI environments.

  • 2.15.0

  • feat: Infer example for literal and enum types when generating IR from OpenAPI and Fern Definition.

  • 2.14.1

  • fix: Fix 2.0.0-rc0 CLI migration to properly migrate coerce-enums-to-literals setting for AsyncAPI specs. Previously, the migration only handled this setting for OpenAPI specs.

  • 2.14.0

  • feat: Log the pull request URL when an SDK is generated with self-hosted GitHub pull-request mode.

  • 2.13.1

  • fix: Respect generators.yml auth-schemes override.

  • 2.13.0

  • feat: Allow all API settings to be overridden at the generator level in generators.yml.

  • feat: Add CLI migration to automatically convert deprecated generator-level API settings keys to their new equivalents: use-title to title-as-schema-name, and unions: v1 to prefer-undiscriminated-unions-with-literals: true.

  • 2.12.0

  • feat: Support per-generator auth-schemes override in generators.yml. Generators can now define their own auth-schemes at the generator level, which takes precedence over top-level definitions.

    # generators.yml
    api:
      auth: Bearer
      auth-schemes:
        Bearer:
          scheme: bearer
    
    groups:
      php-sdk:
        generators:
          - name: fernapi/fern-php-sdk
            version: 1.23.0
            api:
              auth: Bearer
              auth-schemes:
                Bearer:
                  scheme: bearer
                  get-token: POST /authorize
  • 2.11.0

  • feat: When converting OpenAPI to Fern Definition, if all endpoints in a service have auth: true, set the auth: true at the service level, and remove it from individual endpoints.

  • 2.10.0

  • feat: Support per-generator specs override in generators.yml. Generators can now redefine the api.specs configuration at the individual generator level, allowing different specs configurations for different generators.

    # generators.yml
    api:
      specs:
        - openapi: openapi.yml
    
    groups:
      php-sdk:
        generators:
          - name: fernapi/fern-php-sdk
            version: 1.23.1
            api:
              specs:
                - openapi: custom-openapi.yml
  • 2.9.0

  • fix: When importing OpenAPI specs, endpoints now properly inherit authentication requirements defined at the global level.

  • 2.8.2

  • fix: Fix dynamic snippet property ordering for types with inheritance. Types that are extended by other types now have their own properties ordered before inherited properties in the Dynamic IR. This fixes Java SDK staged builder compilation errors where method call order is enforced at compile time.

  • 2.8.1

  • fix: Support a lines prop for the <Code /> component to extract specific lines from a code snippet.

  • 2.8.0

  • feat: Adds an option for api.tag-description-pages: true to create summary pages from tag descriptions within an API reference.

  • 2.7.1

  • fix: Fix fern docs dev bug on Windows where asset paths were not parsing correctly

  • 2.7.0

  • feat: Support per-generator auth overrides in generators.yml.
    In the following example the TypeScript SDK generator will use Basic auth while the rest of the APIs use OAuth.

    # generators.yml
    auth-schemes:
      OAuth:
        scheme: oauth
        type: client-credentials
        get-token:
          endpoint: POST /authorize
      Basic:
        scheme: basic
    
    api:
      auth: OAuth
      specs:
        - openapi: openapi.yml
    
    groups:
      ts-sdk:
        generators:
          - name: fernapi/fern-typescript-sdk
            version: 3.33.0
            api:
              auth: Basic
  • 2.6.2

  • fix: Support generating examples for x-fern-type: literal<...> values in OpenAPI specs. Parameters with literal type annotations now generate examples using the underlying literal value.

  • 2.6.1

  • fix: Fix docs broken-links validator incorrectly flagging external URLs that contain the docs domain in query parameters.

  • 2.6.0

  • feat: Support 4XX and 5XX patterns in OpenAPI specs for docs.

  • 2.5.2

  • fix: Remove spammy "Cannot resolve source" warnings for OpenAPI sources in unioned API configurations with dependencies.

  • 2.5.1

  • fix: Add validation for instance URLs to ensure they are valid.

  • 2.5.0

  • feat: Support product and version-specific announcements in docs.yml.

  • 2.4.1

  • fix: Update local development refresh behavior when updating the sidebar-title override, or a slug override of a page. The preview should now navigate to the new slug instead of showing a 404.

  • 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.3.0

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

  • 2.2.6

  • fix: Update local development refresh behavior when updating the sidebar-title override, or a slug override of a page. The preview should now navigate to the new slug instead of showing a 404.

  • 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.2.2

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

  • 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.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.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:

    api:
      settings:
        path-parameter-order: url-order
  • 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.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.122.1

  • chore: The fern docs dev command now displays a progress bar while downloading the docs bundle.

  • 0.122.0

  • feat: The fern write-overrides command now generates overrides files with names based on the API spec filename. For a spec named api-name.yml, the overrides file will be named api-name-overrides.yml and placed in the same directory as the spec. This allows for better organization when working with multiple API specs.

  • 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.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.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.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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants