Skip to content

[pull] main from fern-api:main#686

Merged
pull[bot] merged 23 commits into
code:mainfrom
fern-api:main
Apr 28, 2026
Merged

[pull] main from fern-api:main#686
pull[bot] merged 23 commits into
code:mainfrom
fern-api:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Apr 28, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

dsinghvi and others added 23 commits April 28, 2026 09:28
…nguages (#15481)

* feat(cli): support BCP 47 locale tags in docs.yml translations and languages

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* fix: use Omit to override language field type in ParsedDocsSettingsConfig

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* fix: add ts-expect-error for BCP 47 Language type widening in DocsDefinitionResolver

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* fix: revert generated SDK files and use string type directly for BCP 47 Language

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…et (#15485)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…DK (#15482)

* chore(typescript): bump docs-yml generator to 3.66.1 and regenerate SDK

Propagates the JsonError/ParseError minification-safe constructor fix
(new.target.prototype + this.name) to the checked-in docs-yml SDK copy.
Depends on fernapi/fern-typescript-sdk:3.66.1 being published first.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(typescript): add missing QueryStringBuilder.ts for docs-yml SDK

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(typescript): fix context7 type error in parseDocsConfiguration

CjsFdrSdk.docs.v1.commons.IntegrationsConfig only has `intercom`; context7
is resolved separately as context7File so it must not be set on the SDK type.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…has no phantom deps (#15314)

fix(generator-cli): bundle workspace deps for autoversion so dist/api.js has no phantom deps

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…ormatting (#15489)

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
….yml (#15488)

* feat(docs): support simplified string syntax for translations in docs.yml

* feat(docs-validator): add @fern-api/configuration dependency

* fix: update pnpm-lock.yaml and fix biome formatting

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* chore: regenerate docs-yml schema and SDK types

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* fix: normalize TranslationConfig before destructuring in loadTranslationPages

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…5494)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…15389)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: barry.zou <barry.zou@buildwithfern.com>
… not exist (#15491)

* fix(generator-cli): handle 422 from GitHub updateRef when branch does not exist

GitHub's updateRef API returns HTTP 422 with 'Reference does not exist'
when the target branch has not been created yet, but isNotFoundError()
only checked for 404. The createRef fallback was therefore unreachable,
breaking all first-generation and post-lockfile-reset flows that use
signed commit push.

* fix: revert premature catalog pin bump to 0.9.17 (not yet published)

Co-Authored-By: tanmay.singh <tstanmay13@gmail.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…leProperties defaults with SDK generator (#15413)

* fix: align dynamic snippets inlinePathParameters/inlineFileProperties defaults with SDK generator

Co-Authored-By: ryanstep <ryanstep@umich.edu>

* fix: add ?? true fallback for inlineFileProperties in getFileUploadRequestBodyObjectFields

Co-Authored-By: ryanstep <ryanstep@umich.edu>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…lays (#15478)

* feat(cli): support i18n overrides for navigation labels via YAML overlays

Add support for translating navigation labels (tabs, products, versions,
sections, pages, announcements) via YAML overlay files in
translations/<lang>/fern/. The overlay files use the same format as
write-translation output and are deep-merged over the source navigation
configuration when building per-locale DocsDefinitions.

Implementation:
- Add TranslationNavigationOverlay types to ParsedDocsConfiguration
- Add loadTranslationNavigationOverlays() to parseDocsConfiguration.ts
- Add applyTranslatedNavigationOverlays() nav tree walker
- Wire overlays into publishDocs.ts and both preview servers
- Add unit tests for the nav tree overlay application

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* fix: re-export TranslationNavigationOverlay from docs-resolver to avoid missing dependency in docs-preview

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* fix: move import before exports to satisfy biome organizeImports

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* fix: add slug field to TabOverlay for reliable tab matching in i18n overlays

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* style: fix biome formatting

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* fix: prevent mutation of base nav tree when applying tab overlays

applyTabOverlayToNode was called directly on the original child node
from the base definition's nav tree, mutating it in place. This caused
the base (English) locale to show translated tab titles.

Fixed by walking the node first (creating a new copy) before applying
tab overlay mutations, consistent with how product and version overlays
already work.

Added unit test to verify the original root is not mutated.

Co-Authored-By: Deep Singhvi <deep@buildwithfern.com>

* fix(cli): address PR review feedback for i18n nav overlays

- Fix path traversal security vulnerability: validate that resolved nav
  file paths don't escape the translations directory before loading
- Fix positional matching bug: only use overlays without slugs for
  positional fallback to prevent incorrectly applying a slug-targeted
  overlay to the wrong sibling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(cli): address remaining i18n overlay edge cases

- Fix multi-product tab/navigation collision: store tabs and navigation
  per-product in ProductOverlay instead of merging globally
- Fix sidebarGroup handling: add handler for sidebarGroup parent type
  so top-level pages in sidebars get translated
- Apply tab variant overlays: add applyVariantOverlays function to
  translate variant titles/subtitles
- Remove dead code: remove unused displayName fallback in findTabNavOverlay
  that could never match (comparing translated vs source-language strings)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
@pull pull Bot locked and limited conversation to collaborators Apr 28, 2026
@pull pull Bot added the ⤵️ pull label Apr 28, 2026
@pull pull Bot merged commit c97c97d into code:main Apr 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants