Renames the Go module path from openflux to
github.com/p1neappleXpress/OpenFlux and updates every internal import
(root module and mobile/), so the packages can be fetched and imported
by other Go projects.
Regenerated on main after #132, #122 and #125 (the same mechanical
rename, imports sorted by gofmt).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The Yandex.Docs cursor channel is message-bound: the old path sent one
tunnel packet per WebSocket message (base64 + JSON envelope each time),
polled the write queue with a 10ms sleep, LZ4-compressed per packet, and
recompiled a regexp on every inbound message.
- transport/framing.go + batched.go: BatchedTransport coalesces queued
packets into one length-prefixed, zstd-compressed frame per channel
message, and splits them back on receive. The wire format carries a
version byte (0x02), distinct from the legacy LZ4 markers.
- yandex: writerLoop blocks on the write queue instead of a 10ms poll and
holds the pending packet across reconnects; hoisted the two regexps out
of the hot paths.
- main: default to the batched codec; --legacy keeps the old per-packet
LZ4 path; --bench-send/--bench-sink measure goodput over the transport.
Offline (real codec sizes): ~6x fewer channel messages on bulk traffic,
~62x fewer on ACK-heavy traffic. Live over Yandex: ~6 MB/s with 7 tunnel
packets per channel message.
NOTE: the batched wire format is not compatible with the old LZ4 format;
client and exit node must both run this version (or both use --legacy).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>