Skip to content

Releases

v2026.11.07

Choose a tag to compare

@github-actions github-actions released this 06 Nov 17:31

版本概览

  • v2026.11.07 合并了经过兼容审查和完整验证的上游更新。
  • 已解决七语言文本冲突及发现的语义问题,保留双方兼容功能。工作树可交由外层暂存并完成完整验证,未提交、推送或发布。

新增功能

  • AWS InvokeModel 统一使用 SDK:删除未使用的 API Key 直连 Converse 分支及 ClientMode 状态。API Key、AK/SK 均通过 SDK 构造区域地址、认证和处理响应,Mantle Messages 保持独立路径。
  • Vertex 服务账号令牌按有效期缓存:改为依据 expires_in 缓存并提前五分钟刷新,按渠道和多密钥槽隔离;并发请求共享一次令牌换取,凭据更换触发刷新,失败不缓存。
  • 明确亲和性缓存操作并提供逐规则清理:区分刷新统计与清空缓存,在规则行提供清理按钮及范围确认;限制共享缓存、未保存规则和统计不可用时的操作,阻止重复提交,失败允许重试,保存规则后刷新统计。七语言各新增九个文案。

功能改进

  • 上游接口与凭据:AWS 保持现有密钥格式,InvokeModel 统一走 SDK。Vertex 减少重复令牌换取;显式非法期限、空令牌及失败 HTTP 响应会被拒绝,缺少 expires_in 时保留上游一小时默认值。AcquireAccessToken 公共签名不变。
  • 管理界面与路由:管理员可以直接清理指定规则的会话绑定;清理后后续请求重新选路,但不会保存或删除规则草稿。刷新统计只读取计数。
  • 发布交接:新增 .github/release-notes/upstream-sync-e0343903.md,记录累计范围、兼容修复、验证交接及持续限制。没有数据库结构、驱动、依赖版本、部署配置或发布工作流变更。

问题修复

  • Vertex 令牌缓存:有效令牌在刷新期限内复用,并发刷新合并执行;私钥变化即使没有新的 private_key_id 也不会复用旧令牌。非法响应不会进入缓存,错误不包含完整令牌响应。
  • 亲和性缓存管理:清理前展示范围确认,处理中禁止重复提交,失败保留重试入口,成功更新统计;缺少名称的 JSON 草稿仍可编辑,不再因缓存按钮渲染导致页面崩溃。
  • AWS 转发:InvokeModel 的 API Key 与 AK/SK 调用统一使用 SDK,流式及非流式响应继续进入对应处理器,Mantle 和 Nova 能力保留。

移除与调整

  • web/src/i18n/locales/en.json、web/src/i18n/locales/fr.json、web/src/i18n/locales/ja.json、web/src/i18n/locales/ru.json、web/src/i18n/locales/vi.json、web/src/i18n/locales/zh-TW.json、web/src/i18n/locales/zh.json:通过脚本按键合并双方内容并执行 i18n:sync;确认原有键值、上游新增键及占位符完整保留。
  • relay/channel/vertex/service_account.go、relay/channel/vertex/service_account_test.go:补充有效期、溢出、空令牌及 HTTP 状态校验,使用私钥摘要区分凭据,从换取开始计算期限,并采用 common.DecodeJson;补充回归用例,移除并发测试的固定等待。
  • web/src/features/system-settings/general/channel-affinity/session-rules-table.tsx、web/src/features/system-settings/request-policies/tests/routing.test.tsx:安全处理缺失名称,禁用对应清理操作,补充 JSON 与可视化往返编辑回归用例。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。
  • 已知限制:Gemini Omni 仅支持直连 Vertex AI 的 global Interactions 接口,不支持经 type-60 New API 网关转发;Veo 的网关转发能力保留。

自上次正式发布以来的累计提交

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。

v2026.11.06

Choose a tag to compare

@github-actions github-actions released this 05 Nov 18:11

版本概览

  • v2026.11.06 合并了经过兼容审查和完整验证的上游更新。
  • 已解决全部文本冲突及发现的语义问题,完成 v2026.11.04 至当前候选的累计审查。工作树可交由外层暂存和完整验证;未提交、推送或发布。

新增功能

  • 保存前审阅模型价格变化:新增价格前后对比、变更数量、保存确认、逐项撤销和全部放弃;删除先显示为待删除,未配置价格的条目不提供删除操作。移动端调整操作菜单和标签布局。
  • 按实际使用情况提示定价问题:默认聚焦需要处理的模型,提供缺价、不兼容和失效提供方的处理指引。全量快照仅列出已保存或启用渠道使用的内置价格;按名称查询仍提供默认值。闲置插件不提示缺价,失效的已保存提供方价格仍保留提示。
  • 扩展 gpt-image-2.6 请求转发:保留 complexity、markup、svg、frame_count、frame_duration_ms 字段及显式零值;multipart 图片编辑增加 markup 文件转发,并保留 mask。
  • 修复 Redis 鉴权缓存跨槽操作:用户栅栏、认证版本下限及令牌栅栏采用对应缓存键的 hash tag,使相关 Lua 和 MGET 操作位于同一槽。
  • 累计未发布的鉴权缓存完整性修复:此前合入的 7061447 为用户、令牌和会话缓存增加绑定用途、缓存键与有效期的签名;篡改、过期及旧无签名缓存回源数据库。元数据刷新改用完整数据库快照并复核,保留有效额度计数。

功能改进

  • 管理界面与价格配置:价格变更增加确认步骤,JSON 表单提交也执行确认;按秒及分辨率价格纳入对比、删除和撤销。诊断列表减少闲置模型提示,不改变实际计费执行规则。
  • 鉴权与 Redis:修复跨槽错误,并兼容读取旧版本撤销下限,避免升级后采信已撤销的旧签名缓存。兼容检查额外读取两个旧键,旧键不进入跨槽多键命令。
  • 累计智能测试功能:支持指定渠道、题目的独立重试,保留其他结果和原任务身份;通过快照与租约约束完成、重试和删除竞态。分组设置支持折叠及快捷操作,重试继续要求管理员和 ChannelOperate 权限。
  • 累计发票体验:附件增加放大预览、图片缩放和 PDF 新标签页入口;上传显示百分比及识别等待状态,失败可重试,上传期间继续禁止完成处理。
  • 数据库与部署:本轮没有表结构、驱动、依赖版本、部署文件或发布工作流变更。累计智能测试包含数据库条件更新,外层仍需完成 SQLite、MySQL、PostgreSQL 及迁移验证。
  • 国际化:七语言均保留本项目原有翻译,并纳入上游新增的 18 个键;已检查 JSON、占位符和累计变更中的静态翻译调用。

问题修复

  • 价格修改:管理员先查看价格差异,再确认保存;删除可撤销,按秒分辨率价格正确展示,内置来源和插件问题提示同时可见。
  • 缓存鉴权:同槽操作兼容分片 Redis;新旧撤销下限共同约束缓存,失效或篡改缓存不能直接授权,有效额度计数继续保留。
  • 图片请求:新增图片参数及 markup 文件可以转发,既有数量校验、预扣和结算路径保持;附加文件在错误返回时关闭。
  • 智能测试:管理员可重试已完成的单项结果,其他请求继续运行和展示;重复或无效目标被拒绝,确认界面保留上游费用提示。
  • 发票附件:用户可放大查看附件;上传完成后明确显示识别等待状态,成功、失败和重试沿用既有服务端结果处理。

移除与调整

  • web/src/features/system-settings/models/model-pricing-snapshots.ts、web/src/features/system-settings/models/model-ratio-table-columns.tsx、web/src/features/system-settings/models/model-ratio-visual-editor.tsx:组合双方逻辑,保留来源标识并接入变更状态、撤销和问题提示;补齐 ModelSecondPrice 的草稿传递、删除、组件更新比较,恢复 hasPricingValue 导出并消除重复属性。
  • web/src/features/system-settings/models/price-change-diff.tsx、web/src/features/system-settings/models/model-ratio-form.tsx、web/src/features/system-settings/models/tests/price-changes.test.tsx、web/src/features/system-settings/models/tests/model-ratio-table-selection.test.tsx:补充按秒价格对比,统一提交确认入口,调整测试筛选操作并合并重复请求桩;新增按秒确认、删除撤销及 JSON 提交回归用例。
  • web/src/i18n/locales/en.json、web/src/i18n/locales/fr.json、web/src/i18n/locales/ja.json、web/src/i18n/locales/ru.json、web/src/i18n/locales/vi.json、web/src/i18n/locales/zh-TW.json、web/src/i18n/locales/zh.json:通过脚本保留双方键值并执行 i18n:sync;核对所有原有翻译及上游新增键均保留。
  • model/user_auth_cache.go、model/user_cache_auth_version_test.go:使用独立 GET 继续读取旧下限,写缓存前检查版本;补充有效签名旧缓存被拒绝、当前版本可用及异常旧下限失败关闭的回归用例。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。
  • 已知限制:Gemini Omni 仅支持直连 Vertex AI 的 global Interactions 接口,不支持经 type-60 New API 网关转发;Veo 的网关转发能力保留。

自上次正式发布以来的累计提交

  • 480a4fb feat: 显示发票文件上传进度和识别状态
  • 412c31f feat: support independent intelligence retries and collapsible test groups
  • 3aa82bb merge: synchronize upstream 7061447
  • 82f02c8 chore: save local changes before upstream sync

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。

v2026.11.04

Choose a tag to compare

@github-actions github-actions released this 03 Nov 17:51

版本概览

  • v2026.11.04 合并了经过兼容审查和完整验证的上游更新。
  • 已完成工作树合并整合及累计审查,解决全部文本冲突并修复 Vertex 版本路径兼容问题;候选发布说明已补齐,交外层暂存和完整验证。

新增功能

  • 渠道创建返回可关联的结果:本轮新增新建渠道 ID 和原始输入位置映射,支持单条、批量及多密钥合一;分块插入回填 ID,异常回滚后不再继续返回成功。
  • 修复 2FA 锁定窗口:本轮修复锁定过期后的失败计数,首次失败重新从 1 开始;有效锁定期间不延长锁定时间,达到阈值后再次锁定。
  • 新增 Gemini Argon 协议支持:本轮支持 continuationToken、mediaProcessing 及请求蛇形别名;CONTINUATION 映射为 length,Argon 接入 thinkingLevel 和预算映射。
  • Vertex 支持按渠道选择 API 版本:本轮增加按渠道选择 v1beta1 的开关,默认仍为 v1,服务端校验版本,前端保存和重载设置;Claude 与任务插件端点保持原行为。
  • Gemini 嵌入采用上游用量:本轮优先使用上游 usageMetadata 的正数输入 Token 和模态明细;缺失、空值或非正数继续本地估算,兼容响应同步展示用量。
  • 累计 Gemini Omni 视频与 Token 计费:累计未发布更新新增两个 Omni 预览模型及 global Interactions 视频任务;支持输入、文本输出和视频输出 Token 定价,完成时读取上游用量,保留旧表达式和倍率兼容。
  • 累计 HTTP/2 连接健康检查:累计未发布更新增加默认关闭的 HTTP/2 PING 健康检查;关闭未应答连接,正常应答的慢请求继续等待,与客户端 SSE 心跳独立。
  • 累计 JSON 与媒体处理改造:累计未发布更新使用 moego 进行 JSON 查询、局部编辑和 Base64 处理,减少重复复制;保留字段顺序、重复键过滤、参数覆盖操作及错误处理,替换 relaykit 的直接 gjson/sjson 依赖。
  • 累计 xAI 流式用量明细修复:累计未发布更新保留输入缓存和输出推理等 Token 明细;输出总量仍按总量减输入计算,不重复累加推理量。

功能改进

  • 接口:渠道创建成功响应新增 ids、results 和条件性 id,映射保留原始输入下标且不返回凭证;失败响应不返回创建结果。OpenAPI 已同步。
  • 计费:Gemini 嵌入优先采用有效上游输入用量;累计 Omni 支持 Token 用量结算,xAI 保留缓存和推理明细。已有管理员价格及兼容计费路径保留。
  • 前端与国际化:渠道编辑新增受权限约束的 Vertex 版本开关,覆盖七种语言。累计发票复制配置和智能监控排序、卡片布局更新一并进入候选。
  • 认证:2FA 锁定过期后允许重新开始失败计数窗口,避免一次错误立即再次锁定;有效锁定与阈值控制继续执行。
  • 数据与兼容性:累计未新增表结构或迁移,未升级 GORM 和数据库驱动。渠道设置及发票偏好使用既有存储;批量插入 ID 回填和 2FA 条件更新交由外层真实 SQLite、MySQL、PostgreSQL 验证。relaykit 保持模块独立。
  • 配置与部署:累计新增 HTTP/2 健康检查环境变量,默认关闭;部署和发布工作流未改变。候选发布说明已写入 .github/release-notes/upstream-sync-ba5f7367.md,并保留全部已确认限制。

问题修复

  • 渠道管理:管理员创建渠道后可直接获取新建 ID 与原始输入映射,现有缓存刷新、权限和审计继续生效。
  • Gemini 与 Vertex:Vertex 默认使用 v1,可切换至 v1beta1;已有带版本的代理地址正确替换版本段。Argon 新字段得到保留,CONTINUATION 转换为 length。
  • 用量结算:嵌入请求优先按上游有效用量结算,缺失或非正数用量保持原估算;Omni 新 Token 定价与已有旧表达式并存。
  • 日志与认证:用户继续看到完整 stream_status;其他管理员诊断信息仍受原权限控制。2FA 锁定期满后重新计数,达到阈值再次锁定。
  • 累计管理界面更新:管理员可配置发票复制字段、查看全部申请并调整智能监控分组顺序;普通用户的申请数据范围不扩大。

移除与调整

  • controller/channel.go:保留本项目声明方式并增加 inputIndices,整合渠道 ID 返回逻辑,保留创建后的缓存刷新、能力写入、审计及权限检查。
  • web/src/features/channels/types.ts:加入上游 ChannelOtherSettings 类型及 vertex_api_version,同时保留本项目路由状态、HTTP 协议、连接分片和 TLS 类型。
  • web/src/i18n/locales/en.json、web/src/i18n/locales/fr.json、web/src/i18n/locales/ja.json、web/src/i18n/locales/ru.json、web/src/i18n/locales/vi.json、web/src/i18n/locales/zh-TW.json、web/src/i18n/locales/zh.json:通过脚本合并双方键并执行 i18n 同步;逐键核对,各语言原有 8512 个键值全部保留,上游 3 个新键全部加入。
  • relay/channel/vertex/adaptor.go、relay/channel/vertex/adaptor_api_key_url_test.go:显式版本选择替换末尾已有版本段,保留代理路径前缀;未配置新选项及非 Google 模型继续原逻辑。补充版本切换、代理路径和服务账号回归用例。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。
  • 已知限制:Gemini Omni 仅支持直连 Vertex AI 的 global Interactions 接口,不支持经 type-60 New API 网关转发;Veo 的网关转发能力保留。

自上次正式发布以来的累计提交

  • eafcaae feat: improve intelligence result ordering and card layouts
  • 049a1e2 merge: synchronize upstream 45746ee
  • 7ac1d65 merge: synchronize upstream 70e6af6
  • 14735e7 feat: 支持开票复制字段设置和管理员查看全部申请

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。

v2026.11.01

Choose a tag to compare

@github-actions github-actions released this 31 Oct 18:08

版本概览

  • v2026.11.01 合并了经过兼容审查和完整验证的上游更新。
  • 已完成合并候选的内容整合与累计审查,保留兼容的上游功能和二开能力;工作树无遗留冲突标记,交由外层暂存并执行完整验证。

新增功能

  • 厂商原生路由与多插件分发:插件同时服务厂商原生路径和 /{key} 地址,共享方法及路径可由多个插件声明,最终执行插件由模型候选和所选渠道决定;支持模型大小写规范化及渠道别名。保护管理命名空间和既有静态路由,返回 skipped_routes;查询按任务所属插件与用户处理。
  • 内置插件原生协议完善:多个内置插件改用厂商请求和响应形态,补充原生错误码、查询参数和状态处理;Vidu 接受 Token 认证形式,Google 接受厂商 API Key 形式但保留既有 Authorization 优先级。百炼增加 OSS 引用解析头及原生 SSE 选择,xAI 返回原生待处理状态和用量,并拒绝额外存储选项。即梦新增厂商提交与结果路径,移除的旧入口已在本次整合中兼容保留。
  • 原生 SSE 与交付后计费修复:Seedream 和百炼原生接口可直接转发上游 SSE,支持较大的非持久化图片响应;客户端断开不取消上游结算。发送事件后,追加预扣或任务插入失败仍收费;正常完成使用有效结果,异常中断保留预扣,避免重试和退款造成已交付工作漏收。
  • 可灵 4.0 请求与价格处理:可灵新增 4.0 文生、图生及全能视频路径,时长限定为 3 至 30 秒,完善所有视频尺寸映射及输入视频预留。完成结算优先读取资源用量,现金计费优先使用 list_price,避免将折扣 amount 当作标准价格。
  • Veo 结果解析与视频附件:Google Veo 按 REST 返回的 generatedSamples 读取结果;Vertex AI 增加 v1beta1 路径,将内联视频作为附件按需重新获取,通过受限 JSON 路径提取 Base64 内容,避免把大视频写入任务快照。保留 Cloud Storage 结果处理和下载授权。
  • 插件价格告警与启用预检:新增价格问题接口,识别未配置、表达式用量不兼容及已失效的插件模型价格;插件操作结果、价格表筛选和侧栏徽标同步展示。上传、启用、激活及删除后回退均预检路由冲突,移除 force 绕过能力,允许关闭状态保存冲突插件。
  • 日志轮转与资源消耗防护:访问和异常恢复日志改为写入时取得当前文件,修复轮转后继续写旧描述符的问题;zstd 解压增加窗口、内存和并发限制并采用惰性读取;URL 脱敏尾部处理改为线性裁剪,避免重复扫描。
  • 认证相关界面与配置顺序:登出后卸载认证布局,停止无凭据查询;Turnstile 按密钥先保存、启用后保存的顺序串行提交,失败时中止;个人侧栏配置只展示全局允许的模块,重置操作也服从全局显隐。
  • 依赖维护:更新 DOMPurify 3.4.17、marked、CodeMirror、tailwind-merge 及开发工具依赖;go-jose 更新至 4.1.6,Electron 更新至 42.11.16,同时更新 undici、fast-uri。整合时保留本项目原有较高安全覆盖版本。

功能改进

  • 接口与兼容性:任务插件增加厂商原生地址及插件专属地址,共享地址按模型和渠道选择插件;查询验证任务所有权。厂商状态码、错误体和参数支持更贴近原生协议,不支持的回调、存储或实时查询选项会明确报错;即梦旧入口另行保留兼容。
  • 计费与任务生命周期:已向客户端发送 SSE 后,客户端离线、追加预扣失败或任务插入失败不会使已交付内容免费;异常中断保留预扣,正常完成按有效用量结算。按秒模式与新版原生请求时长保持一致。
  • 认证与权限:新增价格问题接口沿用后台角色限制和 PAT option:read 范围;厂商凭据形式转换后仍走服务器令牌鉴权,查询仍校验所属用户。参考 OWASP Authentication Cheat Sheet 和 Session Management Cheat Sheet 核对凭据日志保护、服务端授权及登出后的页面卸载,未宣称完整 ASVS 合规验证完成。
  • 前端与国际化:管理员可查看价格缺失、不兼容及过期原因和导航数量徽标;个人侧栏设置服从全局显隐。累计新增 19 个翻译键,已核对七语言键集合、占位符和变更组件的静态翻译引用。
  • 发票、抽奖与数据:累计版本增加发票预览、复制、邮件补发记录及全部抽奖。EmailSentAt 为非持久化投影,邮件时间来自成功审计记录;本轮没有升级 GORM 或数据库方言驱动。真实 SQLite、MySQL、PostgreSQL 的迁移与后端验证由外层执行。
  • 部署与桌面端:Electron 升至 42.11.16,并显式安装运行时以兼容现有启动、许可证资源和打包路径;工作流使用的 Node 22 满足新版依赖要求。未启动、重启或发布任何服务。

问题修复

  • 任务调用:支持厂商原生请求、插件专属地址、共享路径渠道选择及既有标准协议;即梦旧 Action 客户端继续可用。
  • 流式交付与收费:Seedream 和百炼原生流逐事件返回;客户端断开后继续读取和结算,已发送的工作不会因持久化失败退款,异常流按预扣处理。
  • 厂商计费:可灵 4.0 按新时长、尺寸与价格字段处理;二开按秒价格继续使用实际发送时长,图片重复表示不重复计费。
  • 管理界面:价格问题在插件操作结果、模型价格表和侧栏可见,同时保留内置价格来源;普通用户不请求管理员价格问题接口。
  • 日志与监控:日志轮转后访问和异常日志继续写入当前文件;管理员诊断字段保持权限隔离,stream_status 完整采用上游用户可见行为。
  • 累计未发布业务功能:用户可预览和下载自己的已开票文件,管理员可处理待开票文件、复制开票信息和补发邮件;全部抽奖分批执行且不会自动重放失败请求。

移除与调整

  • main.go、middleware/recover.go、middleware/logger.go:主入口接入新的 PanicRecover,移除无调用的旧恢复函数;访问和异常日志使用当前日志写入器,同时保留 OAuth、SSO 及其他凭据查询脱敏。
  • router/relay-router.go、router/relay_router_test.go:保留两个 API 前缀下的 countTokens 拒绝行为,仅将 predictLongRunning 交给插件;其余 Gemini 请求继续原认证、限流和渠道选择流程,两侧回归用例均保留。
  • plugins/tasks/doubao/plugin.js、plugins/tasks/kling/plugin.js、plugins/tasks/vidu/plugin.js、plugins/task_fork_compat_test.go:按实际发送的原生或协议字段计算时长,预扣与用量字段共用解析结果;保留可灵资源包用量、Vidu 设置及豆包像素档位计费,并保留 URL 与 Base64 表示不重复计数。补充原生时长、自动时长和异常类型回归用例。
  • plugins/tasks/jimeng/plugin.js、plugins/task_fork_compat_test.go:保留新厂商路径,同时恢复旧 Action 入口作为兼容路由;沿用原图片字段转换、时长计费和公开任务编号响应,并补充提交、查询及非法操作回归用例。
  • controller/plugin_native_e2e_test.go:采用实际转发的 kling-v3 模型,并保留 HTTP 202 成功提交覆盖。
  • docs/plugin-api/v1.md:保留新增插件契约,超时说明与本项目 4320 分钟默认值及零值关闭语义保持一致。
  • web/package.json、web/bun.lock、electron/package.json、electron/package-lock.json:保留二开较高的安全覆盖版本,接纳 DOMPurify 等上游更新并核对锁文件一致性;增加显式 install-electron 安装钩子,维持现有开发及打包流程所需的运行时文件。
  • web/src/hooks/use-sidebar-data.ts、web/src/hooks/tests/sidebar-config.test.tsx:组合徽标参数与原导航构造逻辑,保留自定义页面、外链模式、发票和审计入口,合并权限、显隐及徽标刷新用例。
  • web/src/features/system-settings/models/model-ratio-visual-editor.tsx、web/src/features/system-settings/models/model-ratio-table-columns.tsx、web/src/features/system-settings/models/tests/model-ratio-table-selection.test.tsx:同时保留内置来源和价格问题信息,使用 TruncatedCell 展示模型名及原因,保持文本选择和分页行为;复用已有七语言翻译键,并增加来源标识与问题提示同时显示的回归断言。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。

自上次正式发布以来的累计提交

  • 56efa1f fix: 优化发票预览、邮件补发及文件命名
  • 5a99038 feat: 支持一键复制开票信息和抽取全部剩余次数

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。

v2026.10.30

Choose a tag to compare

@github-actions github-actions released this 29 Oct 17:15

版本概览

  • v2026.10.30 合并了经过兼容审查和完整验证的上游更新。
  • 工作树内容审查完成,无需修复合并冲突。上游指定版本已合入;已审查四次累计未发布更新,并补充 v2026.10.30 发布说明及六项既有限制,交由外层完整验证。

新增功能

  • 上游版本未前进:指定上游 e449cc7 已包含在 v2026.10.29 中。本轮没有新增、修改或删除的上游功能;立即成功任务性能采样、亲和性优先级回退等此前合入功能继续保留。本次累计待发布变化来自本项目的四次提交。

功能改进

  • 累计审查范围:审查覆盖 v2026.10.29 至当前候选的四次提交、57 个文件,涉及发票模板、企业开票门槛、下载通知和批量抽奖。本轮仅新增发布说明,未修改生产代码。
  • 接口与用户行为:新发票申请仅接受企业抬头并要求税号,默认最低合计金额 1000、付款完成后 90 天内申请;管理员可调整门槛。抽奖接口新增可选 count,范围为 1 至 100,省略时仍单抽,并保留 draw 字段。
  • 前端与国际化:新增模板编辑预览、开票设置和连抽结果展示;发票入口拥有独立侧栏开关,钱包与订单管理页移除重复快捷按钮。累计新增 36 个翻译键,静态核对七种语言及占位符未发现遗漏。
  • 数据与数据库:模板和开票设置使用现有 options 存储,没有新增表、字段或驱动升级;订单筛选改用付款完成时间,批量抽奖扩大单次事务范围。已检查相关三库回归用例,真实数据库验证由外层执行。
  • 配置与发布:新增 LOTTERY_DRAW_RATE_LIMIT_ENABLE、LOTTERY_DRAW_RATE_LIMIT、LOTTERY_DRAW_RATE_LIMIT_DURATION,默认每用户每 60 秒最多 60 次请求;百连抽计一次请求。开发调试面板需 VITE_ENABLE_DEVTOOLS=true。镜像和发布工作流没有累计变更,预约版本说明已补齐。

问题修复

  • 发票邮件模板:管理员分别编辑申请通知与用户发票邮件模板,使用示例数据预览;服务端限制模板语法和大小并转义申请数据,前端预览隔离脚本、导航和外部资源。
  • 企业开票:服务器按实际订单金额和付款完成时间执行门槛校验,拒绝越权、重复占用和不符合条件的订单;新门槛不追溯影响已提交申请。
  • 发票下载通知:关闭附件邮件后,通过用户通知渠道提醒登录下载,不附带文件或私有存储引用。发送失败单独反馈,不回滚已完成的开票处理。
  • 批量抽奖:用户可单抽、十连抽或百连抽,查看逐次结果和总奖励;次数不足不执行整批抽取,入账失败回滚,前端阻止重复点击,抽奖使用独立用户限流。

移除与调整

  • 保留本项目已有二开功能和兼容行为;本次发布由自动审查确认无未解决冲突。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。

自上次正式发布以来的累计提交

  • 50c49e5 feat: 支持十连抽和百连抽并独立抽奖限流
  • 33da195 feat: 关闭发票邮件附件时通知用户手动下载
  • 146f7d0 feat: 添加企业开票金额和申请期限设置
  • f7df7eb feat: 完善发票邮件模板编辑与侧边栏管理

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。

v2026.10.29

Choose a tag to compare

@github-actions github-actions released this 29 Oct 02:09

版本概览

  • v2026.10.29 合并了经过兼容审查和完整验证的上游更新。
  • 已完成 upstream/main(e449cc700eb569cdfc2199cb73e97de46944f43c)与本项目 origin/main(2b82951141af5b94fd7c9c76d3cc9ac4f646fc66)的工作树内容整合。三处文本冲突均已解决,并修复累计开票接口的 PAT 权限声明遗漏和新增回归测试的全局状态隔离问题。审查覆盖 v2026.10.26(5deb18e704e1c3977269df34a0b40823036fd173)至当前候选的全部累计差异。

新增功能

  • GPT-6.1 Sol 与 Terra 的 Chat 参数兼容:gpt-6.1-sol、gpt-6.1-terra 及对应快照纳入 GPT 系列参数能力判断,使用 max_completion_tokens。Sol 移除不支持的采样参数,Terra 仅在显式 reasoning_effort=none 时保留采样参数。
  • 补计连接取消后的非流式成功响应:非流式请求已无错误完成时,即使请求上下文随后取消,也可作为成功性能样本。调整位于性能结果分类,不改变扣费、退款、渠道禁用或重试决策。
  • Bedrock Invoke 保留 safeguards:AWS Bedrock Invoke 请求结构增加 safeguards 原始 JSON 字段,使 Claude 请求中的该配置在流式与非流式转换后继续发送;未提供时仍省略。
  • SSE 精确识别结束标记:去除首尾空白后,仅精确的 [DONE] 被视为结束标记,兼容裸标记和 data: 前缀。data: [DONE]extra 等内容继续作为数据处理,避免提前结束响应。
  • Azure 显式启用 Responses WebSocket:Azure 加入允许显式开启 Responses WebSocket 的渠道类型,前端提供对应设置入口。默认仍关闭;启用后沿用 Azure Responses 路径、api-version 和 api-key 请求头,并保留相关握手回归用例。
  • 修复 Cloudflare embedding 响应转发:embedding 请求改用 OpenAI 兼容响应处理器,避免误入聊天响应处理路径,保留向量数据和用量。
  • 亲和性失败后从最高优先级回退:亲和性尝试不再被误算为已访问普通渠道优先级。后续普通选择减去亲和性偏移,从最高优先级开始;亲和性仍消耗原重试预算,切换自动分组时清除偏移。
  • 立即完成的任务纳入性能统计:任务提交后立即成功的结果,在任务持久化和结算成功之后记录性能样本,并在存在令牌数量时记录吞吐相关数据。立即失败或尚未完成的任务不作为此类成功样本。
  • 累计未发布的参数覆盖正则缓存:发布基准之后已合入的 01da3a5 将正则编译结果按表达式文本缓存,供条件匹配、对象裁剪和正则替换复用,避免每次请求重复编译;缺失路径和无效正则的原有处理保留。

功能改进

  • 接口与协议兼容:GPT-6.1 Chat 参数、Bedrock safeguards、Cloudflare embedding 和 SSE 结束判断发生上述行为修正;Azure Responses WebSocket 增加显式启用能力。可选请求字段、显式零值及本项目原有请求数量检查未被替换。
  • 渠道与分组路由:普通优先级回退修复与本项目路由体系并存:密钥分组路由仍优先进入专用选择流程,普通选择仍经过 selectSatisfiedChannel,继续执行冷却、同渠道重试及请求过滤。亲和性偏移不扩大重试预算。
  • 监控统计:性能统计新增两类此前可能遗漏的成功样本,因此升级后的成功率、延迟和吞吐统计可能变化。智力测试公开结果新增重试次数,管理员历史结果按实际分组展示并支持按需查看预览。
  • 累计开票接口与权限:新增本人开票申请、查询、撤回、文件下载及邮件交付接口,以及管理员处理、上传和通知设置接口。补齐六条遗漏的 PAT 路由声明:本人读写使用 wallet:read 或 wallet:write,管理员读写使用 billing:read 或 billing:write;服务端角色和归属校验继续执行。
  • 计费与订单状态:累计开票功能检查订单归属、支付状态、金额和开票状态,通过事务处理申请与订单开票状态,并用唯一占用键防止订单同时进入多份待处理申请。该流程不修改充值金额或余额;本轮性能采样增加也不改变预扣、结算和退款流程。
  • 数据库:相对发布基准新增 InvoiceRequest、InvoiceRequestOrder 两张表,纳入现有 GORM 迁移。订单占用采用可空唯一 active_top_up_id,事务行锁沿用 lockForUpdate;未调整 GORM、数据库驱动或模块依赖版本。真实三库新建、升级、重复迁移及完整后端验证由外层流程执行。
  • 前端与国际化:新增用户开票页面、管理员申请管理与通知设置,接入钱包、充值统计、侧栏和路由;复用已有表格、表单、弹窗、确认及复制组件。累计新增的 89 个前端翻译键在七种语言中均有对应条目,未发现占位符不一致;开票邮件与管理员通知按现有产品设计使用中文。
  • 部署与发布:Docker 运行镜像累计增加 Poppler、Tesseract 和中英文识别数据,用于本地发票辅助识别。私有附件默认保存在 data/invoices,可通过 INVOICE_STORAGE_DIR 配置,部署需持久化并备份该目录。新增候选发布说明 .github/release-notes/upstream-sync-e449cc70.md,披露累计更新和既有风险;未修改发布工作流或执行发布操作。

问题修复

  • 客户端请求转发:GPT-6.1 请求按模型能力转换参数,Bedrock 保留 safeguards,Cloudflare embedding 返回向量结构,SSE 仅在精确结束标记时终止。
  • Azure WebSocket 配置:管理员可为 Azure 渠道显式启用 Responses WebSocket;启用后使用 Azure 对应路径、版本参数和 api-key,其他渠道的既有配置方式继续有效。
  • 路由故障回退:亲和性渠道失败后,普通优先级选择从最高优先级开始,同时遵守本项目分组路由、冷却、过滤和重试预算;跨自动分组时不携带前一分组的亲和性偏移。
  • 用户开票:用户可选择本人 1 至 100 笔符合条件的已支付订单申请开票,查看记录并撤回待处理申请;已开具发票可下载或发送到申请中固定的邮箱。用户不能通过接口读取其他用户的发票。
  • 管理员开票处理:管理员可筛选、开具或驳回申请,上传不超过 10 MB 的 PDF、PNG、JPEG,或提供 HTTPS 链接,并配置启用的管理员账号接收通知。OCR 仅辅助填写明确的发票号码,识别失败仍可手动填写;邮件发送失败会单独反馈,不回滚已经完成的开票处理。
  • 监控与日志:已完成的非流式响应和立即成功的任务补入性能样本;智力测试显示重试次数并按分组查看历史。stream_status 按已确认产品决策完整展示,其他管理员诊断信息维持既有访问边界。
  • 累计界面与性能改进:开票相关页面提供七种前端语言;CC Switch 导入支持站点名称、自定义名称和合规 Logo;参数覆盖规则复用已编译正则,保留原有匹配及错误处理语义。

移除与调整

  • service/channel_affinity.go、service/channel_select.go:保留本项目状态字段、首次选择标记、失败清理和重绑定逻辑,同时增加上游偏移;保留专用分组路由入口及 selectSatisfiedChannel,在普通优先级选择中扣除偏移,并在自动分组切换时清零。未整体选择任一侧实现。
  • relay/responses_websocket_test.go:合并双方所需导入和测试内容,同时保留授权计费分组恢复、现有连接约束及 Azure URL、api-version、api-key 握手断言。
  • middleware/access_token_routes.go、middleware/auth_test.go:按本人钱包操作和管理员账务操作分别补充 wallet:read、wallet:write、billing:read、billing:write,并在现有鉴权测试中加入允许与拒绝用例;保留 UserAuth、AdminAuth 和业务层归属校验。
  • controller/channel_pin_retry_test.go:夹具显式关闭渠道路由模式以覆盖普通优先级行为,并通过清理逻辑恢复原路由开关、分组倍率及其他已有全局设置。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。

自上次正式发布以来的累计提交

  • 09ba9891d merge: synchronize upstream e449cc7
  • 2b82951 feat: 完善开票申请管理和中文邮件交付
  • 61ccae0 chore: save local changes before upstream sync
  • f3be27c chore: save local changes before upstream sync
  • b7857c6 feat: show intelligence test retry counts
  • 613bb3b feat: improve intelligence history result grouping

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。

v2026.10.26

Choose a tag to compare

@github-actions github-actions released this 26 Oct 01:35

版本概览

  • v2026.10.26 合并了经过兼容审查和完整验证的上游更新。
  • 已完成工作树内容层面的合并审查与修复,整合两处文本冲突,并修复定价测试导入、缓存计费快照识别和 Responses 压缩用量传递三处语义遗漏。最终涉及 20 个代码或测试文件及 1 份发布说明草稿。

新增功能

  • 识别兼容接口的缓存创建用量:9823ebc7e 为 InputTokenDetails 增加 cache_creation_input_tokens,并在用量合并和 Chat 转 Responses 时保留;缓存创建总量取该字段、cache_write_tokens 与 cached_creation_tokens 的最大值,负数归零,不重复累加。仅有未定义的 cache_creation 子对象时不推导 Claude 生命周期用量。
  • 容错转换 Claude 停止序列:bc795cc11 将 stop 转换改为显式类型判断,支持字符串、字符串数组及混合数组中的字符串,保留空字符串并忽略非字符串成员,消除原强制类型断言的崩溃路径。
  • 按实际表达式统一定价分类:f1569d1ea 让筛选与侧栏计数共用 getModelQuotaType:全部价格分支为 fixed 时归入按次,存在 token 价格分支时归入按量,任务用量模型保持独立分类;表达式解析失败回退原 quota_type。固定零价、条件倍率及混合价格分支均有回归覆盖。
  • 保留 Claude 工具参数数值精度:4d962e464 将 Chat 响应中的工具参数按 map[string]json.RawMessage 转为 Claude tool_use.input,避免大整数和高精度小数经过 float64 后失真;空输入、无效 JSON、null 及非对象输入仍回退为空对象。
  • 同时保留 Gemini 正文和工具调用:0165fef98 分离工具调用与正文赋值,Gemini 消息同时含文本或媒体内容和 functionCall 时,转换后的 Chat 消息同时保留两者;原有工具关联和思考内容处理继续保留。
  • 隔离重复运行的渠道亲和性测试缓存:34003e9c2 使用测试名称加原子递增序号生成测试规则与指纹,避免时间戳碰撞及同进程重复测试复用旧统计;渠道亲和性的生产行为没有改变。

功能改进

  • 计费与监控:上游报告新缓存创建字段时,该部分输入按现有缓存创建价格结算,费用可能与此前按普通输入计价不同;不修改管理员价格、预扣、结算、退款或饱和保护规则。原有 OpenAI 总输入与 Claude 独立缓存的监控分母口径保留。
  • 接口与协议兼容:不增加必填请求字段或修改接口路径;补全缓存用量字段传递,保留工具参数精度和 Gemini 工具调用旁的正文。无效 stop 成员被忽略,原空参数回退行为保留。
  • 前端与国际化:固定表达式模型可正确出现在按次筛选中,侧栏计数与结果一致;混合价格模型归入按量,任务模型仍单列。复用既有筛选界面与组件,没有新增翻译键;侧栏及分类常量使用的 26 个静态翻译键在七种语言中齐全。
  • 数据与部署兼容:新增缓存字段通过用量 JSON 和既有计费路径传递,没有修改数据库模型、迁移、索引、GORM 或驱动版本,也未改动依赖、运行配置和发布工作流。完整后端、前端及真实 SQLite、MySQL、PostgreSQL 验证由外层执行。

问题修复

  • 缓存创建计费:Chat、Responses 和 Responses 压缩用量均保留新缓存创建字段;仅含该字段的片段也会形成并合并原始计费快照。不同缓存写入别名取最大值,既有生命周期拆分保留。
  • 协议转换:Gemini 消息中的正文与工具调用同时送达 Chat 上游;Claude 工具输入保留原始数字精度,停止序列转换不再因非字符串元素崩溃。
  • 定价展示:用户按当前表达式获得一致的模型分类和侧栏数量;固定零价、固定图片数量价格、请求倍率、混合 token 分支及任务用量各按既定分类呈现。
  • 日志与监控:用户继续看到完整上游 stream_status,其他受限字段仍按角色过滤;管理员继续获得实际响应模型和原有渠道诊断,缓存统计继续采用本项目的有效对话用量口径。
  • 发布交接:工作树内容已解决冲突;Git 状态中的 UU 等待外层暂存处理。发布说明草稿覆盖全部累计差异并原文保留六项既有限制,不代表已经提交或发布。

