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
v3.5.7
2026-10-07 15:18:04 +08:00
ryan
d979b74784
feat(performance): expose request buffering setting
2026-10-07 15:15: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
OpenAI Codex
d1978a8571
fix(migrations): seed log migration flag
2026-10-07 07:00:32 +00:00
OpenAI Codex
4e584d2e2d
fix(migrations): resolve duplicate goose versions
2026-10-07 03:55:55 +00: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
dependabot[bot]
0bebca2990
chore(deps): bump brace-expansion from 1.1.18 to 1.1.21 in /frontend ( #39 )
...
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion ) from 1.1.18 to 1.1.21.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases )
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.18...v1.1.21 )
---
updated-dependencies:
- dependency-name: brace-expansion
dependency-version: 1.1.21
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:27:10 +08:00
Ryan
2960a4ddeb
fix(agent): retry failed node config applies ( #40 )
2026-10-07 10:27:00 +08:00
dependabot[bot]
6c15c11e35
chore(deps): bump source-map-js from 1.2.1 to 1.2.2 in /frontend ( #38 )
...
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-10-07 10:07:10 +08:00
dependabot[bot]
1db4c0683c
chore(deps): bump sharp from 0.35.4 to 0.35.5 in /frontend ( #37 )
...
Bumps [sharp](https://github.com/lovell/sharp ) from 0.35.4 to 0.35.5.
- [Release notes](https://github.com/lovell/sharp/releases )
- [Commits](https://github.com/lovell/sharp/compare/v0.35.4...v0.35.5 )
---
updated-dependencies:
- dependency-name: sharp
dependency-version: 0.35.5
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:06:58 +08:00
dependabot[bot]
04cda06045
chore(deps): bump next from 16.3.0 to 16.3.6 in /frontend ( #36 )
...
Bumps [next](https://github.com/vercel/next.js ) from 16.3.0 to 16.3.6.
- [Release notes](https://github.com/vercel/next.js/releases )
- [Commits](https://github.com/vercel/next.js/compare/v16.3.0...v16.3.6 )
---
updated-dependencies:
- dependency-name: next
dependency-version: 16.3.6
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-07 10:06:42 +08:00
Ryan
588298c520
Merge pull request #35 from Rain-kl/dependabot/npm_and_yarn/frontend/dompurify-3.4.16
...
chore(deps): bump dompurify from 3.4.13 to 3.4.16 in /frontend
2026-10-07 09:52:34 +08:00
Ryan
0946978052
Merge pull request #34 from Rain-kl/dependabot/npm_and_yarn/frontend/axios-1.20.0
...
chore(deps): bump axios from 1.19.0 to 1.20.0 in /frontend
2026-10-07 09:52:21 +08:00
dependabot[bot]
04615e244e
chore(deps): bump dompurify from 3.4.13 to 3.4.16 in /frontend
...
Bumps [dompurify](https://github.com/cure53/DOMPurify ) from 3.4.13 to 3.4.16.
- [Release notes](https://github.com/cure53/DOMPurify/releases )
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.13...3.4.16 )
---
updated-dependencies:
- dependency-name: dompurify
dependency-version: 3.4.16
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-10-01 09:41:56 +00:00
dependabot[bot]
de793010ae
chore(deps): bump axios from 1.19.0 to 1.20.0 in /frontend
...
Bumps [axios](https://github.com/axios/axios ) from 1.19.0 to 1.20.0.
- [Release notes](https://github.com/axios/axios/releases )
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md )
- [Commits](https://github.com/axios/axios/compare/v1.19.0...v1.20.0 )
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.20.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-10-01 09:41:25 +00:00
Ryan
5471a63360
Merge pull request #33 from Rain-kl/dependabot/npm_and_yarn/frontend/undici-8.11.2
...
chore(deps): bump undici from 8.10.0 to 8.11.2 in /frontend
2026-10-01 17:39:48 +08:00
ryan
17ce9d050b
chore(release): v3.5.6
...
### ✨ 新功能
- Cloudflare 指向分组:支持将已添加的域名在不同分组之间移动,自动排队更新远程 DNS 指向。
- Cloudflare 指向分组:详情页支持批量勾选域名进行批量移动与批量移出操作。
- WAF IP 组:在查看 IP 组弹窗中新增即时搜索功能,支持快速过滤和定位 IP 地址。
### 🛠 修复
- 修复 WebDAV 文件存储配置「基础路径」后,上传的文件无法正常访问或删除的问题(路径被重复拼接);升级后历史文件记录同样可正常读写。
- 修复本地存储读取历史记录中路径以斜杠开头的文件时报错的问题,现可正常读取。
v3.5.6
2026-10-01 16:11:15 +08:00
dependabot[bot]
737b3ae760
chore(deps): bump undici from 8.10.0 to 8.11.2 in /frontend
...
Bumps [undici](https://github.com/nodejs/undici ) from 8.10.0 to 8.11.2.
- [Release notes](https://github.com/nodejs/undici/releases )
- [Commits](https://github.com/nodejs/undici/compare/v8.10.0...v8.11.2 )
---
updated-dependencies:
- dependency-name: undici
dependency-version: 8.11.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-09-30 01:18:28 +00:00
ryan
c3606bc6f6
fix(cloudflare): deduplicate batch member ids and guard move dialog dismiss during pending
2026-09-26 15:39:10 +08:00
ryan
2b3be6f3a3
docs(changelog): document cloudflare member move and ip group search
2026-09-26 15:32:08 +08:00
ryan
11c8e5c7f3
feat(cloudflare): add domain move and batch operations in group detail page
2026-09-26 15:26:37 +08:00
ryan
4d52a5b097
feat(waf): add search and filter in ip group view dialog
2026-09-26 15:15:26 +08:00
ryan
b1626d068f
feat(cloudflare): register move and batch member API routes
2026-09-26 15:08:32 +08:00
ryan
079fa7ee53
feat(cloudflare): add move and batch operation logics with tests
2026-09-26 14:57:16 +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
aad059ab6e
fix(objectstore): decouple WebDAV targetPath from logical storage key and fix basePath duplication
...
- WebDAV Put now returns PutResult with driver-agnostic logical relative key (relKey), keeping database records decoupled from mount basePath.
- targetPath mounts logical keys to the remote WebDAV server path, and transparently handles legacy database records containing basePath or duplicate basePath prefixes.
- Make localBackend path resolution resilient to keys with leading slashes or legacy absolute paths outside local root by safely mounting them as relative paths.
- Add comprehensive unit tests for WebDAV targetPath, relKey, end-to-end roundtrip with in-memory WebDAV server, and local storage leading slash handling.
2026-09-22 14:16:21 +08:00
Ryan
96abbf180d
Merge pull request #32 from Rain-kl/dependabot/npm_and_yarn/frontend/sharp-0.35.4
...
chore(deps): bump sharp from 0.35.3 to 0.35.4 in /frontend
2026-09-19 13:58:26 +08:00
Ryan
fff4f425ae
Merge pull request #31 from Rain-kl/dependabot/npm_and_yarn/frontend/js-yaml-4.3.2
...
chore(deps): bump js-yaml from 4.3.1 to 4.3.2 in /frontend
2026-09-19 13:58:15 +08:00
Ryan
e1753f868e
Merge pull request #30 from Rain-kl/dependabot/go_modules/google.golang.org/grpc-1.83.2
...
chore(deps): bump google.golang.org/grpc from 1.83.0 to 1.83.2
2026-09-19 13:58:04 +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。
v3.5.5
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
bf1e77a865
fix(docker): optimize Dockerfile by reducing layers and improving permissions
2026-09-19 12:27:50 +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
dependabot[bot]
71a715a64b
chore(deps): bump sharp from 0.35.3 to 0.35.4 in /frontend
...
Bumps [sharp](https://github.com/lovell/sharp ) from 0.35.3 to 0.35.4.
- [Release notes](https://github.com/lovell/sharp/releases )
- [Commits](https://github.com/lovell/sharp/compare/v0.35.3...v0.35.4 )
---
updated-dependencies:
- dependency-name: sharp
dependency-version: 0.35.4
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-09-17 13:47:50 +00:00
dependabot[bot]
501c754352
chore(deps): bump js-yaml from 4.3.1 to 4.3.2 in /frontend
...
Bumps [js-yaml](https://github.com/nodeca/js-yaml ) from 4.3.1 to 4.3.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/4.3.2/CHANGELOG.md )
- [Commits](https://github.com/nodeca/js-yaml/compare/4.3.1...4.3.2 )
---
updated-dependencies:
- dependency-name: js-yaml
dependency-version: 4.3.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-09-17 13:47:40 +00:00
dependabot[bot]
a0324dc65c
chore(deps): bump google.golang.org/grpc from 1.83.0 to 1.83.2
...
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go ) from 1.83.0 to 1.83.2.
- [Release notes](https://github.com/grpc/grpc-go/releases )
- [Commits](https://github.com/grpc/grpc-go/compare/v1.83.0...v1.83.2 )
---
updated-dependencies:
- dependency-name: google.golang.org/grpc
dependency-version: 1.83.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-09-17 13:47:06 +00:00
ryan
bbd7f72c2d
fix(cloudflare): clean up pointing member when zone domain is deleted
2026-08-29 18:32:02 +08:00
ryan
81739f9cb4
chore: format
2026-08-26 15:13:23 +08:00
ryan
2b69f4d8d7
#60 GeoIP 共享单例化:消除访问日志 region 解析每批次的 mmdb 重建开销与无界缓存,ctx 贯穿下载路径
...
Result: {"status":"keep","total_issues":8,"eslint_errors":0,"eslint_problems":0,"eslint_warnings":0,"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_test_testifylint":0,"golint_test_thelper":0,"golint_test_total":0,"golint_test_usetesting":0,"golint_total":8,"golint_usestdlibvars":0,"golint_vetx_total":0,"golint_wastedassign":0,"measure_s":81,"tsc_errors":0,"vitest_failed":0,"vitest_total":126}
2026-08-26 13:48:44 +08:00
ryan
b56f27632a
#59 -shuffle=on 扫描抓到测试顺序依赖:config_version RAM 配置缓存跨测试污染,setup/cleanup 接入 ram.ResetForTest() 修复
...
Result: {"status":"keep","total_issues":8,"eslint_errors":0,"eslint_problems":0,"eslint_warnings":0,"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_test_testifylint":0,"golint_test_thelper":0,"golint_test_total":0,"golint_test_usetesting":0,"golint_total":8,"golint_usestdlibvars":0,"golint_vetx_total":0,"golint_wastedassign":0,"measure_s":66,"tsc_errors":0,"vitest_failed":0,"vitest_total":126}
2026-08-26 13:35:20 +08:00
ryan
fc733d0295
#57 enqueue 修复的同型残留收口:SendFlaredPong/SendRelayPong 合并 select 随机选择 bug,委托 client.enqueue 去重修复
...
Result: {"status":"keep","total_issues":8,"eslint_errors":0,"eslint_problems":0,"eslint_warnings":0,"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_test_testifylint":0,"golint_test_thelper":0,"golint_test_total":0,"golint_test_usetesting":0,"golint_total":8,"golint_usestdlibvars":0,"golint_vetx_total":0,"golint_wastedassign":0,"measure_s":77,"tsc_errors":0,"vitest_failed":0,"vitest_total":126}
2026-08-26 13:20:35 +08:00
ryan
453f7e5d90
周期性 -race 重跑抓到真实 bug:wsClientCore.enqueue close 后 select 随机选择致契约违反;确定性先查 done 修复+测试循环加固+gofmt 存量漂移清理
...
Result: {"status":"keep","total_issues":8,"eslint_errors":0,"eslint_problems":0,"eslint_warnings":0,"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_test_testifylint":0,"golint_test_thelper":0,"golint_test_total":0,"golint_test_usetesting":0,"golint_total":8,"golint_usestdlibvars":0,"golint_vetx_total":0,"golint_wastedassign":0,"measure_s":95,"tsc_errors":0,"vitest_failed":0,"vitest_total":126}
2026-08-26 13:14:59 +08:00
ryan
63e3b85294
富交互页 a11y 抽查收尾:8+3 页扫描,修复 cloudflare 筛选器无名/access-token amber 对比度/notifications 缺 h1 共 3 处,全部复扫归零;基准 total_issues 保持 8
...
Result: {"status":"keep","total_issues":8,"eslint_errors":0,"eslint_problems":0,"eslint_warnings":0,"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_test_testifylint":0,"golint_test_thelper":0,"golint_test_total":0,"golint_test_usetesting":0,"golint_total":8,"golint_usestdlibvars":0,"golint_vetx_total":0,"golint_wastedassign":0,"measure_s":85,"tsc_errors":0,"vitest_failed":0,"vitest_total":126}
2026-08-26 13:05:16 +08:00