Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
a003567
`@remotion/studio-codemods`: Preserve source formatting when insertin…
JonnyBurger Aug 28, 2026
0026084
Honor formatting config for inserted JSX
JonnyBurger Aug 28, 2026
58d1f8a
Update insertion formatting assertions
JonnyBurger Aug 28, 2026
4487811
`@remotion/studio`: Fix sequence state after JSX structure edits
JonnyBurger Aug 28, 2026
97e4051
Merge remote-tracking branch 'origin/main' into codex/fix-studio-sequ…
JonnyBurger Aug 28, 2026
5ca99ef
Normalize inserted JSX line endings
JonnyBurger Aug 28, 2026
1dd732f
`@remotion/studio`: Move updates into Settings
JonnyBurger Aug 28, 2026
da61aad
`@remotion/studio`: Hide updates in unsupported modes
JonnyBurger Aug 28, 2026
3d236d9
Merge pull request #10935 from remotion-dev/codex/fix-studio-sequence…
JonnyBurger Aug 28, 2026
041e4cf
Discard changes to packages/example/e2e/studio.test.mts
JonnyBurger Aug 28, 2026
2ba6244
`@remotion/studio`: Address updates review feedback
JonnyBurger Aug 28, 2026
3368cec
Redesign Studio error overlay
JonnyBurger Aug 28, 2026
8b9ac31
Merge pull request #10929 from remotion-dev/codex/preserve-jsx-insert…
JonnyBurger Aug 28, 2026
b05279a
Merge pull request #10937 from remotion-dev/codex/improve-error-overlay
JonnyBurger Aug 28, 2026
72e3f83
Merge pull request #10936 from remotion-dev/codex/settings-updates-pane
JonnyBurger Aug 28, 2026
a2daeab
remotion.dev/brand: Add Canvas Capture announcement timeline
JonnyBurger Aug 28, 2026
48f30a8
Merge pull request #10941 from remotion-dev/codex/canvas-capture-anno…
JonnyBurger Aug 28, 2026
92088f3
remotion.dev/brand: Add portrait Canvas Capture short
JonnyBurger Aug 28, 2026
735aba4
Merge pull request #10943 from remotion-dev/codex/canvas-capture-short
JonnyBurger Aug 28, 2026
3902edd
remotion.dev/brand: Premount Canvas Capture videos
JonnyBurger Aug 28, 2026
8f97758
Docs: Remove shared Twoslash cache (#10944)
samohovets Aug 28, 2026
41edc42
Elements: Fix audio oscilloscope timeline offset (#10946)
samohovets Aug 28, 2026
a1011d6
Docs: Use Docusaurus Faster on Vercel (#10940)
samohovets Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
import {Video} from '@remotion/media';
import {TransitionSeries} from '@remotion/transitions';
import {AbsoluteFill} from 'remotion';

export const CanvasCaptureAnnouncement: React.FC = () => {
return (
<AbsoluteFill style={{backgroundColor: 'black'}}>
<TransitionSeries name="Canvas Capture announcement timeline">
<TransitionSeries.Sequence name="Take 1" durationInFrames={217}>
<Video
name="Take 1"
src="https://remotion.media/canvas-capture-announcement/camo-01.mov"
premountFor={30}
trimBefore={58}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 2" durationInFrames={386}>
<Video
name="Take 2"
src="https://remotion.media/canvas-capture-announcement/camo-02.mov"
premountFor={30}
trimBefore={132}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 3" durationInFrames={403}>
<Video
name="Take 3"
src="https://remotion.media/canvas-capture-announcement/camo-03.mov"
premountFor={30}
trimBefore={76}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 4" durationInFrames={266}>
<Video
name="Take 4"
src="https://remotion.media/canvas-capture-announcement/camo-04.mov"
premountFor={30}
trimBefore={79}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 5" durationInFrames={611}>
<Video
name="Take 5"
src="https://remotion.media/canvas-capture-announcement/camo-05.mov"
premountFor={30}
trimBefore={85}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 6" durationInFrames={810}>
<Video
name="Take 6"
src="https://remotion.media/canvas-capture-announcement/camo-06.mov"
premountFor={30}
trimBefore={74}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 7" durationInFrames={477}>
<Video
name="Take 7"
src="https://remotion.media/canvas-capture-announcement/camo-07.mov"
premountFor={30}
trimBefore={49}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 8" durationInFrames={368}>
<Video
name="Take 8"
src="https://remotion.media/canvas-capture-announcement/camo-08.mov"
premountFor={30}
trimBefore={76}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 9" durationInFrames={170}>
<Video
name="Take 9"
src="https://remotion.media/canvas-capture-announcement/camo-09.mov"
premountFor={30}
trimBefore={80}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 10" durationInFrames={255}>
<Video
name="Take 10"
src="https://remotion.media/canvas-capture-announcement/camo-10.mov"
premountFor={30}
trimBefore={55}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 11" durationInFrames={297}>
<Video
name="Take 11"
src="https://remotion.media/canvas-capture-announcement/camo-11.mov"
premountFor={30}
trimBefore={73}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Take 12" durationInFrames={988}>
<Video
name="Take 12"
src="https://remotion.media/canvas-capture-announcement/camo-12.mov"
premountFor={30}
trimBefore={150}
style={{width: '100%', height: '100%'}}
objectFit="cover"
/>
</TransitionSeries.Sequence>
</TransitionSeries>
</AbsoluteFill>
);
};
114 changes: 114 additions & 0 deletions packages/brand/src/CanvasCaptureShort/CanvasCaptureShort.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
import {Video} from '@remotion/media';
import {TransitionSeries} from '@remotion/transitions';
import {AbsoluteFill} from 'remotion';

export const CanvasCaptureShort: React.FC = () => {
return (
<AbsoluteFill style={{backgroundColor: 'black'}}>
<TransitionSeries name="Canvas Capture short timeline">
<TransitionSeries.Sequence name="Short 1" durationInFrames={125}>
<Video
name="Short 1"
src="https://remotion.media/canvas-capture-short/short-01.mov"
premountFor={30}
trimBefore={37}
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '50%',
}}
objectFit="cover"
objectPosition="center center"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Short 2" durationInFrames={194}>
<Video
name="Short 2"
src="https://remotion.media/canvas-capture-short/short-02.mov"
premountFor={30}
trimBefore={69}
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '50%',
}}
objectFit="cover"
objectPosition="center center"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Short 3" durationInFrames={255}>
<Video
name="Short 3"
src="https://remotion.media/canvas-capture-short/short-03.mov"
premountFor={30}
trimBefore={71}
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '50%',
}}
objectFit="cover"
objectPosition="center center"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Short 4" durationInFrames={158}>
<Video
name="Short 4"
src="https://remotion.media/canvas-capture-short/short-04.mov"
premountFor={30}
trimBefore={65}
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '50%',
}}
objectFit="cover"
objectPosition="center center"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Short 5" durationInFrames={271}>
<Video
name="Short 5"
src="https://remotion.media/canvas-capture-short/short-05.mov"
premountFor={30}
trimBefore={62}
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '50%',
}}
objectFit="cover"
objectPosition="center center"
/>
</TransitionSeries.Sequence>
<TransitionSeries.Sequence name="Short 6" durationInFrames={247}>
<Video
name="Short 6"
src="https://remotion.media/canvas-capture-short/short-06.mov"
premountFor={30}
trimBefore={80}
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '50%',
}}
objectFit="cover"
objectPosition="center center"
/>
</TransitionSeries.Sequence>
</TransitionSeries>
</AbsoluteFill>
);
};
20 changes: 20 additions & 0 deletions packages/brand/src/Root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ import {
import {Banner} from './Brand/Banner';
import {Comp} from './Brand/Composition';
import {TriangleDemo} from './Brand/TriangleToSquare';
import {CanvasCaptureAnnouncement} from './CanvasCaptureAnnouncement/CanvasCaptureAnnouncement';
import {CanvasCaptureComposition} from './CanvasCapturePreview';
import {CanvasCaptureShort} from './CanvasCaptureShort/CanvasCaptureShort';
import {Checker} from './Checker';
import {CloseUp1} from './CloseUp1';
import {CloseUp2} from './CloseUp2';
Expand Down Expand Up @@ -173,6 +175,24 @@ export const RemotionRoot: React.FC = () => {
height={520}
/>
<Folder name="announcements">
<Folder name="canvas-capture-announcement">
<Composition
id="CanvasCaptureAnnouncement"
component={CanvasCaptureAnnouncement}
durationInFrames={5248}
fps={30}
width={1920}
height={1080}
/>
<Composition
id="CanvasCaptureShort"
component={CanvasCaptureShort}
durationInFrames={1250}
fps={30}
width={1080}
height={1920}
/>
</Folder>
<Composition
id="Skills2CodeChange"
component={Skills2CodeChange}
Expand Down
2 changes: 1 addition & 1 deletion packages/browser-studio/e2e/browser-studio.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -747,7 +747,7 @@ test('drops a local image onto the canvas and imports it into the virtual projec
page.evaluate(() =>
window.__browserStudioProject.files[
'/project/src/Composition.tsx'
].includes("staticFile('framer.webm')"),
].includes('staticFile("framer.webm")'),
),
)
.toBe(true);
Expand Down
7 changes: 0 additions & 7 deletions packages/browser-studio/src/browser-studio-operations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1275,7 +1275,6 @@ export const createBrowserStudioOperations = ({
nodePathMutationFiles: updates.map(({fileName, result}) => ({
absolutePath: fileName,
remappings: result.nodePathRemappings,
restoredNodePaths: [],
})),
});
if (nodePathMutation === null) {
Expand Down Expand Up @@ -1340,7 +1339,6 @@ export const createBrowserStudioOperations = ({
nodePathMutationFiles: updates.map(({fileName, result}) => ({
absolutePath: fileName,
remappings: result.nodePathRemappings,
restoredNodePaths: [],
})),
});
if (nodePathMutation === null) {
Expand Down Expand Up @@ -1382,7 +1380,6 @@ export const createBrowserStudioOperations = ({
{
absolutePath,
remappings: result.nodePathRemappings,
restoredNodePaths: [],
},
],
});
Expand Down Expand Up @@ -1500,7 +1497,6 @@ export const createBrowserStudioOperations = ({
{
absolutePath,
remappings: result.nodePathRemappings,
restoredNodePaths: [],
},
],
});
Expand Down Expand Up @@ -1873,7 +1869,6 @@ export const createBrowserStudioOperations = ({
{
absolutePath,
remappings: result.nodePathRemappings,
restoredNodePaths: [],
},
],
});
Expand Down Expand Up @@ -1922,7 +1917,6 @@ export const createBrowserStudioOperations = ({
{
absolutePath: result.filePath,
remappings: result.nodePathRemappings,
restoredNodePaths: [],
},
],
});
Expand Down Expand Up @@ -2106,7 +2100,6 @@ export const createBrowserStudioOperations = ({
{
absolutePath: insertion.filePath,
remappings: insertion.nodePathRemappings,
restoredNodePaths: [],
},
],
});
Expand Down
20 changes: 5 additions & 15 deletions packages/browser-studio/src/browser-studio-project-controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import type {
SequenceNodePathRemapping,
UndoResponse,
} from '@remotion/studio-shared';
import type {SequenceNodePath} from 'remotion';
import {
collectBrowserStudioProjectStorageGarbage,
createBrowserStudioProjectStorage,
Expand Down Expand Up @@ -565,20 +564,11 @@ export const createBrowserStudioProjectController = ({
redoStack.push(entry);
const files = entry.nodePathMutationFiles?.map((file) => ({
absolutePath: file.absolutePath,
remappings: file.remappings.flatMap(
(remapping): SequenceNodePathRemapping[] =>
remapping.newNodePath === null
? []
: [
{
oldNodePath: remapping.newNodePath,
newNodePath: remapping.oldNodePath,
},
],
),
restoredNodePaths: file.remappings.flatMap(
(remapping): SequenceNodePath[] =>
remapping.newNodePath === null ? [remapping.oldNodePath] : [],
remappings: file.remappings.map(
(remapping): SequenceNodePathRemapping => ({
oldNodePath: remapping.newNodePath,
newNodePath: remapping.oldNodePath,
}),
),
}));
const nodePathMutation = commitProject({
Expand Down
Loading
Loading