2.11.4
(fix): Don’t use required keyword on properties that are read-only, since they’re not supposed to be set by users.
2.11.3
(fix): Remove blocking .Result calls on async tasks in generated code. Header values now support
async resolution via Func<ValueTask<string>> and Func<Task<string>>, and the RawClient
uses async methods (CreateHttpRequestAsync, MergeHeadersAsync) to resolve headers without
blocking. This improves performance and prevents potential deadlocks in async contexts.
2.11.2
(fix): Change core files to fully qualify references to Attribute and related types in case of name collision.
2.11.1
(fix): When include-exception-handler: true is configured:
- Remove unneeded
CaptureExceptionmethod fromInterceptorclass, since there’s already anInterceptmethod.
2.11.0
(feat): Add constructor exception handling infrastructure for SDK authors to capture initialization errors.
When include-exception-handler: true is configured:
- Adds
CaptureExceptionmethod toExceptionHandlerclass for capturing exceptions without re-throwing - Wraps all client constructors (root and sub-clients) with try-catch blocks
- Initializes
clientOptions.ExceptionHandlerwith a custom interceptor in the root client constructor - Generates a
{PackageName}ExceptionInterceptorstub class that SDK authors can customize
New configuration option:
exception-interceptor-class-name: Custom name for the exception interceptor class (optional)
Example generators.yml configuration:
SDK authors can implement their exception capturing logic (e.g., application monitoring platform, logging) in the generated interceptor class.
2.10.0
(feat): Add support for flexible output-path configuration that allows specifying different paths
for the library project, test project, solution file, and other files (README.md, reference.md).
Configuration options:
- Simple string:
output-path: src- all projects go to that path - Object with specific paths:
library: path for the library project (default: “src”)test: path for the test project (default: “src”)solution: path for the solution file (default: ”.”)other: path for README.md, reference.md, and other files (default: ”.”)
Example generators.yml configuration:
The generated CI workflow and project references are automatically updated to use the configured paths.
Note: .github, .fern, .editorconfig, .gitignore, and .fernignore are always generated in the root output folder.
2.9.9
(fix): Retries now check Retry-After and X-RateLimit-Reset headers before defaulting to
exponential backoff with jitter.
2.9.8
(fix): Restore default behavior for wire tests: tests are now generated by default and controlled
via the existing generate-mock-server-tests config option (defaults to true). The
enable-wire-tests option is now treated as an alias for backward compatibility.
2.9.7
(fix): Wire tests are now controlled entirely by the enable-wire-tests custom config option,
no longer using the CLI’s writeUnitTests flag.
2.9.6
(fix): Fix getGitHubConfig to return RawGithubConfig with undefined values instead of throwing errors when publishing config is missing, aligning with TypeScript/Python generator behavior.
2.9.5
(fix): Fix readonly constant assertion message showing ‘[object Object]’ instead of property name.
2.9.4
(fix): Remove error on null config in README generation.
2.9.3
(fix): Remove using generator-cli to push to GitHub for self-hosted SDKs; this is now handled in the local workspace runner.
2.9.2
(chore): Bump generator CLI version to publish new Docker image.
2.9.1
(fix): Add check in test script to verify that .NET 10 is installed.