Highlights
- Added opt-in H2MUX support with
"protocol": "h2mux"for outbound sing-mux carriers and automatic inbound H2MUX detection. - Added opt-in TCP Brutal bandwidth negotiation through
brutal-opts, shared by SMUX and H2MUX. - Published Linux-only release assets, with unpacked executables alongside ZIP archives and digest files.
- Supersedes v26.8.11 with restored Linux/386 Brutal build compatibility.
Fork fixes
- Implemented H2MUX on the existing authenticated carrier using HTTP/2 prior knowledge and one CONNECT exchange per logical stream.
- Added bounded H2MUX stream lifecycle, cancellation, replay, TCP, UDP, padding, and carrier teardown handling.
- Added strict Brutal rate parsing, bounded negotiation diagnostics, physical-connection publication, and Linux socket ABI checks.
- Routed the Brutal socket option through Go's architecture-aware Linux wrapper, including the 386
socketcallABI.
Upstream changes
- Synchronized with upstream
mainthrough commitbc6e966a. - Updated
github.com/cloudflare/circlto 1.6.5 anddocker/login-actionto 4.6.0.
Compatibility notes
- Empty or omitted
smux.protocolstill selects SMUX; YAMUX remains unsupported. - Brutal is disabled unless explicitly enabled. Both configured rates must be at least 65,536 bytes per second.
- Brutal runtime use requires the Linux
brutalTCP congestion-control module. Negotiation or socket setup failure rejects the carrier instead of silently falling back.
Validation
- Passed unit tests for
common/singmux,common/mux,app/proxyman/outbound, andinfra/conf. - Passed race tests for
common/singmuxandcommon/mux. - Passed all 40 H2MUX real-process interoperability scenarios across Xray, sing-box, Mihomo, VLESS, Trojan, TCP, UDP, and padding on/off.
- Built all 15 Linux release targets locally, including Linux/386 and MIPS hard-float/soft-float variants.
- Built static stripped Linux/386 and Linux/amd64 release executables.