diff --git a/README.md b/README.md index 3eb693e..dfade93 100644 --- a/README.md +++ b/README.md @@ -161,37 +161,55 @@ Rules of the primitive: - **A broken ask is shown as broken**, not hidden: if the JSON does not validate, the page says why, so a session never thinks it posted a question the operator cannot see. -- **A booth with its own `index.html` gets the ask INLINE, where you put it.** - That page is served verbatim, so the Booth substitutes placeholders in your - markup rather than rendering the panel above a gallery it does not have: - - ```html -
-
-
- - ``` - - Per-question fragments bind to **one** form with the HTML5 `form=` attribute, - so a four-voice audition can put each radio group under that voice's audio and - still submit all four picks in a single POST — which is what a multi-question - ask requires. The fragments ship their own scoped styles and inherit nothing - from your page. No JavaScript. - - ⚠ Put the placeholder **outside** any CSS grid or flex container, or it - becomes a cell in it. A sibling of the block it belongs to is right. - - Placement is optional: a page with no placeholders gets the whole ask appended - at the end, so an ask is never invisible — markup only moves it somewhere - better. Mark up some questions and not others and the rest are appended too, - because a multi-question form that is missing a question is a 400 the operator - would only meet after filling it in. The amber chip stays as a jump link to the - first open ask, and `/b//asks` still renders every ask on its own page. - Ask/answer files are not gallery items and do not count toward the booth's item count; they render as the panel above the gallery. Answering bumps the booth's mtime, so it lives another TTL — the session has 24h to read it. - Works with JavaScript off (plain form POST). No auth, same as everything here. +### Where the form renders + +Two booth shapes, two placements. Either way the ask is never invisible — that +is the guarantee; markup only moves it somewhere better. + +**Auto-gallery booth** (no `index.html` of its own): the asks panel renders +above the gallery, styled like the rest of the Booth. Nothing to do. + +**A booth serving its own `index.html`**: that page is returned verbatim, so the +Booth substitutes **placeholders in your markup** rather than rendering a panel +above a gallery that does not exist. The question then sits with the artifact it +is about, which is the whole point (operator ruling 2026-09-09: *"the asks should +be inline with the artifacts, not on a separate page"*). + +```html +
+
+
+ +``` + +Per-question fragments bind to **one** form via the HTML5 `form=` attribute, so a +four-voice audition puts each radio group under that voice's audio and still +submits every pick in a single POST — which is what a multi-question ask +requires. Fragments ship their own scoped styles, inherit nothing from your page, +and use no JavaScript. + +⚠ **Put the placeholder outside any CSS grid or flex container**, or it becomes a +cell in it — measured on `redo-anchors`, where the first attempt rendered as a +224 px sixth grid cell wedged between two audio players. A sibling of the block +it belongs to is right. + +The fallbacks, so a page can never strand a question: + +| you marked up | what happens | +|---|---| +| nothing | the whole ask is appended at the end of the page | +| some questions, no submit | the rest of the questions **and** a submit block are appended | +| a stem this booth does not have | your markup is left alone, untouched; the real ask is still appended | + +An amber `? N open asks` chip floats top-right as a jump link to the first open +ask, and `GET /b//asks` still renders every ask on a plain page of its own +— useful when you want to hand someone only the question. + ## Upload for pickup The reverse direction — put files in through the web, pick them up by id: