diff --git a/brightsign/README.md b/brightsign/README.md new file mode 100644 index 0000000..8f28106 --- /dev/null +++ b/brightsign/README.md @@ -0,0 +1,51 @@ +# ScreenTinker on BrightSign — capability probe + +Not a port. This answers, on **real hardware**, the questions that decide what a port looks like — +so the design isn't guessed from documentation. + +## Run it + +1. FAT32-format an SD card. It must be **empty** — a card with leftover data won't trigger a fresh + provisioning cycle. +2. Copy `autorun.brs` and `probe.html` to the **root**. +3. Insert with the player powered off, then power on. +4. Read the screen. Remote devtools are on `http://:2999` if you'd rather read it there. +5. **Power-cycle and reload.** The reboot markers are the point — first run writes them, second run + says which survived. + +## What it answers, and why each matters + +| check | why it decides something | +|---|---| +| which `@brightsign/*` modules resolve | `nodejs_enabled: true` injects them into the runtime. If injection is origin-independent, a **remotely-served** page gets them too — which is the whole cheap path. | +| `registry` survives reboot | ScreenTinker's device identity (`deviceId`, `deviceToken`, `paired`, `serverUrl`) lives in `localStorage`, and on BrightSign that behaves like sessionStorage. Without a durable store every panel re-pairs on every boot and spawns a new device row. | +| `localStorage` survives reboot | If it does on this OS build, the port gets dramatically simpler. Reports say it doesn't; worth confirming rather than inheriting a 2019 answer. | +| serviceWorker / Cache API / indexedDB | The web player registers `/player/sw.js` for content caching. If unavailable, offline playback has to move to BrightSign's storage APIs — which is the "extra mile" work anyway. | +| `