5.27.0

(internal): Enrich CLI telemetry with automation-mode context (config repo, branch, commit sha, PR number, trigger, and GitHub run details) on every PostHog event and Sentry error report. Add the three-leg failure flow (Sentry + PostHog + automation event API) so automation-run failures surface end-to-end.


5.26.5

(fix): Suppress additional Sentry false positives for interrupted syscalls, invalid versions, YAML parse failures, IR schema parse failures, invalid GitHub repository config, replay resolve failures, missing translation directories, and global theme fetch failures.


5.26.4

(fix): Fix missing-redirects causing fern check to exit with code 1 even when the rule is configured at warn. Rule initialization failures now honor the configured severity (warn emits a warning, error emits an error) instead of always being reported as fatal. The missing-redirects rule also degrades to a warning when the local docs navigation fails to resolve, captures the underlying failAndThrow message so the warning explains why (e.g. Folder not found: ...) instead of [object Object], and non-Error throws are formatted readably across the validator.

5.26.3

(fix): Fix fern docs dev grabbing the local fern token for authentication when loading a global theme

5.26.2

(fix): Fix commit author attribution for GitHub Enterprise: API-created commits now use the Fern bot identity instead of the PAT-owning user, matching the git CLI behavior of Fern 3.x generators.

(fix): Authenticate Venus calls during local Docker generation (fern generate --local) by silently picking up an existing FERN_TOKEN env var or saved login token, matching the remote generation path. Previously, useLocalDocker skipped the auth flow entirely, leaving Venus calls (e.g. GET /organizations/{org_id}) unauthenticated.

5.26.1

(fix): Forward --verify through the remote (Fiddle) generation path. Previously the CLI-level --verify flag only worked for local generation; on remote runs the value was silently dropped before reaching CreateJobRequestV2.verify. The flag now plumbs through runRemoteGenerationForAPIWorkspacerunRemoteGenerationForGeneratorcreateAndStartJob and is set on the Fiddle job request, enabling the generator-cli pipeline’s VerificationStep against the language-specific validator on opted-in runs.

5.26.0

(feat): Add fern docs link check command to validate links on live documentation sites. Supports text, JSON, and CSV output formats via --output flag. Use --url <url> to specify which docs site to check, or auto-detect from docs.yml.

(feat): Add progress bars matching fern docs dev style for fern docs link check. Broken links show status codes, blocked links show diagnostic details, and error messages include actionable context.

(feat): The fern docs link check command now resolves broken link sources to local file paths when the server provides sourcePageIds and a Fern workspace is available.

5.25.0

(feat): Register the new fernapi/fern-cli generator in the CLI configuration.

5.24.2

(fix): Fix fern config migrate producing wrong file path references in the generated fern.yml. Paths from generators.yml (relative to the fern/ directory) are now correctly re-rooted to be relative to the project root where fern.yml is created. This also fixes the docs $ref pointer to use ./fern/docs.yml instead of ./docs.yml.

5.24.1

(chore): Propagate Fern docs: strings into generated JSON Schemas so editor hovers work for schemas served from schema.buildwithfern.dev.


5.24.0

(internal): Plumb verify, verifyRunner, and verifyValidatorVersion flags through GenerationRunner.RunArgs so the seed runner can invoke PostGenerationPipeline with VerificationStep and exercise the same validator-container code path that fern generate --local --verify uses. No customer-facing CLI behavior change — the flags are opt-in and used only by the seed test runner today.

5.23.6

(fix): Fix fern docs dev hot reload not working for .mdx file changes. The backend now updates the docs definition before notifying the browser to refresh, and the reload handler properly recovers from errors instead of silently blocking all future reloads.

5.23.5

(fix): Fix SDK generation crashing with fatal: <sha> is not a valid object when the prior fern-bot PR was squash-merged and its branch deleted. The stale fern-generation-base tag update is now skipped with a warning; the SDK PR still opens.

5.23.4

(fix): Fix allOf composition so inline elements with real constraints (e.g. pattern, minLength) produce a properly merged type instead of being silently dropped. Also refactored the allOf shortcircuit logic to use a metadata allowlist, which is safer against new OpenAPI fields.

(fix): Fix example generation for allOf compositions to merge base schema fields into property overrides. When an allOf override specifies only items without type: array, the base schema’s type is now correctly inherited, producing properly typed examples instead of null.


5.23.3

(fix): Property-level x-fern-audiences filtering now also applies on the V3 OpenAPI / AsyncAPI / OpenRPC import path used by fern docs dev and fern generate --from-openapi. Inline request-body properties, query parameters, inline webhook payload properties, named-type properties, v2RequestBodies, and the docs v2Examples blocks (type-level, request body, response body, endpoint-level, v2Responses, and webhook payload examples) are now scrubbed using the same exclusion semantics as the Fern Definition path. Untagged elements remain universal and are never silently removed.

5.23.2

(fix): Suppress Fern’s platform User-Agent header in generated SDKs when the API definition declares a global User-Agent header (case-insensitive) under api.headers. This allows customers to fully override the SDK User-Agent via their Fern Definition without the auto-generated <package>/<version> value also being emitted.


5.23.1

(fix): Fix fern docs dev hanging indefinitely on Node.js v26+ on Linux by disabling io_uring in the child server process. Node 26 enables io_uring by default in libuv, which has a busy-loop bug where worker threads spin on an internal eventfd, starving the main event loop.

