ryan
18dee29b73
chore(release): v3.5.9
...
### ✨ 新功能
- 新增完整俄语界面,支持俄语浏览器语言识别、原生语言名称、日期与数字格式;内置错误页及离线页跟随界面语言。
### 🛠 修复
- 修复 Agent 自动注册时节点不断重复创建的问题;响应丢失或重试后仍复用原节点,不会覆盖管理员修改。
- 修复 IP 组按规则自动抓取时会收录内网、回环及链路本地等地址的问题;历史抓取结果会在下次同步时清理。
- 修复通知收件人误判,以及推送模板变量与富文本标签丢失的问题。
- 选择非默认语言时,页面首次绘制前即应用所选语言,避免刷新或跳转时短暂显示英文。
- 界面脚本加载失败时提供同语言的重新加载入口,避免出现空白页。
### ⚡ ️ 优化与改进
- 节点管理页新增服务端分页及名称、节点标识、IP、状态和类型筛选,大规模节点场景下列表加载和轮询更轻量;详情页改为单节点查询。
- Agent、Relay 与 Flared 的自动更新检查改为每 6 小时一次,检查或下载更新失败时自动延长间隔重试(最长 3 小时),避免频繁请求触发 GitHub 限流;手动触发的立即更新不受限制。
- SQLite 数据库读写并发性能提升,数据库导出可完整包含最新已提交的数据。
### 💄 其他/体验
- 界面默认语言调整为英文,已有语言偏好保持不变;语言选择器固定显示各语言的原生名称。
- 统一并校对 Server、Agent、任务详情、通知与内置模板的英文文案,窄屏下 WAF 标题和通知模板说明的换行更合理。
2026-11-07 21:50:40 +08:00
ryan
b60546a94d
feat(updater): throttle auto-update checks with exponential backoff
...
Check GitHub releases at most every 6 hours and retry transient failures
(release query, checksum or binary download) with exponential backoff
from 1 minute up to 3 hours. Forced updates bypass the throttle.
2026-11-07 21:49:46 +08:00
dependabot[bot]
8867c822bb
chore(deps): bump source-map-js from 1.2.1 to 1.2.2 in /docs ( #61 )
...
Bumps [source-map-js](https://github.com/7rulnik/source-map-js ) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/7rulnik/source-map-js/releases )
- [Changelog](https://github.com/7rulnik/source-map-js/blob/main/CHANGELOG.md )
- [Commits](https://github.com/7rulnik/source-map-js/compare/v1.2.1...v1.2.2 )
---
updated-dependencies:
- dependency-name: source-map-js
dependency-version: 1.2.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-11-07 21:37:09 +08:00
ryan
5f7e6d8907
feat(i18n): default to English, localize runtime text and add Russian ( #52 )
2026-11-07 21:35:55 +08:00
ArthurKoba
3c7b347d7b
perf(nodes): paginate node lists and fetch details directly ( #54 )
...
* perf(nodes): paginate node lists and fetch details directly
* fix(nodes): preserve Unicode search and page transition state
* fix(nodes): validate search using the UTF-8 byte limit
2026-11-07 21:29:52 +08:00
ArthurKoba
72d67c80f2
fix(agent): make discovery enrollment compatible and idempotent ( #53 )
...
* fix(agent): make discovery enrollment compatible and idempotent
* fix(agent): confirm enrollment persistence and document token aliases
2026-11-07 21:29:47 +08:00
dependabot[bot]
32cec2ac6e
chore(deps): bump vite from 7.3.3 to 7.3.7 in /docs ( #51 )
...
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) from 7.3.3 to 7.3.7.
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.7/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v7.3.7/packages/vite )
---
updated-dependencies:
- dependency-name: vite
dependency-version: 7.3.7
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-11-07 21:25:59 +08:00
dependabot[bot]
6a2503cf7a
chore(deps): bump markdown-it from 14.3.2 to 14.3.3 in /docs ( #49 )
...
Bumps [markdown-it](https://github.com/markdown-it/markdown-it ) from 14.3.2 to 14.3.3.
- [Changelog](https://github.com/markdown-it/markdown-it/blob/14.3.3/CHANGELOG.md )
- [Commits](https://github.com/markdown-it/markdown-it/compare/14.3.2...14.3.3 )
---
updated-dependencies:
- dependency-name: markdown-it
dependency-version: 14.3.3
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-11-07 21:25:54 +08:00
Arthur Koba
b4e94076c9
feat(i18n): add Russian UI and harden localization
2026-10-25 22:35:32 +03:00
Arthur Koba
65a96670d5
fix(i18n): use English runtime text and localize system UI
2026-10-25 19:44:15 +03:00
Noru Wyrms
ada0550571
fix(sqlite): enable WAL and export consistent snapshots
2026-10-25 02:27:05 +00:00
ryan
02a2b79c08
fix(waf): exclude internal IPs from automatic IP groups
2026-10-16 00:02:09 +08:00
ryan
0e1ce40cbb
docs(readme): update project description and deployment instructions
2026-10-11 21:38:30 +08:00
ryan
cf7613dade
docs(readme): update project description and deployment instructions
2026-10-11 21:32:08 +08:00
ryan
7c2304d4f3
chore(release): v3.5.8
...
### ✨ 新功能
- 在「系统管理 → 系统配置 → 业务配置」新增可信代理范围设置,默认信任 Cloudflare 官方网段,支持追加、覆盖或关闭;识别出的访客真实 IP 会用于访问日志、WAF 判断和上游请求,并兼容已有自定义 OpenResty 主模板。
### 🛠 修复
- 修复 Casdoor 等第三方认证源使用字符串用户 ID 时登录回调失败的问题;自动注册不会再与已有本地用户或其他认证源账号发生 ID 冲突,已绑定账号不受影响。
- 修复 Agent 在 OpenResty 运行状态异常时可能重复启动并导致端口占用的问题;现可恢复已有运行实例,避免节点配置应用失败。
2026-10-08 09:00:26 +08:00
Ryan
96a17ae35d
fix(agent): recover OpenResty runtime after invalid PID ( #45 )
...
* fix(agent): recover OpenResty runtime after invalid PID
* fix(agent): scope OpenResty shutdown to instance processes
---------
Co-authored-by: Noru Wyrms <wyrmsnoru@gmail.com >
2026-10-08 08:39:40 +08:00
velor2012
fec9bd18dd
fix(oauth): 支持 Casdoor 认证,修复第三方回调的用户id为string时会导致服务器内部错误的问题 ( #46 )
...
* fix(oauth): support Casdoor string user IDs
* test(oauth): verify legacy IDs and auth source isolation
---------
Co-authored-by: Noru Wyrms <wyrmsnoru@gmail.com >
2026-10-08 08:20:15 +08:00
ryan
6f63715182
fix(openflare): trust Cloudflare client IP ranges by default
2026-10-07 23:51:36 +08:00
ryan
7483897d3c
chore(release): v3.5.7
2026-10-07 15:18:04 +08:00
ryan
5e86f63c46
chore(release): v3.5.7
...
### ✨ 新功能
- Cloudflare 指向分组支持自定义 DNS 目标,可填写域名或 IP,节点绑定仍为默认选项。
- Cloudflare 节点分组会在主节点故障时切换至备用节点,并在主节点恢复后切回;分组详情支持批量开启橙云。
- 代理路由支持为单条路由单独关闭 HTTP/2,便于适配测速与下载场景。
### 🛠 修复
- 修复节点配置应用失败后的恢复问题,Agent 现会自动重试并在成功后停止;重启后也会继续未完成的重试。
### ⚡ ️ 优化与改进
- 优化常见代理访问的响应压缩与上传处理效率,同时保留流式上传的兼容选项。
### 💄 其他/体验
- Cloudflare 分组成员操作改为图标按钮,减少操作栏占用空间。
2026-10-07 15:08:16 +08:00
Ryan
fd0e9acc2f
feat(cloudflare): add custom targets and node failover ( #43 )
...
* feat(cloudflare): add custom targets and node failover
* fix(cloudflare): propagate batch sync errors
---------
Co-authored-by: OpenAI Codex <codex@openai.com >
2026-10-07 11:29:41 +08:00
Ryan
e49e0ad2bf
perf(openresty): improve compression and proxy buffering ( #42 )
2026-10-07 11:05:27 +08:00
dependabot[bot]
28b7f7d796
chore(deps): bump markdown-it from 14.1.1 to 14.3.2 in /docs ( #41 )
...
Bumps [markdown-it](https://github.com/markdown-it/markdown-it ) from 14.1.1 to 14.3.2.
- [Changelog](https://github.com/markdown-it/markdown-it/blob/14.3.2/CHANGELOG.md )
- [Commits](https://github.com/markdown-it/markdown-it/compare/14.1.1...14.3.2 )
---
updated-dependencies:
- dependency-name: markdown-it
dependency-version: 14.3.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-07 10:59:53 +08:00
ryan
7ad25f61aa
feat(proxy-route): allow disabling HTTP/2 per route
2026-10-07 10:30:16 +08:00
Ryan
2960a4ddeb
fix(agent): retry failed node config applies ( #40 )
2026-10-07 10:27:00 +08:00
ryan
17ce9d050b
chore(release): v3.5.6
...
### ✨ 新功能
- Cloudflare 指向分组:支持将已添加的域名在不同分组之间移动,自动排队更新远程 DNS 指向。
- Cloudflare 指向分组:详情页支持批量勾选域名进行批量移动与批量移出操作。
- WAF IP 组:在查看 IP 组弹窗中新增即时搜索功能,支持快速过滤和定位 IP 地址。
### 🛠 修复
- 修复 WebDAV 文件存储配置「基础路径」后,上传的文件无法正常访问或删除的问题(路径被重复拼接);升级后历史文件记录同样可正常读写。
- 修复本地存储读取历史记录中路径以斜杠开头的文件时报错的问题,现可正常读取。
2026-10-01 16:11:15 +08:00
ryan
2b3be6f3a3
docs(changelog): document cloudflare member move and ip group search
2026-09-26 15:32:08 +08:00
ryan
b1626d068f
feat(cloudflare): register move and batch member API routes
2026-09-26 15:08:32 +08:00
ryan
3867841a2f
docs: add implementation plan for cloudflare member move and ip group search
2026-09-24 11:45:51 +08:00
ryan
805eea5bd6
docs: add design spec for cloudflare member move and ip-group search
2026-09-24 11:44:43 +08:00
ryan
a49d07e2c2
chore(release): v3.5.5
...
### 🛠 修复
- 修复 Cloudflare 指向分组引用的节点已被删除时,分组列表/详情接口整体返回「Cloudflare 资源不存在」的问题;现会跳过缺失节点并继续返回其余分组。
- 修复静态导出部署下访问 Cloudflare 指向分组详情(`/cloudflare/groups/{id}`,id 不为 1)会跳回首页并触发 React hydration 报错的问题。
### ⚡ ️ 优化与改进
- 优化 openflare-agent Docker 镜像体积:精简运行时依赖并消除离线 IP 库冗余层,镜像总体积从 500MB+ 缩减至约 150MB。
2026-09-19 12:42:47 +08:00
ryan
1fe2763034
perf(docker): switch agent openresty base image to alpine-slim
2026-09-19 12:34:51 +08:00
ryan
65bc7d9b81
chore(release): v3.5.5
...
### 🛠 修复
- 修复 Cloudflare 指向分组引用的节点已被删除时,分组列表/详情接口整体返回「Cloudflare 资源不存在」的问题;现会跳过缺失节点并继续返回其余分组。
- 修复静态导出部署下访问 Cloudflare 指向分组详情(`/cloudflare/groups/{id}`,id 不为 1)会跳回首页并触发 React hydration 报错的问题。
2026-09-19 11:13:42 +08:00
ryan
1d4533f183
fix(cloudflare): handle missing nodes in group detail responses
2026-09-18 14:04:44 +08:00
ryan
a2404a50ef
fix(cloudflare): restore group detail pages for ids other than 1
...
Static export only generates /cloudflare/groups/1.html. Unknown ids fell
through to the dashboard index, bouncing the browser home and triggering
React hydration error #418 . Serve the generated group shell and resolve
the real id from the pathname, matching the websites detail fallback.
2026-09-17 22:00:12 +08:00
ryan
bbd7f72c2d
fix(cloudflare): clean up pointing member when zone domain is deleted
2026-08-29 18:32:02 +08:00
ryan
e7b8fb2f99
docs(i18n): 同步 24 篇旧英文文档与中文最新内容
...
guide 9 篇(quick-start/first-site/sso/troubleshooting/tunnel-usage/waf-usage/waf-ip-group-expr/credits/index)、deployment 7 篇(deployment/server/agent/relay/openflared/upgrade/index)、reference 3 篇(configuration/cli/index)、design 5 篇(architecture/agent-design/tunnel-design/waf-design/index)全部按中文最新版重写同步;waf-usage/waf-design 按新版 DAG 模型重写;修复 reference 中文锚点链接;vitepress 构建 43 个英文页面全绿
2026-08-16 23:27:18 +08:00
ryan
454542c1d0
docs(i18n): 恢复并补齐英文版 vitepress,README 默认改为英文
...
- README 默认英文:README.en.md → README.md(英文为默认),中文移至 README.zh-CN.md,语言切换链接同步
- 恢复被删除的 docs/en/ 英文文档(git 历史 cc5e53c5^),删除 4 篇已废弃文件
- 英文导航 config.ts 对齐中文结构(新增 Deployment/Changelog 侧栏,同步 Guide/Design 条目)
- 翻译 15 篇中文新增文档:guide 5 篇(certificates/pages-usage/proxy-config/uptime-kuma/zone-domain-migration)+ design 10 篇(zone-design/cloudflare-pointing/waf-orchestration/origin-error-page/edge-cache-design/pages-design/logstore/kuma-design/login-captcha/observability 三篇)
- en 首页更新(新增 Pages 特性、tagline 同步);changelog 英文入口指向中文版
- vitepress 构建验证:43 个英文页面全部渲染
注意:29 篇旧英文文档为恢复版,部分内容(如 deployment/server、reference/configuration)可能落后于中文,需后续逐篇同步
2026-08-16 23:18:29 +08:00
ryan
3f97193280
chore(docs): purge
2026-08-16 21:44:28 +08:00
ryan
9b89d3c630
Merge branch 'autoresearch/code-quality-2026-08-16'
2026-08-16 21:15:13 +08:00
ryan
4962bf90d1
两处真实质量修复:(1) 过期 swagger 文档重新生成(status_2xx/4xx/5xx_count 字段随 a4dd5ca9 加入后未同步 docs,违反 repo 约定,swag init 后差异仅真实新增字段);(2) generate-themes.js 输出补尾换行,themes.json 构建可复现(此前每次 build 弄脏工作树)。验证 next build 成功、musttag/tagalign 调查无真实问题。
...
Result: {"status":"keep","total_issues":8,"golint_canonicalheader":0,"golint_errname":0,"golint_errorlint":1,"golint_exhaustive":0,"golint_forcetypeassert":0,"golint_gosec":0,"golint_intrange":0,"golint_modernize":3,"golint_nilnil":3,"golint_perfsprint":0,"golint_prealloc":0,"golint_recvcheck":1,"golint_usestdlibvars":0,"golint_wastedassign":0,"golint_total":8,"golint_test_testifylint":0,"golint_test_thelper":0,"golint_test_usetesting":0,"golint_test_total":0,"golint_vetx_total":0,"eslint_problems":0,"eslint_errors":0,"eslint_warnings":0,"tsc_errors":0,"vitest_failed":0,"vitest_total":116,"measure_s":86}
2026-08-16 19:19:04 +08:00
ryan
600a7acdfb
docs: 核查并润色文档,对齐项目实际实现
...
- 删除未经验证的环境要求(Docker 版本号、浏览器条目)与括号废话
- 故障排查改为真实处理路径(升级→重新发布→强制同步→重建 Agent→提交 issue),删除仅开发时用的排障章节
- 删除设计文档中的测试与验收、实现检查清单、贡献者阅读建议等开发内容
- 修正与代码不符的事实:reset-passwd 命令名、证书续签窗口 7 天、Pages 检查间隔 1440 分钟、Relay vhost 端口 8080、SSO 仅支持 OIDC 等
- 去除口语化表述与无意义括号,改写「不是…而是…」句式
- 同步修正文档站链接锚点,构建验证通过
2026-08-16 17:49:57 +08:00
ryan
5aaaf8f197
fix(frontend): 修复静态导出下切换语言无效的问题
2026-08-16 17:29:14 +08:00
ryan
5a8722ff07
feat(frontend): 控制台 next-intl 中英双语
...
接入无 URL 前缀的 zh-CN/en,顶栏与外观设置可切换语言;选择写入 cookie 后刷新生效。
2026-08-16 16:49:16 +08:00
ryan
64fbaa7ef1
chore: docs
2026-08-16 11:32:13 +08:00
ryan
fa689aedbc
feat(sync): 同步 Wavelet 推送审计、OTel schema 与前端字体
...
自定义 Webhook 在 HTTP 200 但业务 errcode 非零时记为失败,任务日志记录上游响应。
OTel Resource 改为 NewSchemaless,避免 semconv 与 SDK 版本冲突。
前端用 next/font 自托管 Inter,并忽略浏览器扩展改写 body 引起的 hydration 警告。
2026-08-16 11:06:54 +08:00
ryan
f960511cc0
chore(release): v3.5.3
...
### 新增
- 访问日志「日志明细」支持按 HTTP 状态码筛选,可直接输入任意状态码。
- 访问日志「日志明细」支持自定义时间范围筛选,可按起止时间检索日志。
- 首页看板改版:24 小时请求趋势拆分展示请求总量与 2xx/4xx/5xx 状态码类请求量并独占一行;移除宿主机磁盘指标,24 小时容量趋势(CPU/内存)并入业务流量卡片展示。
### 🛠 修复
- 修复首页「来源分布」卡片在 PostgreSQL/SQLite 日志库下无数据的问题。
- 修复源站错误页「仅针对 GET 请求」未真正透传非 GET 响应的问题:POST/PUT 等非 GET 请求现可完整看到源站原始报错内容。
2026-08-13 11:44:08 +08:00
ryan
465440fa5b
fix(access-logs): 修复状态码自定义
2026-08-13 11:33:12 +08:00
ryan
a4dd5ca9e1
feat(dashboard): 首页请求趋势拆分状态码并合并容量到业务流量
...
- 24 小时请求趋势拆分展示请求总量与 200/400/500 状态码请求量,独占一行;
时间桶聚合新增 status_200/400/500_count(CH countIf、PG FILTER),
请求趋势改为基于原始桶聚合(小时 rollup 无状态码口径)
- 首页移除宿主机磁盘指标,容量趋势(CPU/内存)并入业务流量卡片展示
- 压缩协议 traffic_24h 扩展为 7 元组,前端归一化同步更新
2026-08-13 11:10:37 +08:00
ryan
a9e4237bbf
feat(access-logs): 状态码支持手动输入,新增时间范围筛选
...
- 状态码筛选支持预设快捷选项 + 手动输入任意 100-599 状态码(数字校验)
- 新增时间范围筛选:shadcn 日期+时间选择器(Popover+Calendar+时分 Select),
起止时间以 RFC3339 成对传入,后端校验格式与先后关系,非法值返回 400
- 默认显示来源 IP/访问域名/状态码,节点 ID/请求路径/时间范围折叠进「更多筛选」
2026-08-13 10:27:40 +08:00