0.35.0
(feat): Add retryStatusCodes configuration option (legacy | recommended). The default
legacy mode preserves existing behavior (retries 408, 429, and all >= 500). The
recommended mode only retries 408, 429, 502, 503, 504 (excludes 500 Internal
Server Error to avoid retrying non-idempotent failures).
0.34.0
(feat): 当通过认证方案的 placeholder 字段配置时,在代码片段中使用认证方案占位符值。
0.33.3
(chore): 将 @fern-api/generator-cli 升级到 0.9.11。GitHub 管道步骤现在通过 GitHub REST API 创建签名提交(匹配 fiddle 的传统 InMemoryGitRepo 推送路径),恢复启用重放的组织上经过验证的 fern-api[bot] 提交。
0.33.2
(fix): 修复具有多值数组查询参数的端点的线路测试验证。
0.33.1
(chore): 向生成器运行时添加通过 Sentry 的崩溃报告,并使用新的共享 GeneratorError 分类对抛出的错误进行分类,以便将面向用户的失败(配置、验证、认证、网络、环境)与内部 Fern 错误区分开——只有后者会转发给 Sentry。生成输出无变化。
0.33.0
(feat): 在分页结果上公开 HTTP 响应元数据(状态码、头部和完整解析的响应体)。PaginationResult 结构体现在包含 status_code、headers 和 response 字段,AsyncPaginator 和 SyncPaginator 都公开访问器方法来获取最近页面加载的元数据。新的 RawResponse<T> 结构体和 HttpClient 上的 execute_request_raw 方法支持此功能。
0.32.0
(chore): 将 @fern-api/generator-cli 升级到 0.9.8。生成的 PR 中的更新日志 URL 现在使用提交 SHA 而不是 PR 分支名称,使链接在分支被删除或压缩合并后仍然有效。
0.31.1
(fix): 确保 extraDependencies 覆盖优先于捆绑依赖版本。之前,条件捆绑依赖(例如 tokio-tungstenite、reqwest-sse)在用户覆盖后添加,会恢复固定版本。现在 Extra deps 最后应用,因此用户指定的版本始终生效。
0.31.0
(feat): 添加 maxRetries 自定义配置选项以覆盖失败请求的默认最大重试次数。未指定时默认值仍为 3。
0.32.0-rc.0
(feat): 升级到 IR v66,压缩 IR Name 类型,减少 IR 大小并提高性能。
0.30.2
(fix): 修复带查询参数的字节端点的动态代码片段生成,
使用请求结构体而非位置参数。
0.30.1
(fix): 为带查询参数的字节(八位流)端点生成请求结构体,
用单个结构体替换位置参数,该结构体使用构建器模式
捆绑原始正文和所有查询参数。
0.30.0
(feat): 全面改进 WebSocket 重连:带抖动的指数退避算法,稳定连接 5 秒后
自动重置重试计数器,以及重连期间的消息队列(文本和二进制消息
被缓冲并在重连后刷新,而非报错)。
(feat): 在 WebSocketMessage::Close 中添加 DisconnectInfo 结构体,暴露服务器的
关闭代码和原因字符串。recv() 现在在关闭帧时返回 None 以
发送流结束信号。
(feat): 为带查询参数的 WebSocket 通道生成类型化的 ConnectOptions 结构体,
用支持 ..Default::default() 人机工学的 #[derive(Default)] 结构体
替换位置 &str 参数。底层使用 QueryBuilder,匹配 HTTP 端点模式。
(feat): 支持从 IR 自定义连接和消息方法名称
(channel.connectMethodName、msg.methodName),分别回退到 connect
和 send_{name}。
(feat): 添加 generateWebSocketClients 配置别名,与 enableWebsockets 并存,
匹配 TypeScript/Python/Java 生成器配置键。
(feat): 在多 URL API 中将每个 WebSocket 连接器路由到正确的环境 URL 方法
(例如,Deepgram 的 wss://agent.deepgram.com 与
wss://api.deepgram.com)。
(feat): 在生成的 ServerMessage 枚举中添加 Unknown(serde_json::Value) 兜底变量,
用于向前兼容新的服务器消息类型。
(feat): 优雅的 WebSocket 关闭:发送关闭帧并等待最多 5 秒的
服务器响应,带双重关闭保护。
(fix): 将隐式认证参数从必需的 &str 更改为 Option<&str>,
仅在提供令牌时有条件地注入 Authorization 标头。
(fix): 修复带显式 Authorization 标头的 API(例如 Deepgram)的连接器认证转发
— 连接器现在正确解包 Option 以匹配客户端的 &str 参数类型。
(fix): 修复仅 JSON 通道上的 recv() 在遇到意外二进制帧时返回带帧大小的错误,
而不是静默跳过它们。
(chore): 从通道路径而非通道 ID 派生通道名称,将版本段移动到后缀位置
(例如,/v1/agent/converse → AgentConverseV1Client)。
(fix): 在 ServerMessage 枚举上用自定义的 Deserialize 实现替换 #[serde(untagged)] 派生,
使用往返评分。修复结构体字段上的 #[serde(default)] 导致
每个变量都匹配、总是返回第一个的静默不匹配问题。
(chore): 引入 ReconnectContext 结构体来组织重连状态,
在 read_loop 和 try_reconnect 中替换 8 个单独的 Arc 包装参数。
(fix): 修复 try_reconnect 以指数退避重试至 max_reconnect_attempts,
而非在单次失败尝试后放弃。
(fix): 修复 flush_queues 在发送失败时通过发送前克隆并在错误时
推回队列前端来保留消息。
(chore): 从 WebSocket 客户端基础设施中移除无用的 parse_websocket_message 函数和
未使用的 serde::de::DeserializeOwned 导入。
(fix): 修复线路测试生成器为多 URL API 设置 config.environment = None,
使请求路由到 WireMock 服务器而非真实 API 端点。
(fix): 修复 number_serializers 单元测试断言使用 1e+20 匹配 Rust 的
serde_json 指数格式化。
(fix): 修复 WebSocket 连接器以支持 api_key 认证和 bearer
令牌。连接器现在从根客户端接收预计算的 Authorization 标头值,
使用 IR 的 api 键前缀(例如 Token),api_key 优先于 token,匹配 HTTP 客户端行为。
What’s new
- 对于之前将查询参数作为位置参数传递给
connect()的代码,这是一个破坏性变更。
0.29.0
(feat): 为多 URL 环境添加每个端点的 URL 解析。每个端点
现在在调用时从环境对象解析其基础 URL,匹配
Python 和 Java SDK 方法。
(feat): 从代码而非静态模板生成 ApiClientBuilder,为多 URL API 启用
环境感知的构建器方法。
(feat): 为多 URL 环境在 Environment 枚举上添加每个基础 URL 的获取器方法
(例如,api_url()、agent_url())。
(feat): 为多 URL 环境在 ClientConfig 中添加 Option<Environment> 字段,
以支持每个端点的 URL 解析。
(feat): 在 HttpClient 中添加 base_url()、config()、execute_request_with_base_url() 和
execute_stream_request_with_base_url() 访问器,用于
多 URL 端点解析。
(chore): 从 RootClientGenerator 中移除构造时 URL 覆盖;所有
子客户端现在统一接收 config.clone()。
0.28.0
(feat): 添加 number_serializers 模块,将整数 f64 值序列化为
不带尾随 .0 的格式(例如,24000.0 序列化为 24000)。某些 API
拒绝整数值的小数表示。包含范围验证以防止
i64 范围外数字的错误值。
(feat): 为带 application/octet-stream 请求正文的端点添加 execute_bytes_request
HTTP 客户端方法,发送原始字节而非 JSON 编码。
(feat): 支持来自 IR 认证方案的 API 键前缀。当配置了 Token
或 Bearer 等前缀时,生成的 HTTP 客户端会将其
添加到 API 键标头值前。
(fix): 重构文件上传和内联请求正文上的查询参数,作为 URL 查询字符串发送
而非序列化到请求正文中。查询参数字段现在标记为 #[serde(skip_serializing)]。
(fix): 修复可选查询参数字段上冗余的 #[serde(skip_serializing_if = "Option::is_none")] 和
#[serde(skip_serializing)]。现在仅发出 skip_serializing。
(chore): 仅在 IR 使用浮点/双精度类型时有条件地包含 number_serializers.rs,
与其他序列化器模块保持一致。
(chore): 在认证方案上用适当的 FernIr.AuthScheme._visit() 模式匹配
替换不安全的类型转换。
(chore): 将 IR SDK 从 v61 升级到 v65。
0.27.2
(fix): 修复具有 additionalProperties 的扩展对象的动态代码片段生成。convertExtendedObject 代码路径现在将 useDefault 传递给 structConstruction,确保为具有 extra: HashMap<String, serde_json::Value> 字段的类型(如 AchSetup)发出 ..Default::default()。当 useDefault 为 true 时,也会跳过没有值的可选字段,生成更清洁的输出。