tbphp
|
fbefb458dd
|
docs(readme): 添加赞助展示 (#657)
|
2026-09-15 12:49:34 +08:00 |
|
tbphp
|
91df89efed
|
fix(bifrost): 恢复兼容渠道的工具降级转发 (#653)
* fix(execution): 保留跨协议工具调用约束
* fix(cpa): 修正工具白名单兼容边界
* fix(bifrost): 拒绝丢失压缩上下文
* fix(execution): 保持计数请求工具约束
* fix(bifrost): 恢复兼容渠道的工具降级转发
|
2026-09-14 22:21:59 +08:00 |
|
tbphp
|
0a19e80d26
|
fix(gateway): 支持已绑定 WebSocket 通知客户端重连 (#652)
* fix(gateway): 支持已绑定 WebSocket 通知重连
* fix(gateway): 修复 WebSocket 冻结与收尾竞态
* fix(gateway): 保留超限请求登记直到错误交付完成
* fix(gateway): 修正读取失败时的关闭与注销顺序
* fix(gateway): 将二进制消息纳入关闭前登记
|
2026-09-14 16:32:37 +08:00 |
|
tbphp
|
47a5e124fc
|
fix(gateway): 修复 WebSocket 首错重试与故障转移 (#646)
|
2026-09-13 22:55:35 +08:00 |
|
tbphp
|
fbb99067cc
|
fix(health): 放宽上游错误重试并保留健康边界 (#643)
* fix(health): 放宽上游错误重试并保留健康边界
* fix(health): 补齐资源操作重放与上下文拒绝规则
* fix(execution): 保留明确请求拒绝的分类优先级
* fix(health): 补齐流内 HTTP 错误重试判断
|
2026-09-13 18:06:37 +08:00 |
|
tbphp
|
5f11d8bdd4
|
test(cpa): 修复替换连接测试的时序误报 (#644)
|
2026-09-13 17:41:11 +08:00 |
|
tbphp
|
9605ed208b
|
fix(subscription): 修正 Codex 与 Claude 凭据身份判重 (#639)
* fix(subscription): 修正订阅凭据身份与刷新校验
* docs: 撤回 README 中的凭据身份说明
* fix(subscription): 校验令牌身份冲突并补齐刷新后判重
* fix(subscription): 防止刷新丢失已确认身份
* fix(subscription): 延后批量导入身份判重
|
2026-09-13 12:26:46 +08:00 |
|
tbphp
|
f8a04df46d
|
fix(deepseek): 补齐原生协议字段兼容 (#638)
* fix(deepseek): 补齐原生协议字段兼容
* fix(deepseek): 兼容强制工具调用与默认思考
* fix(deepseek): 跳过空思考字段别名
|
2026-09-13 11:42:46 +08:00 |
|
tbphp
|
d01656a1d8
|
perf(ci): 迁移自托管运行器并优化并行验收 (#634)
* perf(ci): 切换现有自托管运行器并复用本机缓存
* perf(ci): 将主要 Linux 任务迁至 Mac ARM64 运行器
* fix(ci): 使用动态端口执行 Windows 安装验收
* test(cpa): 等待异步处理完成后校验 WebSocket 行为
* perf(ci): 并行数据库测试并隔离容器验收端口
* ci: 为数据库合同测试启用内存盘
* test(cpa): 固定断连日志脱敏测试的执行顺序
* fix(ci): 修复自托管验收中断和架构兼容问题
* fix(ci): 原子准备 Windows 安装验收配置
|
2026-09-13 08:31:56 +08:00 |
|
tbphp
|
9d38793dd0
|
fix(affinity): 统一缓存标识亲和并补齐 Codex 缓存分组 (#635)
|
2026-09-13 01:25:45 +08:00 |
|
tbphp
|
426bde9a38
|
fix(cpa): 保留 Codex 和 Grok 的中途系统指令 (#633)
* fix(cpa): 保留 Codex 和 Grok 的中途系统指令
在 Anthropic 转换入口将 system 映射为 developer,保留消息内容和位置,并继续拒绝其他渠道的有损转换。
验证:make check;third_party/cpaembedded 中 go test -count=1 ./...。新增出站回归测试已在修复前复现拒绝,在修复后通过。
用户实测确认:Claude Code 使用 Anthropic 协议请求 Codex 账号的 GPT 模型正常。
* fix(cpa): 对齐计数和执行的系统指令转换
让 Codex/Grok 的 Anthropic 本地计数复用执行请求的指令角色映射,保持其他渠道计数行为不变。补充计数一致性回归测试和工具结果内容断言。
验证:计数回归测试先复现差异,修复后通过;make check 和 CPA embedded 全套测试通过。
|
2026-09-12 21:01:54 +08:00 |
|
tbphp
|
5b03d29db9
|
fix(codex): 补齐 WebSocket 额度观测并约束来源匹配 (#632)
* fix(codex): 补齐 WebSocket 被动额度更新
* test(codex): 补充 WS 额度窗口完整性断言
* fix(codex): 保留握手与事件额度的独立观测时间
|
2026-09-12 19:21:35 +08:00 |
|
tbphp
|
c4c8452e6c
|
fix(execution): 保留原生消息前缀并保护转换语义 (#631)
* fix(execution): 补齐原生消息透传并保留对话结构
* fix(execution): 保护转换请求的指令和执行约束
* fix(execution): 补齐无角色历史后的系统指令保护
|
2026-09-12 17:55:22 +08:00 |
|
tbphp
|
1b50c77673
|
fix(usage): 统一修正 Anthropic 流式输入与缓存用量 (#630)
* fix(cpa): 修正 Anthropic 流式转换的输入用量统计
* fix(usage): 统一 Anthropic 流式用量修正
* fix(usage): 保留原生流未采集时的执行层用量
|
2026-09-12 17:08:44 +08:00 |
|
tbphp
|
33ec668550
|
fix(monitor): 统一筛选操作与跳转的快捷时间行为 (#625)
* fix(monitor): 统一筛选操作与跳转的快捷时间行为
* fix(monitor): 避免应用筛选时重复请求
|
2026-09-11 14:13:51 +08:00 |
|
tbphp
|
b64a389823
|
feat(ultrafast): 支持请求层级转发与独立计价 (#624)
* fix(codex): 统一快速模式出站参数为 fast
* feat(ultrafast): 支持请求层级转发与独立计价
|
2026-09-11 13:10:29 +08:00 |
|
tbphp
|
c55312e155
|
feat(groups): 支持选择测试协议和模型并修复禁用分组测试 (#623)
* feat(groups): 支持配置和选择密钥测试协议
* fix(groups): 完善测试模型选择并遵循渠道协议声明
* fix(groups): 修复禁用分组测试并统一测试设置布局
* fix(groups): 统一测试控件样式并复用模型输入
|
2026-09-11 12:59:01 +08:00 |
|
tbphp
|
a895ba25bf
|
fix(execution): 统一普通渠道出站 UA 规则 (#622)
|
2026-09-11 11:59:15 +08:00 |
|
tbphp
|
a628fe82bf
|
fix(monitor): 更新日志筛选快捷时间 (#621)
|
2026-09-11 08:55:40 +08:00 |
|
tbphp
|
8688dc80b3
|
fix(gateway): 兼容 WS 请求中的 stream 布尔参数 (#620)
|
2026-09-11 07:34:02 +08:00 |
|
tbphp
|
abc6483d0e
|
fix(codex): 升级 CPA 并固定上游版本声明 (#619)
|
2026-09-11 00:08:04 +08:00 |
|
tbphp
|
f091528bdb
|
feat(gateway): 接入原生 Responses WebSocket 与逐轮治理 (#616)
* feat(gateway): 接入原生 Responses WebSocket 与逐轮治理
* feat(gateway): 增加 WS 分层开关并修复连接治理
* fix(gateway): 关闭停用或删除分组的 WS 连接
|
2026-09-10 21:18:41 +08:00 |
|
tbphp
|
0c9d188892
|
fix(codex): 修正请求身份头覆盖与会话兼容 (#617)
* fix(codex): 修正请求身份头覆盖与会话兼容
* fix(codex): 保留显式空值身份请求头
|
2026-09-10 20:04:23 +08:00 |
|
tbphp
|
eecef9f4a8
|
docs(readme): 添加 OfoxAI 赞助展示 (#614)
* docs(readme): 添加 OfoxAI 精选赞助商
* fix(readme): 恢复 OfoxAI 英文标题原始标点
|
2026-09-10 16:24:25 +08:00 |
|
tbphp
|
7d80a981d1
|
feat(codex): 添加独立上游 WebSocket Session 封装 (#612)
* feat(codex): 添加独立上游 WebSocket 会话封装
* fix(codex): 放开 SOCKS5 代理并修正超时分类
* fix(codex): 修正 WS 终态并脱敏断连日志
* fix(codex): 保留失败终态的上游错误码
* fix(codex): 提前注册 WebSocket 日志脱敏
|
2026-09-10 14:18:36 +08:00 |
|
tbphp
|
7cbd2e672d
|
feat(responses): 实现响应状态续接路由 (#609)
* feat(responses): 实现响应状态续接路由
* fix(responses): 限制响应 ID 长度并兼容缺失字段删除
* fix(responses): 按协议存储能力匹配续接路由
|
2026-09-09 23:13:41 +08:00 |
|
tbphp
|
de6d2d44fc
|
feat(access-keys): 支持自定义密钥并统一编辑与生成交互 (#611)
* feat(access-keys): 支持自定义密钥与强度提示
* fix(access-keys): 恢复默认掩码并按密钥长度分档
* feat(access-keys): 统一密钥编辑与随机生成交互
* style(access-keys): 改用骰子图标生成密钥
* fix(access-keys): 修复筛选幂等判定与恢复状态提示
* fix(access-keys): 统一编辑请求的幂等摘要
|
2026-09-09 23:05:09 +08:00 |
|
tbphp
|
d417b7de04
|
feat(monitor): 统一日志与用量的时间筛选交互 (#608)
* feat(monitor): 统一日志与用量时间筛选交互
* feat(monitor): 精简快捷时间展示与地址参数
* fix(monitor): 修复日期弹层并统一搜索控件高度
* fix(monitor): 修正时间筛选交互并整理筛选布局
* fix(monitor): 对齐访问密钥筛选下拉框样式
* refactor(monitor): 清理时间与日志筛选冗余代码
|
2026-09-09 18:10:47 +08:00 |
|
tbphp
|
fb18dc9e87
|
refactor(cooldown): 精简模型冷却展示与管理接口 (#606)
* fix(web): 精调模型冷却展示与筛选样式
* refactor(cooldown): 精简模型冷却展示与管理接口
|
2026-09-09 15:50:02 +08:00 |
|
tbphp
|
fe4b6ac159
|
feat(gateway): 接入原生文本重排序协议 (#607)
|
2026-09-09 15:06:50 +08:00 |
|
tbphp
|
7ed01e668b
|
feat(images): 支持 Antigravity 与 Gemini 共享生图转换 (#605)
* feat(antigravity): 支持 Images 单向生图转换
* feat(images): 复用转换并支持 Gemini 渠道生图
* fix(images): 修正生图转换失败分类并恢复候选回退
|
2026-09-09 13:20:10 +08:00 |
|
tbphp
|
1898d8ee64
|
fix(gateway): 修复协议查询参数与零输出边界 (#603)
|
2026-09-09 11:18:20 +08:00 |
|
tbphp
|
f0bd09b31a
|
fix(web): 兼容 HTTP 密钥复制并统一失败弹窗 (#602)
* fix(web): 统一复制失败的明文弹窗兜底
* fix(web): 将复制兜底内容改为只读单行输入框
|
2026-09-09 09:51:31 +08:00 |
|
tbphp
|
d4699dd2b1
|
feat(health): 支持凭据按模型冷却与统一恢复 (#599)
* feat(health): 支持凭据按模型冷却与统一恢复
* fix(health): 修复模型冷却的错误契约与恢复边界
* fix(web): 修复模型冷却展示与重置反馈
* fix(web): 保持分组健康与恢复反馈一致
* fix(health): 修复停用分组的模型冷却身份展示
|
2026-09-09 08:05:43 +08:00 |
|
tbphp
|
a42555469a
|
feat(gateway): 统一全局请求重试预算 (#598)
|
2026-09-08 20:43:25 +08:00 |
|
tbphp
|
96d3e0d5c7
|
feat(subscription): 支持多格式订阅凭据导入 (#596)
* feat(subscription): 支持多格式订阅凭据导入
* fix(subscription): 修复批量导入请求边界
* fix(subscription): 保留批量导入超时语义
|
2026-09-08 20:05:22 +08:00 |
|
 Oandtbphp
|
6da82242d8
|
feat(subscription): support custom upstream URLs (#579)
* feat(codex): support custom base URL
* fix(codex): require HTTPS for custom base URL
* docs: document changed subscription functions
* fix(groups): 展示并区分详情中的默认与自定义地址
* fix(groups): 统一上游地址配置交互与图标位置
* fix(subscription): 绑定额度重置操作的上游地址
* fix(gateway): 隔离旧上游请求的健康状态更新
---------
Co-authored-by: tbphp <tangb7420@gmail.com>
|
2026-09-08 19:44:39 +08:00 |
|
tbphp
|
e0bfa07ec4
|
feat(scheduler): 统一凭据权重并调整模型错误重试 (#597)
* feat(scheduler): 统一凭据权重并调整错误重试
* docs: 更新三语配置权重说明
|
2026-09-08 17:18:08 +08:00 |
|
tbphp
|
175949e20a
|
feat(usage): 支持自定义时间统计并统一时间筛选 (#594)
* feat(usage): 统一时间区间统计与快捷筛选
* fix(usage): 精简时间筛选与趋势提示布局
* fix(usage): 保留未修改时间端点的原始时刻
|
2026-09-08 13:33:06 +08:00 |
|
tbphp
|
a97578fe9b
|
feat(access-keys): 完善访问密钥分发与用量管理 (#590)
* feat(access-keys): 完善访问密钥分发与用量管理
* fix(web): 保留监控上下文并同步复制草稿
* fix(web): 补全发放联系信息并保留排行密钥标识
* fix(monitor): 修复日志入口与用量时间边界
* feat(access-keys): 优化分发界面并精简发放流程
* fix(access-keys): 收紧列表排版并精简发放弹窗
|
2026-09-08 12:52:42 +08:00 |
|
tbphp
|
9cb3f98688
|
feat(scheduler): 实现全局加权轮询与连续分配限制 (#591)
* feat(scheduler): 实现全局加权轮询与连续分配限制
* fix(scheduler): 补齐初始停用分组的入场校准
* fix(scheduler): 统一分组恢复校准并修正检查说明
|
2026-09-08 09:15:47 +08:00 |
|
tbphp
|
2bdc105835
|
chore(deps): 升级官方 fasthttp 并移除临时替换 (#589)
* chore(deps): 升级官方 fasthttp 并移除临时替换
* docs(licenses): 同步 fasthttp 升级后的第三方声明
|
2026-09-07 22:18:12 +08:00 |
|
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 |
|