You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Completes the hardened Hysteria 2.12.1 transport integration proposed in XTLS#6565.
Fixes a rare SMUX stale-carrier recovery race found by the native Linux reconnect gate.
Restores predictable releases: publishing now starts only the binary matrix, while native validation remains a separate explicit pre-release workflow.
v26.8.19 did not produce release assets; operators should use v26.8.20.
Fork fixes
Preserves existing QuicParams protobuf field numbers and adds compatibility coverage for the new QUIC options.
Adds optional Realm UPnP/NAT-PMP mapping with bounded discovery, lease renewal, rollback, zero-lifetime deletion, and deterministic cleanup.
Ensures Realm, Hysteria, and XHTTP/3 listener shutdown releases owned sockets, timers, goroutines, and mapping leases.
Clones shared TLS configuration before applying QUIC client behavior and propagates Brutal loss-compensation settings through every affected path.
Corrects SMUX response recovery when a stale write returns success after the peer carrier has failed. Readers now distinguish an early replacement from a completed writer and replay the bounded pre-response payload exactly once.
Moves validation into .github/workflows/pre-release-validation.yml; .github/workflows/release.yml is build-only and no longer runs on ordinary pushes or pull requests.
Upstream changes
No additional upstream stable release was merged for this version; upstream main at 7d214f8b remains an ancestor of this fork release.
The pending changes from XTLS#6565 were integrated against the fork's current QUIC paths and completed with lifecycle, compatibility, and error-path hardening.
Compatibility notes
Existing QuicParams protobuf fields 1–13 retain their wire numbers; new options use fields 14–16.
Chrome-style QUIC behavior is enabled by default. Set disableChromeParrot for custom certificate callbacks or incompatible TLS behavior.
disableGSO is available for platforms or network stacks where UDP GSO must not be used.
Realm port mapping is opt-in through portMapping.enabled; omitted configuration preserves prior behavior.
Realm ipMode accepts dual, v4, or v6 and defaults to dual.
No SMUX wire bytes changed; the reconnect fix changes only local recovery coordination.
Validation
Affected unit, race, checkptr, vet, formatting, module-integrity, YAML, release-contract, and external-mux dependency gates passed on Go 1.26.5.
Xray, sing-box, and Mihomo Hysteria interoperability passed all 9/9 process executions.
The SMUX hardening harness passed 400/400 reconnect cycles across eight Xray/sing-box/Mihomo direction and carrier topologies on Darwin/arm64; this is harness evidence, not Linux capacity evidence.
The initial native Linux matrix passed six of eight 50-cycle SMUX topologies; its two Mihomo/VLESS failures exposed a restart-readiness flaw in the harness.
Native Linux follow-up run 31818742469 passed both corrected Mihomo/VLESS directions for 50/50 cycles each on the exact release commit; checked loopback error/drop deltas remained zero.