src.nth.io/

summaryrefslogtreecommitdiff
path: root/TESTING.md
diff options
context:
space:
mode:
authorLuke Hoersten <[email protected]>2026-07-17 20:25:24 -0500
committerLuke Hoersten <[email protected]>2026-07-17 20:25:24 -0500
commit482d8f45f18c6cc880bf2dfbbb70e3a4d704ac44 (patch)
tree5993fb976dc267c6b740933613ae305b3fd90bc6 /TESTING.md
parent8c2862b17b9bd9ae194d18fc912785f899524d8f (diff)
docs: sync README + TESTING + scrypted README with v1.4.0 reality
Drift accumulated across the review-fix, mDNS-discovery, and tooling work: - Discovery: the design-era "use a Node mDNS library" flow is replaced with what shipped — the sandbox has no such libraries; the script does a dependency-free legacy-unicast dgram browse (no :5353 bind), host dropdowns, blank-name inheritance, and auto-heal on register failure (matched by the new mac TXT record) instead of periodic re-browsing. - /state example: add mac, ota_state, panel dims, tear_guard_engaged, temp_c, and the stream stats object; correct `configured` semantics (scrypted URL only) and the never-null MAC-derived name in /config. - /config: document the 54-char name cap (mDNS label limit). - scrypted/README: add-device + settings tables gain the discovered-host dropdown, Wake triggers on create, and the canonical "Viewport name" rename field (the Scrypted pencil doesn't propagate — by design); trigger-scoped subscriptions; device-wake immediate-204 semantics; idle=0 no longer force-slept by the safety timer; "manual IP" dropped from limitations; discovery section reframed with the diagnostic.ts probe and bridge-networking caveat. - Source map: dedupe the doubled touch.{h,c} row, add stream_server / ota / chip_temp rows, fix nvs_config + endpoint-count drift. - Build/TESTING: point iteration at `make ota` (USB stays for first flash); TXT expectations include mac; DHCP-renumber failure mode now documents the verified auto-heal path.
Diffstat (limited to 'TESTING.md')
-rw-r--r--TESTING.md12
1 files changed, 9 insertions, 3 deletions
diff --git a/TESTING.md b/TESTING.md
index e3b738e..4b1a0a2 100644
--- a/TESTING.md
+++ b/TESTING.md
@@ -14,6 +14,12 @@ Status legend:
- 🟡 partial — compiles cleanly, builds against ESP-IDF 5.4 for `esp32p4`, but not yet run on a board.
- ✅ verified — confirmed on hardware. Annotate with the date and board rev.
+> **Iterating on an already-flashed device:** `make ota [VIEWPORT=<host>]`
+> builds with a fresh git stamp, pushes over the LAN, and verifies the
+> `pending-verify -> valid` OTA sequence (auto-retrying the known
+> first-push silent rollback). The USB commands below are for first
+> flash / bring-up only.
+
---
## Status snapshot
@@ -179,7 +185,7 @@ Expected `/state` body on a fresh device (no `/config` posted yet):
}
```
-Expected mDNS browse output should show a `_scrypted-viewport._tcp` instance with TXT records `version=`, `resolution=`, `orientation=`, `name=` (empty for `name`).
+Expected mDNS browse output should show a `_scrypted-viewport._tcp` instance with TXT records `version=`, `resolution=`, `orientation=`, `name=` (MAC-derived default until `/config` names it), and `mac=` (since v1.4.0 — the stable identity the Scrypted script's discovery/auto-heal matches on).
**Status**: ✅ verified 2026-06-14 alongside M1.
@@ -559,7 +565,7 @@ Tap rapidly (faster than the receiver can ack) and confirm the receiver only see
**Visual checks (panel-attached)**
-- Fresh flash → screen shows the info screen (~15 lines of `label value` pairs, white on black, auto-scaled). With no `/config` posted it reports `name unset`, `config no`, `state asleep`, `scrypt none`.
+- Fresh flash → screen shows the info screen (~17 lines of `label value` pairs, white on black, auto-scaled). With no `/config` posted it reports the MAC-derived default name, `config no`, `state asleep`, `scrypt none`.
- `POST /config` with viewport + scrypted → device transitions to ASLEEP, backlight off.
- `POST /state {state:wake}` (or tap) → backlight on, `Loading...` centered until the first `/frame` lands.
- `POST /frame` while AWAKE → loading screen replaced by the JPEG.
@@ -614,7 +620,7 @@ Run these once all milestones are implemented and individually verified. The poi
- Cable pull mid-frame: device idle-sleeps after `idle_timeout_ms`. On reconnect, mDNS re-advertises; Scrypted re-finds and continues. (Link-loss/recovery part verified 2026-06-14 with the device idle — see M1 section. Mid-frame variant still pending.)
- Scrypted unreachable on tap: device still toggles backlight, `state_post_failures` increments. Recovery: Scrypted comes back, next tap syncs.
-- DHCP lease change: device gets new IP, re-advertises via mDNS. Scrypted's periodic browse picks up the new address.
+- DHCP lease change: device gets new IP, re-advertises via mDNS. The script's next 5-minute register fails against the stale host, which triggers its mDNS auto-heal — browse, match by `mac` TXT, rewrite host, retry. Verified 2026-07-18 by saving a wrong IP: `host 10.0.13.99 -> 10.0.13.83 (mdns auto-heal)`.
- `/state_post_failures` count should be observable via `GET /state`.
### D. Longevity