Skip to content

Releases: azoway/somanyapikeys

v0.7.2

Choose a tag to compare

@github-actions github-actions released this 27 Jul 12:55

管理台新增可持久化的明亮主题,并修复发布门禁发现的启动期数据库探测 context 问题。

新增

  • 管理台新增明亮 / 暗黑主题切换,登录页与控制台顶部均可操作。
  • 主题选择保存在浏览器 localStorage,刷新或重新登录后保持;页面首屏加载前应用主题,避免闪烁。
  • 明亮主题覆盖侧栏、面板、表格、图表、弹层、提示与窄屏布局,并保留中英文无障碍标签。

修复

  • 启动期密文探测改用带 5 秒超时的 QueryRowContext,避免锁住或异常数据库无限阻塞启动,并满足 CI noctx 门禁。

Full Changelog: v0.7.1...v0.7.2

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 27 Jul 08:37

v0.7.0 发布后审查修复:访问密钥 fail-closed、加密 sidecar 防误重生、调度/代理热路径正确性,以及总览页版本展示。

升级须知

  • 禁用 / 过期的已知访问密钥 fail-closed。GATEWAY_TOKEN 同值时也不会被 legacy 回退复活;仅库中无对应行的 env token 仍可作为无租户回退。
  • 库内已有密文时,缺少 key_encryption.salt / key_encryption.secret 会拒绝启动(不再静默重生导致密钥全丢)。请始终同时备份/恢复 gateway.db 与两个 sidecar。

新增

  • 管理台总览展示构建版本(GET /admin/api/configversion / commit / build_date,来自 ldflags)。

修复

  • 禁用 / 过期的已知访问密钥 fail-closed:与 GATEWAY_TOKEN 同值时也不再被 legacy 回退复活。
  • GET /v1/models 遵守访问密钥模型白名单,不再泄漏完整目录。
  • 创建访问密钥原子写入 expiry / quota / allowlist;非法 JSON 返回 400。
  • 出站 HTTP 重定向CheckRedirect 不再对未解析主机名调用 dial guard(避免合法公网跳转被误拒);实际连接仍由 dial 后 ip:port 守卫。
  • 备份导入 UIsettings_applied / settings_rejected 按 map 计数(此前恒为 0)。
  • 落盘加密 sidecar fail-closed:空 key_encryption.secret 不再静默重生;secret 创建改为 O_EXCL;已有密文的 DB 在缺少 salt/secret 时拒绝启动(避免只恢复 gateway.db 导致密钥全丢)。
  • 调度 RR 不再跨 band:公平轮转仅在相同 priority + status + 计数器并列键内进行,保留 affinity 与质量排序。
  • 容量类失败不降权 status:除跳过 fail_count 外,status 保持 valid,避免共享 worker 限流把健康 Key 排到 rate_limited 之后。
  • 候选缓存 generation:invalidate 后并发 fill 不会写回陈旧快照。
  • max_inflight 在 endpoint 槽位之后再占用,排队等待不再占住 per-key 并发配额。
  • stream 以 body 为准:显式 "stream": false 不被 Accept: text/event-stream 覆盖。
  • 纯客户端 4xx 不记 Key 失败(404 资源未找到、校验错误等),避免污染 Laplace 排序。

变更

  • README 访问密钥 / 盐与备份说明与 fail-closed 行为对齐。

Full Changelog: v0.7.0...v0.7.1

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 07:05

多租户访问密钥、用量趋势、Webhook 告警、质量感知调度、一键备份、Responses API,以及发布前审查中确认的正确性修复。

升级须知

  • 启动会把可读的 enc:v1: 重加密为 enc:v2:api_keysaccess_keysmeta.admin_token)。迁移成功后,这些记录需要 key_encryption.secret key_encryption.salt 才能解密。请勿再按 v0.6.0 文档假设「历史 v1 永久只靠 secret 恢复」。盐文件仍与 DB 分开备份;盐丢失后启动会生成新盐,旧 enc:v2:(含已迁移行)永久不可读。
  • GATEWAY_TOKEN 与库中同值访问密钥时,优先走访问密钥鉴权。 过期 / 配额 / 模型白名单 / 日志归属会生效。仅存在于环境变量、库中无对应行的 legacy token 仍可作为无租户回退。
  • 管理台「设置」新增备份与恢复面板(配置包 JSON + 在线 DB 快照)。DB 快照不含 secret/salt。

新增

  • 多租户访问密钥:过期时间、生命周期 Token 配额、模型白名单、请求日志 access_key_id 归属;总览页可管理。
  • 按天用量统计daily_usage 汇总、/admin/api/usage/*、仪表盘近 30 天趋势图。
  • Webhook 告警:Key 自动禁用、池耗尽、探测失败尖峰;支持 generic / 飞书 / 企微 / Telegram。
  • 质量感知调度:候选 Key 按 Laplace 平滑成功率排序;可选 per-key max_inflight 并发上限。
  • 一键备份 / 恢复:配置包导出导入(端点、上游 Key、映射、访问密钥、运行时设置)+ 在线 VACUUM INTO 数据库快照。
  • OpenAI Responses API/v1/responses 一等公民;usage 同时识别 chat 与 Responses 字段方案;不对 Responses 注入 stream_options
  • enc:v1enc:v2 启动迁移:可读历史密文在 Open 时重封装。

修复

  • 盐文件创建竞态(O_EXCL)、空盐 fatal、环境 Token 错误面、CORS Vary: Origin、设置 Apply 串行持久化。
  • 管理台 renderSeq:慢请求不再覆盖新结果;滚动恢复与登录序号修正。
  • 访问密钥优先于 legacy GATEWAY_TOKEN,避免种子密钥绕过租户控制。
  • 容量类失败不计入 fail_count,避免共享 worker 限流污染成功率排序;排序改为真实 Laplace (s+1)/(s+f+2)
  • Webhook:并发 POST 上限与 dedupe 映射硬顶淘汰,防止多 Key / 多 model 风暴。
  • 备份导入:零值 expires_at 视为无过期;端点 URL 与 Key/映射查找统一 NormalizeBaseURL
  • Responses:资源路径(retrieve/cancel/delete)在模型白名单下不再因空 model 误 403。
  • /v1/responses 端到端测试按生产约定使用 base_url…/v1

变更

  • 候选排序与容量记账语义见上;Webhook 在超并发时可能丢弃告警并打 WARN(告警仍为 best-effort)。
  • README 功能表、管理 API、盐/备份说明与 v0.7 行为对齐。

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 26 Jul 08:57

Full Changelog: v0.5.0...v0.6.0

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 26 Jul 08:11

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 23 Jul 11:13

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 12:11

Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 11:59

Full Changelog: v0.1.1...v0.2.0

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 22 Jul 08:36

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 08:17