foxyz 190faf63c0 Raise avatar cap 64 to 128 KiB, pipeline checks encoded size
64 KiB rejected normal 128px PNGs. 128 KiB fits any 128x128 PNG
(raw <= 64 KiB, worst-case base64 ~95 KiB chars) while still
bounding abuse. PNG kept for transparency. Pipeline now measures
the encoded base64 against RelayConstants (was checking the wrong
variable with its own 512 KiB limit) and drops dead crop code.
Server policy, still v4. Trade noted: avatars ride the 1 Hz room
broadcast, uplink scales with cap; hash-reference follow-up later.
2026-09-12 11:45:34 +03:00

sync_relay_project

Watch-together desktop app (working title). One binary, three modes:

  • Client — GUI Join, sync WS + mpv. No server code runs.
  • Server+Client (Host) — GUI Host starts packages/server in-process, listens on a port, self-connects via loopback. Host must open ports. Clients never open ports.
  • Headless — watch.exe --headless, same server package, no window.

v1 order: links support (shared http(s) media URL, Syncplay-style sync) first, file relay (server-proxied bytes, whitelist case) after. Jellyfin native + auto-update are deferred as their own undertakings.

Layout:

/packages/core      protocol, sync engine, messages (pure Dart, no Flutter)
/packages/server    room + media HTTP endpoint (pure Dart, no Flutter)
/apps/desktop       Flutter app embedding packages/server (the ONE binary)
/tool               spikes + harnesses (range_logger, shaper, fake_viewer, e2e_check)
/deploy             systemd unit, notes
/docs               PROTOCOL.md, ARCHITECTURE.md, mpv-http-contract.md, ROADMAP.md

Phases + status: docs/ROADMAP.md. Session handoff: HANDOFF.md (root).

Enforcement: core and server must have zero Flutter imports (tested).

S
Description
No description provided
Readme
9.2 MiB
0 Stars 1 Watchers 1 Forks
v1.4.0
Latest
2026-10-18 16:36:32 +01:00
Languages
Dart 79.9%
GLSL 18%
C++ 0.8%
Shell 0.5%
CMake 0.5%
Other 0.3%