Glows
The whole plugin region gets a pulsing brand-accent outline and a “tap to interact” pill (a large, easy target).
The audience joins from a phone (scan QR → vote / ask / react), so the viewer is a first-class mobile surface. The challenge: interactive controls live inside the fixed, scaled canvas, where on a portrait phone they’d shrink to ~30%. liebstoeckel solves this without breaking the fixed-canvas guarantee.
On a touch device with a shrunk stage, a <Plugin> doesn’t try to make tiny controls tappable. Instead it:
Glows
The whole plugin region gets a pulsing brand-accent outline and a “tap to interact” pill (a large, easy target).
Breaks out
Tapping opens the same plugin full-size in a bottom sheet rendered outside the scaled canvas: real tap targets, bound to the same live state.
This is built into the engine’s <Plugin> component, so every plugin (poll, Q&A, reactions, and your own) inherits it. It engages only when the pointer is coarse and the stage is scaled down and a live server is connected.
For whoever drives the deck (a standalone viewer or the presenter; a live audience viewer just follows), the engine binds horizontal swipe and edge tap-zones to advance/retreat, reusing the same step-then-slide logic as the keyboard. Gestures that start on interactive content (buttons, links, the plugin region) are ignored so they never fight the UI.
On a portrait phone the 16:9 slide is letterboxed. A dismissable “rotate for a bigger view” hint nudges the viewer; it’s rendered at device scale (outside the canvas) and auto-hides.
On a phone the presenter view is a notes-first confidence monitor you can run a whole talk from. Open it from the deck’s ⋮ menu → “Presenter view” (the touch counterpart to the desktop p pop-out; shown only to drivers, never to a live viewer). It’s handy after scanning the “drive from your phone” presenter QR.
The layout puts your notes front and centre (large and scrollable: the teleprompter), with a slim status bar (position + timer), a compact next-slide + reveal-state peek, and big Prev / Next buttons in the thumb zone. Swipe horizontally to change slides; scrolling the notes never advances them (the gestures are resolved by axis). The screen is kept awake via the Wake Lock API while it’s open, and ”‹ slides” returns to the deck.
Code-first presentations your agent can author. One file out, no server.
Comments