@remotion/studio: Add composition metadata presets - #9618
Conversation
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — adds dimension and frame rate preset dropdowns to the composition metadata inspector, refactors the per-field codemod logic to support multi-field updates from a single codemod, and fixes disabled button semantics on InlineAction.
- Add
PresetDropdownwith 5 dimension presets and 7 frame rate presets — dimension presets cover HD landscape (1280×720), Full HD landscape (1920×1080), HD portrait (720×1280), Full HD portrait (1080×1920), and Square (1080×1080). Frame rate presets cover 23.976, 24, 25, 29.97, 30, 50, and 60 fps. - Refactor
CompositionMetadataValueto a singleonSavecallback — removes the three separateonPending*callbacks and thecompositionId/resolvedConfig/symbolicatedStackprops, delegating codemod application to the parent via the consolidatedsaveMetadatafunction. - Move multi-field codemod logic into
saveMetadata— constructs a singleRecastCodemodwith all changed fields, applies it optimistically, and handles success/failure for each changed field independently. - Change
InspectorDetailRow.labelfromstringtoReact.ReactNode— backward-compatible; all existing callers pass strings. - Add
unhoveredColorprop toInlineDropdownand forceWHITEwhen the dropdown is open so the active state is visually distinct. - Add native
disabledattribute toInlineAction.Buttonso disabled inline actions respect proper button semantics in addition to CSS-level disabling.
DeepSeek Pro (free via Pullfrog for OSS) (Claude Opus not used — the program covers this model; add its provider key to run your pick) | 𝕏
There was a problem hiding this comment.
✅ No new issues found in the incremental commit.
Reviewed changes — cosmetic refinement to dimension preset labels and ordering in e6a63a6. Switched from descriptive labels to resolution-first format (1280x720 (HD)), reordered presets (Full HD first), and added visual dividers between preset groups using flatMap.
DeepSeek Pro (free via Pullfrog for OSS) (Claude Opus not used — the program covers this model; add its provider key to run your pick) | 𝕏
There was a problem hiding this comment.
✅ No new issues found in the incremental commit.
Reviewed changes — a6ac4e4 adds hover-based visibility for the preset dropdown arrows. The InspectorDetailRow component now tracks hover state and supports a function form for its label prop ((hovered: boolean) => React.ReactNode), which CompositionMetadata uses to show the preset dropdown only when the row is hovered. Uses visibility (not display) so there is no layout shift. All existing string-label callers remain compatible.
DeepSeek Pro (free via Pullfrog for OSS) (Claude Opus not used — the program covers this model; add its provider key to run your pick) | 𝕏

Summary
Verification
bun run buildbun run stylecheckbun test packages/studio/src/testCloses #9611