diff --git a/README.md b/README.md index 8dd670b..616ae31 100644 --- a/README.md +++ b/README.md @@ -290,8 +290,57 @@ helper the flow calls is a coroutine and its dedup only runs when awaited. ### Options +The Configure page is a **menu of sub-screens**, not one long form. Home Assistant +renders it as a list of rows; each row opens a short form and comes back to the menu, +and only **Save and close** commits: + +| Row | What it holds | +| --- | --- | +| **Main setup** | Shield address, ADB port, `Read state over ADB`, `Add the Nvidia Remote Protocol`, `Show title and artist`, `Allow the adb_command action`, Jellyfin player, power switch | +| **Receiver** | the receiver/soundbar entity and the input it uses | +| **Apps** | the apps table — one row per app (see below) | +| **Scripts** | one optional script per command, plus the remote-entity script, the channel digit delay and send-ENTER | +| **Save and close** | writes the merged options and reloads the integration | + +Every field that used to be on the single page is still there, under one of those +rows. Edits are merged **per key**, so visiting another sub-screen (or saving from a +later one) never drops what an earlier one changed. Half-finished pages are not +written: closing the dialog without **Save and close** leaves the entry as it was. + +The **setup** flow follows the same shape: its first form is unchanged (name, host, +transports, the linked entities), and after it the flow is a menu — Receiver / +Connection / pairing rows / Create the entry — so anything you want to correct is one +row away instead of buried in a form you have already submitted. The pairing rows +appear only while a transport still needs pairing. + +### The Apps table + +The **Apps** row is an editable table. One app per line, in the documented format: + +``` +ar.tvplayer.tv=TiviMate +com.plex.hdx=Plex|http://192.168.1.10:9000/plex.png +com.netflix.ninja=Netflix +``` + +`package=name` is enough; an optional `|icon` after the name adds a picture (a URL, or +a `camera.*` entity id — see *Sources* below). The field always opens carrying the +current rows, so adding, renaming or deleting an app is an edit to that text: + +- **add a row** — type a new line +- **edit a row** — change its name, icon or package id +- **remove a row** — delete its line + +A blank field clears the table (and the integration falls back to its built-in app +list). A malformed row — no `=`, or an empty name — is rejected with an error on the +page rather than being half-saved. + +A receiver may be a **`switch.*`** as well as a `media_player.*`: a soundbar or +speaker that only knows on and off is a valid receiver. (Driving that switch during +playback is a separate, later change.) + - **Jellyfin Media Player** — auto-detected or manually selected -- **Receiver + Input** — for media-zone coordination +- **Receiver + Input** — for media-zone coordination; `media_player` or `switch` - **Power Switch** — smart plug entity - **Read state over ADB / Add the Nvidia Remote Protocol** — turn either transport on or off