From 482d8f45f18c6cc880bf2dfbbb70e3a4d704ac44 Mon Sep 17 00:00:00 2001 From: Luke Hoersten Date: Fri, 17 Jul 2026 20:25:24 -0500 Subject: docs: sync README + TESTING + scrypted README with v1.4.0 reality MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- TESTING.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'TESTING.md') 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=]` +> 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 -- cgit v1.2.3