> This page is for Fern CLI.

> 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.144.1

**`(fix):`** Resolve generators.yml `latest` to an exact generator version before preparing and submitting SDK Gen API runtime bundles.

## 5.144.0

**`(feat):`** C/C++ library docs now render pages for documented preprocessor macros (`#define`),
listed under a `macros/` folder and in group pages. Set
`config.include-undocumented-macros: true` on a `lang: cpp` library to also render
macros without a doc comment (include guards are never emitted, Doxygen drops them).

**`(fix):`** C/C++ library docs: function-pointer typedef pages now list their documented
parameters, `@param[in]`/`[out]`/`[in,out]` directions are shown on parameter
fields, Doxygen `@verbatim` blocks render as preformatted code, and plain-C
libraries use `typedef` declaration syntax instead of C++ `using`. Regenerating
replaces the previous C/C++ page tree so pages for removed entities no longer linger.

**`(fix):`** C/C++ library docs: `\ref`, `@see`, `@return` and auto-linked references to functions,
typedefs and enums documented inside a Doxygen `\defgroup` now render as links to the
generated pages. Previously these group-scoped references were emitted as plain text
because their `group__*` refids could not be decoded.

**`(fix):`** C/C++ library docs: unqualified member references inside a namespace now resolve
against the enclosing scopes; function-pointer parameters of callback typedefs are
documented; and libraries with C++-only root members (`constexpr`, scoped enums,
`noexcept`) keep `using` typedef syntax.

**`(fix):`** C/C++ library docs: typedef and enum names referenced inside function, typedef
and variable signature code blocks now link to their generated pages (previously
only class/struct references and the parameter list were linked).

## 5.143.7

**`(fix):`** Stop auto-uppercasing "Map" in generated titles. API Reference navigation
subpackages without an explicit display-name (e.g. groups created via
`x-fern-sdk-group-name`), webhook ids, GraphQL namespace titles, and
tag-description-page headings now render "Map"/"Map Test" instead of
"MAP"/"MAP Test".

## 5.143.6

**`(fix):`** Docs `snippets:` entries and SDK dynamic IR uploads now resolve a generator's package name
from its generator config (`config.package_name`, `config.packageName`, `config["package-name"]`,
`config.module.path`) when there is no registry publish target, so github-only SDKs
(`github: mode: pull-request` with no `output: pypi/npm` block) are matched instead of being
reported as an unknown package. The config lookup previously only read the raw YAML, which
is not populated on the normal loader path; it now reads the resolved config first. This also
makes `--local`, `sdk-preview` and the "version already exists" check see config-only package
names they previously missed. Docs snippet matching now also considers generators from the
other API workspaces in the fern folder when the referenced API workspace has no SDK
generators (e.g. docs point at a docs-only `api-name` while SDKs are generated from a
sibling workspace). Docs snippet version lookup selects the generator whose package matches
the `snippets:` entry instead of the first generator for the language. Skip paths log the
reason at debug level.

## 5.143.5

**`(fix):`** Preserve distinct PyPI usernames and passwords when configuring generator publishing credentials.