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 src/modules/ C modules, one directory each
include/ public headers include/ public headers
dev/cli/ CLI driver programs for each module 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 docs/ documentation
``` ```
## Status ## Status
| Module | Status | 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.
|---|---|
| `common` | done | | Module | Status | Notes |
| `media_ctrl` | done | |---|---|---|
| `v4l2_ctrl` | done | | `common` | done | Error types, base definitions |
| `serial` | done | | `config` | done | INI file loader, schema-driven defaults, typed getters |
| `transport` | not started | | `media_ctrl` | done | Media Controller topology, pad format config |
| `protocol` | not started | | `v4l2_ctrl` | done | V4L2 control enumeration, get/set |
| `frame_alloc` | not started | | `serial` | done | Little-endian binary serialization primitives |
| `relay` | not started | | `transport` | done | Framed TCP stream, single-write send |
| `ingest` | not started | | `discovery` | done | UDP multicast announcements, peer table, found/lost callbacks |
| `archive` | not started | | `protocol` | done | Typed write/read functions for all message types |
| `codec` | not started | | `node` | done | Video node binary — config, discovery, transport server, V4L2/media request handlers |
| `xorg` | not started | | `dev/web` | done | Development web UI — connects to live nodes, V4L2 inspection and control |
| `web node` | not started | | `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/`) ### 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. 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.
**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.
This is a development aid, not the production dashboard. The production dashboard (full stream configuration UI) is a later, separate project. This is a development aid, not the production dashboard. The production dashboard (full stream configuration UI) is a later, separate project.