63 Commits

Author SHA1 Message Date
zarazaex69
12a28e6cbf chore: replace default jitsi URL with meet1.arbitr.ru 2026-05-25 10:08:26 +03:00
zarazaex69
98c6dec4a0 docs: normalize em dash to hyphen in Russian documentation and code comments 2026-05-24 05:31:55 +03:00
zarazaex69
cfe9565c21 test(e2e): remove standalone pion loopback PoC after integration into memoryStream 2026-05-24 04:46:53 +03:00
zarazaex69
4d22169be6 test(e2e): add in-memory WebRTC loopback for video transport testing 2026-05-24 04:45:06 +03:00
zarazaex69
f63aa0bc43 refactor(e2e): extract local soak transport error constants 2026-05-24 02:57:30 +03:00
zarazaex69
bb2e1ee1c8 test(e2e): allow multiple transports in local soak test via comma-separated list or 'all' 2026-05-24 02:42:13 +03:00
zarazaex69
fb5ce90e61 refactor(e2e): extract soak pump helpers and modernize range lnt 2026-05-22 20:51:46 +03:00
zarazaex69
d0b5074072 test(e2e): add local throughput soak test 2026-05-22 18:27:20 +03:00
zarazaex69
c45e12d5c6 chore: replace default Jitsi URL with meet.cryptopro.ru 2026-05-21 19:07:31 +03:00
zarazaex69
0ec244e0dc docs: update docs and remove wbstream room creation support 2026-05-21 18:51:38 +03:00
zarazaex69
19dba1691d test(e2e): handle clean exits in tunnel startup 2026-05-21 17:12:30 +03:00
zarazaex69
4b7185f411 fix(client): survive liveness loss without killing SOCKS listener 2026-05-21 13:42:22 +03:00
zarazaex69
ccf3ff0988 fix: golangci 2026-05-19 22:02:56 +03:00
zarazaex69
085aadcad7 refactor: remove SaluteJazz carrier support 2026-05-19 21:39:07 +03:00
zarazaex69
d84fb78eef test(e2e): mark jitsi video and vp8 transports as unstable 2026-05-19 09:29:19 +03:00
zarazaex69
3bee3ddbe6 chore(vp8channel): update default fps to 60 and batch size to 64 2026-05-19 09:08:01 +03:00
zarazaex69
31796efe15 docs: replace meet.cryptopro.ru with meet.small-dm.ru as default 2026-05-18 23:37:10 +03:00
zarazaex69
d872f3c900 docs: replace jitsi.etudevs.ru with meet.cryptopro.ru 2026-05-18 22:30:51 +03:00
zarazaex69
65611d903e docs: replace meet.cryptopro.ru with jitsi.etudevs.ru as default 2026-05-18 22:20:02 +03:00
zarazaex69
33cccbc906 fix(e2e): pace stress bulk echo by chunk roundtrip 2026-05-17 05:07:00 +03:00
zarazaex69
7657b3c7b2 test(e2e): time-box stress bulk phase by duration 2026-05-17 00:28:37 +03:00
zarazaex69
b4dc6d2531 test: add nightly stress and churn coverage 2026-05-16 23:49:22 +03:00
zarazaex69
35e6c16333 refactor: split flat session.Config tunables into typed sections
session.Config used to spread 16 per-transport tuning fields across its
top level (VideoWidth/Height/.../VP8FPS/.../SEIAckTimeoutMS). The flat
layout meant every caller had to know which fields belong to which
transport, and the YAML→session bridge in internal/config repeated the
same name 32 times across Apply/ApplyProfile.

Group them under VideoConfig/VP8Config/SEIConfig structs hung off
session.Config. internal/config now does e.g.
  dst.Video.Width = pickInt(dst.Video.Width, f.Video.Width)
instead of touching dst.VideoWidth. session.ApplyTransportDefaults,
validateVideoChannel/VP8Channel/SEIChannel and buildTransportOptions
read through cfg.Video.*/cfg.VP8.*/cfg.SEI.* in the same way.

The YAML schema itself was already grouped (Video / VP8 / SEI sections);
this commit lines session.Config up with it so the Apply functions can
mirror the YAML structure 1:1 instead of unpacking it into 32 flat
assignments.

All session/config/e2e/cmd/main tests that referenced cfg.VideoX directly
are updated to cfg.Video.X.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 14:28:57 +03:00
zarazaex69
a083dfc5f3 refactor: collapse carrier layer into engine
internal/carrier and internal/carrier/builtin sat between transports and
engines, wrapping every engine.Session in carrier.Session +
engineByteStream/engineVideoTrack adapters that mechanically proxied every
method. That layer existed solely to translate Capabilities/AddTrack names;
no behaviour lived above engine.

Replace with internal/engine/builtin: a name-keyed registry that calls
auth.Issue and engine.New directly. Transports look up engine.Session via
enginebuiltin.Open, then type-assert engine.VideoTrackCapable for video
transports. A small per-transport engineVideoSession adapter unifies the
reconnect callback signature (engine uses func(*webrtc.DataChannel); the
transports want func()).

Updates:
- internal/engine/builtin/builtin.go: new Register/Open registry + auth
  pass-through ("none") + auth-driven factories for jazz/telemost/wbstream/jitsi.
- internal/transport/datachannel/transport.go: uses engine.Session directly
  via Capabilities().ByteStream check.
- internal/transport/{seichannel,videochannel,vp8channel}: each gains an
  engineVideoSession adapter and routes Connect/Send/Close/AddTrack through
  the engine session.
