feat(bolt-slides): replace the slides starter with slides v2 BOU-2538 - #126
feat(bolt-slides): replace the slides starter with slides v2 BOU-2538#126geotrev wants to merge 11 commits into
Conversation
|
|
b44b0a3 to
0411df4
Compare
Review follow-ups (five commits on top of
|
Author decks in deck.json with a studio, present tab, presenter console, and Bolt DS chrome. BOU-2538 / BOU-2539.
6104652 to
f23c164
Compare
Give the skill a typed per-layout contract instead of restating keys, so chart and insight no longer share an explained `points` shape.
…are UI The studio no longer mounts those surfaces; the leftover rules were unused.
… setters Studio no longer has inspector or add-slide UI. Keep SlideStatus and animation unions for deck.json; drop the unused picker arrays and dead APIs.
Add-slide and the side inspector are gone. Keep defaults for kind-switch and example copy; authoring contracts stay in layoutProps.ts.
…senter icons One e() helper, one highlight splitter, and one icon set instead of copies in each file.
Presenter notes were stale because a new tab booted from Vite's cached deck.json import while persist skipped HMR. GET /__deck then a request-deck handshake so in-memory studio notes win if disk is still behind the debounce.
Insight points, logos items, and other homonym keys crash Present when copied from the wrong layout. Guard .map/.split, name the collisions in the skill, and drop the accordion Postgres leftover.
Strip leftover narrative comments and match the EditorApp blank-line rhythm so the rest of the starter is as readable as the first pass.
Keep photo overlays readable without an agent pass, capture fully painted slides in PDF export, and let wide bento columns use the slide width.
Stable squash (2026-08-24):
0411df4b77467c6381efe1f59f85d13a0c47bbd1. Pair with boltf1e9b32a9d(#7075), which pins this SHA.Problem
The bolt-slides starter was JSX the agent rewrote on disk. Sharing and presenting also minted WebContainer URLs, which fail as visitor links and leak the preview origin.
Solution
Replace
bolt-slideswith a Pitch-style studio: decks are Postgres rows. The editor talks todeck-api; the agent writesdeck/slidesrows directly. Owner Present is in-place. The published origin is the audience deck (notes stripped). Share mints presenter-console and editor links on that origin. Host identity and published origin are injected by Bolt — stackblitz/bolt#7075.Implementation Details
@/kept. Skeleton chrome uses a Bolt DS token snapshot (BOU-2539) without depending on@blitz/design-system./), audience present (published/, notes stripped; leftover/present?k=still works), presenter console (share or/present?presenter=1). Audience present has no presenter control.X-Deck-OwnermatchingDECK_OWNER_SECRET→ no token ispresentonce the secret is set (local Vite with the secret unset stays owner). Opt-in via.bolt/config.jsonpreviewOwnerSecret. Owner proof is not stored inlocalStorage.BroadcastChannelis same-origin).deck-apicurls). Comments/profiles removed.