README: voice, value, url substitution, audio cards
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s

This commit is contained in:
Bendik Aagaard Lynghaug
2026-08-30 15:58:24 +02:00
parent f64d62f20e
commit 8a291fb574
+22 -5
View File
@@ -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 `<audio>` player.
A repo may also carry an optional `site.yaml` at its root (sibling of
`aggregates.yaml`) declaring instance branding: `title`, `wordmark`
(image URL), and the landing page's `hero`: