4.9.0
(feat): Deduplicate AI calls during AUTO versioning when multiple generators
run in a single fern generate invocation. An in-memory cache keyed on
sha256(cleanedDiff + language + previousVersion) is shared across all
generators so the AI analysis is performed exactly once per unique
combination of diff, language, and previous version. Subsequent generators
with the same inputs receive the cached result immediately, eliminating
redundant AI calls and ensuring consistent version bump decisions.
4.8.0
(feat): Add few-shot examples to the AnalyzeSdkDiff prompt for more consistent
version bump classification. The examples cover the three most common
misclassification cases (removed export -> MAJOR, new optional parameter
-> MINOR, internal constant change -> PATCH) across TypeScript, Python,
Java, and Go, plus “when in doubt” guidance for boundary decisions.
4.7.0
(feat): Pass previous_version and language to the AI prompt for AUTO
versioning diff analysis. The AnalyzeSdkDiff BAML function now
accepts three parameters (diff, language, previous_version)
instead of just diff, giving the AI meaningful calibration context
for commit messages and version bump decisions. New repos with no
previous version pass "0.0.0" as a sentinel value.
4.6.0
(feat): Expand AUTO versioning diff exclusion list to strip noise files before
AI analysis. The cleaned diff now excludes lock files (pnpm-lock.yaml,
poetry.lock, yarn.lock, etc.), test files by naming convention
(*.test.ts, *_test.go, *Test.java, __tests__/, wiremock/),
snapshot files (*.snap, __snapshots__/), generated documentation
(reference.md), CI/editor config (.github/, .editorconfig,
.prettierrc*, biome.json), linting configs (.eslintrc*,
.rubocop*, phpstan.neon, rustfmt.toml, etc.), and build/devtool
configs (tsconfig*.json, Makefile, Rakefile, snippet.json,
.gitignore, etc.). CHANGELOG*/README* exclusion confirmed
case-insensitive. This dramatically reduces diff sizes sent to the AI
endpoint, fixing silent failures on large SDK diffs.
4.5.0
(feat): Add .fern/metadata.json fallback for AUTO version resolution. When both
package registry lookups and GitHub release lookups fail to determine the current
SDK version, the CLI now reads the sdkVersion field from the .fern/metadata.json
file in the GitHub repository (written by Fern generators during previous
generations). This provides an additional fallback layer for version resolution.
4.4.5
(fix): Improve error messages when AI analysis fails during AUTO versioning.
Error and warning logs now include diff size (in characters and KB),
number of files changed, and guidance when the diff exceeds the FAI
endpoint’s 100,000 character limit. Previously, failures only logged a
generic “AI analysis failed, falling back to PATCH” message with no
actionable context.
4.4.4
(fix): Fix fern check false-positives on JSON-formatted Swagger 2.0 specs
4.4.3
(fix): Preview domains are by default not basepath aware.
4.4.2
(fix): Fix fern generator upgrade failing on Windows with
Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. Received protocol 'c:'. The dynamic
import() of the migration package now uses pathToFileURL() to
convert absolute filesystem paths to valid file:// URLs, which
is required by the Node.js ESM loader on Windows.
4.4.1
(fix): Fix fern generator upgrade failing with TAR_ENTRY_ERROR and
ENOENT on package.json when upgrading multiple workspaces.
The root cause was concurrent npm install calls to the same
--prefix directory racing on tar extraction. Now the migration
package is installed exactly once per CLI process using a
deduplicating promise pattern, and an isolated npm cache prevents
system-level cache corruption.