5.15.1
(fix): Source org_id on the replay PostHog event from fern.config.json (the project organization slug, like every other CLI flow), not from a Venus token lookup.
5.15.0
(feat): Bake replay initialization into fern generate. Repos with a prior [fern-generated]
commit but no .fern/replay.lock now auto-bootstrap inline during the post-generation
pipeline — eliminating the need to run fern replay init as a separate step.
5.14.1
(fix): Fix non-deterministic snippet output across runs for SDK generators that consume the
dynamic IR (Java, PHP, Python v2, Go v2, Ruby v2, Swift, Rust). The dynamic IR now
tags examples with isUserSpecified and emits deterministic example ids; affected
generators select examples using the canonical “all user, else first autogenerated”
rule, matching TS v1 / Python v1 behavior.
5.14.0
(feat): Emit the replay PostHog event from cloud generation, with surface, org_id, duration_ms, and additional patch counters.
5.13.2
(fix): Improve 429 rate-limit retry logic for remote generation: increase max retries
from 3 to 5, respect the server’s retryAfter hint as a minimum delay, and widen
jitter (0.2 → 0.5) to reduce thundering-herd retries when many generators run
concurrently across multiple API groups.
5.13.1
(fix): Fix dynamic IR upload URLs request passing empty apiId and irVersions parameters, which caused 500 errors from FDR during SDK generation.
5.13.0
(internal): Remove the fern write-translation command. Translation directories under translations/<lang>/
are still respected when loading docs, but the CLI no longer ships a command to generate them.
5.12.0
(feat): fern automations generate now automatically retries 429 Too Many Requests responses with
exponential backoff (2s → 120s, up to 3 attempts, jittered). Automation runs are unattended,
so transient rate limiting should not fail the run and ask a human to re-trigger with a flag.
Real outages still surface as failures after retries exhaust.
(chore): Bump @fern-fern/fiddle-sdk catalog pin to 1.0.2. The new SDK exposes
replay on CreateJobRequestV2, so the field added to createJobV3 in
PR #15690 stops being silently stripped by the SDK serializer and now
actually reaches Fiddle. With this in place, customers setting
replay.enabled: false in generators.yml get the legacy GitHub push/PR
path on cloud generation. Final activation step for FER-10343.
(feat): Surface CLI errors and warnings as GitHub Actions annotations when running under GHA.
fern automations generate now emits a structured ::error:: workflow command for every
failed generator, anchored on the exact line in generators.yml so the annotation appears
inline on the file in the PR’s Files-changed view, with the API / group / generator name
in the title and the failure reason in the body.
All other commands (e.g. fern generate, fern check) emit annotations from any
logger.error / logger.warn call, providing baseline coverage for failures that don’t
flow through the per-generator collector. Status-only logs (omitOnTTY) are filtered out
so they don’t burn through GitHub’s per-step annotation cap.
5.11.0
(feat): Forward the top-level replay block from generators.yml to Fiddle’s
createJobV3 call so cloud generation honors replay.enabled: false and
skips the replay pipeline when a customer opts out. Activates once the
@fern-fern/fiddle-sdk catalog pin advances to a version that exposes
replay on CreateJobRequestV2 (schema landed in fern-api/fiddle#729).
(fix): Fix fern check --api <name> failing when broken-links validation is enabled
and docs.yml references multiple APIs. The docs validator now always sees
the full set of API workspaces (so the valid-markdown-links rule can resolve
every API referenced from the docs navigation), while the --api filter is
still applied to API-level validation only.
(chore): Make @boundaryml/baml an optional dependency. The CLI no longer requires BAML
to be installed unless AI features (auto-versioning, sdk-diff) are used.
Users who invoke AI features without BAML installed will see a clear error
message with installation instructions.
5.10.3
(fix): Apply per-locale navbar-links overlays in the default fern docs dev app
preview server (the legacy preview and production publish already did this,
so dev was the odd one out and showed English CTAs on /<lang>/ URLs).
Also matches translation overrides for skip-slug sibling tabs positionally
when slug-based matching can’t disambiguate them — without this, only the
one tab whose slug retained its own segment got translated.
5.10.2
(chore): Bump axios to ^1.15.1 to address CVE-2026-42037 (CRLF injection in
multipart/form-data body via unsanitized blob.type). Narrow the type of
the response Content-Type header in init’s OpenAPI URL loader to satisfy
axios 1.16’s stricter AxiosResponseHeaders typings.
5.10.1
(chore): Plumb the top-level replay block from generators.yml through the remote
generation runner to the createJobV3 wire boundary, so cloud generation can
honor replay.enabled once Fiddle exposes the field.
5.10.0
(fix): Fix self-hosted GitHub clone failing with “Invalid username or token” when
the user’s ${GITHUB_TOKEN} is an OAuth user token (gho_) or personal
access token (ghp_, github_pat_). The clone URL hardcoded the
x-access-token: username, which is the format reserved for GitHub App
installation tokens (ghs_). Now selects the format based on the token
prefix, so both auth modes work.
(internal): Capture PostHog telemetry for replay outcomes during fern generate. Emits a
single replay event with action: pipeline_run carrying patch counts, conflict
reason buckets, generator/repo context, and pipeline duration. Honors
FERN_DISABLE_TELEMETRY (v1) and FERN_TELEMETRY_DISABLED / ~/.fernrc (v2). Adds a
structured [replay] info log line and per-bucket conflict debug counts so the
same data is visible in stdout. No file paths, patch IDs, or commit messages
are emitted; the SDK repo URI is hashed (sha256, 16-char prefix). Wires the
previously-no-op v2 TaskContextAdapter.instrumentPostHogEvent so v2-driven
generates feed the same event stream as v1. Distinguishes genuine replay
crashes from flow: first-generation to keep success-rate dashboards honest.
5.9.0
(feat): Accept branch under github when mode is release in generators.yml. This
allows users to configure a non-default branch for release mode in preparation for
wiring the field through to the remote generation service.