5.125.0
(feat): Add base-url-env to the api.yml environments configuration and the root-level
x-fern-base-url-env OpenAPI extension. The value is the name of an environment variable
(e.g. MY_API_BASE_URL) that generated SDKs read to override the base URL, mirroring how
auth credentials can already be sourced from environment variables. When both are present,
base-url-env in generators.yml wins over the spec’s x-fern-base-url-env; overriding
api.environments alone does not discard the spec’s value. The setting is carried through to
the IR as environments.baseUrlEnvVar; SDK generators must be updated to honor it.
fern check now warns (valid-base-url-env) when base-url-env is set but no environments
are declared, since the variable only overrides the default environment and would otherwise
be dropped silently.
5.124.0
(feat): Add a top-level changelog key to docs.yml for multi-product sites. The changelog is shared
by every product, served at the site root (e.g. /changelog) instead of under a product slug,
and does not appear in the product switcher.
5.123.1
(fix): The OpenAPI importer now unions required across all allOf branches. Previously, when a child
allOf branch redeclared a property that a parent branch marked as required (without listing it
in its own required), the property was imported as optional. Required nullable properties are
now correctly represented as nullable in the IR rather than optional.
5.123.0
(feat): Configure Postman’s on-prem SDK generators from sdk-config.yml on local generation. A generator at or above its language’s cutover version reads the migrated configuration written by fern sdk migrate, and an unmigrated workspace is told how to migrate rather than generated from generators.yml. Generators below the cutover continue to run from generators.yml unchanged.
(internal): Local generation can now run the generator container with a specific network mode, set with the
FERN_GENERATOR_NETWORK environment variable. Setting it to none runs the generator with no
network access, which air-gapped environments require. Unset, container networking is unchanged.
(internal): A generator image can now be pinned by digest in generators.yml, for example
name: fern-python-sdk@sha256:.... The digest is passed through to the container runtime
unchanged so the exact pinned image runs, while the generator name used for IR version
resolution is unaffected. A malformed digest is rejected with an error naming generators.yml.
Tag-based references are unchanged.
(internal): Setting the USE_FERN_RC environment variable runs the on-prem adapter’s current pre-release
instead of the version the workspace asks for, for following the adapter internally before its
release versions exist. It applies only to an invocation that already resolves to the adapter,
and a digest-pinned image still wins. Unset, the version in generators.yml is what runs.
(internal): The on-prem adapter cutover check now compares versions with semver rather than a hand-rolled
parser, so a partial version like 6 or v6.1 is read correctly. A version semver cannot read
at all, such as the latest that local generation defaults to, means Fern’s own generator:
selecting the adapter is done by naming its version.
(internal): When a generator image is pinned by digest, the generation log now also reports the version
declared in generators.yml. A digest identifies the artifact but not which generator release it
is, which made a pinned run hard to correlate back to a version.
(internal): FERN_RC_NAMESPACE overrides the namespace the on-prem adapter’s pre-release is pulled from,
defaulting to fernenterprise, for pointing a run at a staging or personal namespace without
editing generators.yml. Only applies when USE_FERN_RC is set.