Skip to content

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

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

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

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Apr 9, 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 : )

fern-support and others added 30 commits April 9, 2026 12:09
Co-authored-by: Ryan-Amirthan <105958906+Ryan-Amirthan@users.noreply.github.com>
* [Dependabot Alert #1412] Scaffold PR for basic-ftp

* fix(deps): update basic-ftp to 5.2.1 to fix CRLF injection vulnerability (GHSA-chqc-8p9q-pq6q)

Co-Authored-By: unknown <>

* fix(deps): remove unnecessary override, regenerate lockfile to resolve basic-ftp 5.2.1 directly

Co-Authored-By: unknown <>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix(go): add v1.34.0-rc.1 to trigger dynamic snippet package publish

* fix(go): bump version to 1.34.1 for dynamic snippet package publish

* fix(go): consolidate version entries - rename 1.33.5 to 1.34.1 and remove redundant entries
…tead of true/false (#14789)

* Add boolean path parameter endpoint to exhaustive test fixture

Co-Authored-By: judah <jsklan.development@gmail.com>

* Fix boolean path params: add encode_path_param utility and update generator

Co-Authored-By: judah <jsklan.development@gmail.com>

* Update IR snapshot files for exhaustive fixture

Co-Authored-By: judah <jsklan.development@gmail.com>

* Fix websocket path parameters to also use encode_path_param

Co-Authored-By: judah <jsklan.development@gmail.com>

---------

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

The runtime import of FernGeneratorExec.OutputMode.github() pulled in
the entire @fern-fern/generator-exec-sdk including form-data which does
require('fs'), breaking ESM/browser environments. This replaces the
factory call with a plain object literal and reverts to a type-only
import.
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
* release 4.64.0

* snaps

* snaps 2

* snaps 3

* factor in x-fern-default
Add aliases to seed CLI options that were missing them, making
interactive usage faster. Compound params use initials matching
word count (e.g. --skip-scripts → -ss, --base-ref → -br,
--fern-repo-directory → -frd).

Co-authored-by: jsklan <jsklan.development@gmail.com>
… server JSON, and dynamic snippets (#14776)

* fix(csharp): recursively construct default objects for required nested object properties

Extend getDefaultLiteralForType() to handle named object types by
recursively constructing default initializers with circular reference
protection via visited-types set. Add exhaustive fixture test case
for ObjectWithRequiredNestedObject.

Also includes previous fixes:
- Fill defaults for required properties in dynamic snippets, mock server
  JSON, and object initializers
- Use DateTimeKind.Utc for default DateTime values
- Add ObjectWithMixedRequiredAndOptionalFields test case

Co-Authored-By: bot_apk <apk@cognition.ai>

* chore: update test snapshots

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: bot_apk <apk@cognition.ai>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
fern-support and others added 8 commits April 9, 2026 15:59
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
expose pagination metadata

release 2.59.0
* feat(cli): add --output flag to fern sdk preview for CI SDK diffs

The --output flag allows CI actions to write generated SDK files to disk
in addition to publishing to the preview registry, enabling SDK diff
workflows in a single Docker run.

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

* test(cli): add unit tests for getGithubRepository helper

Extracts getGithubRepository into its own module for independent
testability and adds tests covering push, pull-request,
commit-and-release, self-hosted, and missing config cases.

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

* fix(cli): address review feedback on sdk preview --output flag

- Remove unsafe `as` cast in getGithubRepository; `in` narrowing suffices
- Report actual generator subdirectory in output_path (not just parent)
- Validate/create output directory before generation starts
- Document isPreview side effects (empty env var substitution, skip version check)
- Add versions.yml entry for 4.63.0

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

* fix(cli): extract shared subfolder logic and use async fs.mkdir

- Extract getGeneratorOutputSubfolder() into local-workspace-runner so
  sdkPreview.ts and resolveAbsolutePathToLocalPreview share the same
  subfolder derivation logic
- Switch from fs.mkdirSync to await fs.promises.mkdir for consistency

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

* fix(cli): address review feedback on sdk preview --output flag

- Add typeof string guard to getGithubRepository (rejects non-string values)
- Inline subfolder logic instead of cross-package import from local-workspace-runner
- Use resolve/cwd from @fern-api/fs-utils instead of path.resolve for consistency
- Update --output help text to mention preview-mode side effects
- Add test for non-string repository value

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

* fix(cli): use shared getGeneratorOutputSubfolder instead of inlining

Single source of truth for subfolder logic — import the already-exported
function from local-workspace-runner rather than duplicating it.

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

* fix(cli): remove dead ternary in resolveAbsolutePathToLocalPreview

The early return already handles the null case, so the ternary's
undefined branch was unreachable.

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

* fix(cli): simplify --output description and use typed path join

- Remove implementation details from --output help text
- Use join/RelativeFilePath.of instead of path.join for consistency
- Remove unused path import

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

* fix(cli): remove sdk_repo from preview JSON output

The action already gets sdkRepo from detect-groups.ts which reads
generators.yml directly. Eliminates getGithubRepository.ts and its
tests — less code in the CLI for the same behavior.

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

* fix(cli): add missing irVersion/createdAt and remove unused import

Fix changelog validation by adding missing irVersion and createdAt to
the 4.63.0 versions.yml entry (lost during rebase conflict resolution).
Remove unused generatorsYml import flagged by biome.

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

* test(cli): add unit tests for getGeneratorOutputSubfolder

Extract getGeneratorOutputSubfolder into its own module to enable
lightweight unit testing without pulling in the full workspace runner
dependency tree. Fix edge case where trailing slash produced empty
subfolder name (use || instead of ?? to catch empty string).

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

* fix(cli): move getGeneratorOutputSubfolder export to index.ts

Move the re-export from runLocalGenerationForWorkspace.ts to index.ts
where it's more discoverable. The import stays at the top of
runLocalGenerationForWorkspace.ts for internal use.

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

* fix(cli): make --output skip registry publish and always write to disk

Default `fern sdk preview` now publishes to the preview registry AND
writes generated SDK files to a temp directory (for CI diff workflows).
When --output is provided, it writes only to the specified directory
without publishing (disk-only mode for power users).

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

* feat(cli): make --output accept multiple targets (paths and registry URLs)

--output now accepts multiple values, each classified as a filesystem
path or a registry URL:
  - No --output: temp dir + default preview registry
  - --output ./path: disk-only, no publish
  - --output https://reg: temp dir + publish to that registry
  - --output ./path --output https://reg: disk + publish to registry

This enables future GHA flows to publish to customer registries.

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

* fix(cli): skip disk output when --output has only registry URLs

When --output contains only URLs (no paths), don't create a temp
directory — just publish to the registry. Disk output only happens
when a path is explicitly provided or when no --output is given
(default temp dir for GHA diffs).

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

* fix(cli): warn on multiple paths/URLs and update changelog entry

- Warn when multiple output paths or registry URLs are provided
  (only the first of each type is used)
- Add comment on isRegistryUrl heuristic
- Update versions.yml changelog to reflect multi-target semantics

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

* fix(cli): document temp dir lifecycle and subfolder coupling

- Note that the temp dir is OS-managed and intentionally not cleaned up
  (the JSON consumer reads from it after the function returns)
- Note the subfolder logic coupling with resolveAbsolutePathToLocalPreview

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

* fix(cli): trim unnecessary comment about runner refactor

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

---------

Co-authored-by: Barry <barry@Barrys-MacBook-Pro.local>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…ignature verification (#14280)

* feat(typescript): support alphabetical body param sorting in webhook signature verification

* fix: add local type extension for bodySort not yet in published @fern-fern/ir-sdk

* fix: change changelog type from feat to fix in versions.yml

* fix: remove customer name references from source code

* fix: remove bodySort type workaround, use @fern-fern/ir-sdk@65.6.0 directly

* fix: update @fern-fern/ir-sdk to ^65.6.0 across all TypeScript generator packages

* fix: add dateTimeRfc2822 case to PrimitiveTypeV1 visitors

* style: fix biome formatting on package.json files after pnpm update

* fix: add datetimeRfc2822 case to ExamplePrimitive visitors in GeneratedTypeReferenceExampleImpl

* fix: add forwardCompatible to EnumTypeDeclaration test data for IR SDK 65.6.0

* fix: update TypeScript generators for IR SDK 65.6.0 compatibility

- Add dateTimeRfc2822 visitor case to PrimitiveTypeV2 and ExamplePrimitive visitors
- Add DATE_TIME_RFC_2822 switch case to primitiveTypeNeedsStringify and typeNeedsStringify
- Add forwardCompatible to EnumTypeDeclaration test data
- Add bodySort to WebhookPayloadFormat test data

* style: fix biome formatting in TypeSchemaGenerator.test.ts

* fix: remove duplicate datetimeRfc2822 entries from merge in GeneratedTypeReferenceExampleImpl.ts
Co-authored-by: iamnamananand996 <31537362+iamnamananand996@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators Apr 9, 2026
@pull pull Bot added the ⤵️ pull label Apr 9, 2026
@pull pull Bot merged commit 1c37220 into code:main Apr 9, 2026
23 of 26 checks passed
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