← All changelog entries
August 2, 2026

The Checkup shipped: live polls inside the slides, a WhatsApp-ready mobile poll, and the Recipes surface comes alive

The July 29 all-hands ran on a deck with the polling system embedded directly in the slides — then kept evolving mid-session. Plus: a swipe-through mobile poll for the WhatsApp blast, two founding Recipes articles, a downloadable agent-skill, and the site's first DESIGN.md.

Authors
Michael Staton
Augmented with
Claude Code on Fable 5

The Checkup shipped: live polls inside the slides

Why Care?

Most webinar polls live in a side panel nobody looks at. For the July 29 Agentic VC Dojo all-hands — “The Checkup,” a session with no presenters where the room itself was the content — we put the polling system inside the deck. Attendees opened the slides on their own screens and answered on the slide while the projected copy filled with the room’s answers in real time. Five describe-it-in-your-own-words questions (wins, intrigue, rabbit holes, time eaters, breakthroughs), then random breakout groups turned the readout into the dojo’s next agenda.

And because live events never go to plan, half of what shipped here shipped during the session — which turned out to be the best possible stress test of the whole stack.

What’s New?

  • Deck-embedded live polls/slides/2026-07-29_monthly-all-hands is SSR and renders PollEmbed islands (projection variant) directly in slides, sharing poll IDs with the session page so every surface feeds one tally.
  • “Set the Agenda” breakouts/breakouts/set-the-agenda: random groups, a five-question rail, a one-pager artifact, and a host script for turning report-backs into a ranked forward agenda.
  • Mobile swipe poll/polls/checkup: the same six polls, one per screen, vertical scroll-snap, built for a WhatsApp blast — with a 1080×1620 vertical share card and OG dimension support added to the layouts.
  • Login round-trips — all three OAuth providers now honor a ?next= return path (relative-only, cookie-carried), so a poll link doesn’t dump freshly-authed voters on /me.
  • Recipes comes alive — two founding guides (Getting Unafraid and Setting Up Your Terminal, Claude Desktop vs Claude Code) plus a third that’s also a product: a downloadable agent-skill, create-html-breakout-highlights, bundling our DESIGN.md so members’ generated pages come out on-brand.
  • Copy buttons on every code block — one delegated listener in CodeBlock.astro; the terminal guide alone has nine paste-able blocks.
  • DESIGN.md — the site’s first machine-readable design contract, authored from theme.css per the Stitch spec, with the three-mode story and house Do’s/Don’ts.
  • Seven tool-registry additions — Town, TrustedRouter, Buzz, Origami, Memory Store, Outline, Browserbase.

The mid-session story

Three things changed while the meeting was running, all without a deploy:

  1. The entry caps bit. The checkup questions are describe-style, but multi-string-input defaulted to 200 chars and Q4/Q5 were seeded with a one-entry cap. scripts/uncap-jul29-polls.ts raised every poll to 2000 chars and removed count caps — both the Svelte input and the server validator read caps from the poll’s options JSON in Turso, so a page refresh was the whole rollout.
  2. A sixth question appeared. “What’s the most mindblowing thing you heard in your breakout? Who did you hear it from?” was seeded open mid-session (scripts/add-breakout-echoes-poll.ts) and was answerable on the session page seconds later; the dedicated deck slide followed in the next push.
  3. The host CLI had quietly died. Astro 7 dropped the delegation that made astro db execute work, which had silently broken every seed and poll-control script since the upgrade. scripts/db-execute.mjs now shims straight into @astrojs/db’s internal CLI; the seed and set-poll-status scripts were converted to the required default-export shape. (sync-session.ts still needs the same two-line treatment — tracked.)

The lesson we keep re-learning: putting config in the database and reading it per-request is what makes a live event operable. Everything we could fix without a deploy got fixed in under a minute.

What’s Next?

  • Close-out: archive the session via sync:session (after applying the shim fix there).
  • The poll-results readout feeds the August 26 all-hands agenda — top-voted proposals become the next sessions.
  • Candidate blueprint note: make uncapped the default for multi-string-input and treat caps as opt-in forcing functions.