2 Commits
Author SHA1 Message Date
Oleg NovikovandClaude Opus 5.5 96a0f95205 chore: use canonical module path github.com/p1neappleXpress/OpenFlux (#129)
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>
2026-09-29 21:09:36 +03:00
HuHguZandClaude Opus 4.8 70a571f3c0 transport: batch + zstd the Yandex channel to cut message count
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>
2026-09-12 13:06:59 +03:00