decode_key's sketch is too rough to be worth advertising. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
questions (redoal.com)
The content behind redoal.com — a second face of
the same portal question engine
that serves uhhm.no. Every page is a YAML file under questions/;
pushing to main lints and then tells every running portal instance
to hot-reload.
The full schema reference lives in uhhm/questions' README — this repo only notes what's distinctive here:
site.yamlrebrands the instance: titleredoal, its own wordmark, and amodulehero —hero.jsin this repo, lysbue's "paths" paint worklet brought back and animated: 47 generative turning-function curves (paths.js, seeded so every repaint agrees) tracing themselves in from the center. A real CSS Paint Worklet where the API exists (paths-worklet.js, driven by a registered--redoal-tCSS animation), a canvas with the same generator elsewhere; colors from portal's custom properties, frozen under prefers-reduced-motion. No input up there: the form's gesture canvas below is the one place a visitor draws. The wordmark is white-stroked like uhhm's, because portal's light theme lands wordmarks as ink via an invert filter.type: gestureonindex.yaml's "Draw a path and see who's near" — the pseudo edition of the network: draw a path, it becomes a real 20-byte gesture key (computed by the relay with the canonical Rust pipeline), and the submitted answer stores{points, key}in theredoal_gesturesbucket. Markedoptional: truedeliberately: the widget's hidden input is invisible to HTML required-validation.gitea_releaseson "Our Composition" — advertises redoal/redoal's releases. The jq filter pinsurl: nullwhile that repo is private (a private release's html_url 404s for anonymous visitors); flip it to.html_urlif the repo ever goes public.- Bucket names are
redoal_-prefixed (redoal_gestures,redoal_subscribers): both portal instances share one NATS JetStream, and bare names would collide with uhhm's buckets.
This repo also runs the redoal.com instance itself:
.gitea/workflows/deploy.yml pins PORTAL_RELEASE to a release tag
on uhhm/portal — bump the pin and push to upgrade (or revert to roll
back), and the workflow ships the artifact, rewrites the env from
this repo's Actions variables/secrets, restarts app@redoal-portal,
and refreshes the Caddy route. Content edits never need a deploy;
they hot-reload live.
Lint locally before pushing:
/srv/app/redoal-portal/current/question_lint --path questions
(or from a portal checkout:
cargo run --features ssr --bin question_lint -- --path <this repo>/questions)