- internal/app/session: imports enginebuiltin; carrier.Available() →
  enginebuiltin.Available().
- pkg/olcrtc/olcrtc.go: switches to enginebuiltin.RegisterDefaults.
- internal/carrier and internal/carrier/builtin: deleted.
- Tests rewritten to register a fakeEngineSession (implements engine.Session
  + engine.VideoTrackCapable) through enginebuiltin.Register. The e2e
  memoryStream gains the same dual interface so memorySession is gone.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 14:07:44 +03:00
zarazaex69
e7657b2619 refactor: remove link layer
internal/link and internal/link/direct were a single-implementation
abstraction layer where directLink mechanically proxied every method to
transport.Transport — only Features() lived above transport.Transport,
and even that was a Features() alias. Six layers of plumbing for zero
behavioural value.

Drop the layer entirely:
- muxconn.Conn now takes a transport.Transport directly.
- server.Server and client.Client store transport.Transport, call
  transport.New, and expose Features() through transport.Transport's
  built-in method.
- server.Config and client.Config lose their Link string field.
- session.Config loses Link + validateLink + ErrLinkRequired/ErrUnsupportedLink.
- config.File and config.Profile lose the link YAML key.
- pkg/olcrtc/tunnel.Config loses Link.
- mobile drops defaultLink, SetLink, and mobileConfig.link.

Two e2e tests that exercised link.New directly are renamed to call
transport.New (TestTransportCreatesAllProviderTransportCombinations and
TestTransportConnectsFastProviderTransportMatrix); behaviour is unchanged.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 13:51:02 +03:00
zarazaex69
74fb1d81b7 refactor: introduce typed per-transport options
transport.Config used to carry a flat union of video+vp8+sei tuning fields
that every transport ignored except its own. Replace with an opaque
transport.Options marker interface and per-transport Options structs
(videochannel.Options, vp8channel.Options, seichannel.Options). Datachannel
keeps an unset Options.

link.Config gains TransportOptions and drops the 16 transport-specific
fields. server.Config and client.Config follow suit. session.Config is
left untouched in this commit — buildTransportOptions packs its existing
flat fields into the typed Options bundle before calling server/client
(session.Config is rebuilt in a later commit when YAML config moves to
typed sections).

Tests that synthesized link/server/client/transport configs are updated
to pass typed Options bundles. The shared e2eTransportOptions helper
replaces three copies of the flat field bundle in e2e/tunnel_test.go.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 07:01:07 +03:00
zarazaex69
d60f649ba7 fix(e2e): isolate default Jitsi test rooms 2026-05-16 05:35:37 +03:00
zarazaex69
6633c1ef8a fix: isolate videochannel peers in shared rooms 2026-05-16 04:55:25 +03:00
zarazaex69
6222896921 refactor: improve error context and test clarity 2026-05-16 04:06:55 +03:00
cyber-debug
79c1511268 Fix seichannel readiness before sending 2026-05-16 02:44:18 +03:00
cyber-debug
a86f5c6948 feat: add reconnect hardening and failover profiles 2026-05-16 02:10:33 +03:00
zarazaex69
5ec58bee98 refactor: extract unstable test logging helper 2026-05-16 01:53:55 +03:00
zarazaex69
1ee1ddd7f0 test(e2e): mark sei transport on jitsi as unstable 2026-05-16 01:50:48 +03:00
zarazaex69
5e0a89a78d Revert "fix(transport): isolate peer frames by channel id"
This reverts commit 75e2674f48.
2026-05-15 23:09:24 +03:00
zarazaex69
75e2674f48 fix(transport): isolate peer frames by channel id 2026-05-15 22:47:32 +03:00
zarazaex69
6536249f72 feat: add randomID function to generate unique track and stream IDs 2026-05-15 22:00:45 +03:00
zarazaex69
6276bf0fc6 test(e2e): treat real provider transports as pass-only 2026-05-15 16:47:09 +03:00
zarazaex69
36d1243395 fix(carrier): classify auth provider failures 2026-05-15 16:32:59 +03:00
zarazaex69
9cfb4fd9c3 docs: make jitsi the default recommended provider 2026-05-15 16:15:55 +03:00
zarazaex69
85a3186703 refactor(jitsi): extract helpers and simplify tests 2026-05-15 15:45:07 +03:00
zarazaex69
eceeaeba92 feat(jitsi): add Jitsi auth provider and engine 2026-05-15 15:37:58 +03:00
zarazaex69
6ba8fcdbe8 test(e2e): mark jazz non-data transports as fail 2026-05-14 19:51:26 +03:00
zarazaex69
c69aee3fc4 test(e2e): correct tunnel carrier expectations 2026-05-14 04:27:30 +03:00
zarazaex69
76c709f9a5 fix: golangci lint fix 2026-05-14 04:21:11 +03:00
zarazaex69
b569e08fac test(e2e): cover jazz expectations in real matrix 2026-05-14 04:10:44 +03:00
zarazaex69
763cba2aa0 test(e2e): require wbstream tunnel test to pass 2026-05-14 03:11:53 +03:00
zarazaex69
19df0cef68 test(e2e): relax wbstream tunnel expectations 2026-05-14 03:01:39 +03:00
zarazaex69
b36bee3f0e fix: harden reconnect shutdown and vp8 startup 2026-05-14 02:45:11 +03:00
zarazaex69
20f2c1397c feat: add timeout to openControlStream function 2026-05-13 22:07:34 +03:00
zarazaex69
bcc6b2ee5c feat: remove unused client ID from config 2026-05-13 20:03:58 +03:00