timeline-layout-reveal

$npx mdskill add remotion-dev/remotion/timeline-layout-reveal

Use `packages/brand/src/TimelineLayoutReveal.tsx` and its registration in `packages/brand/src/Root.tsx`. Screenshots belong in `packages/brand/public/timeline-reveal/before.png` and `after.png`.

SKILL.md

.github/skills/timeline-layout-revealView on GitHub ↗
---
name: timeline-layout-reveal
description: Capture matching 2x Remotion Studio timeline screenshots and make a before/after crop reveal in packages/brand. Use for timeline layout comparison videos, including recapturing a historical layout.
---

# Timeline Layout Reveal

Use `packages/brand/src/TimelineLayoutReveal.tsx` and its registration in
`packages/brand/src/Root.tsx`. Screenshots belong in
`packages/brand/public/timeline-reveal/before.png` and `after.png`.

## Matching captures

Capture the requested composition from `packages/jonnys-videos`. Start Studio
with `bunx remotion studio --no-open --port=<free-port>` and open the printed URL.
For the existing reveal, use `RollerSkiCommute-new`, frame 2025: the cow close-up.
Confirm the cow still appears there if the composition has changed.

The approved framing is a 1280 × 800 CSS viewport at device scale factor 2,
with a 336-pixel timeline panel. This gives a MacBook-like 16:10 screenshot and
a timeline 30% shorter than the original 480-pixel panel. Adapt these values
when the user requests different framing. A 2x capture must contain 2560 × 1600
pixels; changing only the CSS viewport size is insufficient.

Keep the viewport, panel split, timeline zoom, scroll position, playhead, and
selection identical between captures. Zoom out to show the entire horizontal
duration. Capture the full Studio viewport when the composition preview should
remain visible; capture only the timeline when requested. Move the pointer away
from the timeline to avoid hover feedback and tooltips.

Wait for the composition, timeline activity scan, thumbnails, and waveforms to
load. Empty render-delay handles alone do not establish that timeline media has
finished loading: inspect a screenshot before saving the final captures.

## Historical before view

Inspect the flags and source at both revisions. Main now enables tracks by
default, so disabling sequence activity on current main does not recreate the
original staircase layout. The existing before capture used revision
`836e5f3597f90cb7b24a5de89b501e89942b0f41` with both experimental tracks and sequence
activity disabled. Choose a different baseline when the requested comparison
requires it.

Use a suitable existing checkout or a temporary managed worktree at the baseline
revision. For a fresh checkout, run `bun install` and
`bunx turbo run make --filter='@remotion/jonnys-videos...'` before starting Studio;
building only CLI dependencies misses fonts, noise, and layout utilities.

Different ports have separate browser storage. Match the framing and playhead
explicitly in both Studios. Copy saved screenshots into the active brand project
before closing the baseline server and archiving a temporary managed worktree.
Restore any temporarily changed config. Update from main only when requested.

## Reveal and delivery

Use only the two screenshot layers, unless the user requests additional content.
Keep the before image underneath the after image. Animate the after image's
`cropRight` from 1 to 0 with an inline `interpolate()` driven by
`useCurrentFrame()`, clamped at both ends. Use crop props rather than a CSS
animation so the wipe renders deterministically and remains editable in Studio.

Match the composition dimensions to the screenshot pixels. The existing reveal
is six seconds at 60 fps: hold before for 1.2 seconds, wipe until 3.8 seconds,
then hold after. Preserve or adjust timing according to the request.

Render from `packages/brand`, following [remotion-render](../remotion-render/SKILL.md):

```bash
bunx remotion render src/index.ts TimelineLayoutReveal ../../out/timeline-layout-reveal.mp4 --codec=h264 --crf=16 --image-format=png --pixel-format=yuv420p --concurrency=4
```

Inspect the beginning, midpoint, and ending of the exported video, checking that
the preview and playhead stay aligned and only the timeline changes. Run focused
formatting and lint checks for the changed source files.

For phone viewing, follow [upload-r2](../upload-r2/SKILL.md) to upload the rendered
MP4 under a unique content-hashed key, verify its public URL, and return a direct
watch link. Retain the local screenshots when the user requested them in brand.
This workflow does not itself request a commit, push, or PR.

More from remotion-dev/remotion

SkillDescription
add-bugAdd a new Remotion bug entry to packages/bugs/api/[v].ts. Use when the user describes a bug and affected Remotion versions that should be surfaced through the bugs API.
add-cli-optionAdd a new Remotion CLI or config option by creating an AnyRemotionOption, registering CLI parsing, wiring config setters, and updating documentation. Use when adding or converting command-line flags or Remotion options.
add-effectAdd a new effect to @remotion/effects, including implementation, package exports, docs, demos, preview images, Remotion skill updates, formatting, and builds.
add-expertAdd a new expert to the Remotion experts page
add-new-packageAdd a new package to the Remotion monorepo, including package scaffolding, monorepo registration, documentation, build scripts, and release checklist updates. Use when creating a new @remotion package.
add-sfxAdd a new sound effect to @remotion/sfx
add-webcodecs-bugAdd a browser WebCodecs bug to the Remotion Mediabunny WebCodecs bugs docs page. Use when given a Chromium, WebKit, or Firefox issue URL that should be tracked in packages/docs/docs/mediabunny/webcodecs-bugs.mdx, especially when needing to look up the issue title, filing date, reporter, and resolution state before editing the MDX table.
canvas-capture-extensionRebuild, install, and reload the private Remotion Canvas Capture unpacked Chrome extension. Use when the extension needs to be restored after a Codex worktree was deleted, rebuilt after source changes, moved to its durable install directory, or reloaded in Chrome or Chrome Canary.
checkoutCheckout a requested branch or ref in the Remotion repo, rename the current task to the associated PR title when running in Codex, then install dependencies and build. Use when the user asks to checkout a ref and prepare the workspace.
convertStart the local @remotion/convert app and open it in the Codex browser. Use when the user invokes /convert or $convert, asks to launch convert.remotion.dev locally, or wants to inspect the Convert package UI.