Skip to content

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

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

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

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Apr 13, 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 7 commits April 13, 2026 19:17
…14848)

* feat: support x-fern-display-name on AsyncAPI operations

Add support for the x-fern-display-name extension on AsyncAPI v3
operations and AsyncAPI v2 publish/subscribe operations. This allows
users to set custom display names for operations in docs independently
of the operation key, which is useful when operation keys must be
unique across versioned endpoints.

Co-Authored-By: Chris McDonnell <chris@buildwithfern.com>

* chore: add changelog entry for x-fern-display-name on AsyncAPI operations

Co-Authored-By: Chris McDonnell <chris@buildwithfern.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Chris McDonnell <chris@buildwithfern.com>
…ose pre-pull (#14966)

* chore(ci): upgrade ETE generator images to latest and add docker compose pre-pull

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: use Python SDK 4.64.1 instead of 5.x (5.x breaks with hyphenated org names)

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>
)

* fix: prevent CLI from blocking when PostHog is unreachable

Co-Authored-By: Sandeep Dinesh <sandeep@buildwithfern.com>

* fix: format Promise.race to satisfy biome

Co-Authored-By: Sandeep Dinesh <sandeep@buildwithfern.com>

---------

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

* chore(csharp): refactor DynamicSnippets to use partial class Examples with static methods

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore(csharp): remove static from method signatures

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* refactor: update C# dynamic snippets generator to emit partial class Examples pattern and rename output dirs to Snippets/

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* refactor: use skipNamespaceDeclaration on Class AST instead of string post-processing

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update Snippets project to target net10.0 with latest C# language version

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update Snippets.csproj to match dotnet new classlib format

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* improve dsg

* fix: remove double newline after using statements when namespace is omitted

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore(seed): regenerate csharp-sdk snippets with single newline after imports

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>
* feat(csharp): add opt-in inline types support for C# model generator

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: resolve alias chain orphan bug for inline types

- Modified buildInlineTypeMaps to use two-pass approach: first collect all
  non-alias types referencing each inline type, then only inline types with
  exactly one non-alias parent are nested (multi-parent types stay top-level)
- Modified extractNamedTypeIdsFromTypeReference to follow alias chains
- Modified isInlineType to check parent map instead of IR inline flag,
  ensuring types without a valid parent are generated as top-level files
- Updated seed test output to reflect correct behavior

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: extend InnerTypes collision check to union base properties and add test fixture

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: add ir-to-jsonschema snapshots for csharp-inline-types fixture

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(csharp): complete inline enum/union/undiscriminated-union generation, add cycle protection and multi-level collision avoidance

- Full inline enum generation: StringEnum (forward-compatible) with Values class and JsonConverter serializer, or standard enum with EnumMember attributes and companion serializer class
- Full inline union generation: delegates to UnionGenerator for discriminant, factory methods, Is/As/TryGet, Match/Visit, implicit operators, JsonConverter
- Full inline undiscriminated union generation: delegates to UndiscriminatedUnionGenerator for Type/Value fields, factory methods, Is/As/TryGet, Match/Visit, implicit operators
- Cycle protection: track visited type IDs in extractNamedTypeIdsFromTypeReference to prevent infinite recursion on circular aliases
- Multi-level collision avoidance: Types → InnerTypes → InnerTypes2 → ... for getInlineTypesClassName
- Fix namespace/enclosingType conflict in classReferenceInternal: allow matching namespace when enclosingType is set

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(csharp): rename inline-types config flag to enable-inline-types for consistency with Java

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore(csharp): update versions.yml with detailed enable-inline-types changelog entry

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(csharp): include extendedProperties in inline Types class collision detection

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore(csharp): add simple C# code example to versions.yml changelog entries

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* feat(csharp): add SDK wire test fixture for inline types and fix extendedProperties in buildInlineTypeMaps

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(csharp): handle orphaned inline types that are only referenced from endpoint requests

Inline types marked inline in IR but only referenced from endpoint request
bodies (not from other type declarations) have no parent in the inline type
map. Their children were incorrectly nested via Types.XXX references that
broke compilation.

Added third pass to buildInlineTypeMaps that validates every parent in the
chain will actually be generated as a class file. If a parent is itself
inline but has no parent in the map (orphaned), its children are recursively
removed from the maps and fall back to top-level generation.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update IR generator test snapshots after merge from main

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update csharp-grpc-proto-exhaustive IR snapshot after merge

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: retrigger CI

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(csharp): include orphaned inline parent itself in removal set

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update csharp-grpc-proto-exhaustive snapshots after merge from main

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(csharp): check union variant names in inline Types class collision avoidance

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* feat(csharp): add dynamic snippets support for inline types and test coverage for collision avoidance

- Add inlineTypes field to dynamic IR schema and converter
- Build inline type maps in DynamicSnippetsGeneratorContext from dynamic IR
- Update DynamicTypeMapper to produce enclosingType references for inline types
- Enable dynamic snippet tests for csharp-inline-types fixture
- Add test fixtures: inherited property collision (extends), union variant 'Types' collision
- Update snapshots for csharp-model and csharp-sdk

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update test snapshots for inlineTypes field in dynamic IR

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update all test snapshots for inlineTypes field in dynamic IR schema

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update createSampleIr and ete file-dependencies snapshots

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: add ir-to-jsonschema snapshots for collision test types and update ete hash

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update ete file-dependencies snapshot hash after merge from main

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: update irVersion to 66 in inline types versions.yml entries

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: add missing inlineTypes property to v66-to-v65 migration test

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update ete file-dependencies snapshot hash

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: use CaseConverter.pascalSafe for NameAndWireValueOrString in getInlineTypesClassName

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: use CaseConverter for NameAndWireValueOrString in inline enum generation

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: add extends scan and enableInlineTypes guards in dynamic snippets buildInlineTypeMaps

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* refactor: revert dynamic snippets inline types IR changes, disable tests instead

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: add cycle detection in orphan parent chain walk to prevent infinite loop

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: remove base-properties from union alias test types to fix CS9035 compile errors

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update test snapshots after merge from main

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: update createSampleIr and migrateFromV61ToV60 snapshots

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: revert IR snapshot to match main (was incorrectly regenerated locally)

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore: fix dependencies snapshot - remove inlineTypes field and revert hash

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* snapshots

* snapshot

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Fern Support <126544928+fern-support@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators Apr 13, 2026
@pull pull Bot added the ⤵️ pull label Apr 13, 2026
@pull pull Bot merged commit 6abc412 into code:main Apr 13, 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.

3 participants