Interactivity agents¶
Slides the audience interacts with. Today that means live polls, quizzes and open-answer walls: the room scans a QR code, answers in Google Forms, and the slide updates in real time by reading the responses spreadsheet through the gviz endpoint over JSONP, so it works even from file://, as long as there is internet and the spreadsheet is public.
/mira-survey¶
Builds a live poll slide: the audience scans a QR code, votes on a Google Form, and the result updates in real time on the slide (a spinning 3D donut by default, or a bar chart). It takes two links, the voting link (forms.gle/..., which becomes the QR generated locally as inline SVG) and the responses spreadsheet link (docs.google.com/spreadsheets/..., from which the slide reads the tally). It reads the gviz endpoint via JSONP every few seconds, so it works even from file:// with no CORS error; it never uses "Publish to web → CSV" (cached for ~5 min). The spreadsheet must be public (anyone with the link → Viewer). If a link is missing, the agent asks before generating. For a QR without voting use /mira-qrcode; for a static data chart use /mira-chart.
/mira-quiz¶
Builds a live quiz slide: the audience scans a QR code, answers a multiple-choice question in Google Forms, and the slide reads the responses spreadsheet live through gviz + JSONP. The correct answer stays hidden until the presenter clicks Reveal or presses R; only then does the correct card turn soft green, counts and percentages appear with animated bars, and a basic hit ranking can be toggled with K. It takes the voting link, spreadsheet link, question, options and correct answer. For a poll without a correct answer use /mira-survey.
/mira-post-it¶
Builds a live post-it wall across two slides: the first shows the question with a QR code and a live counter, the second is the wall, where every free-text answer sticks as its own post-it, one at a time. Unlike /mira-survey and /mira-quiz, there are no options and no correct answer, and nothing is aggregated: each person shows up with their own sentence. A built-in, editable word filter blocks profanity: a blocked answer is silently discarded, never sticks and never counts. Answers that arrive while slide 1 is up wait in a queue and only start sticking when slide 2 becomes visible, so the presenter never turns the page onto a finished, motionless wall. The wall shows 15 per page: on slide 2 the arrow key turns the page and only leaves the wall when there is nowhere left to page, so pressing back on the first page returns to the question. A fresh page sticks one at a time, going back a page is instant, and nothing is discarded. The grid is born with all 15 slots at their final size while the wall is still empty, so a post-it appears in its slot instead of the whole wall shrinking on every arrival. Cards are keyed by row index, so tilt and colour stay put across reads. Matte papers in one luminance band, contrast measured above 9:1 against the ink. It takes the voting link, the spreadsheet link and the question. Press R to clear and replay the wall from scratch. The form question must be short answer or paragraph; for multiple choice use /mira-survey or /mira-quiz.