docs: sync README and planning status to current state

README status table was showing transport/discovery/protocol/node as
"not started" when all are done. Added summary sentence, notes column,
config and dev/web rows. Fixed dev/web structure description.

planning.md: removed stale "prerequisite" note about web UI — it is
already implemented and working.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-27 05:52:38 +00:00
parent 2364170053
commit 08ee9a2eb0
2 changed files with 23 additions and 19 deletions

View File

@@ -22,24 +22,30 @@ Designed to run on resource-constrained hardware (Raspberry Pi capturing raw MJP
src/modules/ C modules, one directory each
include/ public headers
dev/cli/ CLI driver programs for each module
dev/web/ development web UI (Node.js/Express, depends on protocol)
dev/web/ development web UI (Node.js/Express) — connects to live nodes for V4L2 inspection and control
docs/ documentation
```
## Status
| Module | Status |
|---|---|
| `common` | done |
| `media_ctrl` | done |
| `v4l2_ctrl` | done |
| `serial` | done |
| `transport` | not started |
| `protocol` | not started |
| `frame_alloc` | not started |
| `relay` | not started |
| `ingest` | not started |
| `archive` | not started |
| `codec` | not started |
| `xorg` | not started |
| `web node` | not started |
Core modules and the video node binary are working. The node can be queried over the wire protocol for device enumeration and V4L2 camera control. The development web UI connects to live nodes for inspection and control. Frame capture and relay have not started.
| Module | Status | Notes |
|---|---|---|
| `common` | done | Error types, base definitions |
| `config` | done | INI file loader, schema-driven defaults, typed getters |
| `media_ctrl` | done | Media Controller topology, pad format config |
| `v4l2_ctrl` | done | V4L2 control enumeration, get/set |
| `serial` | done | Little-endian binary serialization primitives |
| `transport` | done | Framed TCP stream, single-write send |
| `discovery` | done | UDP multicast announcements, peer table, found/lost callbacks |
| `protocol` | done | Typed write/read functions for all message types |
| `node` | done | Video node binary — config, discovery, transport server, V4L2/media request handlers |
| `dev/web` | done | Development web UI — connects to live nodes, V4L2 inspection and control |
| `frame_alloc` | not started | Per-frame allocation with byte budget and ref counting |
| `relay` | not started | Input dispatch to output queues (low-latency and completeness modes) |
| `ingest` | not started | V4L2 capture loop — dequeue buffers, emit frames |
| `archive` | not started | Write frames to disk, control messages to binary log |
| `codec` | not started | Per-frame encode/decode (MJPEG, QOI, ZSTD-raw, VA-API H.264) |
| `xorg` | not started | X11 geometry (XRandR), screen grab source, frame viewer sink |
| `web node` | not started | Node.js peer — binary protocol socket side + HTTP/WebSocket to browser |

View File

@@ -76,9 +76,7 @@ Each module gets a corresponding CLI driver that exercises its API and serves as
### Web UI (`dev/web/`)
A Node.js/Express development web UI — the browser-side equivalent of the CLI tools. Connects to a running video node as a binary protocol peer and exposes its capabilities through a browser interface: V4L2 control inspection and adjustment, media topology view, stream state.
**Prerequisite**: the `transport` and `protocol` modules must be finalised before `dev/web/` can be implemented — the web UI depends on a stable wire format and a `protocol.mjs` that mirrors the C protocol module.
A Node.js/Express development web UI that connects to running video nodes as a binary protocol peer. Exposes V4L2 control inspection and adjustment, media topology view, and stream state through a browser interface. Supports live peer discovery via SSE — discovered nodes appear automatically in the UI.
This is a development aid, not the production dashboard. The production dashboard (full stream configuration UI) is a later, separate project.