tbphp
|
e888fe6035
|
feat(credentials): 统一全量操作并支持五千条密钥导入 (#587)
* feat(credentials): 统一全量操作并支持五千条密钥导入
* fix(web): 明确恢复全部的凭据范围
* fix(web): 同步密钥导入错误位置上限
* test(requestlog): 修正延迟刷盘测试的同步时序
|
2026-09-07 21:21:16 +08:00 |
|
tbphp
|
33fb54bfe6
|
fix(monitor): 修正最近一小时用量与成本统计 (#588)
|
2026-09-07 20:20:06 +08:00 |
|
tbphp
|
0ddc41d8b7
|
fix(web): 完善 Claude Code 自定义模型接入示例 (#585)
* fix(web): 澄清 Claude Code 模型发现接入说明
* fix(web): 引导通过环境变量配置 Claude Code 模型
|
2026-09-07 13:14:48 +08:00 |
|
tbphp
|
25061d6579
|
feat(pricing): 支持分组与访问密钥价格倍率 (#584)
* feat(pricing): 增加分组与访问密钥价格倍率
* fix(pricing): 在原始总费用计算后应用倍率
|
2026-09-07 12:41:48 +08:00 |
|
tbphp
|
16be863ea5
|
fix(subscription): 允许手动刷新恢复异常订阅凭据 (#580)
* fix(subscription): 允许手动刷新恢复异常订阅凭据
订阅凭据刷新遇到网络故障后落入 outcome_unknown,此后所有刷新入口
全部关闭,重启也不恢复,只能重新连接账号或重新导入。
新增 RefreshForManualRecovery 作为唯一允许恢复异常认证状态的入口,
仅由管理面「刷新凭据」使用;数据面自动刷新、模型发现与额度观测继续
沿用原有门禁。放开后原代码「只有 ready 能进入刷新」的前提失效,同步
修正三处连带问题:
- 临时失败与启动失败不再无条件写回 ready,改为写回进锁时的原状态,
避免一次 503 把状态未知的凭据洗白并放回调度
- 残留 refreshing 归一为 outcome_unknown 再参与恢复,避免界面长期
显示正在刷新
- 版本复用分支增加认证状态与运行时一致性确认,版本变大不再单独作为
刷新成功的依据
调度排除、状态展示、失败分类与额度同步入口均保持不变。
Closes #571
* fix(subscription): 修正手动恢复的运行时确认与错误归属
Review 发现放开人工恢复后遗留两处边界:
- ensureRuntimeMatchesDurableSecret 依赖 ReconcileGroup 修复运行时,
但后者只比较持久化配置,不含 auth_state。运行时版本已是最新、仅
认证状态落后时会被判定为无需变更并返回成功,账号实际仍不可调度。
改为先定向同步认证状态,并在返回成功前重新确认版本与状态一致
- 失败分支把用于持久化的历史错误码直接用于 API evidence,异常账号
重试遇到网络失败时会报告旧的认证问题,残留 refreshing 的
refresh_interrupted 还会落到需要重新授权的兜底映射。持久化继续
沿用原状态与原错误码,evidence 改为依据本次失败分类生成
新增两个用例:版本相同仅认证状态落后时经真实 ReconcileGroup 修复;
原状态明确失效或残留 refreshing 时本次网络失败报告为结果未知。
|
2026-09-07 09:49:55 +08:00 |
|
tbphp
|
b621d09a8f
|
fix(i18n): 修正订阅凭据刷新拒绝文案硬编码 Codex 品牌名 (#581)
|
2026-09-07 09:07:20 +08:00 |
|
tbphp
|
18079996f0
|
refactor(settings): 重构设置页分区并统一分组设置的覆盖交互 (#576)
* refactor(settings): 按业务语义重排配置分区,收敛默认态展示密度
- 路由策略并入亲和分区(路由与调度),validation_interval 移出超时分组并入重试/凭据健康,
models_dev_auto_sync_enabled 从请求转发移至数据与维护,header_rules 与 inject_usage_options
合并为上游请求改写;6 个分区拆为 7 个语义更清晰的分区。
- 新增 SettingRow 承载默认态单行展示、覆盖态才展开控件与说明文字,默认态徽标与操作按钮收敛,
避免逐字段重复常驻的说明文案。
* refactor(settings): 抽取 SettingRow 为共享组件并同步分组设置页展示密度
- SettingRow 从设置页移至 components/config,替换分组设置页运行时区块里的
RuntimeOverrideRow,行为对齐:默认态收敛徽标/按钮、覆盖态才展开控件与说明。
- RuntimeOverrideRow 无剩余引用,一并删除。
- 顺带修正分组页 inject_usage_options 折叠态展示 help 文案而非当前值的问题,
改为展示已启用/已禁用,说明文字移入 help 提示。
- 请求亲和沿用原有 SegmentedControl 三态控件,未纳入本次迁移。
* fix(settings): 按反馈调整 SettingRow 交互细节
- 提示统一用已有 AppTooltip 组件,替换原生 title;且不论是否覆盖,说明都只在
标签旁以 tooltip 展示,不再于覆盖态额外常驻一份。
- 覆盖/恢复默认按钮从行尾移到值后面,改回可见的按钮样式,不再靠悬停淡入。
- 覆盖态不再叠加“显式覆盖”徽标,仅保留左侧强调色与底色区分;待恢复/环境变量
锁定两种状态的徽标保留。
- 路由策略改用 SegmentedControl 二选一切换,替换下拉选择,和代理等控件观感一致。
- 各分区行列表之间补上小间距,避免行与行贴在一起。
* fix(settings): 覆盖/恢复默认按钮改为图标 + tooltip
文字按钮换成小方形图标按钮:覆盖用 PencilLine,恢复默认用 RotateCcw,配色沿用
原有 action/warning 两种 tone;按钮不再显示文字,改为 hover/聚焦时通过
AppTooltip 展示对应文案,无障碍上保留 aria-label。
* fix(settings): 覆盖/恢复默认图标去掉按钮底色,仅悬停反馈
去掉常驻边框和背景色,图标默认裸露显示,与旁边的说明提示图标风格保持一致;
悬停/聚焦时才出现对应 tone 的浅色背景。
* fix(settings): 覆盖图标恢复悬停显示
未覆盖态(含待恢复默认)的“覆盖”图标恢复为鼠标悬停/键盘聚焦到该行才显示,
平时隐藏;已覆盖态的“恢复默认”图标保持常驻可见,因为该行本身已有强调色和
底色区分,不需要靠图标常驻来提示。窄屏和纯触屏环境下始终显示,避免无法触发。
* refactor(settings): 移除 inject_usage_options 并统一设置页控件尺寸
移除 inject_usage_options 配置,改为始终注入:
- 该开关只在「OpenAI Completions + 原生透传 + 流式」这一条路径生效(转换路径的
usage 来自 SDK,Anthropic/Gemini 原生流自带 usage),默认即为开启,暴露为用户
配置的收益远低于理解成本。
- 后端删除设置键、分组覆盖与渠道约束校验,IncludeUsage 固定为 ObserveUsage;
新增迁移 0008 清理 system_settings 行与分组 overrides 中的历史键,否则解析器
会以 "unknown runtime setting" 拒绝整份配置。
- 前端删除两处设置行、资源投影字段与三语文案。
设置页与分组设置页的控件:
- 新增 --setting-control-height,并在 .setting-row/.setting-block 上覆盖
--control-compact/xs/sm,让输入框、切换控件、下拉统一小一档;变量继承进子组件,
不需要和组件自身 scoped 样式比优先级。
- 固定行内容高度,折叠态与覆盖态不再有高度差,点开编辑时行不会跳动。
- 块级说明(CORS 策略、下游响应头规则)从常驻小字改为标签旁 tooltip,与设置行一致。
分组设置页删除只读的渠道展示:顶部已有渠道信息,此处重复且不可编辑。
* fix(storage): 修复迁移 0008 在 PostgreSQL 上的两处方言问题
- 反引号是 MySQL/SQLite 语法,PostgreSQL 解析 `key` = ? 直接报 syntax error,
导致启动中断。改用 GORM 结构体条件,由驱动按方言自行加引号。
- 往 json 列写 []byte 时 PostgreSQL 驱动按 bytea 处理,报 invalid input syntax
for type json。改为写字符串。
已在 SQLite / PostgreSQL 16 / MySQL 8 三种方言上实跑升级路径:注入历史的
system_settings 行与分组 overrides 后启动,确认键被清除、分组只剩其余覆盖、
迁移正常记账。
* refactor(settings): 合并上游 Header 到跨域分区,统一控件尺寸与请求头/响应头命名
- 分组页控件尺寸未跟着变小,是因为上一轮的尺寸变量覆盖只挂在 .setting-row/
.setting-block 上;分组页的姓名/验活模型输入框、权重与请求亲和的 SegmentedControl
都不在这两个类名内。改为挂在 .settings__content/.group-settings__content 内容区
(不含侧边导航与保存栏),覆盖 --control-compact/xs/sm/md 四个尺寸变量,让设置页
和分组页的所有交互控件统一收敛到 26px。
- "上游请求改写"分区被删除,header_rules 合并进浏览器访问分区,与 CORS、
下游响应头规则放在一起(顺序:CORS → 上游请求头规则 → 下游响应头规则);
该分区原本只剩 header_rules 一项(inject_usage_options 上一轮已删除),
单独占一个侧边菜单已经没有意义。
- 请求头/响应头命名统一:全局设置页"全局 Header Rules"改名"上游请求头规则",
与已有的"下游响应头规则"对称;分组页"HeaderRules"同步改名"上游请求头规则"。
新分区标题定为"Header 与跨域"。
- 清理合并后失效的 settings.headers.* 键(title/currentPublishedRuleCount/
defaultSource/overrideSource/pendingRestoreSource/override/restoreDefault/
inherited/resetPending/replacementWarning/securityNotice),改用已有的
settings.runtime.* 通用状态词汇,与 CORS、下游响应头规则保持一致。
已用真实浏览器验证:分区合并后的顺序与文案、校验横幅跳转到正确分区并定位到
非法输入框、分组页控件高度与设置页一致。
* refactor(group-settings): 统一请求亲和与上游请求头规则的覆盖交互
请求亲和由三态 SegmentedControl 改为 SettingRow 覆盖/恢复默认模式;
上游请求头规则由 details 折叠改为 SettingBlock,并补上独立的覆盖开关,
与设置页的交互模式完全一致;同步移除废弃的展开态路由状态与文案。
* fix(group-settings): 恢复默认时不再回显未保存的旧覆盖值
分组已保存覆盖值后,草稿中点击恢复默认会读到仍是旧覆盖值的 effective
快照,导致视觉上"看起来没变"。为出站代理、超时/次数类、请求亲和、
上游请求头规则补充待恢复态:展示占位文案与徽标,保存后才回填真实的
全局生效值,与设置页面的重置反馈保持一致。
* feat(group-settings): 验活模型改为可搜索候选输入
复用参数覆盖规则里模型输入的 datalist 模式,把分组当前模型作为候选,
输入即过滤;候选取上游模型 ID(验活按该值请求上游),别名作为副标题
展示。后端不限制该值,仍保留自由输入。
* fix(settings): 按 review 处理迁移账本断言与三处设置项细节
- 外部数据库契约里的迁移账本断言硬编码到 0007,只在 PostgreSQL/MySQL 下
执行,本地 SQLite 会跳过,导致 0008 落库后仅 CI 报错
- 下游响应头规则的待恢复态未取草稿值,取消覆盖后仍回显旧规则,与同区的
上游请求头规则表现不一致
- 连接与可靠性分区的数字输入清空后写入 0,其中重试次数与拉黑阈值的 0 合法,
会被静默保存;改为与路由分区一致按 NaN 处理
- 修正 pendingRestoreSource 的英文文案
|
2026-09-06 22:54:21 +08:00 |
|
dependabot[bot]
|
51a505b202
|
chore(web): bump the web-minor-and-patch group in /web with 2 updates (#578)
Bumps the web-minor-and-patch group in /web with 2 updates: [@lucide/vue](https://github.com/lucide-icons/lucide/tree/HEAD/packages/vue) and [vue-router](https://github.com/vuejs/router).
Updates `@lucide/vue` from 1.38.0 to 1.39.0
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/1.39.0/packages/vue)
Updates `vue-router` from 5.3.0 to 5.3.1
- [Release notes](https://github.com/vuejs/router/releases)
- [Commits](https://github.com/vuejs/router/compare/v5.3.0...v5.3.1)
---
updated-dependencies:
- dependency-name: "@lucide/vue"
dependency-version: 1.39.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: web-minor-and-patch
- dependency-name: vue-router
dependency-version: 5.3.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: web-minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
2026-09-06 22:37:21 +08:00 |
|
dependabot[bot]
|
da46438b55
|
chore(deps): bump the go-minor-and-patch group with 3 updates (#577)
Bumps the go-minor-and-patch group with 3 updates: [github.com/buger/jsonparser](https://github.com/buger/jsonparser), [github.com/klauspost/compress](https://github.com/klauspost/compress) and [golang.org/x/crypto](https://github.com/golang/crypto).
Updates `github.com/buger/jsonparser` from 1.2.0 to 1.6.1
- [Release notes](https://github.com/buger/jsonparser/releases)
- [Changelog](https://github.com/buger/jsonparser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/buger/jsonparser/compare/v1.2.0...v1.6.1)
Updates `github.com/klauspost/compress` from 1.19.2 to 1.20.0
- [Release notes](https://github.com/klauspost/compress/releases)
- [Commits](https://github.com/klauspost/compress/compare/v1.19.2...v1.20.0)
Updates `golang.org/x/crypto` from 0.55.0 to 0.56.0
- [Commits](https://github.com/golang/crypto/compare/v0.55.0...v0.56.0)
---
updated-dependencies:
- dependency-name: github.com/buger/jsonparser
dependency-version: 1.6.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: go-minor-and-patch
- dependency-name: github.com/klauspost/compress
dependency-version: 1.20.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: go-minor-and-patch
- dependency-name: golang.org/x/crypto
dependency-version: 0.56.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: go-minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
2026-09-06 22:28:28 +08:00 |
|
tbphp
|
4a99ab1496
|
fix(subscription): 修复被动额度契约缺失与来源误归属 (#575)
* fix(ui): 接受订阅额度窗口的 source_id 字段
修复 #574 新增 source_id 后前端严格投影拒绝成功响应的问题。补齐可选 DTO 字段、白名单及字符串投影,保持其他未知字段校验,不修改后端额度匹配或限流行为。
新增前后端额度字段契约回归测试,避免后端新增字段却遗漏前端白名单和 DTO。
* chore(ui): 移除额度字段修复中的跨语言契约测试
* fix(subscription): 按 Active-Limit 判定被动额度通用组的归属
上游的 X-Codex-Primary/Secondary-* 报告的是本次请求实际计费到的额度,
而不是固定的普通账号额度。请求 Spark 等专属额度时这一组装的是该额度的
副本,按 codex 收下会用它覆盖同周期的普通窗口,把用尽的 7d 刷成满额。
改为由 X-Codex-Active-Limit 决定该组归属:premium/codex 归普通额度,
指向专属额度时改绑到该来源,上游已单独报告该来源则让位避免歧义。
缺少该头且响应里已有别的来源时按副本丢弃。
* fix(subscription): 按窗口去重被动额度副本而非丢弃整组
Active-Limit 指向专属额度时,通用组只有与独立命名空间来源和周期都相同
的窗口才是重复报告。原先只要该来源存在任意窗口就丢掉整组,会漏掉另一
个周期的刷新。改为解析后按来源加周期逐窗口去重。
* fix(subscription): 限定被动额度去重只比较独立命名空间
通用组内部的 primary 与 secondary 是两份数据而非互为副本,周期相同时
原实现让它们互相判定为重复并双双丢弃。去重范围收窄为通用窗口与独立
命名空间窗口之间。
|
2026-09-06 11:55:18 +08:00 |
|
tbphp
|
2aa5002a45
|
fix(subscription): 按来源和周期匹配 Codex 被动额度窗口 (#574)
* fix(subscription): 拒绝跨周期的被动额度覆盖
被动额度合并前校验已有窗口与样本的周期;同 ID 但周期冲突时丢弃整个窗口补丁,避免 7d 被改成 5h,同时污染用量、重置时间及健康摘要。
保留兼容窗口与缺少周期字段的增量更新行为;补充合并与持久化回归测试,不改变限流、额度池或路由调度。
* fix(subscription): 按来源和周期匹配 Codex 被动额度
主动同步保留 metered_feature,响应头按命名空间生成相同来源标识;不依赖模型名称或 Limit-Name。
按同一账号内的来源与实际周期唯一匹配已有窗口,允许 primary/secondary 槽位变化,但保留卡片 ID 与展示元数据。缺少来源/周期或存在歧义时不覆盖;其他渠道继续使用原有 ID 匹配。
补充解析、跨槽位合并、来源隔离、控制面序列化及持久化健康投影测试。无 429、路由或调度改动;旧快照需主动同步一次补齐来源。
* docs(subscription): 修正被动额度快照合并的注释说明
明确无变化时保持原始字节,仅在窗口数据变化时重新编码;不修改任何运行逻辑。
|
2026-09-06 09:29:35 +08:00 |
|
tbphp
|
2b23d8a62a
|
feat(ui): 补齐权重、分组启停与日志路由入口 (#572)
* feat(ui): 补齐权重、分组启停与日志路由入口
订阅账号卡片支持调度权重(#535):徽章行只在手动权重时露出 chip,
点击一次完成展开并进入编辑;权重面板落在展开区代理面板之上,两块上下堆叠。
自动权重等同代理的继承态,不在折叠态制造视觉噪音。
代理模式改用分段控件,三个模式直接可见;表单不再折行,地址栏独自吸收
剩余宽度。分段控件新增 xs 尺寸,与同排输入框、按钮统一 26px,
顺带修掉密钥列表权重编辑器原本 30px 与 26px 不齐的问题。
分组列表支持快速启停(#554):开关并入状态列,与徽章相邻以区分
「我关的」和「凭据不可用」。集合项新增 enabled 字段——status 还叠加了
weight_manual 为 0 的历史数据,拿它当开关会出现点击后状态不变的假故障。
追加凭据改为纯图标,省下的宽度抵掉状态列扩宽,总表宽反而更窄。
模型列表展示归属分组(#555):上游行挂分组 chip,最多两枚、其余折叠为 +N,
数据本就随列表返回,此前未被消费。
请求日志路由拆成访问密钥与路由两列(#555):路由列首行渠道图标加分组名、
次行凭据编号,分组名可点击就地筛选。按各列实际内容重算宽度,
压出的空间正好装下新列,总宽与拆列前持平。
* fix(ui): 修正开关反馈延迟、按钮内边距与列举分隔符
分组开关此前绑查询数据,而 AppSwitch 是纯受控组件,点击后要等请求与
refetch 走完才翻转,看起来是个卡住的开关。改为本地乐观置位,请求结束
(成功交还 refetch 结果、失败回滚原值)后再交还查询数据。
代理指示器的按钮形态补上 padding/font 复位:容器是固定 22×22 的
border-box,UA 默认内边距会把 13px 图标挤变形。
模型分组折叠提示原先硬编码中文顿号,会漏进英文与日文界面,改用
Intl.ListFormat 按当前语言格式化。实测须用 conjunction + narrow:
narrow 去掉「和 / and」只留分隔符,而 unit 类型在中日文下根本不插
分隔符,会把名字连成一串。
* fix(monitor): 修正日志骨架屏列数
路由列拆成访问密钥与路由两列后,非访问密钥视图的列头与 grid 都是 9 列,
骨架屏仍按 8 列渲染,加载时与表头错位。两处 SkeletonSurface 一并修正。
* refactor(ui): 撤除分组集合 enabled 字段并精简注释
开关改由 status 派生:weight_manual 为 0 虽然也判定 disabled,但该值经
接口限定在 1~100,只有直接改库才能触发,为此新增响应字段与两个测试
超出了本次 UI 补齐的范围。后端与测试恢复原状,本 PR 回到纯前端改动。
同时精简全部新增注释,只保留解释非显然决策的部分,去掉代码本身已经
说清楚的描述。
* feat(monitor): 日志显示凭据掩码并补齐交互细节
日志响应新增 credential_name:按 ID 从凭据注册表取密文解密后算掩码,
订阅账号给邮箱掩码、API 密钥给密钥掩码。密文常驻内存,整个过程不读
数据库,一页内重复出现的凭据只解密一次;注册表里没有的凭据留空,
前端据此显示「已删除 · #id」,与访问密钥、分组共用同一套回退。
分组开关改走设置页同一条缓存失效链路,切换后进入详情页不再需要刷新。
日志中可点击就地筛选的值扩展到访问密钥、分组、凭据、模型四处,样式
提取为全局 filterable-value,此前两个组件各维护一套雷同规则。
订阅卡片的权重徽标与代理徽标统一改用 AppTooltip 并提示可点击编辑;
模型页的分组 chip 直达该分组的模型 tab;日志详情的凭据后增加复制按钮,
与 request_id 的复制控件同尺寸同图标。
* fix(models): 详情抽屉的分组链接直达模型 tab
与模型列表的分组 chip 保持一致,从模型上下文点进分组不再落到凭据 tab。
* fix: 修复样式
* fix: 访问密钥模型页面修复
|
2026-09-05 21:41:41 +08:00 |
|
tbphp
|
7eb1e3726d
|
fix(web): 补齐 sub2api 图标缺失的 svg 尺寸属性 (#573)
|
2026-09-05 20:05:20 +08:00 |
|
tbphp
|
c86a9ad1da
|
feat(scheduler): 支持原生与转换路由混合权重调度 (#570)
* feat(scheduler): 支持原生与转换路由混合权重调度
* fix(settings): 补齐路由策略当前有效值提示
|
2026-09-05 12:58:22 +08:00 |
|
tbphp
|
ad8be749e3
|
feat(gateway): 增加分组参数覆盖规则 (#546)
* feat(gateway): 增加分组参数覆盖规则
* fix(gateway): 收紧参数覆盖安全边界
* refactor(web): 优化参数覆盖编辑器样式
* fix(web): 修正参数覆盖编辑器实现
* fix: 修正参数覆盖空键与输入推断
* fix: 拒绝参数覆盖中的负零
* fix(gateway): 纳入覆盖后兼容的候选
* fix(gateway): 固定参数覆盖前的路由上下文
* fix(control): 保留参数覆盖数字字面量
* fix(gateway): 统一参数覆盖请求体限制
* fix(gateway): 避免参数覆盖的 HTML 转义膨胀
* fix(gateway): 限制请求内参数覆盖缓存
* fix(parameteroverride): 避免请求整树解码膨胀
* fix(parameteroverride): 避免深层请求重复扫描
|
2026-09-05 12:09:14 +08:00 |
|
tbphp
|
559ed2dc88
|
feat(gateway): 支持数据面 CORS 与响应头规则 (#568)
* feat(gateway): 支持数据面 CORS 与响应头规则
* fix(cors): 修正来源缓存与禁用校验
* fix(cors): 规范化允许来源
|
2026-09-05 10:34:47 +08:00 |
|
tbphp
|
1c81b69223
|
chore(deps): 更新 CPA 至 v7.2.151 (#569)
|
2026-09-05 09:04:22 +08:00 |
|
tbphp
|
ae59a0ae85
|
feat(channel): 增加 Sub2API 渠道 (#567)
|
2026-09-04 22:55:55 +08:00 |
|
tbphp
|
c4cefc0655
|
chore(ci): 收敛主分支检查与命名 (#564)
* chore(ci): 收敛主分支检查与命名
* test(ci): 加强工作流合同断言
|
2026-09-04 19:51:00 +08:00 |
|
 dependabot[bot]andtbphp
|
866f0f13fc
|
chore(ci): bump the github-actions-minor-and-patch group across 1 directory with 2 updates (#559)
* chore(ci): bump the github-actions-minor-and-patch group across 1 directory with 2 updates
Bumps the github-actions-minor-and-patch group with 2 updates in the / directory: [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) and [softprops/action-gh-release](https://github.com/softprops/action-gh-release).
Updates `docker/setup-qemu-action` from 4.2.0 to 4.3.0
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/96fe6ef7f33517b61c61be40b68a1882f3264fb8...1f40c72289eff860ee54a304f1438e3cff362e0a)
Updates `softprops/action-gh-release` from 3.0.2 to 3.0.3
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/3d0d9888cb7fd7b750713d6e236d1fcb99157228...efb35369e0ad2afab669f228072c1b0d510eae64)
---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
dependency-version: 4.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions-minor-and-patch
- dependency-name: softprops/action-gh-release
dependency-version: 3.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions-minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* test(ci): 同步发布 Action 引用
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: tbphp <tangb7420@gmail.com>
|
2026-09-04 18:52:41 +08:00 |
|
dependabot[bot]
|
fefc7a3210
|
chore(web): bump @lucide/vue (#560)
Bumps the web-minor-and-patch group with 1 update in the /web directory: [@lucide/vue](https://github.com/lucide-icons/lucide/tree/HEAD/packages/vue).
Updates `@lucide/vue` from 1.35.0 to 1.38.0
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/1.38.0/packages/vue)
---
updated-dependencies:
- dependency-name: "@lucide/vue"
dependency-version: 1.38.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: web-minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
2026-09-04 18:40:29 +08:00 |
|
tbphp
|
1c30bf6ba7
|
ci: 删除重复依赖漏洞检查 (#562)
* ci: 删除重复依赖漏洞检查
* ci: 禁用 pnpm 安装时的隐式审计
|
2026-09-04 18:27:51 +08:00 |
|
tbphp
|
1953ae83e6
|
feat(web): 增加首次额度刷新引导 (#557)
|
2026-09-04 15:55:20 +08:00 |
|
Ryan Chou
|
d1cb37a11f
|
fix(ci): update references after default branch rename (#556)
|
2026-09-04 12:59:23 +08:00 |
|
tbphp
|
097029ff09
|
fix(gateway): 冻结流终态后的观测结果 (#553)
|
2026-09-04 00:52:22 +08:00 |
|
tbphp
|
1ff3424a7e
|
docs(readme): 优化赞助展示与致谢结构 (#536)
|
2026-09-03 15:49:36 +08:00 |
|
tbphp
|
21fa526a29
|
fix(gateway): 统一 Responses store 路由兼容 (#532)
* fix(gateway): 统一 Responses store 路由兼容
* fix(gateway): 收紧 Responses 降级归一化
* fix(channel): 将 DeepSeek 标记为无状态
|
2026-09-02 19:54:30 +08:00 |
|
tbphp
|
14e8e98c4f
|
fix(settings): 移除 ETag 并简化保存流程 (#530)
|
2026-09-02 16:29:59 +08:00 |
|
 
|
cc990df5a1
|
fix(i18n): honor supported language fallbacks (#519)
* fix(i18n): honor supported language fallbacks
* fix(i18n): preserve valid language preferences
* fix(i18n): 限制语言协商解析开销
---------
Co-authored-by: CaoBochun <caobochun@bytedance.com>
Co-authored-by: tbphp <tangb7420@gmail.com>
|
2026-09-02 15:13:15 +08:00 |
|
tbphp
|
0b8ee145f6
|
fix(gateway): 兼容 Responses store 无状态降级 (#527)
* fix(gateway): 兼容 Responses store 无状态降级
* fix(responses): 收紧无状态降级边界
|
2026-09-02 05:31:56 +08:00 |
|
tbphp
|
e6b752b4db
|
feat(channel): 增加 GPT-Load 上游渠道 (#526)
|
2026-09-01 21:52:38 +08:00 |
|
tbphp
|
1be3587000
|
feat(channel): 增加 CLIProxyAPI 多协议渠道 (#525)
|
2026-09-01 21:07:19 +08:00 |
|
tbphp
|
d7d28370da
|
feat(channel): 增加 New API 多协议渠道 (#524)
|
2026-09-01 19:56:40 +08:00 |
|
tbphp
|
91173361a3
|
fix(import): 无匹配渠道时回退兼容渠道 (#523)
|
2026-09-01 19:04:52 +08:00 |
|
tbphp
|
182367f4d3
|
docs(readme): 增加 AxisNow 赞助商 (#522)
* docs(readme): 增加 AxisNow 赞助商
* docs(readme): 加粗 AxisNow CDN 文案
|
2026-09-01 16:00:14 +08:00 |
|
tbphp
|
718fdae85a
|
feat(group): 增加模型同步与清理 (#518)
|
2026-09-01 10:40:03 +08:00 |
|
tbphp
|
85b6f79dac
|
fix(home): 同步套餐徽标等级配色 (#517)
|
2026-09-01 07:39:17 +08:00 |
|
tbphp
|
a7d11adf96
|
重做首页常用订阅账号卡片视觉设计 (#515)
* feat(home): 重做首页常用订阅账号卡片视觉设计
* fix(home): 常用订阅账号容器改为换行网格,去掉横向滚动
* fix(home): 首页常用订阅账号上限改回 4 个,PC 默认单行不换行
* fix(home): 修复 mini card 焦点窗口选择与标签周期丢失问题
* fix(home): 修复迷你订阅卡额度与可用状态显示
* fix(home): 优先展示已耗尽额度窗口
|
2026-09-01 06:50:29 +08:00 |
|
tbphp
|
30a1bac965
|
fix(release): 修正 CPA 版本文档漂移与数据库合同测试遗漏 (#514)
* fix(release): 修正 CPA 版本文档漂移与数据库合同测试遗漏
THIRD_PARTY_NOTICES.md 与 cpaembedded/README.md 的 CLIProxyAPI 版本号
未随 #507 依赖升级同步,仍是 v7.2.143(实际 v7.2.144)。
ci.yml 与 release.yml 的数据库合同测试 -run 正则手工维护测试名单,
已产生漂移:ci.yml 含一个不存在的测试名(静默不匹配),两者都缺失
TestExternalDatabaseMySQLRecoversObservationFreshnessCheckDrop,
release.yml 还缺失 TestExternalDatabaseAccessKeyCostLimitPeriodPermutation。
改为按前缀匹配同目录下全部 TestExternal* 测试,避免后续再次漂移。
补上 ja-JP/settings.ts 缺失的 runtime.pendingRestoreSource key,
该 key 在 4 个组件共 8 处引用,此前日文界面回退显示英文文案。
* fix(storage): 修正 0003 迁移恢复对 MySQL 中间态的误判
启用数据库合同测试的完整名单后,
TestExternalDatabaseMySQLRecoversObservationFreshnessCheckDrop
第一次在真实 MySQL 上执行即失败:ValidateCurrent0001 仅凭
fresh_until_ms 列是否存在判断 0003 是否已完成,但 MySQL 上
0003 的 DROP CHECK 与 DropColumn 是两条独立、非事务性 DDL,
崩溃可能停在"约束已删、列还在"的中间态。此时 ValidateCurrent0001
误判为"0003 未开始",转而用要求约束存在的冻结校验器 Validate0001,
导致误报 chk_credential_observation_fresh_until 缺失。
改为以约束是否存在作为判断信号,与同文件 ValidateRecoverable0003
已经正确处理该中间态的逻辑保持一致。已用一次性 MySQL 8.4 与
PostgreSQL 18 容器验证三态恢复路径与完整数据库合同测试套件。
|
2026-08-31 21:10:42 +08:00 |
|
tbphp
|
70fdd862f2
|
fix(security): 收紧 OAuth 与数值边界 (#513)
|
2026-08-31 18:51:59 +08:00 |
|
tbphp
|
3d14c18dcf
|
feat(release): 统一 2.x 镜像标签通道 (#512)
|
2026-08-31 17:35:12 +08:00 |
|
 dependabot[bot]andtbphp
|
d6a66e9877
|
chore(ci): bump the github-actions-minor-and-patch group across 1 directory with 2 updates (#509)
* chore(ci): bump the github-actions-minor-and-patch group across 1 directory with 2 updates
Bumps the github-actions-minor-and-patch group with 2 updates in the / directory: [docker/login-action](https://github.com/docker/login-action) and [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action).
Updates `docker/login-action` from 4.5.2 to 4.6.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/371161bbe7024a29a25c5e19bfcbc0804fe9ad2c...dbcb813823bdd20940b903addbd779551569679f)
Updates `docker/setup-buildx-action` from 4.2.0 to 4.3.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/bb05f3f5519dd87d3ba754cc423b652a5edd6d2c...37fe631027851001ddb9b187196cc803df7f5f0e)
---
updated-dependencies:
- dependency-name: docker/login-action
dependency-version: 4.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions-minor-and-patch
- dependency-name: docker/setup-buildx-action
dependency-version: 4.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions-minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* test(webui): 同步 Docker Action 固定引用
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: tbphp <tangb7420@gmail.com>
|
2026-08-31 16:37:45 +08:00 |
|
 dependabot[bot]andtbphp
|
d4b56cbb61
|
chore(deps): bump the cpaembedded-minor-and-patch group across 1 directory with 3 updates (#507)
* chore(deps): bump the cpaembedded-minor-and-patch group across 1 directory with 3 updates
Bumps the cpaembedded-minor-and-patch group with 3 updates in the /third_party/cpaembedded directory: [github.com/andybalholm/brotli](https://github.com/andybalholm/brotli), [github.com/router-for-me/CLIProxyAPI/v7](https://github.com/router-for-me/CLIProxyAPI) and [github.com/tidwall/gjson](https://github.com/tidwall/gjson).
Updates `github.com/andybalholm/brotli` from 1.0.6 to 1.2.3
- [Commits](https://github.com/andybalholm/brotli/compare/v1.0.6...v1.2.3)
Updates `github.com/router-for-me/CLIProxyAPI/v7` from 7.2.143 to 7.2.144
- [Release notes](https://github.com/router-for-me/CLIProxyAPI/releases)
- [Commits](https://github.com/router-for-me/CLIProxyAPI/compare/v7.2.143...v7.2.144)
Updates `github.com/tidwall/gjson` from 1.18.0 to 1.19.0
- [Commits](https://github.com/tidwall/gjson/compare/v1.18.0...v1.19.0)
---
updated-dependencies:
- dependency-name: github.com/andybalholm/brotli
dependency-version: 1.2.3
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cpaembedded-minor-and-patch
- dependency-name: github.com/router-for-me/CLIProxyAPI/v7
dependency-version: 7.2.144
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cpaembedded-minor-and-patch
- dependency-name: github.com/tidwall/gjson
dependency-version: 1.19.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cpaembedded-minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* chore(deps): 同步根模块 CPA 依赖图
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: tbphp <tangb7420@gmail.com>
|
2026-08-31 16:37:31 +08:00 |
|
dependabot[bot]
|
6b6e53444c
|
chore(web): bump the web-minor-and-patch group in /web with 9 updates (#510)
Bumps the web-minor-and-patch group in /web with 9 updates:
| Package | From | To |
| --- | --- | --- |
| [@lucide/vue](https://github.com/lucide-icons/lucide/tree/HEAD/packages/vue) | `1.27.0` | `1.35.0` |
| [@tanstack/vue-query](https://github.com/TanStack/query/tree/HEAD/packages/vue-query) | `5.101.4` | `5.102.8` |
| [reka-ui](https://github.com/unovue/reka-ui) | `2.10.1` | `2.10.4` |
| [vue](https://github.com/vuejs/core) | `3.5.40` | `3.5.42` |
| [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) | `11.4.8` | `11.4.10` |
| [vue-router](https://github.com/vuejs/router) | `5.2.0` | `5.3.0` |
| [eslint](https://github.com/eslint/eslint) | `10.8.0` | `10.9.1` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.1.5` | `8.2.2` |
| [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc) | `3.3.8` | `3.3.11` |
Updates `@lucide/vue` from 1.27.0 to 1.35.0
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/1.35.0/packages/vue)
Updates `@tanstack/vue-query` from 5.101.4 to 5.102.8
- [Release notes](https://github.com/TanStack/query/releases)
- [Changelog](https://github.com/TanStack/query/blob/main/packages/vue-query/CHANGELOG.md)
- [Commits](https://github.com/TanStack/query/commits/@tanstack/vue-query@5.102.8/packages/vue-query)
Updates `reka-ui` from 2.10.1 to 2.10.4
- [Release notes](https://github.com/unovue/reka-ui/releases)
- [Commits](https://github.com/unovue/reka-ui/compare/v2.10.1...v2.10.4)
Updates `vue` from 3.5.40 to 3.5.42
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/compare/v3.5.40...v3.5.42)
Updates `vue-i18n` from 11.4.8 to 11.4.10
- [Release notes](https://github.com/intlify/vue-i18n/releases)
- [Changelog](https://github.com/intlify/vue-i18n/blob/v11.4.10/CHANGELOG.md)
- [Commits](https://github.com/intlify/vue-i18n/commits/v11.4.10/packages/vue-i18n)
Updates `vue-router` from 5.2.0 to 5.3.0
- [Release notes](https://github.com/vuejs/router/releases)
- [Commits](https://github.com/vuejs/router/compare/v5.2.0...v5.3.0)
Updates `eslint` from 10.8.0 to 10.9.1
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.8.0...v10.9.1)
Updates `vite` from 8.1.5 to 8.2.2
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.2.2/packages/vite)
Updates `vue-tsc` from 3.3.8 to 3.3.11
- [Release notes](https://github.com/vuejs/language-tools/releases)
- [Changelog](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/language-tools/commits/v3.3.11/packages/tsc)
---
updated-dependencies:
- dependency-name: "@lucide/vue"
dependency-version: 1.35.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: web-minor-and-patch
- dependency-name: "@tanstack/vue-query"
dependency-version: 5.102.8
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: web-minor-and-patch
- dependency-name: reka-ui
dependency-version: 2.10.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: web-minor-and-patch
- dependency-name: vue
dependency-version: 3.5.42
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: web-minor-and-patch
- dependency-name: vue-i18n
dependency-version: 11.4.10
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: web-minor-and-patch
- dependency-name: vue-router
dependency-version: 5.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: web-minor-and-patch
- dependency-name: eslint
dependency-version: 10.9.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: web-minor-and-patch
- dependency-name: vite
dependency-version: 8.2.2
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: web-minor-and-patch
- dependency-name: vue-tsc
dependency-version: 3.3.11
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: web-minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
2026-08-31 16:09:00 +08:00 |
|
dependabot[bot]
|
99249641eb
|
chore(deps): bump the go-minor-and-patch group with 5 updates (#508)
Bumps the go-minor-and-patch group with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [github.com/andybalholm/brotli](https://github.com/andybalholm/brotli) | `1.2.2` | `1.2.3` |
| [github.com/sirupsen/logrus](https://github.com/sirupsen/logrus) | `1.9.4` | `1.10.2` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.54.0` | `0.55.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.57.0` | `0.58.0` |
| [golang.org/x/text](https://github.com/golang/text) | `0.40.0` | `0.41.0` |
Updates `github.com/andybalholm/brotli` from 1.2.2 to 1.2.3
- [Commits](https://github.com/andybalholm/brotli/compare/v1.2.2...v1.2.3)
Updates `github.com/sirupsen/logrus` from 1.9.4 to 1.10.2
- [Release notes](https://github.com/sirupsen/logrus/releases)
- [Changelog](https://github.com/sirupsen/logrus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sirupsen/logrus/compare/v1.9.4...v1.10.2)
Updates `golang.org/x/crypto` from 0.54.0 to 0.55.0
- [Commits](https://github.com/golang/crypto/compare/v0.54.0...v0.55.0)
Updates `golang.org/x/net` from 0.57.0 to 0.58.0
- [Commits](https://github.com/golang/net/compare/v0.57.0...v0.58.0)
Updates `golang.org/x/text` from 0.40.0 to 0.41.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.40.0...v0.41.0)
---
updated-dependencies:
- dependency-name: github.com/andybalholm/brotli
dependency-version: 1.2.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: go-minor-and-patch
- dependency-name: github.com/sirupsen/logrus
dependency-version: 1.10.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: go-minor-and-patch
- dependency-name: golang.org/x/crypto
dependency-version: 0.55.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: go-minor-and-patch
- dependency-name: golang.org/x/net
dependency-version: 0.58.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: go-minor-and-patch
- dependency-name: golang.org/x/text
dependency-version: 0.41.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: go-minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
2026-08-31 16:08:40 +08:00 |
|
tbphp
|
9593c08beb
|
chore(ci): 移除 Dependabot target-branch 并更正版权年份 (#506)
|
2026-08-31 15:34:31 +08:00 |
|
tbphp
|
bba3a4a493
|
fix(home): 实时刷新常用订阅账号 (#505)
|
2026-08-31 15:27:59 +08:00 |
|
tbphp
|
2ea86cd8dc
|
feat(home): 展示常用订阅账号 (#504)
* feat(home): 展示常用订阅账号
* fix(home): 修正英文分组数量文案
|
2026-08-31 14:24:35 +08:00 |
|
tbphp
|
2aacd9e761
|
chore(community): 补齐社区规范文件与日文协议说明 (#503)
* docs(readme): 补齐日文协议表与 Embeddings 说明
* chore(community): 新增贡献指南、行为准则与社区配置
* chore(community): 明确行为准则举报渠道与 Dependabot 限制
* chore(community): 补齐 embedded module 的检查说明与依赖监控
|
2026-08-31 14:16:50 +08:00 |
|
tbphp
|
118c9a91b1
|
feat(release): 增加 Render 镜像部署 (#502)
* feat(release): 增加 Render 镜像部署
* fix(release): 重试 Render 版本检查
|
2026-08-31 12:44:42 +08:00 |
|