Conversation
…s (BOU-2910) Slides are now React components authored per deck in src/slides/ and referenced from deck.json by filename (import.meta.glob registry in src/slide/registry.tsx). The 30-layout catalog (src/layouts, src/components, src/data/layoutProps.ts) and its ~2,400 lines of layout-only CSS are gone. The studio, dock, rail, grid, notes, Present, speaker view, PDF/JSON download and deck.json persistence are unchanged and render component slides through the same SlideView path. SKILL.md, .bolt/prompt and README now describe the deck.json <-> component contract and the shell; the layout menu and styling rules are dropped. The single design constraint is that every slide must be responsive. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
The first pass removed the layout catalog but left the look behind: the dark/blue token theme, the spotlight + grain + vignette atmosphere on every slide, the fluid type atoms (.kicker/.headline/.accent-text), the Inter @import, applyFont defaulting to Inter, and a skill example + seed slide that used all of it. Bolt copied that and produced the same blue-on-black text decks. - base.css: atmosphere and type atoms removed; only reset, slide box, .cols and the ==accent== marker remain. - tokens.css: reduced to the variables the shell reads (--bg, --fg, --accent, fonts, gutters) with neutral defaults. - applyFont imposes nothing when deck.font is unset. - Fallback slides and the seed slide use plain inline styles. - SKILL.md: no-house-style contract, a design section (palette, type, imagery, composition are the agent's to decide per deck), example code without atoms. README and .bolt/prompt updated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…n by default Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…creens Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…tage-centered alignment Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…; data-viz and legibility rules SlideView measures its own box: up to 1600px wide the slide reflows; above that the whole slide is scaled up proportionally, so ultrawide screens show the 1600px composition larger instead of stretched thin. The scaled box is a CSS container named 'slide', so cqw/cqh and @container queries measure the stage (also fixing thumbnails and the PDF, which never matched vw). Skill: design for 390->1600 and fill the stage at 1600; use cqw/cqh and @container instead of vw/vh and media queries; a data/charts section (the number is the hero, charts at presentation scale, labels never inside data-sized shapes, no dashboard furniture); kicker above headline; a legibility floor to check before finishing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…as a failure SlideView measures every live slide after its entrance settles and logs a console error naming the slide file and how far its content (text/media elements only) leaves the stage. Bolt surfaces console errors to the agent, so an overflowing slide becomes a failure to fix rather than advice to follow. Thumbnails and export are not measured. Skill: 'nothing out of view — ever', the error to look for, tactics in order (cut copy, split the slide, use the width, shrink media before text), and the shortest-stage budget; the legibility floor references the check. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Width-only scaling shrank the inner stage's height whenever a window got wider at a fixed height (2400x900 became a 1600x600 stage), pushing content that fit at 900 tall out of view. The scale is now min(w/1600, h/900), so the stage is never narrower than 1600 or shorter than 900; extra width is room, not size. Stage constants and the fallback style move to src/slide/stage.ts (Fast Refresh lint). Skill: height is the scarce axis — tie vertical sizes to cqh, not cqw. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…nnot push content out of view Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…not shrink The shell never scales a slide down (upscale is clamped at 1), but the skill's cqw-first sizing led the agent to shrink desktop compositions on phones. SlideView now provides a StageCtx with the stage's width, height, upscale and a narrow flag (< 700px); slide components read it with useStage() from @/slide/stage to restack in JSX. Skill: below ~700px the slide is a different one-column layout, clamp() minimums are real phone reading sizes, and the narrow check must read like a phone page. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… on a narrow stage Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
useStage() now also reports compact (< 1100px, iPad portrait/landscape and small windows) and portrait (taller than wide). Skill: phone, tablet and portrait tiers each get a layout; the canonical text-beside-chart example stacks on narrow or portrait stages; the self-check covers 390x844, 820x1180, 1180x820 and 1600x900. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ames a shell change Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…e user names a shell change" This reverts commit fbb640d.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes BOU-2910
What
bolt-slides:src/layouts/,src/components/,src/data/layoutProps.ts, and ~2,400 lines of layout-only CSS inbase.css.src/slides/, referenced fromdeck.jsonby filename. A newsrc/slide/registry.tsxglobs that folder;SlideViewrenders through it, so the rail, grid, Present, speaker view and PDF export keep working unchanged. A missing file renders a clear fallback slide instead of crashing.deck.jsonships a single seed slide (welcome.tsx) that the agent replaces.SKILL.md,.bolt/promptandREADME.mdrewritten: shell description, the deck.json ↔ component contract, bootstrap, optional helpers (Slide,Reveal,Build, tokens, in-place text edit). The layout menu, entry conditions, arc and typography rules are gone. The one design rule left is every slide must be responsive.Unchanged
Studio (side panel, grid, reorder / duplicate / delete, notes), dock, Present, speaker view, PDF / JSON download, deck.json persistence, theming tokens.
Verification
npm run typecheck,npm run lint,npm run buildpass.origin/mainrenders identically at that size, so it is pre-existing engine behavior.Note
deck.json'slayoutfield keeps its name (it now means the component filename) to avoid touching the store, export and studio paths that read it.🤖 Generated with Claude Code