移除与调整

  • service/channel_affinity_usage_cache_test.go:保留测试名称提供的确定性隔离,再使用上游原子序号区分同进程重复执行;全部三组原有统计断言保留,没有整文件选边覆盖。
  • service/text_quota_test.go:恢复两个独立、完整的测试函数,同时保留监控分母、缓存创建倍率、缺失字段回退及别名取最大值的断言。
  • web/src/features/pricing/tests/pricing-controls.test.tsx、web/src/features/pricing/lib/filters.ts:通过现有公开入口 filterAndSortModels 验证分类及侧栏计数,保留内部函数封装;补充 fixed 图片价格乘 image_count 的分类回归。
  • relaykit/dto/billing_usage.go、relaykit/dto/usage_merge_test.go:在两种输入明细的非空判断中补齐 CacheCreationInputTokens;增加只含该字段的快照创建、标准化和合并回归,保留既有输入输出计数且不修改原快照。
  • relay/channel/openai/relay_responses_compact.go、relay/channel/openai/relay_responses_billing_test.go:补充字段复制,保留本项目实际响应模型审计;扩展既有 JSON、流式和压缩响应回归,检查新字段、别名取最大值及 12 小时缓存拆分同时保留。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。

自上次正式发布以来的累计提交

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。

v2026.10.25

Choose a tag to compare

@github-actions github-actions released this 24 Oct 20:48

版本概览

  • v2026.10.25 合并了经过兼容审查和完整验证的上游更新。
  • 已完成工作树内容层面的合并审查与整合,解决两处文本冲突,并修正发布前置检查的 Bun 版本遗漏及任务超时文档不一致。本轮相对 origin/main 涉及 29 个文件;自 v2026.10.23 到当前候选累计涉及 53 个文件,均纳入审查。发布说明草稿已写入 .github/release-notes/v2026.10.24.md,保留六项已核实的既有限制。

新增功能

  • 本轮:保留 Chat 请求中的 Gemini 图像配置:GeneralOpenAIRequest 新增可选 imageConfig 原始 JSON 字段,经过序列化复制后,Chat 转 Gemini 会将其写入 generationConfig.imageConfig。有效的 extra_body.google.image_config 继续优先覆盖;空配置保留顶层配置;省略时不额外发送。相关回归覆盖图像尺寸、宽高比、配置优先级和省略行为。
  • 本轮:异步任务默认硬超时延长至 72 小时:TASK_TIMEOUT_MINUTES 默认值从 1440 改为 4320,环境变量示例同步更新。显式配置仍优先,0 仍禁用硬超时。连续轮询失败阈值、404/410 终态处理、状态竞争控制和退款路径保持原规则;新增回归区分运行 60 小时与超过 73 小时的任务。
  • 本轮:升级 Bun 并切换类型检查入口:Bun 升级至 1.4.4,类型检查改为 bun check -b,移除 @typescript/native-preview 及对应平台包,更新 CI、平台发布、Electron、Docker、开发规范和各语言 README。渠道操作请求保留 auto_ban 参数及统一错误处理配置,相关测试补充 ApiRequestConfig 类型。
  • 本轮:更新前端运行依赖:锁定版本更新为 axios 1.20.0、i18next 26.5.3、react-i18next 17.1.0、input-otp 1.5.0、react-resizable-panels 4.14.6;同步更新相关传递依赖并移除不再需要的 void-elements。保留本项目额外依赖和既有安全版本覆盖,没有改写请求、认证或翻译接口契约。
  • 累计未发布:访问日志查询凭据脱敏:累计接入查询串脱敏,隐藏密钥、令牌、密码和签名等敏感值,同时处理编码键、重复键及无效编码。保留本项目 OAuth、SSO 回调整段查询串隐藏逻辑;仅改变日志输出,不改写业务处理收到的 URL 或 RequestURI。
  • 累计未发布:修复编辑抽屉跨记录残留:API 密钥、兑换码和模型抽屉关闭后重置默认值,避免上一条记录的到期时间或供应商残留到下一条记录。空到期时间在表单中使用 null,提交时仍分别转换为 API 密钥的 -1 和兑换码的 0;模型未分配供应商时提交 vendor_id=0。保留加载期间禁止保存和忽略过期响应的行为。

功能改进

  • 接口与协议兼容:Chat 请求中的顶层 imageConfig 不再因 DTO 复制而丢失,Gemini 将收到所选图像参数;既有 extra_body 配置优先级保留。没有新增必填请求字段或改变现有接口路径。
  • 任务配置与费用占用:未显式配置超时的部署允许任务等待至 72 小时,因此真正停滞任务的硬超时退款可能比原来晚两天。管理员已有超时配置继续生效,连续失败阈值仍可能更早结束任务。退款金额、按秒结算、按次结算及表达式价格快照规则未改变。
  • 累计用户界面与国际化:编辑不同记录不再继承旧到期时间或供应商。渠道监控改善窄屏布局、矮屏滚动、搜索恢复和指标选择;智力测试历史改为响应式卡片并保留复制、详情和删除确认。核对累计改动的 15 个前端生产文件,其静态翻译键在七种语言中均存在。
  • 日志与权限:访问日志减少查询凭据暴露,原始业务请求保持不变。stream_status 仍完整采用上游公开字段与原始内容;其他渠道信息、上游请求 ID、中间重试日志、执行轨迹和管理员字段继续执行原有权限过滤。
  • 部署与发布:构建环境统一使用 Bun 1.4.4,本项目新增的发布前置检查也同步升级,避免继续使用旧运行时执行新类型检查命令。标签顺序、发布说明校验、构建前置依赖、下载重试和产物检查保留。发布说明仅作为候选草稿保存。
  • 数据与数据库兼容:累计范围未修改数据库模型、迁移定义、GORM 或数据库驱动版本。表单继续提交原有日期和供应商字段约定,任务超时沿用既有查询、状态更新和退款机制。SQLite、MySQL、PostgreSQL 的完整运行验证仍由外层执行,不据此宣称数据库验证完成。

问题修复

  • Gemini 图像请求:客户端可在 Chat 请求顶层传递 imageConfig;转换后进入 Gemini generationConfig。有效的 Google extra_body 图像配置优先,空配置不会抹去顶层值。
  • 长时间异步任务:默认允许等待 72 小时,超过硬期限的任务按原有状态竞争和退款规则处理;显式超时配置和连续轮询失败截止规则继续生效。
  • 编辑与监控界面:切换 API 密钥、兑换码或模型记录时使用各自数据;监控图表可用鼠标和键盘选择指标并至少保留一项,智力测试历史可复制标识、查看详情并确认删除已结束任务。
  • 日志可见性:用户继续看到完整上游 stream_status;渠道诊断、上游请求链、执行轨迹等字段按原有角色权限返回。访问日志中的查询凭据被脱敏,OAuth 和 SSO 查询串不输出。
  • 构建与发布准备:前端采用 Bun 1.4.4 和 bun check -b,所有相关构建入口版本一致。候选发布说明覆盖本轮与累计更新,并原样列出六项既有限制;提交、暂存、完整验证和实际发布由外层流程负责。

移除与调整

  • web/AGENTS.md:采用 bun check -b,同时完整保留启动前核对服务、复用已有实例、禁止随意换端口、清理临时进程和重启前核验要求。
  • web/src/features/channels/components/tests/priority-order.test.tsx:整合为单一带类型的 mock,使用本项目实际请求路径,保留排序逻辑及双方回归断言,没有直接选择任一整文件版本。
  • .github/workflows/release.yml、web/package.json:将发布前置检查同步升级为 Bun 1.4.4,保留全部既有校验步骤和发布任务依赖。
  • docs/plugin-api/v1.md、common/init.go、.env.example:更新现有文档为默认 4320 分钟、即 72 小时,并明确 0 禁用硬超时;未改变插件接口或计费事实结构。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。

自上次正式发布以来的累计提交

  • d1cd535 feat(web): refine channel monitoring and intelligence history
  • a70da1e merge: synchronize upstream 33c61a2
  • 5876b96 fix(channels): restore upstream Sora model discovery behavior

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。

v2026.10.23

Choose a tag to compare

@github-actions github-actions released this 23 Oct 02:43

版本概览

  • v2026.10.23 合并了经过兼容审查和完整验证的上游更新。
  • 已完成合并工作树的内容审查与冲突整合。21 个文本冲突文件均已消除冲突标记;本轮相对 origin/main 涉及 139 个文件,自 v2026.10.22 到候选内容累计涉及 177 个文件。保留兼容的上游功能、本项目渠道路由、按秒计费、日志权限和监控功能。

