feat: complete daemon core milestone

Finish Milestone 3 with persisted config, socket IPC, registry CRUD,
periodic discovery, manual add, and app-cache refresh support.
This commit is contained in:
44r0n7
2026-04-14 10:19:14 -04:00
parent 642fa716d1
commit 29e53d16b0
14 changed files with 2176 additions and 46 deletions
+27 -23
View File
@@ -7,14 +7,15 @@
## Current Focus
**Milestone 3Daemon Core**
Roku adapter work is complete. Begin daemon runtime and persistence wiring.
**Milestone 4CLI**
Daemon core is complete. Continue broadening CLI coverage against the running daemon.
---
## In Progress
_Nothing in progress right now._
- Milestone 4 is underway with working `daemon`, `device`, and app-cache commands over the Unix socket
- Remaining CLI work is remote/state/dev/config coverage plus daemon install/uninstall helpers
---
@@ -47,35 +48,35 @@ _Goal: Can communicate with a real Roku TV over ECP._
## Milestone 3 — Daemon Core
_Goal: tvctld runs, manages devices, and handles the Unix socket._
- [ ] Daemon entry point and lifecycle (`src/daemon/mod.rs`)
- [ ] Unix socket listener
- [ ] Device registry (`src/daemon/registry.rs`)
- Load from `devices.json` on start
- Persist on change
- CRUD operations
- [ ] Discovery service (`src/daemon/discovery.rs`)
- SSDP scan
- Auto-discover on startup (if configured)
- Interval-based re-scan
- Manual add by IP
- [ ] App cache manager (`src/daemon/cache.rs`)
- Per-platform JSON files
- Organic growth strategy
- `app refresh` invalidation
- [ ] State cache (`src/daemon/state.rs`)
- [x] 2026-04-14 — Daemon entry point and lifecycle (`src/daemon/mod.rs`)
- [x] 2026-04-14 — Unix socket listener
- [x] 2026-04-14 — Device registry (`src/daemon/registry.rs`)
- [x] Load from `devices.json` on start
- [x] Persist on change
- [x] CRUD operations
- [x] 2026-04-14 — Discovery service (`src/daemon/discovery.rs`)
- [x] SSDP scan
- [x] Auto-discover on startup (if configured)
- [x] Interval-based re-scan
- [x] Manual add by IP
- [x] 2026-04-14 — App cache manager (`src/daemon/cache.rs`)
- [x] Per-platform JSON files
- [x] Organic growth strategy
- [x] `app refresh` invalidation
- [x] 2026-04-14 — State cache (`src/daemon/state.rs`)
- In-memory only
- Per-device last-known state
- Timestamp on every entry
- [ ] Adapter registry (map platform string → adapter instance)
- [ ] Config loading from TOML
- [x] 2026-04-14 — Adapter registry (map platform string → adapter instance)
- [x] 2026-04-14 — Config loading from TOML
---
## Milestone 4 — CLI
_Goal: All tvctl commands work against a running daemon._
- [ ] CLI entry point and dispatch (`src/cli/mod.rs`)
- [ ] Unix socket client (send commands, receive responses)
- [x] 2026-04-14 — CLI entry point and dispatch (`src/cli/mod.rs`)
- [x] 2026-04-14 — Unix socket client (send commands, receive responses)
- [ ] `tvctl daemon` commands
- `start` `stop` `restart` `status`
- `install` (generate systemd user unit)
@@ -158,6 +159,9 @@ out of scope until Milestone 6 is complete and stable.
- [x] 2026-04-14 — Add Roku ECP discovery, input, app, and state adapter support with unit tests
- [x] 2026-04-14 — Add env-gated live Roku integration tests and validate against the Hisense TV on the LAN
- [x] 2026-04-14 — Implement Roku developer-mode install/log support and validate sideloading on the Hisense TV
- [x] 2026-04-14 — Add daemon config loading, runtime paths, persisted registry/cache stores, and discovery foundations
- [x] 2026-04-14 — Add daemon Unix socket IPC plus working `daemon` and `device` lifecycle/discovery commands
- [x] 2026-04-14 — Finish Milestone 3 with registry CRUD, periodic discovery, manual add, and app-cache refresh plus live daemon validation
---