Skip to content

Slice 16 — Playback controls + fullscreen (#17) - #38

Merged
cbaucom merged 1 commit into
mainfrom
feat/17-playback-controls-fullscreen
Jun 11, 2026
Merged

cbaucom merged 1 commit into
mainfrom
feat/17-playback-controls-fullscreen

Conversation

@cbaucom

@cbaucom cbaucom commented Jun 11, 2026 •

Copy link
Copy Markdown
Owner

Closes #17

Summary

  • Pure sequence-planner/playback helpers map playhead frames ↔ slide IDs from the RenderPlan
  • Filmstrip shows a green "now playing" ring synced via requestAnimationFrame polling; click seeks to that slide and opens settings
  • Present mode portals the player to document.body, requests fullscreen, hides editor chrome; Esc exits

Acceptance criteria

  • Grid click jumps playback to slide start; playhead movement highlights current slide (green ring)
  • Fullscreen/present mode shows only the rendered show; Esc exits
  • Scrubbing uses Remotion Player + SlideshowComposition driven by RenderPlan (no separate render path)

Code review

Score: 4/5 — APPROVE

Frame→slide logic correctly lives in the pure module; editor shell stays thin. No determinism concerns. Tests cover slideIdAtFrame / startFrameForSlideId golden cases.

Non-blocking follow-ups: rAF poll runs while paused (fine at editor scale); slideIdAtFrame uses start-frame semantics so crossfade overlap may briefly highlight the incoming slide before it visually dominates; presentation mode remounts the player (playback state preserved via initialFrame).

Test plan

  • pnpm test
  • pnpm build
  • pnpm lint
  • Manual: play/scrub — green ring tracks; click thumb — seeks + settings modal; Present — chrome hidden, Esc exits
  • node scripts/playwright-issue-17-smoke.mjs (requires dev server)

Made with Cursor

Wire grid playhead highlighting to RenderPlan frame positions, seek on slide click, and a body-portaled Present mode that hides editor chrome.

Co-authored-by: Cursor <cursoragent@cursor.com>
@cbaucom
cbaucom merged commit 853c2ad into main Jun 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Slice 16 — Playback controls + fullscreen

1 participant