新增功能

  • 普通渠道与任务插件共同参与共享端点选路:共享 Responses、图片和视频端点先按渠道选择规则决定使用普通中继还是任务插件。普通渠道胜出时保留原请求,不先执行插件校验和改写;后续重试继续受对应渠道过滤条件约束。插件路径保留候选插件及原任务固定渠道逻辑。普通中继拒绝误用任务美元表达式,管理界面允许分别配置普通价格和插件覆盖价格。
  • 原生任务插件路由支持 multipart 请求:未按模型声明限定的原生提交路由允许 JSON 或 multipart,由插件解码器判断具体格式;限定模型的路由仍要求 JSON。移除单个文本字段额外的 1 MiB 限制,继续执行整体请求体、字段数量、文件数量、文件大小、名称及嵌套 multipart 限制。
  • 任务驱动接收客户端业务请求头:驱动上下文增加客户端请求头,排除 Authorization、Proxy-Authorization、Cookie、X-Api-Key、X-Goog-Api-Key 和 Mj-Api-Secret 等网关凭据头。渠道自己的上游鉴权及请求头覆盖机制继续生效。
  • 任务请求校验交由插件执行:删除宿主按请求成员名称递归套用用量限制的逻辑,避免将业务字段误认为计费字段;宿主继续校验插件返回的用量事实及单位边界。Kling 统一从实际发送请求所用的 metadata.duration 或顶层 duration 获取时长,并在发送和估算中使用相同结果。
  • OpenAI 12 小时缓存写入独立计价:增加 prompt_cache_options、缓存写入 TTL 明细和 cc12h 表达式变量,贯通 DTO 复制、用量合并、倍率结算、表达式结算、价格迁移、日志和前端展示。12 小时数量受缓存写入总量约束;未单独配置 cc12h 时按短效写入价格的两倍折算。gpt-6-astra 内置表达式增加对应价格,管理员已有覆盖继续优先。
  • 补齐 Claude 未拆分缓存写入计费:上游只报告缓存创建总量,或 5 分钟与 1 小时明细不完整时,将未标明部分归入短效写入。表达式未单列长效或短效写入变量时,按既定倍率并入对应兜底计价变量;上下文长度继续使用真实数量。
  • 保留客户端 JSON Schema 属性顺序:工具参数及相关 Schema 改用原始 JSON 承载,协议转换、模型控制、字段过滤以及参数复制和移动尽量保留嵌套对象原始顺序。Claude 工具追加和读取继续兼容;Ollama、DeepSeek、AWS 及相关转换调用点同步适配。relaykit 的相关 Go 字段类型发生变化。
  • 正确结束已交付的 Responses 流:成功写出完成事件后明确结束扫描;向上传递写入和刷新错误,避免将未交付内容视为完成。清理阶段关闭上游产生的读错误不再覆盖真实结束原因;只在满足已成功交付完成事件等条件时修正取消竞态。
  • 大体积流事件使用累计写入预算:将每次写入固定延长超时改为按累计字节量计算排空预算,兼顾大图片等流事件的慢速接收和停止读取客户端的超时回收。统一包装流响应写入器,移除分散调用旧 ExtendWriteDeadline 的方式。
  • 同步价格支持站点汇率调整:价格同步增加保持原价、乘汇率和除汇率选项,并可包含当前价格相同的模型。每次从原始报价重新计算,预览最终保存值;表达式只调整可识别的价格叶子,保留条件、图片数量和请求倍率。无效汇率、溢出或无法可靠调整的表达式明确报错。
  • 使用日志支持复制模型名称:日志模型标识及详情使用现有复制组件,便于复制请求模型和可见的模型信息;保留模型不匹配提示、详情入口以及本项目已有的权限过滤。
  • 高级自定义渠道保留请求体透传设置:高级自定义渠道始终展示透传配置,保存时保留管理员明确选择的 pass_through_body_enabled,不因渠道类型隐藏或丢弃设置;风险提示按渠道类型说明实际作用。
  • 语言包排序与新增文案同步:接入上游语言键排序及缓存 TTL、普通渠道定价、汇率调整等文案。七种语言均保留本项目新增键;逐键比较未发现本地键丢失或上游本轮翻译变化遗漏。

功能改进

  • 接口与渠道选择:同一模型的共享端点不再由插件声明独占,实际执行路径由合格渠道竞争决定。普通渠道与任务渠道的计费表达式单位必须区分;不兼容配置会在提交前拒绝。原生插件上传增加 multipart 支持,整体请求体保护继续保留。
  • 缓存费用与用量日志:12 小时 OpenAI 缓存写入和未完整拆分的 Claude 缓存写入会按新规则结算,相关请求费用可能不同于旧实现。消费日志增加长效缓存明细,价格预览、旧倍率转换和表达式编辑同步识别这些类别。
  • 累计按秒任务计费:此前未发布的按秒计费更新改为读取插件标准化 seconds、resolution 事实,冻结提交时的基础价、分辨率价格表和分组倍率。完成时按有效实测值结算,显式零秒可全额退还,缺失或无效实测值保留预扣,失败任务沿原退款路径处理。旧 duration_field、resolution_field 请求字段选择方式退出编辑和读取流程;缺少必要用量事实的请求在提交前拒绝。
  • 累计站点状态与导航权限:站点状态页改用最近一小时最多 5,000 条实际请求日志,按请求 ID 去重并排除模型测试,展示分组的 5 分钟、30 分钟和 1 小时成功率及最近请求时间线;界面明确说明采样范围。智力测试、请求状态和官方状态可分别关闭,服务端对隐藏数据端点要求管理员权限;仪表盘原探测数据入口保留原访问策略。
  • 累计智力测试界面:每组保留最多 20 张最新结果卡片,保留分组切换和放大预览,移除此前的搜索及状态筛选控件。已访问的预览保留文档,通过暂停动画、计时器和查询减少离屏及滚动期间活动;继续使用不具备同源权限的 iframe 沙箱和禁止联网的 CSP。
  • 数据与兼容性:任务私有 JSON 增加可选按秒价格快照,结算时同步保存额度与计费事实;旧快照仍有兼容读取路径。新增请求状态查询通过 GORM 选择字段,并保留 ClickHouse 排序分支。本轮没有新增表结构迁移或调整 GORM、数据库驱动版本;三数据库和独立日志库验证交由外层执行。relaykit 工具参数字段改为 json.RawMessage,Go 调用方需同步适配。
  • 认证、权限和日志:登录、会话、PAT 和认证核心实现没有本轮累计改动。监控访问控制在服务端执行;任务驱动新增请求头上下文排除网关凭据。stream_status 完整采用上游公开字段及原始内容,渠道信息、上游请求 ID、中间重试日志和执行轨迹继续遵守现有权限边界。
  • 部署与发布:累计范围内未改变依赖版本、Docker 配置和发布工作流,继续沿用现有构建及发布前置检查。2026-10-20 的预约未被当作本次直接发布授权;发布说明需覆盖本轮更新、累计按秒计费和监控调整,并原样保留 risks 中已核实的六项既有限制。

问题修复

  • 统一端点使用普通渠道或插件:用户继续使用既有 API;管理员可让普通渠道和匹配的任务插件参与同一端点选路,并分别配置价格。插件业务校验不会提前改写最终交给普通渠道的请求。
  • 缓存与任务费用:缓存按真实总量及 TTL 明细结算;任务按提交时冻结的价格和插件有效实测事实调整。日志展示相应缓存、时长和分辨率信息,原有预扣、补扣与退款边界继续生效。
  • 流式响应与结构化输出:大事件允许按传输量获得写入时间预算;已成功交付的完成事件不会再被清理阶段误判为断连。工具和结构化输出请求尽量保持客户端 Schema 属性顺序。
  • 管理界面:管理员可按站点汇率预览并调整同步价格,可编辑普通及插件价格,可持续配置高级自定义渠道透传;日志中可复制模型名称。无法可靠调整的表达式保留人工处理入口并提示原因。
  • 站点状态和智力测试:站点状态依据实际请求展示分组健康情况;管理员控制三个公开栏目及登录要求。智力测试按组展示最新结果,滚动、离屏或页面隐藏时暂停预览活动,放大查看继续可用。
  • 日志可见性:用户可见完整上游 stream_status;其他渠道诊断、上游请求链、中间重试和执行轨迹仍按本项目既有角色权限返回。公开请求状态只输出汇总和时间线,不输出请求 ID。

