1.39.2

(fix): Fix wire test generator using hard-coded WithToken for bearer auth instead of deriving the option function name from the IR token name. APIs that name their bearer token field something other than token (e.g. authToken) now generate the correct option call (e.g. option.WithAuthToken) in both wire tests and README snippets.


1.39.1

(fix): Fix OAuth token endpoint to use application/x-www-form-urlencoded content type. Per RFC 6749 §4.4.2, the OAuth 2.0 client credentials token request must be form-encoded. The generated raw_client.go now emits the correct Content-Type header for the token endpoint instead of application/json.

(fix): Fix wire test generation for endpoints with service-level base-path parameters. The wiremock mapping now includes service and root path parameters alongside endpoint path parameters, so test verification URLs use actual example values instead of URL-encoded placeholder syntax.

1.39.0

(feat): Add retryStatusCodes config with "legacy" and "recommended" modes. Legacy (default) preserves current behavior (408, 429, >= 500). Recommended retries only transient codes (408, 429, 502, 503, 504), avoiding idempotency issues with 500. A 1.0.0 migration auto-pins legacy for upgrading users.

1.38.3

(chore): Only generate EncodeQueryValues on undiscriminated unions that are reachable from a query parameter position, instead of on every union.

1.38.2

(fix): Generate an EncodeQueryValues method on undiscriminated unions so they are no longer silently dropped when used as query parameters.


1.38.1

(fix): 修复了大小写错误,其中小写单词和 PascalCase 单词之间的单字母大写单词(例如 WhoAmIResponseData 中的 I)被合并到后面的单词中,产生 WhoAmIresponseDatasplitWords 现在匹配 lodash 的 words() 行为,将其标记为 Who|Am|I|Response|Data

1.38.0

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


1.37.0

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

1.36.0

(feat): 支持通过 IR 中的 usernameOmit/passwordOmit 配置从基本身份验证中省略用户名或密码。当某个字段被省略时,它将从 SDK 的公共 API 中移除(WithBasicAuth 接受更少的参数),并在内部使用空字符串进行身份验证标头编码。当两个字段都被省略时,WithBasicAuth 调用和 Authorization 标头将完全跳过。


1.35.1

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

1.35.0

(feat): 添加 offsetSemantics 配置选项。当设置为 "item-index" 时,偏移分页会根据每页返回的项目数量递增,而不是按 1 递增("page-index" 是默认值)。

1.34.12

(fix): 修复了具有多值数组查询参数的端点的线路测试验证。

1.34.11

(chore): 通过 Sentry 向生成器运行时添加崩溃报告,并使用新的共享 GeneratorError 分类法对抛出的错误进行分类,以便用户面向的故障(配置、验证、身份验证、网络、环境)与内部 Fern 错误区分开来——只有后者才会转发给 Sentry。生成的输出无变化。


1.34.10

(fix): 在为 output.location: local-file-system 生成时遵循 CLI 通过 IR 发布配置提供的版本。之前 Go 生成器只从其输出模式读取 SDK 版本,对于 local-file-system 生成该版本为空——因此 fern generate --version X.Y.Z --local 没有为生成的 Go SDK 打上请求的版本标记。


1.34.9

(fix): 修复当不同父级下存在相同名称的子包时(例如 enumerate/ldap vs pentest/ldap),生成的测试文件从错误包导入的问题。


1.34.8

(fix): 修复生成的 _test.go 文件中引用嵌套跨包类型的错误导入路径。之前只使用叶包名称(例如 fern/foo),丢弃了中间路径段。现在使用完整路径(例如 fern/common/foo),与非测试生成文件的行为匹配。

1.34.7

(fix): 在 Go SDK 生成器中强制执行严格的配置键大小写。generators.yml 中的配置键现在必须使用精确的驼峰式命名(例如 importPath,而不是 importpath)。之前,错误大小写的键被 v1 生成器默默接受但被 v2 生成器忽略,导致令人困惑的 go mod tidy 失败。

1.34.6

(chore): 升级 @fern-api/generator-cli 到 0.9.8。生成的 PR 中的更新日志 URL 现在使用提交 SHA 而不是 PR 分支名称,在分支被删除或压缩合并后保持链接有效。


1.34.5

(fix): 将生成器 Docker 镜像中的 Go 工具链从 1.23.8 升级到 1.26.2(alpine3.23)。这解除了对生成的 SDK 模块(或传递依赖项)需要更新 Go 版本时 go mod tidy 的阻塞,之前会失败并显示 go.mod requires go >= X (running go 1.23.8; GOTOOLCHAIN=local)

1.34.4

(fix): 修复动态代码片段使用生成器版本而不是 SDK 版本来解析 Go 导入路径的问题,这导致线路测试导入中出现错误的主版本号后缀并破坏 go mod tidy。


1.34.3

(fix): 修复动态代码片段中未区分联合体变体匹配在转换过程中添加错误时选择错误变体的问题。匹配器现在检查是否添加了错误(通过 errors.size() > errorsBefore)以及现有的 isNop 检查,防止为生成代码片段中的联合体字段(如 options)返回空对象。

1.34.2

(fix): 修复动态代码片段 NPM 包捆绑包通过 FernGeneratorExec.OutputMode.github() 的运行时导入引入仅限 Node 的 form-data 依赖项。输出模式现在构造为纯对象字面量,使用仅类型导入,防止在浏览器/ESM 环境中出现 Dynamic require of "fs" is not supported 错误。

1.34.1

(fix): 修复当 SDK 版本为空或无效(例如 "")时动态代码片段导入路径接收虚假 /v 后缀的问题。主版本号解析器现在对空和裸 v 版本字符串返回 undefined,而不是产生错误的 v 后缀。

(fix): 修复动态代码片段导入路径解析直接使用动态 IR 的 generatorConfig 中的 Go 发布信息,而不是仅依赖外部构造的 FernGeneratorExec 配置。这确保即使外部配置转换层未正确填充它们,也能使用正确的 repoUrl 和版本进行导入路径,消除生成的 Go 代码片段导入中的虚假 /v 后缀。