Conversation
Three slices that together kill the "slideshow" look in rendered output. Slice 4 — Per-scene atmosphere system: - New packages/core/src/script/atmosphere/ registry with five presets: studio-flat (no-op), aurora (rotating conic gradient), gradient-mesh (drifting radial gradients), particle-field (two tiled SVG dot layers on GPU transforms — no per-particle DOM), noise-grain (dense grain + vignette, drifting). - Each preset is pure CSS with @Keyframes scoped per-scene id; no GSAP, no JS runtime cost, can't fight the runtime ticker. - mix-blend-mode picked per bg luma — multiply on light, screen on dark — so colors actually stain instead of overlay-washing. - assembleMaster injects atmosphere as the first child of every scene div via a single HTML replace; templates stay untouched. - defaultAtmosphereForTemplate maps template type → preset id so the planner doesn't have to think about it. Planner can override via scene.props.background. Slice 5 — Cinematic transitions between scenes: - SceneTransition union extended: cut, fade, wipe-left, wipe-right, zoom-in, zoom-out, whip-pan. - New packages/core/src/script/transitions/index.ts holds per-type durations + defaultTransitionForTemplate. - assembleMaster bakes transitionIn + transitionInMs into the SCENES array embedded in the player. - forceSync rewritten: per-scene role (hidden/active/entering/exiting) and per-type CSS application (opacity, transform, clip-path). The outgoing scene cross-exits during the entering scene's window so audio stays locked to scene boundaries. Slice 6 — Kinetic upgrades for the workman templates that carried 40-60% of screen time as static text on flat color: - aroll-text: per-word title reveal with overflow-clipped slide-up spans (newsroom feel), animated accent rule wipe, eyebrow side-rule, per-word body fade. - concept-callout: numbered items become circular badges with halo glow that stamp in with back-overshoot, a vertical accent spine draws downward as badges drop, item labels reveal per-word. Verified: the assembled my-first-video plays cross-fades, wipe-lefts between callout and chart scenes, zoom-ins on comparison, and the upgraded callout/aroll templates carry visible motion the originals lacked.
4 tasks
This was referenced Apr 25, 2026
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.
Summary
Three slices that together kill the "slideshow" look in rendered output. Templates carry visible motion, scene boundaries are cinematic, and every scene now has an ambient backdrop that hijacks peripheral attention.
Slice 4 — Per-scene atmosphere system
packages/core/src/script/atmosphere/registry with five presets:studio-flat— no-op (use when brand requires the cleanest possible flat look)aurora— rotating conic gradient + pulsing radial glows; dramaticgradient-mesh— four drifting radial gradients; subtleparticle-field— two tiled SVG dot layers on GPU transforms (no per-particle DOM)noise-grain— dense grain + vignette, slow drift@keyframesscoped per-scene id; no GSAP, no JS runtime cost, can't fight the runtime ticker.mix-blend-modepicked per bg luma —multiplyon light bg,screenon dark — so colors actually stain instead of overlay-washing out.assembleMasterinjects atmosphere as the first child of every scene div via a single regex replace; templates stay untouched.defaultAtmosphereForTemplatemaps template type → preset id (hooks/quote/outro → aurora, chart/comparison → gradient-mesh, callout/aroll → particle-field). Planner can override viascene.props.background.Slice 5 — Cinematic transitions between scenes
SceneTransitionextended:cut | fade | wipe-left | wipe-right | zoom-in | zoom-out | whip-pan.packages/core/src/script/transitions/index.tswith per-type durations +defaultTransitionForTemplate.assembleMasterbakestransitionIn+transitionInMsinto the SCENES array embedded in the player.forceSyncrewritten: per-scene role (hidden/active/entering/exiting) and per-type CSS application (opacity, transform, clip-path). Outgoing scene cross-exits during the entering scene's window so audio stays locked to scene boundaries.Slice 6 — Kinetic upgrades for the workman templates
These two templates carried 40-60% of screen time as static text on flat color — the slideshow offenders.
back.out(2)overshoot, a vertical accent spine draws downward as badges drop, item labels reveal per-word.Test plan
my-first-video(12 scenes) — atmosphere injected on every scene, distribution matches template typeNotes