移除与调整

  • controller/relay.go、relay/channel/openai/helper.go、relay/helper/common.go、relay/helper/stream_scanner.go:接入上游统一写入预算和完成事件处理,移除旧 ExtendWriteDeadline 调用及吞掉 Responses 写入错误的包装;保留本项目输出标记、Claude ping 语义、错误事件格式和原有响应头控制。
  • types/price_data.go、service/text_quota_test.go:合并两套字段和用例,保留 SecondPriceSnapshot、缓存监控统计断言及新增 12 小时缓存写入结算断言,没有择一删除。
  • web/src/features/channels/components/drawers/channel-mutate-drawer.tsx、web/src/features/channels/lib/channel-form.ts:保留明确的布尔设置序列化,采用上游始终展示透传字段和按渠道类型提示的行为,避免编辑后丢失既有配置。
  • web/src/features/pricing/lib/billing-expression/visual.ts、web/src/features/system-settings/models/tier-price-fields.tsx、web/src/features/system-settings/models/visual-billing-document-editor.tsx:统一为 imageCount,保留整个价格树的数量乘法、原始表达式片段及新增分支括号处理,同时加入 cc12h 编辑和标签;保留双方相关回归用例并复核左右乘数及新增、替换分支场景。
  • web/src/features/system-settings/models/model-pricing-sheet.tsx:同时保留分辨率价格状态和 ordinaryPricingModel 状态;普通价格切换时先保留插件继承表达式,按秒编辑及原有预览继续存在。
  • web/src/features/system-settings/models/upstream-ratio-sync-helpers.ts、web/src/features/system-settings/tests/pricing-sync.test.tsx:保留小额价格显示处理和原同步用例,合入汇率调整上下文、原始报价重算、最终价格预览及新增回归场景。
  • web/src/i18n/locales/en.json、web/src/i18n/locales/fr.json、web/src/i18n/locales/ja.json、web/src/i18n/locales/ru.json、web/src/i18n/locales/vi.json、web/src/i18n/locales/zh-TW.json、web/src/i18n/locales/zh.json:按上游相对共同祖先的逐键变化合并并执行国际化同步,保留所有本地键;最终七种语言均可解析,未发现本地键或上游本轮翻译变化丢失,临时脚本已清理。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。

自上次正式发布以来的累计提交

  • c92bb66 chore: save local changes before upstream sync
  • b8b5c53 fix: use plugin usage facts for per-second task billing

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。

v2026.10.22

Choose a tag to compare

@github-actions github-actions released this 21 Oct 17:17

版本概览

  • v2026.10.22 合并了经过兼容审查和完整验证的上游更新。
  • 工作树内容审查结论为可完成合并。已核对 origin/main(bab7fa7e8)、共同祖先(206e0fa5c)、upstream/main(7d8b91268)及合并结果,并审查 v2026.10.21(a3966cdd7)至候选内容的全部累计差异。本轮涉及 8 个文件,累计涉及 35 个文件;未发现需要额外修复的文本或语义冲突。

新增功能

  • 统一提升后端构建工具链:上游 7d8b912 将根模块最低 Go 版本及 Heroku 构建提示调整为 1.26.10,生产镜像切换到固定摘要的 golang:1.26.10-alpine,开发镜像同步升级;Electron 和三个平台的发布构建改为读取 go.mod。上游提交说明该更新针对 CVE-2026-111943,本次未联网独立核实漏洞公告。
  • 升级压缩库并同步校验值:上游 eea05e0 将 github.com/klauspost/compress 从 1.18.3 升至 1.18.7,并更新 go.sum。项目直接使用该库处理 zstd 请求解压;现有解压后大小限制、无效输入处理和资源关闭逻辑均保留,未修改业务接口。
  • 升级前端测试框架:上游 4d36f2c 将 Vitest 从 4.1.10 升至 5.0.4,同步更新 mock、断言和相关传递依赖。锁文件中的旧测试内部包随依赖结构调整移除,并为仍依赖旧版 magic-string 等包的构建工具保留独立版本。本项目额外依赖与安全版本覆盖未被删除,package.json 与锁文件的依赖及覆盖配置一致。

功能改进

  • 构建与部署:根模块构建要求提升至 Go 1.26.10,镜像及发布任务同步采用该要求。relaykit 和 tokenkit 的独立模块声明、本地 replace 关系及独立检查流程保留;已有部署配置和业务配置项不变。完整构建及数据库验证仍由外层执行。
  • 累计接口与价格管理:此前未发布的价格管理改动为模型价格快照增加 has_builtin_pricing 布尔字段,区分引擎是否提供默认价格;管理员覆盖价格不会使该标识消失。该字段只提供来源说明,不修改生效价格、保存版本、预扣或结算逻辑;旧服务端未返回该字段时,前端不猜测来源。
  • 累计日历与弹窗交互:共享日历使用稳定的子组件,修复选择日期时节点重建和焦点丢失,接通日期按钮焦点引用并强化区间高亮;已有时间输入和确认后应用行为保留。共享弹窗的 initialFocus 类型扩展为底层支持的完整类型,继续兼容原有布尔参数。
  • 累计监控界面:智力测试结果增加模型、分组和题目搜索、状态筛选、分组计数及卡片分组跳转;结果区域独立滚动。刷新失败时保留已有数据并展示提示,继续由查询层按运行状态轮询,关闭刷新控件的重复计时请求。预览沿用懒加载、页面隐藏暂停和沙箱限制,放大后提供标题焦点及关闭后的焦点恢复。
  • 累计布局与国际化:价格编辑页恢复上游表格宽度、行内标签和标准分页,同时增加默认价格来源标识及清除配置提示。七种语言均增加相同的七项翻译键,占位符完整;缓存历史不回填提示仅调整排序,没有删除或改写其含义。
  • 数据库:累计新增的 has_builtin_pricing 属于响应快照结构,不是持久化表字段。没有新增数据库迁移,也没有更改 GORM 或数据库驱动版本;既有日志索引和独立日志库路径保留,不据此宣称三数据库兼容验证已完成。
  • 发布说明与预约:发布说明应同时覆盖本轮依赖升级及此前未发布的日历、价格标识、智力测试界面更新,并继续列明 risks 中的既有限制。已读取日期为 2026-10-20 的预约配置及长期风险策略,未将预约或已接受限制解释为可以忽略新增风险或直接发布。

问题修复

  • 上游更新:后端和发布构建使用 Go 1.26.10 要求及 compress 1.18.7,前端测试配置使用 Vitest 5.0.4;业务接口和既有部署流程继续沿用本项目实现。
  • 价格管理:管理员可以识别模型是否具有内置默认价,并在编辑时看到删除自定义价格的影响提示;该标识不表示当前正在使用默认价,也不直接改变收费结果。
  • 日期范围选择:用户选择日期后保持焦点,可继续用键盘移动日期;区间高亮更清晰,已编辑的起止时间继续保留,点击确认后才应用。
  • 智力测试结果:用户可以按分组、状态和搜索词查看结果,从卡片跳转分组,并放大预览;部分模型完成后可以先查看结果,其他模型继续显示自己的进度。刷新失败保留上次数据,页面隐藏时沿用查询层的后台轮询控制。
  • 日志与统计:stream_status 保持已确认的上游可见性和原始内容;其他管理员字段继续执行现有权限边界。仪表盘缓存统计仍提示仅记录升级后的用量,不回填历史。

移除与调整

  • 保留本项目已有二开功能和兼容行为;本次发布由自动审查确认无未解决冲突。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。

自上次正式发布以来的累计提交

  • bab7fa7 fix(web): improve intelligence test gallery layout and interactions
  • 70c8a5f fix(pricing): restore upstream layout and identify built-in defaults
  • a66cddc fix(web): stabilize calendar selection and range highlights

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。