Skip to content

🌿 [Scheduled] Upgrade Fern#445

Open
fern-api[bot] wants to merge 1 commit into
mainfrom
fern-autorelease/update
Open

🌿 [Scheduled] Upgrade Fern#445
fern-api[bot] wants to merge 1 commit into
mainfrom
fern-autorelease/update

Conversation

@fern-api

@fern-api fern-api Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Upgrading from 5.44.4 to 5.64.0 - Changelog

    5.64.0
  • fix: Fix proto target path resolution when using remote git sources. Previously the target
    was resolved relative to the workspace instead of the cloned repository, causing
    "file missing" errors.

  • feat: Support commit SHA references in git source ref field. Previously only branch names
    and tags were supported; commit SHAs now work via fetch+checkout.

  • 5.63.1

  • fix: Prevent --version AUTO from embedding literal 'AUTO' in generated SDK code during remote generation. The magic placeholder is now substituted before IR generation in the remote path, matching the local generation fix.

  • 5.63.0

  • feat: Extend dynamic IR OAuth types with custom properties and populate them in
    DynamicSnippetsConverter, enabling dynamic snippet generators to include
    custom OAuth token endpoint request parameters in generated code examples.

  • 5.62.2

  • fix: Strip CLI-only config keys (e.g. user-agent) from the custom config
    before forwarding to generator containers, preventing strict validation
    errors in generators that reject unknown keys.

  • 5.62.1

  • fix: Fix float primitive types rendering as 'double' in documentation. Float types now correctly render as 'float'.

  • 54 additional updates, see more

    5.62.0

  • feat: Add --generate-tests flag to fern generate to enable test file generation
    even when outputting to a local file system. Previously, tests were only generated
    for GitHub output modes.

  • 5.61.0

  • feat: Add user-agent generator config option that accepts a template string for
    the User-Agent header. Supported placeholders: {packageName}, {version},
    {language}, {generatorVersion}, {organization}, {apiName}. When absent,
    defaults to {packageName}/{version} (current behavior, non-breaking).

  • 5.60.0

  • feat: Add mcp option to page-actions in docs.yml. When set to false, the MCP server
    endpoint is disabled, its URL is omitted from llms.txt and agent prompts, and the
    "Connect to Claude Code" / "Connect to Cursor" buttons are hidden.

  • fix: Add payload-format support for asymmetric webhook signature verification,
    allowing the timestamp and other components to be included in the signed
    payload. Previously, only the raw body was signed for asymmetric webhooks,
    making the timestamp tolerance check ineffective against replay attacks.

  • 5.59.0

  • feat: Extract per-content-type OpenAPI examples into endpoint-level v2Examples
    tagged with their content type. When an operation declares multiple content
    types (e.g. application/json and application/ld+json) with distinct examples,
    the importer now elevates those examples so docs can display the correct
    example body when the user switches content types.

  • 5.58.0

  • fix: Fix product-level landing pages being dropped for unversioned products within a product group, and propagate top-level landing page to versioned navigation nodes as a fallback.

  • 5.57.0

  • feat: When running inside GitHub Actions, notable SDK generation events are now surfaced as
    ::notice:: annotations in the workflow run page and appended to the step summary.
    Annotated events include PR creation, package publication (npm, PyPI, Maven, etc.),
    no-changes-detected, and version tagging. Previously, these details were only visible
    in debug-level log output.

  • 5.56.4

  • fix: Fix remote generation CLI hanging indefinitely when S3 download stalls.
    Added connection timeout (60s) and overall download timeout (5 min) to
    both downloadZipForTask and downloadAndExtractZipToDirectory, so the CLI
    fails with a clear error instead of blocking forever.

  • 5.56.3

  • fix: Fix ledger publish path not forwarding the basepathAware flag for
    multi-source docs sites, causing the manifest to be written to the
    wrong storage key. Affected sites served stale content from the last
    legacy publish instead of the updated ledger manifest.

  • 5.56.1

  • fix: Fix fern docs dev failing with pnpm 10+ due to missing packages field
    in generated pnpm-workspace.yaml and missing -w flag on pnpm i esbuild.

  • 5.56.0

  • feat: Add disambiguate-request-names setting to control whether generated request
    wrapper names that collide with component schema names are renamed from
    "*Request" to "*Body". Defaults to true (current behavior). A CLI migration
    for version 4.106.1 is included to explicitly set the flag to false for
    projects that existed before disambiguation was introduced, preserving their
    original "*Request" names.

  • 5.55.2

  • fix: Fix fern docs dev hot-reload for pages referenced outside the fern/ directory.
    Previously, only changes to files inside the fern/ folder triggered preview refreshes.
    Now, external directories containing referenced docs pages are also watched.

  • 5.55.1

  • fix: Fix --instance flag silently publishing to the wrong docs instance when the provided URL does not match any configured instance. Previously the CLI would fall back to the first configured instance; now it fails with an error listing available instances.

  • fix: Replace sed-based magic version replacement with pure Node.js implementation
    in local generation mode. Fixes "illegal byte sequence" errors on binary files
    and eliminates platform-specific behavior.

  • fix: Fix a 500 (PruneEmptyError) in localized docs when a translated OpenAPI spec changed a
    structural identifier (e.g. an OpenAPI tag name, which derives subpackage and endpoint ids)
    relative to the default-locale spec. API-reference navigation nodes are now matched to the
    translated definition by a stable locator (HTTP method + path) in addition to id, so localized
    sidebar titles still apply and the renderer can resolve the served API. When a node cannot be
    matched at all, the affected API falls back to the default-locale definition with a warning
    instead of crashing.

  • 5.55.0

  • feat: Default docs deploy mode is now "ledger", enabling faster incremental deployments
    and faster first-time page renders for uncached pages. To take advantage of this,
    bump the version field in your fern/fern.config.json to this release or
    later — the CLI auto-redirects to the pinned version, so older pins will not pick
    up the new default. You can also bump the version in one click from the Fern
    dashboard. To revert back to the legacy flow, add FERN_DOCS_DEPLOY_MODE: legacy
    to the env section of your GitHub Actions workflow. Legacy deploys will be
    removed in a future version of the CLI.

  • 5.54.0

  • feat: Detect api-key: OIDC in NuGet output config and pass OIDC marker to
    the C# generator for Trusted Publishing workflow generation.

  • 5.53.1

  • fix: Fix the next SDK version regressing to a stale baseline (e.g. 0.0.200) when
    --version AUTO is omitted. When computing the next version, Fern now consults
    every available source (package registry, GitHub release, and the sdkVersion
    recorded in .fern/metadata.json) and bumps the highest one, so a stale registry
    version can no longer override the version Fern last generated. For example,
    5.0.0 now correctly bumps to 5.0.1.

  • 5.53.0

  • feat: Add support for remote git sources in generators.yml. API specs can now reference
    files in git repositories using a git block with repo, ref, and path fields.
    The CLI shallow-clones the repository at generation time using native git credentials.

  • 5.52.0

  • feat: Add a layout.changelog-layout option to docs.yml. Set it to classic to render the
    legacy stacked changelog layout, or timeline (the default) for the searchable
    timeline-of-cards layout.

  • 5.51.2

  • fix: Fix inline enum type names ignoring parent schema's x-fern-type-name override.
    When a parent schema was renamed via x-fern-type-name, inline enum properties
    still derived their type name from the original parent name instead of the override.

  • 5.51.1

  • fix: Fix --version AUTO corrupting generated SDK code by replacing all occurrences
    of the literal string "AUTO" (e.g. SENSOR_MODE_AUTO, CORRELATION_TYPE_AUTOMATED)
    with the version number. The generator now receives the safe magic placeholder
    version (0.0.0-fern-placeholder) instead of "AUTO", and the post-generation
    sed replacement targets only that placeholder.

  • 5.51.0

  • feat: Preserve OpenAPI info.version through the IR as specVersion. This allows
    non-semver version formats (e.g. CalVer 2026-06-23) to be carried through
    the pipeline instead of being replaced with the default 1.0.0.

  • 5.50.6

  • fix: Forward edit-this-page GitHub config (owner/repo/branch/host) from docs.yml
    into the ledger manifest so the docs reader can synthesize the correct
    "Edit this page" URL without depending on runtime git provenance.

  • 5.50.5

  • fix: fern check no longer reports valid examples as invalid when a schema uses
    patternProperties (OpenAPI 3.1 / JSON Schema). When a schema declares
    patternProperties, example keys are no longer flagged as unexpected additional
    properties — including under additionalProperties: false.

  • 5.50.4

  • fix: Fixed the local C# dynamic-snippet test runner so it strips the docs-only
    exported-client-class-name override before generating snippet tests. The compiled snippets now
    reference the generated client class instead of the customer-provided wrapper, which is not part
    of generator output.

  • 5.50.3

  • fix: Fixes translated locales in ledger publishing mode (currently opt-in).

  • 5.50.2

  • fix: Add retry with exponential backoff to registerApiDefinition during docs
    publish. Large docs sites (e.g. 30+ API versions) could hit transient
    connection aborts from FDR; the CLI now retries up to 3 times with
    1 s / 2 s / 4 s delays before failing.

  • 5.50.0

  • feat: Add docs deployment ledger. Set FERN_DOCS_DEPLOY_MODE=ledger to
    publish via the new ledger backend; legacy (default) uses the
    existing register flow. The ledger path uses content-addressed
    storage for incremental deploys and supports multi-locale
    translations (including localized API reference content with
    per-locale apiManifest blobs and sidebar titles), custom JS
    components, favicon resolution, git provenance metadata,
    multi-domain forwarding, stable file-path references in page
    markdown, MIME-type inference for uploads, and a dedicated preview
    endpoint.

  • 5.49.3

  • fix: When a generator breaks an import cycle by relocating types into a shared
    package, the local generation runner now applies those relocations to the IR
    that powers host-side dynamic snippet test generation. This keeps the
    generated dynamic snippets referencing each relocated type from the same
    package the generator declares it in, fixing undefined-symbol compile errors
    in the Go SDK's dynamic snippet tests.

  • 5.49.2

  • fix: infer-discriminated-union-base-properties now lifts properties that every variant inherits via a shared allOf $ref parent. Previously these were dropped to protect TypeScript's _Base from colliding with the real parent interface, which left Go and C# unions missing common fields like id, name, and display_name.

  • 5.49.1

  • fix: Library docs generator now writes module overview pages as index.mdx inside their
    directory (e.g. adapters/index.mdx) instead of as sibling files (adapters.mdx),
    eliminating duplicate entries in the sidebar for library autodocs output.

  • 5.49.0

  • feat: Add support for x-fern-subtitle OpenAPI extension on endpoints. When set,
    the subtitle is rendered below the endpoint title in the docs UI.

  • 5.48.0

  • feat: Add a --local flag to fern docs md generate that runs the library
    documentation parsers locally in Docker instead of using Fern's servers.
    Local generation requires no authentication and operates on path inputs
    (local source); git inputs continue to be generated remotely.

  • 5.47.6

  • fix: Fix frontmatter values with leading zeros being corrupted during docs publish.
    grayMatter.stringify() in parseImagePaths would strip quotes from values
    like '001999' (non-octal digits), causing downstream YAML 1.2 parsers to
    interpret them as integers and lose leading zeros.

  • 5.47.5

  • fix: Fix v3 OpenAPI importer dropping types that are only referenced through a
    list/map of a $ref when audience filtering is enabled. Array and map
    aliases now record the referenced named type in referencedTypes (matching
    how object properties already do), so audience reachability no longer prunes
    the referenced type and leaves a dangling reference. This restores the
    "Show N variants" UI in docs for discriminated unions referenced via a list
    (e.g. Cohere's v2 chat messages field under an audience filter).

  • 5.47.4

  • fix: Group GraphQL queries by parent field in the sidebar; mutations and subscriptions remain flat. Field path is now included on all GraphQL operations for correct snippet nesting.

  • fix: Include field-level arguments when converting GraphQL object types and interfaces
    to FDR format. Previously, arguments were only captured for top-level query/mutation
    fields but not for nested object type fields (e.g., Image.url(width, height, lossy)).
    Namespace grouping types (object types whose fields are all promoted to top-level
    operations) are no longer double-registered as plain type definitions.

  • 5.47.3

  • fix: Use string literal for this.name in error classes instead of
    this.constructor.name, which gets mangled by minifiers.

  • fix: Fix text/* content types (e.g. text/csv, text/xml) being silently converted
    to text/plain during OpenAPI export. The original media type is now preserved
    through the IR via a new optional contentType field on TextResponse.

  • 5.47.2

  • fix: Stop dropping custom scalars in the GraphQL converter. Custom scalars (e.g. DateTime,
    URL, EmailAddress) are now emitted as named alias types in the types map with a stable
    id, and references to them point to that id so the type can be linked to in documentation.

  • 5.47.1

  • fix: Fix v3 OpenAPI importer producing empty discriminated unions when
    discriminator.propertyName is present but discriminator.mapping is absent.
    The importer now infers the mapping from oneOf/anyOf $ref schemas,
    using const/single-element enum values on the discriminant property
    (falling back to the schema name from the $ref path). This restores the
    "Show N variants" UI in docs for specs like Cohere's chat messages field.

  • 5.47.0

  • feat: Add page-actions.options.skills to docs.yml to enable and configure the "Install skills"
    page action on docs sites. Presence of the key enables the action (an empty object enables it
    with all defaults); title, description, learn-more-url, repository, and
    install-command (string or list, rendered one command per line) customize the modal, and
    skills lists the available skills. If the site also serves a /.well-known skills manifest,
    the served manifest replaces the hand-listed skills.

  • feat: Upload Agent Skills bundles placed under .well-known/skills/ or .well-known/agent-skills/
    in the docs folder when publishing docs, so Fern-hosted docs sites serve them and
    npx skills add https://<docs-domain> installs them. fern check now validates skill
    bundles: the index.json discovery manifest must exist and parse, and each skill's
    SKILL.md frontmatter needs a kebab-case name (max 64 characters) matching its parent
    directory and a non-empty description (max 1024 characters).

  • 5.46.1

  • fix: Bump bundled @fern-api/replay (via generator-cli 0.9.38) to 0.18.0: replay
    detection filters .fernignore-protected files before materializing patches,
    handles trailing-slash patterns like docs/, and no longer crashes with an
    unhandled write EPIPE during patch application.

  • 5.46.0

  • feat: Add OIDC support for PyPI publishing in local generation. When
    token: OIDC is configured for a PyPI output, the CLI now detects
    the OIDC credential and propagates it through both the GitHub publish
    info and the publish config so the Python generator can activate its
    OIDC trusted-publisher workflow.

  • feat: Track which validation rules fired during fern check as part of the PostHog CLI telemetry event.
    The event now includes validationRules (array of rule names that produced violations),
    numErrors, numWarnings, and passed properties.

  • 5.45.5

  • fix: Bump @fern-api/generator-cli to 0.9.36: AutoVersionStep now calls the hosted FAI
    service with fernToken when no BAML ai config is supplied, restoring real
    version bumps and changelog entries for replay-enabled remote generations.

  • 5.45.4

  • fix: Fix fs.cp resolving relative symlinks to absolute temp-directory paths
    during local generation. Adds verbatimSymlinks: true so symlinks like
    .claude -> .agents are preserved as-is when copying generator output.

  • 5.45.2

  • fix: Fix native generator execution to correctly pass raw API specs directory
    via FERN_SPECS_DIR environment variable, enabling local seed tests for
    generators that consume OpenAPI specs (e.g. CLI generator).

  • 5.45.1

  • fix: Fix v3 OpenAPI importer to check x-fern-server-name extension in getEndpointBaseUrls(),
    preventing path-level server descriptions from being misinterpreted as base URL IDs when the
    extension is present.

  • 5.45.0

  • feat: The ai.provider field in generators.yml now uses BAML provider
    identifiers directly. bedrock has been renamed to aws-bedrock.
    Update your config: provider: bedrockprovider: aws-bedrock.

  • 5.44.14

  • fix: Fix fern export to emit top-level servers array for multi-URL environments
    (multipleBaseUrls). Previously only single-URL environments produced servers.
    Each environment × base-URL combination is now listed with a description like
    "Production (api)". Endpoint-level servers also now include the environment
    name in their description.

  • 5.44.13

  • fix: Fix fern check parameter-name collision validator to honor x-fern-parameter-name.
    Previously, parameters with distinct x-fern-parameter-name overrides were still
    flagged as collisions based on their raw OpenAPI name field.

  • 5.44.12

  • fix: Fix SPM auto-compiling dynamic snippet files as 650+ separate executables by
    moving snippets into Tests/Snippets/ and wrapping them as library code (compiled
    as part of the test target instead of standalone executables).

  • 5.44.11

  • fix: Fix AI example enhancement to backfill missing required fields from the auto-generated
    example. When the AI Lambda produces a partial example (e.g., missing fields from nested
    allOf chains), the missing fields are now merged from the correct auto-generated example,
    ensuring all required fields are present in published documentation.

  • 5.44.10

  • fix: Fix false positive warnings in the missing-redirects check for changelog
    entries and embedded content pages. FDR stores an empty slug for pages that
    don't resolve to a standalone navigation node; these are no longer reported as
    removed pages whose previously published URL was "/", even when the site's home
    page lives under a non-root slug or basepath.

  • 5.44.9

  • fix: Fix fern check validators (valid-local-references, no-non-component-refs) incorrectly reporting $ref values found inside YAML comments.

  • 5.44.8

  • fix: Fix example generation for nested allOf $ref chains. When a schema uses
    multi-level allOf (e.g. UserPost → UserBase → UserStrict), properties from
    grandparent schemas were missing from generated code snippets because
    mergeAllOfProperties only resolved one level of allOf. Now recursively
    resolves the full chain so all required fields appear in examples.

  • 5.44.7

  • fix: Fix AsyncAPI v2 enum collision where multiple channels with identically
    named query parameters (or headers/path params) that have different enum
    values would overwrite each other. The v2 channel converter now passes
    parameterNamePrefix (the channel path) to the ParameterConverter,
    matching the v3 converter behavior.

  • 5.44.6

  • fix: Update CLI irVersion metadata from 66 to 67 so that FDR correctly
    reports IR 67-compatible generator versions (e.g. CLI generator ≥ 0.2.0)
    when resolving fern generator upgrade.


Requested by: Fern Dashboard (signalwire)


Upgrading from 5.44.4 to 5.64.0 - Changelog

    5.64.0
  • fix: Fix proto target path resolution when using remote git sources. Previously the target
    was resolved relative to the workspace instead of the cloned repository, causing
    "file missing" errors.

  • feat: Support commit SHA references in git source ref field. Previously only branch names
    and tags were supported; commit SHAs now work via fetch+checkout.

  • 5.63.1

  • fix: Prevent --version AUTO from embedding literal 'AUTO' in generated SDK code during remote generation. The magic placeholder is now substituted before IR generation in the remote path, matching the local generation fix.

  • 5.63.0

  • feat: Extend dynamic IR OAuth types with custom properties and populate them in
    DynamicSnippetsConverter, enabling dynamic snippet generators to include
    custom OAuth token endpoint request parameters in generated code examples.

  • 5.62.2

  • fix: Strip CLI-only config keys (e.g. user-agent) from the custom config
    before forwarding to generator containers, preventing strict validation
    errors in generators that reject unknown keys.

  • 5.62.1

  • fix: Fix float primitive types rendering as 'double' in documentation. Float types now correctly render as 'float'.

  • 54 additional updates, see more

    5.62.0

  • feat: Add --generate-tests flag to fern generate to enable test file generation
    even when outputting to a local file system. Previously, tests were only generated
    for GitHub output modes.

  • 5.61.0

  • feat: Add user-agent generator config option that accepts a template string for
    the User-Agent header. Supported placeholders: {packageName}, {version},
    {language}, {generatorVersion}, {organization}, {apiName}. When absent,
    defaults to {packageName}/{version} (current behavior, non-breaking).

  • 5.60.0

  • feat: Add mcp option to page-actions in docs.yml. When set to false, the MCP server
    endpoint is disabled, its URL is omitted from llms.txt and agent prompts, and the
    "Connect to Claude Code" / "Connect to Cursor" buttons are hidden.

  • fix: Add payload-format support for asymmetric webhook signature verification,
    allowing the timestamp and other components to be included in the signed
    payload. Previously, only the raw body was signed for asymmetric webhooks,
    making the timestamp tolerance check ineffective against replay attacks.

  • 5.59.0

  • feat: Extract per-content-type OpenAPI examples into endpoint-level v2Examples
    tagged with their content type. When an operation declares multiple content
    types (e.g. application/json and application/ld+json) with distinct examples,
    the importer now elevates those examples so docs can display the correct
    example body when the user switches content types.

  • 5.58.0

  • fix: Fix product-level landing pages being dropped for unversioned products within a product group, and propagate top-level landing page to versioned navigation nodes as a fallback.

  • 5.57.0

  • feat: When running inside GitHub Actions, notable SDK generation events are now surfaced as
    ::notice:: annotations in the workflow run page and appended to the step summary.
    Annotated events include PR creation, package publication (npm, PyPI, Maven, etc.),
    no-changes-detected, and version tagging. Previously, these details were only visible
    in debug-level log output.

  • 5.56.4

  • fix: Fix remote generation CLI hanging indefinitely when S3 download stalls.
    Added connection timeout (60s) and overall download timeout (5 min) to
    both downloadZipForTask and downloadAndExtractZipToDirectory, so the CLI
    fails with a clear error instead of blocking forever.

  • 5.56.3

  • fix: Fix ledger publish path not forwarding the basepathAware flag for
    multi-source docs sites, causing the manifest to be written to the
    wrong storage key. Affected sites served stale content from the last
    legacy publish instead of the updated ledger manifest.

  • 5.56.1

  • fix: Fix fern docs dev failing with pnpm 10+ due to missing packages field
    in generated pnpm-workspace.yaml and missing -w flag on pnpm i esbuild.

  • 5.56.0

  • feat: Add disambiguate-request-names setting to control whether generated request
    wrapper names that collide with component schema names are renamed from
    "*Request" to "*Body". Defaults to true (current behavior). A CLI migration
    for version 4.106.1 is included to explicitly set the flag to false for
    projects that existed before disambiguation was introduced, preserving their
    original "*Request" names.

  • 5.55.2

  • fix: Fix fern docs dev hot-reload for pages referenced outside the fern/ directory.
    Previously, only changes to files inside the fern/ folder triggered preview refreshes.
    Now, external directories containing referenced docs pages are also watched.

  • 5.55.1

  • fix: Fix --instance flag silently publishing to the wrong docs instance when the provided URL does not match any configured instance. Previously the CLI would fall back to the first configured instance; now it fails with an error listing available instances.

  • fix: Replace sed-based magic version replacement with pure Node.js implementation
    in local generation mode. Fixes "illegal byte sequence" errors on binary files
    and eliminates platform-specific behavior.

  • fix: Fix a 500 (PruneEmptyError) in localized docs when a translated OpenAPI spec changed a
    structural identifier (e.g. an OpenAPI tag name, which derives subpackage and endpoint ids)
    relative to the default-locale spec. API-reference navigation nodes are now matched to the
    translated definition by a stable locator (HTTP method + path) in addition to id, so localized
    sidebar titles still apply and the renderer can resolve the served API. When a node cannot be
    matched at all, the affected API falls back to the default-locale definition with a warning
    instead of crashing.

  • 5.55.0

  • feat: Default docs deploy mode is now "ledger", enabling faster incremental deployments
    and faster first-time page renders for uncached pages. To take advantage of this,
    bump the version field in your fern/fern.config.json to this release or
    later — the CLI auto-redirects to the pinned version, so older pins will not pick
    up the new default. You can also bump the version in one click from the Fern
    dashboard. To revert back to the legacy flow, add FERN_DOCS_DEPLOY_MODE: legacy
    to the env section of your GitHub Actions workflow. Legacy deploys will be
    removed in a future version of the CLI.

  • 5.54.0

  • feat: Detect api-key: OIDC in NuGet output config and pass OIDC marker to
    the C# generator for Trusted Publishing workflow generation.

  • 5.53.1

  • fix: Fix the next SDK version regressing to a stale baseline (e.g. 0.0.200) when
    --version AUTO is omitted. When computing the next version, Fern now consults
    every available source (package registry, GitHub release, and the sdkVersion
    recorded in .fern/metadata.json) and bumps the highest one, so a stale registry
    version can no longer override the version Fern last generated. For example,
    5.0.0 now correctly bumps to 5.0.1.

  • 5.53.0

  • feat: Add support for remote git sources in generators.yml. API specs can now reference
    files in git repositories using a git block with repo, ref, and path fields.
    The CLI shallow-clones the repository at generation time using native git credentials.

  • 5.52.0

  • feat: Add a layout.changelog-layout option to docs.yml. Set it to classic to render the
    legacy stacked changelog layout, or timeline (the default) for the searchable
    timeline-of-cards layout.

  • 5.51.2

  • fix: Fix inline enum type names ignoring parent schema's x-fern-type-name override.
    When a parent schema was renamed via x-fern-type-name, inline enum properties
    still derived their type name from the original parent name instead of the override.

  • 5.51.1

  • fix: Fix --version AUTO corrupting generated SDK code by replacing all occurrences
    of the literal string "AUTO" (e.g. SENSOR_MODE_AUTO, CORRELATION_TYPE_AUTOMATED)
    with the version number. The generator now receives the safe magic placeholder
    version (0.0.0-fern-placeholder) instead of "AUTO", and the post-generation
    sed replacement targets only that placeholder.

  • 5.51.0

  • feat: Preserve OpenAPI info.version through the IR as specVersion. This allows
    non-semver version formats (e.g. CalVer 2026-06-23) to be carried through
    the pipeline instead of being replaced with the default 1.0.0.

  • 5.50.6

  • fix: Forward edit-this-page GitHub config (owner/repo/branch/host) from docs.yml
    into the ledger manifest so the docs reader can synthesize the correct
    "Edit this page" URL without depending on runtime git provenance.

  • 5.50.5

  • fix: fern check no longer reports valid examples as invalid when a schema uses
    patternProperties (OpenAPI 3.1 / JSON Schema). When a schema declares
    patternProperties, example keys are no longer flagged as unexpected additional
    properties — including under additionalProperties: false.

  • 5.50.4

  • fix: Fixed the local C# dynamic-snippet test runner so it strips the docs-only
    exported-client-class-name override before generating snippet tests. The compiled snippets now
    reference the generated client class instead of the customer-provided wrapper, which is not part
    of generator output.

  • 5.50.3

  • fix: Fixes translated locales in ledger publishing mode (currently opt-in).

  • 5.50.2

  • fix: Add retry with exponential backoff to registerApiDefinition during docs
    publish. Large docs sites (e.g. 30+ API versions) could hit transient
    connection aborts from FDR; the CLI now retries up to 3 times with
    1 s / 2 s / 4 s delays before failing.

  • 5.50.0

  • feat: Add docs deployment ledger. Set FERN_DOCS_DEPLOY_MODE=ledger to
    publish via the new ledger backend; legacy (default) uses the
    existing register flow. The ledger path uses content-addressed
    storage for incremental deploys and supports multi-locale
    translations (including localized API reference content with
    per-locale apiManifest blobs and sidebar titles), custom JS
    components, favicon resolution, git provenance metadata,
    multi-domain forwarding, stable file-path references in page
    markdown, MIME-type inference for uploads, and a dedicated preview
    endpoint.

  • 5.49.3

  • fix: When a generator breaks an import cycle by relocating types into a shared
    package, the local generation runner now applies those relocations to the IR
    that powers host-side dynamic snippet test generation. This keeps the
    generated dynamic snippets referencing each relocated type from the same
    package the generator declares it in, fixing undefined-symbol compile errors
    in the Go SDK's dynamic snippet tests.

  • 5.49.2

  • fix: infer-discriminated-union-base-properties now lifts properties that every variant inherits via a shared allOf $ref parent. Previously these were dropped to protect TypeScript's _Base from colliding with the real parent interface, which left Go and C# unions missing common fields like id, name, and display_name.

  • 5.49.1

  • fix: Library docs generator now writes module overview pages as index.mdx inside their
    directory (e.g. adapters/index.mdx) instead of as sibling files (adapters.mdx),
    eliminating duplicate entries in the sidebar for library autodocs output.

  • 5.49.0

  • feat: Add support for x-fern-subtitle OpenAPI extension on endpoints. When set,
    the subtitle is rendered below the endpoint title in the docs UI.

  • 5.48.0

  • feat: Add a --local flag to fern docs md generate that runs the library
    documentation parsers locally in Docker instead of using Fern's servers.
    Local generation requires no authentication and operates on path inputs
    (local source); git inputs continue to be generated remotely.

  • 5.47.6

  • fix: Fix frontmatter values with leading zeros being corrupted during docs publish.
    grayMatter.stringify() in parseImagePaths would strip quotes from values
    like '001999' (non-octal digits), causing downstream YAML 1.2 parsers to
    interpret them as integers and lose leading zeros.

  • 5.47.5

  • fix: Fix v3 OpenAPI importer dropping types that are only referenced through a
    list/map of a $ref when audience filtering is enabled. Array and map
    aliases now record the referenced named type in referencedTypes (matching
    how object properties already do), so audience reachability no longer prunes
    the referenced type and leaves a dangling reference. This restores the
    "Show N variants" UI in docs for discriminated unions referenced via a list
    (e.g. Cohere's v2 chat messages field under an audience filter).

  • 5.47.4

  • fix: Group GraphQL queries by parent field in the sidebar; mutations and subscriptions remain flat. Field path is now included on all GraphQL operations for correct snippet nesting.

  • fix: Include field-level arguments when converting GraphQL object types and interfaces
    to FDR format. Previously, arguments were only captured for top-level query/mutation
    fields but not for nested object type fields (e.g., Image.url(width, height, lossy)).
    Namespace grouping types (object types whose fields are all promoted to top-level
    operations) are no longer double-registered as plain type definitions.

  • 5.47.3

  • fix: Use string literal for this.name in error classes instead of
    this.constructor.name, which gets mangled by minifiers.

  • fix: Fix text/* content types (e.g. text/csv, text/xml) being silently converted
    to text/plain during OpenAPI export. The original media type is now preserved
    through the IR via a new optional contentType field on TextResponse.

  • 5.47.2

  • fix: Stop dropping custom scalars in the GraphQL converter. Custom scalars (e.g. DateTime,
    URL, EmailAddress) are now emitted as named alias types in the types map with a stable
    id, and references to them point to that id so the type can be linked to in documentation.

  • 5.47.1

  • fix: Fix v3 OpenAPI importer producing empty discriminated unions when
    discriminator.propertyName is present but discriminator.mapping is absent.
    The importer now infers the mapping from oneOf/anyOf $ref schemas,
    using const/single-element enum values on the discriminant property
    (falling back to the schema name from the $ref path). This restores the
    "Show N variants" UI in docs for specs like Cohere's chat messages field.

  • 5.47.0

  • feat: Add page-actions.options.skills to docs.yml to enable and configure the "Install skills"
    page action on docs sites. Presence of the key enables the action (an empty object enables it
    with all defaults); title, description, learn-more-url, repository, and
    install-command (string or list, rendered one command per line) customize the modal, and
    skills lists the available skills. If the site also serves a /.well-known skills manifest,
    the served manifest replaces the hand-listed skills.

  • feat: Upload Agent Skills bundles placed under .well-known/skills/ or .well-known/agent-skills/
    in the docs folder when publishing docs, so Fern-hosted docs sites serve them and
    npx skills add https://<docs-domain> installs them. fern check now validates skill
    bundles: the index.json discovery manifest must exist and parse, and each skill's
    SKILL.md frontmatter needs a kebab-case name (max 64 characters) matching its parent
    directory and a non-empty description (max 1024 characters).

  • 5.46.1

  • fix: Bump bundled @fern-api/replay (via generator-cli 0.9.38) to 0.18.0: replay
    detection filters .fernignore-protected files before materializing patches,
    handles trailing-slash patterns like docs/, and no longer crashes with an
    unhandled write EPIPE during patch application.

  • 5.46.0

  • feat: Add OIDC support for PyPI publishing in local generation. When
    token: OIDC is configured for a PyPI output, the CLI now detects
    the OIDC credential and propagates it through both the GitHub publish
    info and the publish config so the Python generator can activate its
    OIDC trusted-publisher workflow.

  • feat: Track which validation rules fired during fern check as part of the PostHog CLI telemetry event.
    The event now includes validationRules (array of rule names that produced violations),
    numErrors, numWarnings, and passed properties.

  • 5.45.5

  • fix: Bump @fern-api/generator-cli to 0.9.36: AutoVersionStep now calls the hosted FAI
    service with fernToken when no BAML ai config is supplied, restoring real
    version bumps and changelog entries for replay-enabled remote generations.

  • 5.45.4

  • fix: Fix fs.cp resolving relative symlinks to absolute temp-directory paths
    during local generation. Adds verbatimSymlinks: true so symlinks like
    .claude -> .agents are preserved as-is when copying generator output.

  • 5.45.2

  • fix: Fix native generator execution to correctly pass raw API specs directory
    via FERN_SPECS_DIR environment variable, enabling local seed tests for
    generators that consume OpenAPI specs (e.g. CLI generator).

  • 5.45.1

  • fix: Fix v3 OpenAPI importer to check x-fern-server-name extension in getEndpointBaseUrls(),
    preventing path-level server descriptions from being misinterpreted as base URL IDs when the
    extension is present.

  • 5.45.0

  • feat: The ai.provider field in generators.yml now uses BAML provider
    identifiers directly. bedrock has been renamed to aws-bedrock.
    Update your config: provider: bedrockprovider: aws-bedrock.

  • 5.44.14

  • fix: Fix fern export to emit top-level servers array for multi-URL environments
    (multipleBaseUrls). Previously only single-URL environments produced servers.
    Each environment × base-URL combination is now listed with a description like
    "Production (api)". Endpoint-level servers also now include the environment
    name in their description.

  • 5.44.13

  • fix: Fix fern check parameter-name collision validator to honor x-fern-parameter-name.
    Previously, parameters with distinct x-fern-parameter-name overrides were still
    flagged as collisions based on their raw OpenAPI name field.

  • 5.44.12

  • fix: Fix SPM auto-compiling dynamic snippet files as 650+ separate executables by
    moving snippets into Tests/Snippets/ and wrapping them as library code (compiled
    as part of the test target instead of standalone executables).

  • 5.44.11

  • fix: Fix AI example enhancement to backfill missing required fields from the auto-generated
    example. When the AI Lambda produces a partial example (e.g., missing fields from nested
    allOf chains), the missing fields are now merged from the correct auto-generated example,
    ensuring all required fields are present in published documentation.

  • 5.44.10

  • fix: Fix false positive warnings in the missing-redirects check for changelog
    entries and embedded content pages. FDR stores an empty slug for pages that
    don't resolve to a standalone navigation node; these are no longer reported as
    removed pages whose previously published URL was "/", even when the site's home
    page lives under a non-root slug or basepath.

  • 5.44.9

  • fix: Fix fern check validators (valid-local-references, no-non-component-refs) incorrectly reporting $ref values found inside YAML comments.

  • 5.44.8

  • fix: Fix example generation for nested allOf $ref chains. When a schema uses
    multi-level allOf (e.g. UserPost → UserBase → UserStrict), properties from
    grandparent schemas were missing from generated code snippets because
    mergeAllOfProperties only resolved one level of allOf. Now recursively
    resolves the full chain so all required fields appear in examples.

  • 5.44.7

  • fix: Fix AsyncAPI v2 enum collision where multiple channels with identically
    named query parameters (or headers/path params) that have different enum
    values would overwrite each other. The v2 channel converter now passes
    parameterNamePrefix (the channel path) to the ParameterConverter,
    matching the v3 converter behavior.

  • 5.44.6

  • fix: Update CLI irVersion metadata from 66 to 67 so that FDR correctly
    reports IR 67-compatible generator versions (e.g. CLI generator ≥ 0.2.0)
    when resolving fern generator upgrade.


Requested by: Fern Dashboard (signalwire)

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

@fern-api fern-api Bot changed the title 🌿 [Scheduled] Upgrade Fern CLI 🌿 [Scheduled] Upgrade Fern Jul 2, 2026
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