> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 5.88.0

**`(feat):`** Support declaring OAuth public-client login flows in `auth-schemes`: `type: authorization-code`
(Authorization Code + PKCE, browser login) and `type: device-code` (RFC 8628). These lower to
the new `OAuthConfiguration.authorizationCode` / `deviceCode` IR variants for public clients
(no client secret), carrying the public client id, authorization/device/token URLs, scopes, an
optional loopback `redirect-uri`, and PKCE. The `valid-oauth` rule enforces the per-flow
required fields and that a set `redirect-uri` is a loopback address — either `127.0.0.1`
(recommended) or `localhost`, with any path — that the generated CLI then binds and sends
verbatim so it matches the redirect registered with the authorization server. Existing
`client-credentials` OAuth configurations are unchanged.

## 5.87.0

**`(feat):`** Add the `send-optional-defaults` playground setting to `docs.yml` (settable globally or
per-endpoint). When enabled, optional API Explorer parameters that declare a default
(or `x-fern-default`) are pre-filled and sent from the playground. Defaults to off.

## 5.86.0

**`(feat):`** Add the `preserve-one-of-in-all-of` OpenAPI setting. When enabled, an `allOf` whose members
include a `oneOf`/`anyOf` is distributed into a union — each variant is the union member merged
with the remaining `allOf` members — instead of flattening every variant's properties into a
single object. This makes the variants available to SDKs and renders a variant selector in the
API reference. Defaults to false.

## 5.85.0

**`(feat):`** `fern generate --pack` now produces a source zip artifact for Go SDKs in `fern-dist/`
(`<output-dir>-source.zip`). Go modules have no binary package format, so the zip contains the
module source (excluding `fern-dist/` and `.git/`) and can be shared internally and referenced
with a `replace` directive in `go.mod`. The zip is built in-process, so it works identically in
host and docker pack modes without any toolchain.