sagit
e122e7460d
Merge pull request #23 from Sagit-chu/opencode/crisp-cabin
...
fix(gost): remove single-node optimization to enable forwarder failover
2.0.13-beta5
2026-02-05 10:18:00 +08:00
root
7c898154b3
fix(gost): remove single-node optimization to enable forwarder failover
...
The single-node bypass in hop.Select() was preventing FailFilter from
being applied when retry excludes reduced available nodes to one.
This caused failed forwarder nodes to keep being selected instead of
failing over to healthy alternatives.
FailFilter's built-in safety guard (len <= 1 returns as-is) ensures
the last remaining node is never permanently blocked.
2026-02-05 02:14:37 +00:00
sagit
1d19d68019
Merge pull request #22 from Sagit-chu/feat/failover-debug-logging
...
feat(gost): add debug logging for failover mechanism analysis
2.0.13-beta4
2026-02-05 09:09:09 +08:00
root
09c58e2298
feat(gost): add debug logging for failover mechanism analysis
...
Add debug logs to trace failover behavior:
- FailFilter.Filter(): log node name, fail count, maxFails, timeSince, failTimeout
- hop.Select(): log excludeNodes list, node selection results
- handler retry loop: log maxRetries, selected nodes, dial failures
This helps diagnose issues where failover between multiple target nodes
is not working as expected.
2026-02-05 01:06:56 +00:00
sagit
583905b7ed
Merge pull request #21 from Sagit-chu/opencode/neon-nebula
...
fix(gost): use chain.NewNode() to properly initialize marker for fail…
2.0.13-beta3
2026-02-05 07:29:15 +08:00
sagit
6e3f045b9b
Merge branch 'main' into opencode/neon-nebula
2026-02-05 07:26:49 +08:00
root
ec41202b3c
fix(gost): use chain.NewNode() to properly initialize marker for failover
...
When creating temporary Node instances with struct literals like
&chain.Node{Addr: host}, the marker field was not initialized.
Only chain.NewNode() properly initializes marker = selector.NewFailMarker().
Without a valid marker:
- Failed nodes cannot be marked (marker.Mark() is no-op on nil)
- Subsequent selections cannot filter out failed nodes
- Failover mechanism completely fails
Fixed locations:
- sniffer.go dial(): &chain.Node{Addr: host} -> chain.NewNode("", host)
- sniffer.go dialTLS(): &chain.Node{Addr: host} -> chain.NewNode("", host)
- local/handler.go: target := &chain.Node{} -> var target *chain.Node
- remote/handler.go: &chain.Node{Addr: host} -> chain.NewNode("", host)
2026-02-04 23:10:56 +00:00
sagit
1ee7dea8b4
Merge pull request #20 from Sagit-chu/Sagit-chu-patch-1
...
change beta to main
2026-02-04 16:55:44 +08:00
sagit
2d69350bab
change beta to main
2026-02-04 16:54:15 +08:00
sagit
c984e5b62a
docs: remove stable installation instructions
...
docs: remove stable installation instructions
2026-02-04 16:53:06 +08:00
sagit
5b79b11101
Merge branch 'beta' into opencode/calm-sailor
2026-02-04 16:50:28 +08:00
root
2c22e600f7
docs: remove stable installation instructions
2026-02-04 08:46:41 +00:00
sagit
aef284c474
Merge pull request #18 from Sagit-chu/opencode/sunny-wizard
...
fix(gost): sync agent version with release tag
2026-02-04 16:29:24 +08:00
root
0443cd9ceb
fix(gost): sync agent version with release tag
...
- Change version.go default to 'dev' for local development
- Use version variable in WebSocket reporter instead of hardcoded '2.0.2'
- Inject version via -ldflags in CI build from tag name
2026-02-04 08:22:37 +00:00
sagit
3337422775
Merge pull request #17 from Sagit-chu/opencode/curious-nebula
...
fix(gost): add fallback when FailFilter excludes all nodes
2.0.13-beta2
2026-02-04 15:52:19 +08:00
root
3e046fc80e
fix(gost): restore single-node bypass and preserve FailFilter backoff
...
Address reviewer feedback from PR #14 fix:
1. Single-node case: Bypass selector/FailFilter to ensure availability.
This matches upstream go-gost/x behavior - single nodes should always
be attempted regardless of recent failures.
2. Multi-node case: Preserve FailFilter's backoff contract. When all nodes
are marked as failed, return nil to signal 'no healthy nodes' rather
than falling back to a known-bad node. This prevents hammering unhealthy
nodes and respects the failTimeout window.
The handler's retry loop with ExcludeNodes context handles the multi-node
failover properly - this change ensures hop.Select() provides correct
information about node health status.
Fixes intermittent forwarding failures introduced by #14 .
2026-02-04 07:46:40 +00:00
root
0273bc6921
docs: add AGENTS.md for go-gost/x/registry
2026-02-04 06:36:03 +00:00
sagit
be095057bd
Merge pull request #14 from Sagit-chu/opencode/cosmic-pixel
...
fix(gost): implement failover for multi-node forwarding rules
2.0.13-beta1
2026-02-04 12:30:49 +08:00
root
a98057d06a
fix(gost): implement failover for multi-node forwarding rules ( #12 )
...
When a forwarding rule has multiple backend nodes configured, the first
node failure would cause the entire forward to fail instead of trying
the next available node.
Root causes fixed:
- FailFilter skipped filtering when only 1 node remained
- hop.Select() bypassed selector for single-node hops
- Handlers only attempted one node before giving up
Changes:
- selector/filter.go: Remove len<=1 early return, always filter failed nodes
- hop/hop.go: Remove single-node bypass, add ExcludeNodes context support
- ctx/value.go: Add ContextWithExcludeNodes/ExcludeNodesFromContext helpers
- handler/forward/local: Add maxRetries config, implement retry loop
- handler/forward/remote: Add maxRetries config, implement retry loop
- forwarder/sniffer.go: Add retry logic to dial() and dialTLS()
Closes #12
2026-02-04 04:12:38 +00:00
root
7d47903541
fix(ci): use legacy-peer-deps and add react-is dependency
...
- Use --legacy-peer-deps to resolve heroui peer dependency conflicts
- Add react-is required by recharts
2026-02-04 02:42:46 +00:00
root
a7aabdd1dd
fix(ci): remove npm cache to fix missing package-lock.json error
2026-02-04 02:34:08 +00:00
root
0357a92960
fix: 修复limit.tsx和forward.tsx的JSX语法错误
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2.0.12-beta5
2026-02-04 02:31:26 +00:00
root
8ff41c962e
ci: add build check workflow and restrict release to tags only
...
- Add ci-build.yml for frontend/backend/agent compilation checks on push/PR
- Modify docker-build.yml to trigger only on version tags (not branches)
2026-02-04 02:27:29 +00:00
root
6f6fececa8
style: 美化用户隧道权限分配表单UI并统一代码格式
...
- 使用HeroUI Checkbox组件替换原生checkbox
- 重构隧道列表为card-based tile风格
- 添加选中/未选中/已分配状态视觉区分
- 应用eslint --fix代码格式统一
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-04 02:22:28 +00:00
root
72c2e28667
fix: 移除未使用的变量修复TypeScript编译错误
2.0.12-beta4
2026-02-03 15:55:30 +00:00
sagit
74c78851ca
Merge pull request #11 from Sagit-chu/opencode/neon-rocket
...
feat: 简化用户隧道权限分配,支持多选隧道批量分配 (#8 )
2026-02-03 23:28:55 +08:00
root
42732f844a
fix: 为嵌套的TunnelAssignItem添加@Valid注解确保校验生效
2026-02-03 15:16:43 +00:00
root
99b8ac206a
fix: 批量分配时对请求中的重复tunnelId进行去重
...
防止同一请求中包含重复tunnelId导致创建多条权限记录
2026-02-03 14:43:34 +00:00
root
0e5cd86ed1
feat: 简化用户隧道权限分配,支持多选隧道批量分配 ( #8 )
...
- 新增批量分配接口 POST /tunnel/user/batch-assign
- 支持一次选择多个隧道进行分配
- 每个隧道可单独设置限速规则
- flow/num/flowResetTime/expTime 自动从用户设置继承
- 前端表单简化为隧道多选列表+限速选择
- 已分配的隧道显示'已分配'标记且不可重复选择
2026-02-03 13:59:05 +00:00
root
60fc80b6ac
fix: 节点更新时serverIpV4/V6/域名字段无法正确清空的问题
...
使用LambdaUpdateWrapper替代updateById以确保null值能正确更新到数据库
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2.0.12-beta3
2026-02-03 12:57:39 +00:00
root
c8f0c55fda
fix: 隧道新增入口节点后转发管理的入口IP不自动更新
2.0.12-beta2
2026-02-03 11:30:31 +00:00
root
bfdaa47ea5
修复隧道编辑新增入口节点后转发规则不生效的问题 ( #9 )
...
当编辑隧道添加新入口节点时,现有转发规则的ForwardPort和GOST服务未同步更新,
导致新入口节点的端口实际不可用。
修复方案:在updateTunnel成功更新节点后,同步更新所有使用该隧道的转发规则:
- 对移除的入口节点:删除ForwardPort记录和GOST服务
- 对新增的入口节点:分配端口、创建ForwardPort记录和GOST服务
2.0.12-beta1
2026-02-03 09:28:38 +00:00
sagit
d7b76b4590
Update README.md
2026-02-02 15:51:24 +08:00
root
2c2262b55d
完善分层 AGENTS.md,便于快速定位代码
2.0.11
2026-02-02 07:41:27 +00:00
root
7ca01aba5d
修复转发管理隧道下拉顺序不同步
2.0.11-beta6
2026-02-02 06:28:45 +00:00
sagit
0f57ec58b3
Merge pull request #10 from Sagit-chu/opencode/silent-falcon
...
优化拖拽排序顺滑度
2.0.11-beta5
2026-02-02 12:55:09 +08:00
root
ac30f0172f
修复平铺模式用户切换与图表TS构建
2026-02-02 04:50:22 +00:00
root
531ba0bfed
新建隧道默认追加到末尾
2026-02-02 03:29:47 +00:00
root
d787e4b07a
优化拖拽排序顺滑度
2026-02-02 03:14:18 +00:00
root
68e5d0ac0b
修复节点监控进度条频繁重置
2.0.11-beta4
2026-02-01 15:39:23 +00:00
root
38b70821c5
节点监控离线延迟去抖
2.0.11-beta3
2026-02-01 14:41:23 +00:00
root
936158dd32
节点地址输入支持域名
2.0.11-beta2
2026-02-01 12:34:31 +00:00
root
e0d0553fd3
修复v6-only入口优先选择出口IPv6
2026-02-01 12:34:31 +00:00
root
78aa86b23c
前端版本号从tag注入并提交本地配置
2026-02-01 12:10:17 +00:00
root
1f850593dd
节点管理页支持填写IPv4/IPv6
2.0.11-beta
2026-02-01 11:14:19 +00:00
root
c4519c243a
组隧道链路按地址族自动匹配节点IP(v4优先)
2026-02-01 11:14:19 +00:00
root
31ccc48436
启动时迁移并回填节点双栈IP列
2026-02-01 11:14:19 +00:00
root
1c4914ec77
支持节点双栈IP字段
2026-02-01 11:14:19 +00:00
sagit
71c40127d5
Merge pull request #2 from Sagit-chu/opencode/sunny-island
...
fix: fix some bugs
2.0.10
2026-01-31 13:56:12 +08:00
root
aac1d63ac0
feat: enable drag-sort in node monitoring
2026-01-31 05:52:52 +00:00