Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Upgrading from
0.117.0to3.37.5- Changelog3.37.5fix:Fixfern docs preview deleteandfern docs preview listcommands to support preview URLs with UUID-style hashes containing hyphens (e.g.,org-preview-9b2b47f0-c44b-4338-b579-46872f33404a.docs.buildwithfern.com).3.37.4fix:Fixsecurity: []handling in OpenAPI importer to correctly mark endpoints as not requiring authentication.3.37.3fix:no-op: initiate bulk cli update3.37.2fix:Fixfern generate --previewfailing with permission errors when the.previewfolder already exists. The CLI now properly handles read-only files (like.git/objects) by making them writable before deletion.3.37.1fix:Push full channel message payload schemas through when creating type references; helps support 'bytes' for websocket methods.176 additional updates, see more
3.37.0chore:Add Excel file support (.xlsx) to the allowed file types for documentation uploads. This enables users to host Excel files using the<Download />component.3.36.1chore:Add Excel file support (.xlsx) to the allowed file types for documentation uploads. This enables users to host Excel files using the<Download />component.3.36.0feat:Thefern initcommand now automatically creates a.gitignorefile inside thefern/folder with entries to ignore.previewand.definitiondirectories.3.35.2fix:Default dynamic SDK snippets on if the experimental configuration is already present.3.35.1fix:Respect thepath-parameter-ordersetting fromgenerators.ymlwhen importing OpenAPI specs, which is different from thepath-parameter-orderon theapi.settingslevel.By setting both levels to
spec-order, you can preserve the old behavior of using the order defined in the OpenAPI spec.fix:Fix local generation to convert self-hosted GitHub URI (owner/repo) to full URL format,matching Fiddle's remote generation behavior.
3.35.0feat:Addx-fern-parameter-nameextension support for AsyncAPI parameters. This allows customizing parameter names in generated SDKs for AsyncAPI specs, similar to existing OpenAPI support.3.34.0feat:Updates the SDK snippet generation to use dynamic snippets by default. To disable, setexperimental.dynamicSnippetstofalsein yourdocs.ymlfile.3.33.0fix:Fix handling of OpenAPI schemas that usediscriminator.mappingwithout explicitoneOf/anyOf. These schemas are now correctly converted as discriminated unions instead of plain objects. This pattern is used by APIs like Dropbox Sign where a base schema defines a discriminator with mapping to variant schemas.3.32.0feat:Addextendsfield to dynamic IR ObjectType to expose inheritance information for generators that need to handle inheritance patterns differently (e.g., Rust uses flattened wrapper fields).3.31.2fix:Fix broken link checker incorrectly flagging internal paths with external redirects as broken. Links to paths that redirect to external URLs (e.g.,/ui→https://auth-platform.example.com) are now correctly validated.3.31.1fix:Fix double JSON.stringify in dynamic IR upload, reducing memory usage and ensuring correct Content-Length header calculation with Buffer.byteLength.3.31.0fix:Add a--dynamic-ir-onlyflag to SDK generation to enable access to dynamic snippets from SDKs without regenerating the entire SDK.3.30.6fix:Only upload dynamic IR for SDK generation after confirmed success and when not in preview mode.3.30.5fix:Supportx-fern-base-pathextension in the OpenAPI v3 parser.3.30.4chore:Add ACH to special tokens list to preserve capitalization in docs sidebar navigation.3.30.3chore:Adds aproduct-switcher.toggletheme option to the docs configuration.3.30.2fix:Export all defined auth schemes when usingendpoint-securityauth in generators.yml.3.30.1fix:Update generators.yml schema SDK update to include api.auth.endpoint-security support.3.30.0feat:Support using local icons in<Card />and<Icon />components.3.29.1chore:Make version optional when fetching dynamic IR from SDK uploads. If no version is explicitly specified in the api snippets config, the CLI will not send a version and the API will use the latest available version.3.29.0feat:Addfern docs preview delete <url>command to delete preview deployments. This allows users to clean up preview sites that were generated withfern generate --docs --preview.feat:Addfern docs preview listcommand to list all preview deployments with pagination support via--limitand--pageoptions.3.28.0feat:Refactorfern checkoutput with improved formatting and severity labels. Violations are now displayed in a hierarchical format grouped by[sdk]and[docs], with[error](red) and[warning](yellow) labels for each violation. When multiple APIs exist, violations are further grouped by API name. Additional UX improvements include: blue-colored paths, cyan[sdk]and magenta[docs]headers for visual distinction, warnings displayed before errors, blank lines between violations for readability, and inline issue display when path is empty.3.27.3chore:Updates dynamic snippets to pull from an SDK version, if available and specified in theapi.snippetsconfiguration.3.27.2fix:Fix example resolution to treat dollar-prefixed strings as literals when they don't match the valid example reference format. Strings like"$3.00","$USD", or"$PATH"are now treated as literal values without requiring escaping. Valid example references (e.g.,$Type.Exampleor$import.Type.Example) continue to work as expected.3.27.1fix:Fixfern docs devhot reload to properly restart the docs server when files change.3.27.0feat:AddENDPOINT_SECURITYvalue toAuthSchemesRequirementenum in the IR.This allows users to specify that authentication requirements are defined per-endpoint rather than globally.
Users can now use
endpoint-security: {}in their Fern API definition'sauthfield to indicate that security is configured on individual endpoints via thesecurityfield.3.26.3chore:Addx-fern-sdk-method-namesupport for AsyncAPI operations.3.26.2chore:Support custom environment variables and shell command operators in native local generation for seed testing.3.26.1fix:Fixfern docs devto start the backend server before Next.js. Previously, Next.js would start immediately while the backend was still initializing, causing requests to fail if users opened the browser too quickly. The backend now fully initializes before Next.js starts accepting requests.3.26.0feat:Allow omitting thefernapi/prefix in generator names ingenerators.yml. The prefix is now inferred by default, sofern-typescript-sdkis equivalent tofernapi/fern-typescript-sdk. Custom Docker orgs can still be specified explicitly (e.g.,myorg/my-generator).3.25.2chore:Add--force-downloadflag tofern docs devcommand.3.25.1fix:Fix endpoint resolver to use caller's casing generator instead of hardcodedconstant, ensuring OAuth endpoints respect smart casing settings.
3.25.0feat:Add user email to CLI PostHog events when not using an access token. This enables better user analytics by capturing the primary email address from Auth0 for logged-in users.3.24.6chore:Remove unnecessary debug logging fromfern docs dev.3.24.5fix:Fix discriminated unions with nullable object types to use samePropertiesAsObject instead of wrapping in a value property.3.24.4fix:Use Set for O(1) deduplication of referenced markdown files infern docs devto improve hot reload performance.3.24.3fix:Fix handling of empty allOf in additionalProperties by treating schemas with only metadata (example, description) as "any" type.3.24.2fix:Prevents incorrect collapsing of anallOfwithadditionalProperties: trueinto amap.3.24.1chore:Collectsfern docs devmetrics in.fern/logs/<timestamp>.debug.logfile.3.24.0feat:Store referenced markdown snippet files (from<Markdown src="..."/>components) in the docs definition's jsFiles map. This allows downstream consumers like docs-loader to access the original snippet contents by file path, preserving references that were previously lost during markdown replacement.3.23.3chore:Upload dynamic IR during SDK generation (fern generate --group) to enable dynamic snippets. This uploads language-specific IR to FDR for each generator, allowing dynamic code snippet generation in documentation.3.23.2chore:Hidefern mockandfern testcommands from the main CLI help output.3.23.1fix:Adds a warning tofern checkthat detects infinite redirect loops.3.23.0feat:Update the default page actions to include ChatGPT, Claude, and Cursor.3.22.3fix:Improve dynamic IR generation for inferred auth.3.22.2fix:Fix OpenAPI example parsing to preserve explicitnullvalues. Previously, explicitnullvalues in OpenAPI response examples (e.g.,balance_max: nullfor unbounded tiers) were being incorrectly replaced with schema example values or generated placeholders.3.22.1fix:Fix OpenAPI 3.1+ parsing to respect$refsibling examples. When a property has both a$refand siblingexample/examplesproperties, the sibling examples now correctly take precedence over the referenced schema's examples. This fix applies to both the old and new OpenAPI parsers.3.22.0feat:Share.fernignorehandling between local and remote task handlers. When running remote generation withlocal-file-systemoutput mode, the.fernignorefile is now respected, matching the behavior of local generation.3.21.1fix:Fix ExampleValidator to validate response examples against their corresponding status code schemas instead of always using the 200/201 success schema. Error response examples (400, 404, 500, etc.) are now correctly validated against their respective schemas.3.21.0feat:Add acustomfield to thepage-actionsconfiguration. This allows users to add custom page actions to the docs.3.20.0feat:Adddocsfield toHttpResponsein the IR to capture response descriptions for webhook responses. This enables webhook response descriptions (e.g., for 204, 400, 500 status codes) to be properly propagated from OpenAPI specs to documentation.3.19.0feat:Addexplodefield to PathParameter and QueryParameter types in the IR for OpenAPI parameter serialization control.3.18.4fix:Revert regex parsing of<Code>components.3.18.3fix:Fix duplicate type declarations when OpenAPI specs useallOfreferences in inline request bodies.3.18.2fix:Removefern checkvalidation rule that rejected HEAD endpoints with response bodies. HEAD endpoints can now define response bodies without triggering validation errors.3.18.1fix:Fixfern checkerrors when OpenAPI specs useallOfwith multiple schemas that share the same property names in inline request bodies. The OpenAPI importer now correctly inlines conflicting schemas instead of extending them, preventing duplicate property errors.3.18.0feat:Addai-example-style-instructionsfield to docs.yml experimental config. This allows providing custom styling instructions for AI-generated examples to guide the AI in generating examples that match your preferred style, naming conventions, or domain-specific terminology.3.17.0feat:Enable AI-generated endpoint examples by default. To disable, set ai-examples to false in docs.yml'sexperimentalsettings.3.16.1feat:Include examples for AI processing if 30% or more of the values are generic.3.16.0feat:Docs linting (fern check) now respectssettings.substitute-env-varsand throws errors for missing environment variables, matching the behavior offern generate --docs. The fullinstances:config including custom domains now goes through env var substitution when this setting is enabled.fix:Improved error logging for docs publishing failures. When API definition registration fails with a "fetch failed" error, the CLI now logs detailed error information including status code, error type, reason, and error message to help debug network issues.3.15.1chore:Use Venus JWT for AI example enhancement requests.3.15.0feat:Addfern overrides comparecommand to generate OpenAPI overrides by diffing two specs. This enables a new workflow where you can copy your OpenAPI spec, edit the copy directly, and compile the differences into an overrides file.3.14.0fix:Fixcoerce-enums-to-literals: falsesetting not being respected for SDK generation. Single-value enums are now correctly preserved as enum types instead of being coerced to literals.3.13.0feat:Add support for autorelease flag in generators.yml.See: https://buildwithfern.com/learn/sdks/overview/autorelease#disable-autorelease
3.12.0feat:Add inferred auth parameters to the dynamic IR so dynamic snippet generators can consume them.3.11.0feat:Fully propagate webhook responses (e.g., 204, 400, 500 status codes) from OpenAPI specs from IR to FDR.3.10.0feat:Adds newright-textfield to logo configuration in docs.yml. This allows users to display custom text to the right of the logo image.3.9.0feat:Propagate webhook responses (e.g., 204, 400, 500 status codes) from OpenAPI specs to the IR. Webhook endpoints can now define expected response status codes and descriptions, which are captured in the IR for use by generators and documentation.3.8.0feat:Include -y flag for the upgrade for non-interactive environments.3.8.0-rc0chore:Test automated CLI publishing.3.7.0feat:Add API flagdefault-integer-formatto configure which format is assumed fortype: "integer"properties in OpenAPI that do not specify a format.
Possible values are
int32,int64,uint32, anduint64; defaults toint32.3.6.0feat:Validate examples infern checkagainst OpenAPI schemas.3.5.0feat:Add support for vendor-specific JSON content types in example validation. Content types likeapplication/vnd.bc.v1+jsonare now accepted as valid JSON content types when validating examples againstliteral<"application/json">types.3.4.5fix:Fix parsing of<Code>components withforattribute for synced tabs. Theforattribute is now properly preserved when converting<Code>components to markdown code blocks, allowing synced tabs to work correctly across multiple<CodeGroup>sections.3.4.4fix:Fallback to variant type for display name if title and mapping are not present.3.4.3fix:Disallow absolute URLs as redirects in frontmatter slug definitions.linksshould be used in the navigation instead.3.4.2fix:Fixfern generatecrash when inheriting from a schema with top-levelnullable: trueviaallOf. The OpenAPI importer now correctly strips nullable wrappers from type references in extends lists.3.4.1fix:Map error response headers from IR to FDR for docs display.3.4.0chore:Upgrade@fern-api/fdr-sdkto version0.142.1-b1f6b6363which adds support for error response headers.3.3.0feat:Extendsubstitute-env-varsto apply to API specs (OpenAPI and Fern definitions) when generating docs. Environment variables using${VAR_NAME}syntax in API spec descriptions, examples, and other string fields are now substituted whensubstitute-env-vars: trueis set indocs.yml.3.2.0feat:Add recursive markdown snippet resolution for docs. Markdown snippets can now reference other markdown snippets, with automatic detection and warning for circular references to prevent infinite loops.3.1.0feat:Preserve error response headers (e.g., Retry-After for 429 errors) from OpenAPI specs in the IR.3.0.5fix:Fix AsyncAPI validation: exclude AsyncAPI files from OpenAPI-specific validation rules3.0.4fix:Fix error response examples not displaying in docs when examples are defined at the property level in OpenAPI specs.3.0.3fix:Add basic preprocessing of names in the IR parser; for starters,[]->Array.3.0.2fix:Fix OpenAPI parsing to properly handleallOfwith$refreferences insideoneOf/anyOfschemas. Previously, inline objects withallOfreferences but no direct properties were incorrectly converted tomap<string, any>. Now they are properly preserved as named types with inheritance.3.0.1fix:Fixsubstitute-env-varsnot applying to arrays in docs configuration. ThereplaceEnvVariablesfunction now recursively processes array elements, enabling environment variable substitution in arrays of strings, arrays of objects, and deeply nested array structures (such as navigation items, navbar links, footer links, redirects, etc.).3.0.0break:Breaking Change: Enablesmart-casingby default for all generators.Smart-casing improves naming conventions in generated SDKs by:
v2stays asv2instead of becomingv_2,md5stays asmd5instead ofmd_5)Migration Behavior: The CLI will automatically upgrade your
generators.ymlto explicitly setsmart-casing: falsefor all existing generators that don't have it configured. This preserves backwards compatibility for existing projects while enabling the improved naming for new projects.Opting In: To enable smart-casing for existing generators, remove the
smart-casing: falseline that the migration adds, or explicitly setsmart-casing: true.2.18.1fix:Improve enum validation error messages to show which enum value has an invalid name. When the API source is OpenAPI, the error message now includes guidance about using thex-fern-enumextension to specify valid names.2.18.0feat:Add--fernignoreCLI option for remote generation. This allows users to provide a custom.fernignorefile that will replace the existing one on the main branch during remote generation. The custom fernignore will be applied during generation and committed to the repository.2.17.3fix:Gracefully handle null values in docs.yml structure.2.17.2fix:Escapewhen inferring examples from literals that start with.This fixes validation issues like
Example $ending is malformed. Examples should be formatted like $YourType.ExampleName.2.17.1fix:Fix file scope type resolution for inline request properties2.17.0feat:Addsubstitute-env-varsflag todocs.ymlsettings configuration. When set totrue,environment variables using
${VAR_NAME}syntax are substituted across all files in the docs bundle,including markdown/MDX content. This is useful for injecting dynamic values like API keys or URLs.
Use
\$\{VAR\}to escape and output literal${VAR}without substitution.2.16.0feat:Add support for aliases in generators.yml. You can now define aliases that map to multiple groups, allowing you to run multiple groups with a single command.Then run
fern generate allto generate all three SDKs at once.2.15.2fix:Fixfern checkincorrectly reporting SDK method conflicts for endpoints with the samex-fern-sdk-group-nameandx-fern-sdk-method-namewhen they are in different namespaces. The validator now correctly allows duplicate SDK method names across different namespaces, matching the generator behavior where namespace is prepended to the SDK group name.2.15.1fix:Improve CI environment detection to properly detect Azure Pipelines and other CI systems. This prevents unnecessary prompts when runningfern generate --docsin CI environments.2.15.0feat:Infer example for literal and enum types when generating IR from OpenAPI and Fern Definition.2.14.1fix:Fix 2.0.0-rc0 CLI migration to properly migratecoerce-enums-to-literalssetting for AsyncAPI specs. Previously, the migration only handled this setting for OpenAPI specs.2.14.0feat:Log the pull request URL when an SDK is generated with self-hosted GitHub pull-request mode.2.13.1fix:Respect generators.yml auth-schemes override.2.13.0feat:Allow all API settings to be overridden at the generator level in generators.yml.feat:Add CLI migration to automatically convert deprecated generator-level API settings keys to their new equivalents:use-titletotitle-as-schema-name, andunions: v1toprefer-undiscriminated-unions-with-literals: true.2.12.0feat:Support per-generator auth-schemes override in generators.yml. Generators can now define their ownauth-schemesat the generator level, which takes precedence over top-level definitions.2.11.0feat:When converting OpenAPI to Fern Definition, if all endpoints in a service haveauth: true, set theauth: trueat the service level, and remove it from individual endpoints.2.10.0feat:Support per-generator specs override in generators.yml. Generators can now redefine theapi.specsconfiguration at the individual generator level, allowing different specs configurations for different generators.2.9.0fix:When importing OpenAPI specs, endpoints now properly inherit authentication requirements defined at the global level.2.8.2fix:Fix dynamic snippet property ordering for types with inheritance. Types that are extended by other types now have their own properties ordered before inherited properties in the Dynamic IR. This fixes Java SDK staged builder compilation errors where method call order is enforced at compile time.2.8.1fix:Support alinesprop for the<Code />component to extract specific lines from a code snippet.2.8.0feat:Adds an option forapi.tag-description-pages: trueto create summary pages from tag descriptions within an API reference.2.7.1fix:Fix fern docs dev bug on Windows where asset paths were not parsing correctly2.7.0feat:Support per-generator auth overrides in generators.yml.In the following example the TypeScript SDK generator will use Basic auth while the rest of the APIs use OAuth.
2.6.2fix:Support generating examples forx-fern-type: literal<...>values in OpenAPI specs. Parameters with literal type annotations now generate examples using the underlying literal value.2.6.1fix:Fix docs broken-links validator incorrectly flagging external URLs that contain the docs domain in query parameters.2.6.0feat:Support 4XX and 5XX patterns in OpenAPI specs for docs.2.5.2fix:Remove spammy "Cannot resolve source" warnings for OpenAPI sources in unioned API configurations with dependencies.2.5.1fix:Add validation for instance URLs to ensure they are valid.2.5.0feat:Support product and version-specific announcements indocs.yml.2.4.1fix:Update local development refresh behavior when updating thesidebar-titleoverride, or aslugoverride of a page. The preview should now navigate to the new slug instead of showing a 404.2.4.0feat:Add branch support to self-hosted GitHub generation. Users can now specify a target branch in their generators.yml configuration using thebranchfield. When specified, generated code will be pushed to that branch instead of the default branch.2.3.0fix:Add messaging about AI example generation to the CLI.2.2.6fix:Update local development refresh behavior when updating thesidebar-titleoverride, or aslugoverride of a page. The preview should now navigate to the new slug instead of showing a 404.2.2.5chore:Revert "fix(openapi): handle situations where discriminated unions reference unknown variants"2.2.4fix:Re-publish CLI.2.2.3fix:Support<Code />components with props formatted on multiple lines.2.2.2fix:Add messaging about AI example generation to the CLI.2.2.1fix:Add clarified output for unchanged generator versions (i.e., generators already on the latest version) tofern generator upgrade.2.2.0feat:Support x-code-samples in OpenAPI specs on the latest version of the OpenAPI parser.2.1.0feat:Add detailed output tofern generator upgradeshowing which generators were upgraded, their version changes, and changelog links. The command now displays a summary grouped by workspace and group, or reports "All generators are already up to date" when no upgrades are applied.2.0.4fix:Optimize docs generation and image path parsing and replacement for large markdown files (>5MB) using batched edits, precomputed line positions, and filtered AST traversal.2.0.3fix:Updates CLI dependencies to fixferncommands.2.0.2fix:Updates dependencies to fixferncommands.2.0.1fix:Updates the betawrite-translationcommand to use--stubflag for mocking translation configuration.2.0.0feat:Support sidebar title overrides in the frontmatter of markdown files.2.0.0-rc2fix:Improve misc error handling, including for illegal version strings.2.0.0-rc1fix:Fix migration directory name to match exported version (2.0.0-rc0).2.0.0-rc0break:Change default for OpenAPI parsing setting:coerce-enums-to-literals:false(wastrue)The CLI will automatically upgrade your generators.yml to explicitly set the old default to preserve
existing behavior. New users will get the new default.
1.11.3fix:Improve misc error handling, including for illegal version strings1.11.2fix:Fix OpenAPI enum references being inlined instead of preserved as references. Enum schemas (type: string with enum property) are no longer treated as inlinable primitives, ensuring that $ref to enum schemas maintain their reference structure in the generated IR.1.11.1fix:Fix AutoVersioning to exclude Fern branding from commit messages and PR titles/descriptions when whitelabel config is present.1.11.0feat:Use commit message for auto versioning PR title and description. When auto versioning is successful, the first line of the commit message becomes the PR title and the rest becomes the PR body.1.10.3fix:Fix whitelabel behavior for local generation.1.10.2fix:Support JSX titles in<Code />components.1.10.1fix:Tweak SDK diffing AI prompt to work better with larger diffs.1.10.0feat:Add automatic semantic versioning to local generation with--version AUTO --localflags.1.9.2fix:Fix issue where x-fern-explorer was not hiding routes from the API Explorer1.9.1fix:Fix issue where<Code />components were not able to be added duringfern docs devmode.1.9.0feat:Add external configuration to tsup build to prevent dev-only dependencies (prettier, vitest, typescript, tsup, depcheck, @types/*) from being accidentally bundled.This ensures the CLI bundle only includes runtime dependencies and enables metafile generation for bundle analysis.
1.8.1fix:Fix issue where local generation for github output mode wasn't producing README.md files1.8.0feat:Addfern sdk-diffcommand to analyze the differences between two SDKs and generate a commit message and version bump.1.7.0feat:Replace prettier2 with yaml package infern formatcommand to reduce CLI bundle size by ~4.3 MB (11.4% reduction from 38 MB to 33.67 MB).YAML formatting output may have minor differences (e.g., extra blank lines after section headers like
types:anderrors:).1.6.0feat:Addfern self-updatecommand to update the globally installed Fern CLI.The command detects how the CLI was installed (npm, pnpm, yarn, bun, or brew) and runs the appropriate update command.
Supports updating to a specific version (e.g.,
fern self-update 0.85.0) or the latest version (e.g.,fern self-update).Includes
--dry-runflag to preview the update command without executing it.1.5.0feat:Addfern downgrade <version>command to set the CLI version in fern.config.json. This allows users to pin their project to a specific CLI version without running migrations.1.4.0feat:Enable local generation with preview mode by removing incompatibility restriction and migrating githuboperations handling from generator-cli to fern-cli.
1.3.1fix:Fix duplicate upgrade messages when one CLI version reruns another. The parent process now properly suppresses its upgrade nudge so only a single message is shown.1.3.0fix:Madefern upgradesafer by running migrations before updatingfern.config.json. If migrations fail, your config stays unchanged.feat:Added--fromflag tofern upgradeto manually specify the version to migrate from when needed.fix:Improvedfern upgradereliability by automatically detecting and recovering from faulty CLI upgrades. When upgrading from a problematic CLI version, Fern now retrieves the correct previous version from git history to ensure migrations run properly.1.3.0-rc2fix:Make surefern upgradewith--rcfollows the same migration logic as non-rc upgrades.1.3.0-rc1fix:Make surefern upgradewith--rcfollows the same migration logic as non-rc upgrades.1.3.0-rc0fix:Madefern upgradesafer by running migrations before updatingfern.config.json. If migrations fail, your config stays unchanged.feat:Added--fromflag tofern upgradeto manually specify the version to migrate from when needed.fix:Improvedfern upgradereliability by automatically detecting and recovering from faulty CLI upgrades. When upgrading from a problematic CLI version, Fern now retrieves the correct previous version from git history to ensure migrations run properly.1.2.0feat:Show AI example generation progress in the spinner line. When generating AI examples, the spinner displaysgenerating AI examples for {API name} - X/Yto track progress without creating terminal noise.1.1.0feat:Addpath-parameter-order, which configures how path parameters are ordered in generated code.If set to
url-order(the default), path parameters are ordered in the same order as they appear in the URL.If set to
spec-order, path parameters are ordered in the same order as they are listed in the spec.Can be configured as follows in
generators.yml:1.0.5fix:Ensure 1.0.0 settings migration runs for users upgrading from pre-1.0.0 versions. This addresses a previous off-by-one error in migration selection that could cause the 1.0.0 migration to be skipped.1.0.4fix:Fix CLI migration selection to include the target version's migrations duringfern upgrade. Previously, an off-by-one error excluded the target version (e.g., 1.0.0), causing its migration not to run. Users who upgraded to 1.0.0 should upgrade to 1.0.4 and runfern upgradeagain to apply the 1.0.0 migration.1.0.3fix:Specify the target of links throughout the docs navigation.1.0.2fix:Display OpenAPI validation warnings when using the --warnings flag with fern check. Previously, warnings were counted but not shown; now they are logged with location details when --warnings is specified.1.0.1fix:Update OpenAPI operation converter to usex-fern-explorerextension instead ofx-fern-explorer-enabledfor settingapiPlaygroundproperty in the IR. Operations now check for thex-fern-explorerboolean value to determine API playground availability.1.0.0feat:Change defaults for OpenAPI and AsyncAPI parsing settings:title-as-schema-name:false(wastrue)respect-nullable-schemas:true(wasfalse)inline-path-parameters:true(wasfalse)idiomatic-request-names:true(wasfalse)type-dates-as-strings:true(wasfalse)wrap-references-to-nullable-in-optional:false(wastrue)coerce-optional-schemas-to-nullable:false(wastrue)object-query-parameters:true(wasfalse)The CLI will automatically upgrade your generators.yml to explicitly set the old defaults to preserve
existing behavior. New users will get the new defaults.
0.122.1chore:Thefern docs devcommand now displays a progress bar while downloading the docs bundle.0.122.0feat:Thefern write-overridescommand now generates overrides files with names based on the API spec filename. For a spec namedapi-name.yml, the overrides file will be namedapi-name-overrides.ymland placed in the same directory as the spec. This allows for better organization when working with multiple API specs.0.121.2chore:Refactor how settings from specs are parsed and applied in the CLI.0.121.1feat:Match endpoints to AI overrides examples.0.121.0feat:Add batching support for AI example enhancement. The CLI now processes up to 10 endpoints at once with a single pruned OpenAPI spec, improving performance. Non-OpenAPI specs are automatically skipped.0.120.1fix:Support adding arbitrary metadata to<Code />components. Title and language are set by default, but can be overridden withtitleandlanguageprops.0.120.0break:Rename OpenAPI extensions: x-fern-playground → x-fern-explorer and x-fern-playground-enabled → x-fern-explorer-enabled. The old extension keys are no longer recognized.0.119.1feat:Add x-fern-playground extension to OpenAPI importer to control API playground visibility. Defaults to true.0.119.0feat:Add globalsettingsflag togenerators.ymlconfiguration.Overrideable by
api.specs[].settings(which is itself overrideable bygroup.generators[].settingsas before).0.118.0feat:Add support for external URLs in<Code src="...">tags in docs markdown. Code snippets can now reference external URLs (e.g., raw.githubusercontent.com) to fetch code content dynamically.