3.69.0

(feat): Add auth option to BaseClientOptions for custom auth handling. Accepts an undiscriminated union of a function returning auth headers, an AuthProvider implementation, or the existing auth credential options. This allows users with alwaysSendAuth: true to handle auth via custom fetchers without the built-in auth provider throwing on missing credentials.

3.68.1

(fix): Fix serialization schema for map types with nullable values. Previously, the schema generator stripped nullable wrappers from map value types, causing a type mismatch between the API types (which correctly included | null) and the serialization layer (which omitted .nullable() on the value schema).


3.68.0

(feat): Add alwaysSendAuth config option that forces the generated SDK to include auth headers on all endpoints, even those marked with auth: false in the API definition. This is useful when using the same API definition for both server (where auth is handled by a gateway) and client SDK generation.

3.67.0

(feat): Add retryStatusCodes generator config option with legacy and recommended modes. legacy (default) preserves current behavior (retries 408, 429, and all 5xx). recommended retries only 408, 429, 502, 503, and 504, avoiding idempotency issues with non-transient server errors like 500.


3.66.6

(fix): Fix TS2322 type error in generated serialization files when enableForwardCompatibleEnums is enabled. The enum schema builder now uses forwardCompatibleEnum_ which correctly widens the parsed type to string, matching the widened API type.

3.66.5

(fix): Fix generated wire tests for SSE endpoints with protocol-discriminated unions. The expected event assertion no longer wraps the deserialized data in a duplicate discriminant key (which produced TS2783 “specified more than once” errors under strict typecheck). When the example puts the discriminant inside the data payload and leaves the SSE event line empty, the discriminant is now promoted onto the event line before being stripped from the data, so the mocked wire body matches what the runtime SDK produces.

3.66.4

(fix): Fix undiscriminated-union query parameters so the list variant is sent as repeated keys (?key=a&key=b) instead of a URL-encoded JSON blob. Mirrors the Go fix in #15526.


3.66.2

(chore): 升级 @fern-api/generator-cli 到 0.9.16,该版本将自动版本管道的私有工作空间 依赖项(@fern-api/logging-execa、@fern-api/task-context、@fern-api/cli-ai)打包到已发布的 dist/api.js 中,使消费者在 Vite/Vitest 下不再遇到 logging-execa/src/createLoggingExecutable.js 的 ERR_MODULE_NOT_FOUND 错误。


3.66.1

(fix): 修复 JsonErrorParseError 构造函数以设置 this.name 并使用 new.target.prototype,使错误名称能够在 esbuild 压缩后保持不变。


3.66.0

(feat): 当通过身份验证方案的 placeholder 字段配置时,在 SDK 客户端代码片段中 使用身份验证方案占位符值。


3.65.5

(fix): 停止在端点调用点生成遗留的 queryParameters 对象。查询参数现在完全通过 queryString(由 core.url.queryBuilder() 生成)传递。运行时 Fetcher.Args.queryParameters 字段被保留(标记为已弃用)以便与自定义获取器向后兼容,并且 queryParametersqueryString 都接收等效的日志元数据和敏感键的脱敏处理。

3.65.4

(chore): 升级 @fern-api/generator-cli 到 0.9.13,该版本修复了 0.9.12 的发布 (自动版本管道 + @fern-api/replay 0.12.0),通过将 @boundaryml/baml 在 generator-cli CLI 包中标记为外部,使得 esbuild 不再尝试静态解析 baml 的平台特定原生绑定。

3.65.3

(chore): 升级 @fern-api/generator-cli 到 0.9.12,该版本发布了 FER-9980 自动版本管道 (AutoVersionStep 在 [fern-generated] 提交和 replay apply 之间运行,通过 diff 比较跨运行 的纯生成器输出来驱动 semver 版本升级和通过 FAI 生成变更日志条目)并固定 @fern-api/replay 到 0.12.0。


3.65.2

(chore): 升级 @fern-api/generator-cli 到 0.9.11。GitHub 管道步骤现在通过 GitHub REST API 创建签名提交(匹配 fiddle 的遗留 InMemoryGitRepo 推送路径),为启用 replay 的组织恢复 经过验证的 fern-api[bot] 提交。

3.65.1

(chore): 将生成器运行时连接到 Sentry,以便内部生成器错误能够以完整上下文进行报告。 面向用户的失败(配置、验证、身份验证、网络、环境)仍然不报告。生成的输出没有变化。


3.65.0

(feat): 为请求头、查询参数和路径参数添加 clientDefault 支持。当参数具有 clientDefault 值(通过 x-fern-default OpenAPI 扩展设置)时,生成的 SDK 在 调用者未提供值时使用该值作为回退。带有 clientDefault 的参数在客户端构造函数 和端点签名中变为可选的。

3.64.2

(fix): 当可用时从 IR 的 publishConfig 读取 SDK 版本和包名称,而不仅仅是对于 自托管组织。这使得当生成器以 output.location: local-file-system 调用时(其中 生成器执行输出模式是 downloadFiles 且本身不携带版本),--version 可以流过到 生成的 package.jsonX-Fern-SDK-Version 请求头。


3.64.1

(chore): 升级 @fern-api/generator-cli 到 0.9.10,该版本升级了 @fern-api/replay 到 0.11.0, 并且只在 replay 存在未解决的冲突时才推送 fern-generation-base 标签。

3.64.0

(feat): 添加 queryBuilder() 用于查询参数序列化,支持每个参数的格式控制。 生成器现在生成一个流畅的构建器模式(core.url.queryBuilder())用于查询字符串 构建,其中每个参数的序列化格式在代码生成时通过 .add(key, value, { style: "comma" }) 决定。OpenAPI 查询参数中 explode: false 使用 逗号样式来生成逗号分隔的值(例如 tags=a,b,c)。