feat: harden engine config, discovery and backpressure stats
- config: validate port/quality/fps/source/stream-index ranges on load and before engine start (flinger.Config.Validate) - discovery: add Announce option to disable multicast (GUI checkbox, CLI --no-announce); absent JSON key keeps the default true - backpressure: count dropped frames in the TCP sender, expose via engine Status and a live counter in the GUI status label - docs: record M3/M4 decisions and X11 coverage via the portal backend
This commit is contained in:
+22
-1
@@ -148,4 +148,25 @@ Components:
|
||||
5. **End-to-end testing**: OBS + `obs-teleport` are available locally on the dev machine
|
||||
for now (loopback/LAN testing). A remote receiver machine can be added later for
|
||||
further testing.
|
||||
6. **License**: GPL-2.0, matching the `obs-teleport` project whose protocol we implement.
|
||||
6. **License**: GPL-2.0, matching the `obs-teleport` project whose protocol we implement.
|
||||
|
||||
## Decisions Made (2026-09-18, M3/M4)
|
||||
|
||||
7. **Screen capture backend**: `go2tv.app/screencast` (MIT, GPL-2.0-compatible) via
|
||||
`xdg-desktop-portal` + PipeWire. Chosen over hand-rolled cgo bindings. The portal
|
||||
path is compositor-agnostic: Wayland (hyprland/gnome portals) and X11
|
||||
(`xdg-desktop-portal-gtk`) both work, so a separate native X11/XShm fallback is not
|
||||
required for the supported path and was not implemented (project.md M4 "if feasible").
|
||||
8. **GUI toolkit**: Fyne v2 — provides both the settings window and a system tray
|
||||
(StatusNotifierItem over DBus), so no separate systray dependency was needed.
|
||||
9. **Engine decoupling**: streaming core lives in `internal/flinger` (GUI-free) so the
|
||||
CLI, GUI and any future daemon share one implementation.
|
||||
|
||||
## M4 Hardening Status
|
||||
|
||||
- Config persistence + validation: done (internal/config, flinger.Validate).
|
||||
- Backpressure/queue stats: done (sender tracks dropped frames; exposed in engine
|
||||
Status and the GUI status label).
|
||||
- Discovery on/off: done (flinger.Config.Announce, GUI checkbox).
|
||||
- X11 fallback: not implemented — the portal backend already covers X11 sessions.
|
||||
- Packaging (Nix package / AppImage): deferred (see AGENTS.md / roadmap).
|
||||
Reference in New Issue
Block a user