fobe 0.1.7
fobe 0.1.7
自 v0.1.6 以来的 6 个提交:流量与缴费周期支持按季、探针上/下线与通知投递写入审计、sing-box 安装不再把监听端口搬回旧端口,外加 AI 思考档位与面板细节两处修正。
流量与缴费周期支持按季(design §14/§15)
quota.CycleWindow把「季」当作 3 个月步长,与按月共用月末/闰日钳制;PATCH /api/nodes接受quarter。- 编辑页的流量周期与缴费周期两个下拉都增「按季」,缴费周期长度单位补「周期(季)」,「已续费」按 3 个月滚动。
审计(design §4.4/§7/§15)
- 探针上/下线写入审计:
node_online/node_offline只记状态跃迁 —— 90s 心跳窗口内的重连没有离开过 online,不记账;正文带agent_version与静默时长。 - 通知投递写入审计:
notify_sent/notify_failed按 (告警, 渠道, 结果) 去重(失败的告警每分钟重试,不去重会灌出一整天记录);被事件开关有意拦下的告警不记账。 - 顺带堵住凭据泄漏:投递错误里的完整 URL 会带上 Telegram bot token / 飞书 webhook token,现统一经
notify.SafeError脱敏后才写审计与日志。
sing-box(design §9.2/§9.3 修订 2026-09-18c)
- 修复:安装/更新不再把监听端口搬回旧端口。 端口此前取自记账列
node_singbox.port,而编辑器搬端口不会更新那一列。实测后果有二:面板装过后在编辑器把 22039 改成 22040,再点安装会把监听搬回 22039,而该端口下已无凭据 ⇒ 静默 mint 一份新密码,端口与凭据同时变,所有客户端立刻失效;纯 one-sing.sh 的发现型节点该列恒 0 ⇒ 安装落到随机端口,脚本入站一并消失。 - 现在端口按「显式请求 → 探针上报文件里那条 anytls 的
listen_port→ 记账列 → 随机」解析,安装/更新与启动模板同步共用同一支逻辑;凭据查找同步改为按序多端口(正在重建的端口优先、旧记账端口兜底),两者都没有才生成。 - 新增 4 条回归测试覆盖(编辑器搬移后安装、发现型节点按上报端口、全新节点仍随机、启动同步不搬端口)。
AI 助手(design §12.1/§12.5 修订 2026-09-18g)
- 思考档位下拉统一按所选模型实际支持的档位填充:此前设置页列的是全局词表,能选到该模型根本不支持的档位、选完被服务端静默吃掉;终端页侧栏也不会预选已配置的默认档位。
- 现在档位集合 = 该 (provider, model) 的有效档位;面板预选默认档位(模型不支持则留「默认(不指定)」),设置卡片按所选模型填充,不支持的档位既不显示也不写回。服务端「未指定即补默认档位」的回退一字未改。
面板
- 设置 → 服务器列表的「主 IP」列加复制按钮(§16)。
升级注意
- 无数据库 schema 变更(仍为 15,本次
schema.sql只改了枚举注释);按季周期是新增取值,降级回 v0.1.6 时该栏位不再生效。 - 镜像只发 linux/amd64;探针按 §5.5 跟随服务端版本,本次会自更新一次(短暂掉线属预期)。
- 唯一必填环境变量仍为无(compose 默认拉
ghcr.io/fonlan/fobe)。