From 8a291fb574dc00c1d7d0268cf251bcfcfdc8373e Mon Sep 17 00:00:00 2001 From: Bendik Aagaard Lynghaug Date: Sun, 30 Aug 2026 15:58:24 +0200 Subject: [PATCH] README: voice, value, url substitution, audio cards --- README.md | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 03fd021..725697a 100644 --- a/README.md +++ b/README.md @@ -196,7 +196,10 @@ Question id (derived from the file's path - see routing bind {field, param, resource} (load this field's value from a resource whenever the named sibling changes - {param} templates into a url source's path), - relay (gesture only - ws(s):// redoal-relay URL) + value (preset; on a dynamic page {name} takes the + URL segment - value: "{key}" hands a voice field + its address), relay (gesture/voice - ws(s):// + redoal-relay URL) ResourceSpec source (kv | gitea_starred | gitea_org_repos | gitea_releases | url), key, public, requires_group, transitions[{from, to, label}], @@ -205,12 +208,26 @@ Question id (derived from the file's path - see routing ``` Requirement `type`: `text` (default), `textarea`, `email`, `tel`, -`select`, `file`, `prosekit` (rich text), `gesture` (draw a stroke on -a canvas; submits `{points, key}` - with `relay` set it announces the -stroke to a redoal-relay and shows echoes of similar strokes; mark it -`optional: true`, hidden inputs skip HTML required-validation), or any +`select`, `file`, `prosekit` (rich text), `gesture`, `voice`, or any HTML input type. +- `gesture` draws a stroke on a canvas and submits `{points, key}`. + With `relay` set it announces the stroke to a redoal-relay: the + relay answers with the key and its decode (drawn under the stroke), + with who is at a similar shape right now, and with *places* - keys + that hold recordings. Picking a place makes its key the field's: + the value becomes `{points, key, own_key, selected_from, + selected_distance}`. Mark it `optional: true` (hidden inputs skip + HTML required-validation). +- `voice` records in the browser and sends the audio to the relay, + which keeps it at the field's `value` key (`value: "{key}"` on a + `/shape/[key]` page). The value becomes `{key, digest, duration_ms}`. + Needs `relay`; `optional: true` for the same reason. + +A `[name].yaml` page's segment also substitutes into a `url` resource +source (`https://relay.redoal.com/place/{key}`), and a resource item +with an https `audio` field renders an `