sagit
b9b4312768
Merge pull request #36 from Sagit-chu/opencode/proud-cactus
...
feat: add Go backend compatibility service scaffold
2.1.0-beta1
2026-02-07 22:23:42 +08:00
sagit
a2b819dbcc
merge: sync origin/main and resolve compose backend conflicts
2026-02-07 14:16:00 +00:00
sagit
6f0412de0f
fix: align forward pause/resume service control with Java
2026-02-07 13:52:54 +00:00
sagit
e2ae241f8c
fix: complete tunnel-create parity with runtime rollback
2026-02-07 13:36:30 +00:00
sagit
1a8f424d53
fix: complete diagnosis parity and tunnel visibility on Go backend
2026-02-07 12:48:41 +00:00
sagit
1977ba9eab
fix: adapt frontend captcha flow for Go backend
2026-02-07 12:10:34 +00:00
sagit
b2407c3442
feat: finalize Go backend migration and deployment cutover
2026-02-07 11:03:12 +00:00
sagit
f9bc165c16
feat: complete Go backend control-plane parity
...
Bridge Java-to-Go runtime behavior by enforcing forward ownership checks, wiring node command dispatch/diagnostics, and adding contract coverage so migrated APIs can run with production semantics.
2026-02-07 07:10:45 +00:00
sagit
b6333d81a2
fix: restore panel list endpoints and bootstrap sqlite state
2026-02-06 12:23:46 +00:00
sagit
507893dc55
Merge pull request #37 from Sagit-chu/opencode/witty-garden
...
fix: ensure group sync grants all tunnel-group tunnels
2.0.16
2026-02-06 19:11:23 +08:00
sagit
652b44e08e
Merge branch 'main' into opencode/witty-garden
2026-02-06 19:07:55 +08:00
sagit
95b3803745
fix: use mutable empty set in group tunnel sync
2026-02-06 11:01:30 +00:00
sagit
0b85cd2af1
fix: ensure group sync grants all tunnel-group tunnels
2026-02-06 10:42:56 +00:00
sagit
0f37017760
feat: add Go backend compatibility service scaffold
2026-02-06 10:42:48 +00:00
sagit
4d0dcf5db5
Merge pull request #35 from Sagit-chu/opencode/align-compose-installer-version
...
chore: align compose image tags with installer release version
2.0.16-beta2
2026-02-06 18:03:41 +08:00
sagit
4c756e9156
chore: align compose image tags with installer release version
2026-02-06 09:59:49 +00:00
sagit
f5a40bf530
Merge pull request #33 from Sagit-chu/opencode/witty-garden
...
fix: migrate frontend to Vite 7 and add group
2.0.16-beta1
2026-02-06 17:19:05 +08:00
sagit
c7dbbef0d9
Merge branch 'main' into opencode/witty-garden
2026-02-06 17:15:58 +08:00
sagit
a6773fe65d
fix: preserve manual tunnel access when revoking group grants
2026-02-06 09:04:27 +00:00
sagit
27a32b3ff4
fix: always create group grants for existing user tunnel pairs
2026-02-06 08:46:42 +00:00
sagit
06a45a87f6
fix: block manual removal of group-granted tunnels
2026-02-06 08:22:17 +00:00
sagit
053aef42c0
fix: use mutable map for empty grant count sync
2026-02-06 08:03:43 +00:00
sagit
9f79efd44b
feat: add revocable group-based tunnel permission management
2026-02-06 07:32:14 +00:00
sagit
08ba876291
Merge pull request #34 from Sagit-chu/opencode/ghcr-log-config
...
chore: migrate compose images to ghcr and reduce log output
2026-02-06 15:22:28 +08:00
sagit
59af67a5b5
chore: migrate compose images to ghcr and reduce log output
2026-02-06 07:11:05 +00:00
root
65f8f7506e
chore(frontend): enable rolldown-vite rust build
2026-02-06 06:27:27 +00:00
root
efd5a107b9
fix: migrate frontend to Vite 7 and resolve lint warnings
2026-02-06 06:09:17 +00:00
sagit
35c8063ac5
Merge pull request #32 from Sagit-chu/opencode/kind-wolf
...
fix: improve batch tunnel migration and simplify batch action labels
2.0.15
2026-02-06 13:36:47 +08:00
root
e0efadf298
feat: add batch pause/resume controls and improve batch toolbar usability
2026-02-06 05:30:50 +00:00
root
a9fadfc08c
fix: improve batch tunnel migration and simplify batch action labels
2026-02-06 04:00:06 +00:00
sagit
529257c8d0
Merge pull request #31 from Sagit-chu/opencode/nimble-moon
...
feat: add batch operations for forwards, tunnels, and nodes
2.0.14
2026-02-05 20:29:50 +08:00
root
a667c03b6c
fix: compilation errors in batch operations
...
- Fix R.ok() usage in backend services (remove message argument)
- Fix batchDeleteNodes call in frontend (pass array directly)
2026-02-05 11:04:33 +00:00
root
5a1fc808b2
feat: add batch operations for forwards, tunnels, and nodes
...
- Add batch delete, redeploy, and change-tunnel for forwards
- Add batch delete and redeploy for tunnels
- Add batch delete for nodes
- Add multi-select UI with floating toolbar on all three pages
- Create DTOs: BatchDeleteDto, BatchRedeployDto, BatchChangeTunnelDto, BatchOperationResultDto
2026-02-05 10:59:49 +00:00
sagit
02ff215f99
Merge pull request #28 from Sagit-chu/opencode/lucky-eagle
...
fix(gost): process WebSocket commands concurrently to prevent diagnos…
2.0.13
2.0.13-beta9
2.0.13-beta10
2026-02-05 14:25:24 +08:00
root
2a4e7777ab
fix(gost): run TcpPing commands concurrently without config save race
...
When multiple TcpPing requests are sent in parallel for diagnosing
multiple remote addresses, the Go agent was processing them serially.
This caused later requests to timeout (10s) while waiting for earlier
requests to complete.
Changes:
- Only TcpPing commands run in goroutines for parallel execution
- TcpPing (read-only diagnostic) no longer triggers saveConfig()
- Other state-mutating commands remain synchronous with config save
- Add mutex to saveConfig() to protect concurrent file writes
2026-02-05 06:18:56 +00:00
sagit
eac94a5719
Merge pull request #26 from Sagit-chu/opencode/hidden-pixel
...
fix(diagnose): parallelize TCP ping diagnostics to prevent timeout ca…
2.0.13-beta8
2026-02-05 12:57:10 +08:00
root
96fcd0fc57
fix(diagnose): parallelize TCP ping diagnostics to prevent timeout cascade
...
Previously, forward/tunnel diagnosis executed TCP pings sequentially,
causing total time to accumulate. If the first remote address timed out
(5s), subsequent checks could push total time beyond the frontend's 30s
timeout, resulting in diagnosis failure even for healthy endpoints.
Now all diagnostic tasks run in parallel using CompletableFuture, so
total time equals max(individual ping time) instead of sum.
2026-02-05 04:52:42 +00:00
sagit
06869aedfd
Merge pull request #25 from Sagit-chu/opencode/kind-sailor
...
fix(gost): mark node failed when transport detects relay error
2.0.13-beta7
2026-02-05 12:21:32 +08:00
sagit
6a201131a3
Merge branch 'main' into opencode/kind-sailor
2026-02-05 12:17:27 +08:00
root
1130a55ef5
fix(gost): mark node failed when transport detects relay error
...
When using relay connector with noDelay=false (default), connection
errors to the final target are deferred until first read/write during
Transport(). Previously the Transport() return value was ignored,
causing the marker to never be called for unreachable targets.
Now we capture the Transport() error and mark the node as failed,
enabling failover for subsequent connections.
2026-02-05 04:09:57 +00:00
root
265cd0a50e
Revert "fix(backend): enable noDelay for relay connector to fix chain failover"
...
This reverts commit 51cbd4b9de .
2026-02-05 04:06:46 +00:00
sagit
e7ffa77b15
Merge pull request #24 from Sagit-chu/opencode/kind-sailor
...
fix(backend): enable noDelay for relay connector to fix chain failover
2.0.13-beta6
2026-02-05 11:14:46 +08:00
root
51cbd4b9de
fix(backend): enable noDelay for relay connector to fix chain failover
...
When using relay connector with noDelay=false (default), connection
errors are deferred until first read/write. This prevents the forwarder
marker from being called, causing failover to never trigger.
Setting nodelay=true ensures connection errors propagate immediately,
allowing proper failover behavior when chain targets are unreachable.
2026-02-05 03:11:52 +00:00
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