diff --git a/brightsign/README.md b/brightsign/README.md index 8f28106..44dfd21 100644 --- a/brightsign/README.md +++ b/brightsign/README.md @@ -1,51 +1,116 @@ -# ScreenTinker on BrightSign — capability probe +# ScreenTinker on BrightSign -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. +The player is the ordinary web player (`server/player/index.html`) running in an `roHtmlWidget`. +It already runs unmodified on real hardware — a Series 5 (HD1026, BOS 9.1, Chromium 120) played +4,723 items over 12.4h averaging 9.4s against a 10s slot. So the port is not "can it run". It is +the four things a page cannot do for itself. -## Run it +``` + autorun.brs the host: owns the widget, identity, outputs, recovery + | @brightsign/messageport (bidirectional) + st-bridge.js the page's half of the same contract + | + server/player/index.html the unmodified player +``` -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. +## Files -## What it answers, and why each matters - -| check | why it decides something | +| file | role | |---|---| -| 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. | -| `