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 10 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.
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.