5.23.0

(internal): Add an opt-in VerificationStep to the post-generation pipeline that runs .fern/verify.sh (when emitted by the generator) inside a language-specific {generatorImage}-validator container after replay and before any GitHub push. A failing script aborts the pipeline before opening a PR and surfaces raw stderr through the pipeline logger; a missing script is a silent no-op.

The step is gated on a hidden --verify flag for fern generate; when passed (with --local or --runner), the local workspace runner sets config.verify.enabled = true on the pipeline and the configured container runtime (docker or podman) is forwarded to the validator container. Remote/Fiddle generation does not honor this flag yet.

5.22.1

(fix): Fix fern docs dev failing with pnpm 11 due to esbuild build scripts being blocked by default. Writes onlyBuiltDependencies config to the bundle folder before installing esbuild.


5.22.0

(feat): Add fern sdk list command to list configured and available SDK generators. Displays configured SDKs from local fern.yml and available generators from the Fern registry. Supports --language, --type, and --json flags.


5.21.1

(chore): Bump IR to 67.2.0 to publish the optional resumable field added to SseStreamChunk in PR #15795. Without the IR version bump, no new @fern-fern/ir-sdk minor was published and the field stayed invisible to downstream consumers.

5.21.0

(feat): Add a new resumable sub-property to the x-fern-streaming OpenAPI extension (and a corresponding resumable field on Fern Definition response-stream blocks). When set on an SSE endpoint, the IR carries resumable: true on the SSE chunk so generators can emit a client-side reconnect loop using standard SSE primitives (Last-Event-ID, retry:).

The flag is inheritable: setting x-fern-streaming.resumable: true at the OpenAPI document level applies to every SSE endpoint unless an operation overrides it (silent fallback). Defaults to false. The IR field is optional, so generators that don’t read it are unaffected.

5.20.1

(fix): Pass GitHub Enterprise host to Fiddle for remote generation so that self-hosted GHE instances are correctly targeted by the remote pipeline.


5.20.0

(feat): Add --fix flag to fern check, fern sdk check, and fern docs check. When specified, the CLI automatically applies known fixes for detected issues (e.g. replacing invalid SDK target versions with the latest stable release, applying deterministic MDX parse error fixes).

5.19.1

(fix): Property-level x-fern-audiences (and Fern definition audiences:) filtering now correctly excludes properties whose audiences do not overlap the active filter and preserves untagged properties as universal — matching endpoint-level audience semantics. Examples are also scrubbed of excluded items: auto-generated jsonExample snapshots, inlined request-body example properties, endpoint example query parameters, and user-specified webhook payload examples.

5.19.0

(feat): Add PR title, body, and commit message to fern automations upgrade --json output. The new pr field in the JSON output allows GitHub Actions consumers to use CLI-generated PR formatting directly, eliminating duplicated presentation logic.

5.18.1

(fix): Fix GitHub Enterprise support for self-hosted SDK generation. Octokit API calls (signed commits, PR creation, ref updates) now use the correct GHE API base URL derived from the repository URI instead of always hitting api.github.com.

5.18.0

(feat): Add fern schema [name] command (CLI v2) that emits a JSON Schema for fern.yml. Running fern schema with no argument prints the full schema; passing a dot-delimited subsection (e.g. fern schema sdks, fern schema sdks.targets, fern schema api) prints just that block. Intended primarily for AI agents that need to generate or validate Fern config at runtime without consulting external docs.


5.17.1

(fix): Fix publish to respect FERN_FDR_ORIGIN environment variable override.

5.17.0

(internal): Attach fern_run_id and github_run_id as PostHog properties on every CLI event so PostHog dashboards can correlate analytics with the FERN_RUN_ID set by the GitHub Actions wrappers and the matching Sentry tags.

5.16.1

(fix): fern check now accepts changelog navigation entries whose URL has any allowlisted segment (e.g. whats-new, release-notes, changelog), not just the trailing one. This means a changelog page like /whats-new/product-updates no longer raises a false-positive error about RSS / Atom / JSON feeds 404ing — the docs server matches the same loosened rule when serving feeds.

5.16.0

(feat): cli-v2: fern check now prints rich, Rust-style errors for MDX/Markdown parse failures. Each error includes a stable error code (e.g. E0301), a --> path:line:col location, two surrounding source lines with a caret pointer, and an inline fix: suggestion when one is available.

(feat): cli-v2: add interactive AI-assisted fixes for MDX/Markdown parse errors. fern check now offers to apply a fix when run interactively — using a deterministic string-replace when the parser’s fix: hint matches the file, and falling back to a configured AI provider otherwise. Provider is selected via fern config ai set-provider <anthropic|openai|bedrock> and credentials via fern config ai set-key <key> (Bedrock uses the standard AWS environment). Prompts are skipped automatically when running inside a Claude Code session (CLAUDECODE=1).

(feat): cli-v2: when fern check finds multiple MDX errors, prompt once for a batch action (“apply all”, “review each”, “skip all”) instead of prompting once per error.

5.15.3

(fix): Fix fern check to respect x-fern-ignore when validating duplicate SDK method names. Operations marked with x-fern-ignore: true are now excluded from the duplicate override check.

5.15.2

(fix): Fix dynamic IR upload and check endpoints to pass correct field names (version, snippetConfiguration) matching the FDR server contract, resolving 500 errors during SDK generation.