5.180.1
(fix): Interactive prompts now fail fast with a non-zero exit code when stdin is not a TTY or CI is set,
instead of waiting forever for input (for example, fern init run by an agent without
--organization). Cancelling a prompt (Ctrl+C or stdin closing) now also exits non-zero
instead of reporting success. CI=false and CI=0 are now treated as not running in CI.
5.180.0
(feat): Add fern whoami [--json]: shows whether the CLI is using a login, a FERN_TOKEN organization token or
nothing, and this repo’s guest session (fern generate --guest) with its organization, expiry and claim
link. The guest token itself is never printed.
5.179.0
(feat): Add fern claim [--org <name>]: claims the guest session recorded by fern generate --guest with your
Fern login (via Venus), points fern.config.json at the organization that now owns the work and forgets
the guest session.
(feat): Add fern generate --guest (SDKs and --docs): with no fern login or FERN_TOKEN, the CLI
starts a temporary Venus guest session, generates under its guest-<id> organization and prints the
claim link and expiry. The session is reused by every run in the same repo (fern/.guest-session,
gitignored; credential in ~/.fern/guest-sessions/) and the CLI warns when it is about to expire.
A guest can only download: --docs requires --preview, and generators that push to GitHub or
publish to a registry are refused up front. --guest --new-session discards the recorded session
and starts another one. The login error now mentions --guest.
5.178.0
(feat): Load protobuf (proto) sources from sdk-config.yml into the SDK Config workspace with the same
semantics as proto specs in generators.yml: local and git roots, an optional target, ordered
overrides, dependencies, localGeneration and fromOpenApi. fern check validates them; SDK Config
generation (hosted and --local) rejects them with a clear error until protobuf-to-OpenAPI conversion lands.
Upgrades @postman/sdk-config to 0.17.0.
5.177.0
(feat): fern docs dev can now stop itself and report its state in a machine-readable way, so agents and CI
no longer have to find and kill the process. All three flags are off by default and apply to the default
(Astro) preview server only:
--timeout <duration>stops the server cleanly this long after it is ready.--idle-timeout <duration>stops it after this long with no HTTP requests (the live-reload stream doesn’t count).--jsonwritesready(URL, ports, PID),reloadandstoppedevents to stdout as one JSON object per line; logs go to stderr. Durations accept30s,10mor1h; a plain number means seconds.
5.176.1
(fix): Fix fern docs dev returning 404 for the sidebar navigation, compiled MDX components and
optimized images with the latest docs renderer, which serves them under _fern-files/_nav,
_fern-files/_mdx and _fern-files/_img. The preview now sends _-prefixed _fern-files/
paths to the renderer and only sends uploaded files to the local file mirror.
5.176.0
(feat): SDK snippets from sdk-gen are now read from the placeholdersSnippetsUrl link of each artifact, the file whose
values carry editable placeholders for the docs “Try it” panel. The SDKs whose snippets were read are left out of
the snippetsConfiguration sent to FDR, so FDR no longer fails looking them up in its own snippet store.
5.175.0
(fix): C/C++ library docs: backslashes in generated description: frontmatter are now YAML-escaped
(a \M in a Doxygen comment no longer breaks the page or the site), and fern docs md check
fails on pages whose frontmatter does not parse instead of silently dropping it.
(feat): C/C++ library docs: when two symbols sanitize to the same filename or URL (s_dup vs __s_dup,
S_CASE vs s_case), the public name now always gets the plain URL and _-prefixed names
get the -2 suffix, independent of source order. New opt-in config.slug-style: hyphenated
on lang: cpp libraries keeps word boundaries in URLs (/functions/doca-pcc-dev-get-port-counter-id).
5.174.1
(chore): Upgrade the Venus API client (@fern-api/venus-api-sdk) to 12.0.0 so the CLI
uses the current organization, token and registry endpoints.
5.174.0
(feat): Add auto-merge: true to the github block (pull-request mode) in generators.yml and a matching
fern generate --auto-merge flag. When set, Fern enables GitHub auto-merge (squash) on the pull
request it opens, so the SDK PR merges as soon as the repository’s required checks pass. Auto-merge
is skipped when the release contains breaking changes (MAJOR bump) or version analysis is
unavailable, and the SDK repository must allow auto-merge. Applies to both --local and remote
generation (the flag is now forwarded to Fiddle).
5.173.0
(feat): At fern generate --docs, find the snippets of the SDKs that docs.yml snippets: names (TypeScript,
Python, Java, Go, Ruby, C# and PHP) through sdk-gen-api, by the sdkName in sdk-config.yml, the language
and the version, and add them to the endpoints as code samples, in both deploy modes. The target needs
docs.snippets.enabled in sdk-config.yml so sdk-gen saves a snippets file with the build. This needs no
build ID and no files from the machine that built the SDK.
Off unless FERN_UPLOAD_SDK_GEN_SNIPPETS=true is set. A snippet failure never fails the docs publish.
5.172.1
(fix): Fix a stack overflow during docs generation when an OpenAPI object declares a property
named properties.
5.172.0
(feat): fern token now mints the key through the managed api-keys path (same fern_ token class), so the
key gets a tokenId, appears in fern org token list and the dashboard API Keys page, and is revocable.
(feat): Add fern org token commands to manage organization API keys:
list (with --json/--csv output), create (prints the secret once), and revoke <token-id>.
list shows each key’s creator by email when Venus can resolve it.
5.171.6
(fix): fern generate --preview now asks sdk-gen-api for a file download instead of the
generators.yml GitHub or registry output, matching Fiddle’s dry-run preview. A
github.branch set from ${ENV_VAR} no longer fails with “Too small: expected string
to have >=1 characters”, and previews no longer request a push or publish.
5.171.5
(chore): Internal cleanup: trailing-slash stripping, forward-slash path conversion and first-letter
capitalization now use shared helpers instead of inline copies. No behavior change.
(chore): Internal cleanup: isRecord, sanitizePreviewId, decodeJsonPointerSegment and a few other
helpers that were copied across packages now have a single shared definition. No behavior change.
5.171.4
(chore): Internal cleanup: the CLI migrations now share one fern-directory lookup and one
files-and-directories listing helper instead of per-migration copies. No behavior change.
5.171.3
(fix): fern sdk migrate carries a Go generator’s packageLayout setting (root or types) over to the target’s
generation.packageLayout instead of reporting it as unsupported and dropping it. Bumps
@postman/sdk-config to 0.16.0.
5.171.2
(chore): Internal cleanup: shared helpers for ENOENT checks, http(s) URL checks, delays,
asyncPool and convertNumberToSnakeCase now live in core-utils instead of being
copied across packages. No behavior change.
5.171.1
(fix): The custom-domain Vercel check now recognizes apex domains on all of Vercel’s
IPv4 networks (per ARIN), not just a subset.
5.171.0
(feat): fern generate --docs (including --preview) now checks the DNS of each configured
custom-domain. If a domain still points to Vercel instead of cname.ferndocs.com
(or your own reverse proxy), the CLI prints a warning with migration steps. Starting
December 1, 2026 this becomes an error and publishing fails until the DNS is switched.