@remotion/studio-shared 4.0.490 → 4.0.491

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import type { AudioCodec, ChromeMode, Codec, ColorSpace, LogLevel, PixelFormat, StillImageFormat, VideoImageFormat, X264Preset } from '@remotion/renderer';
2
2
  import type { HardwareAccelerationOption } from '@remotion/renderer/client';
3
- import type { _InternalTypes, CannotUpdateSequenceReason, CanUpdateEffectPropsResponse, CanUpdateSequencePropsResponseFalse, CanUpdateSequencePropsResponseTrue, CanUpdateSequencePropStatus, ExtrapolateType, InteractivitySchema, InterpolateOutputOption, JsxComponentIdentity, SequenceNodePath, SequencePropsSubscriptionKey } from 'remotion';
3
+ import type { _InternalTypes, CannotUpdateSequenceReason, CanUpdateEffectPropsResponse, CanUpdateSequencePropsResponseFalse, CanUpdateSequencePropsResponseTrue, CanUpdateSequencePropStatus, ExtrapolateType, InteractivitySchema, InterpolateOutputOption, JsxComponentIdentity, SequenceNodePath, SequencePropsSubscriptionKey, VideoConfigValues } from 'remotion';
4
4
  import type { RecastCodemod, VisualControlChange } from './codemods';
5
5
  import type { ComponentProp } from './component-drag-data';
6
6
  import type { EffectClipboardParam, EffectClipboardPasteType, EffectClipboardSnapshot } from './effect-clipboard-data';
@@ -206,6 +206,7 @@ export type SubscribeToSequencePropsRequest = {
206
206
  keys: string[];
207
207
  effects: string[][];
208
208
  clientId: string;
209
+ videoConfigValues: VideoConfigValues;
209
210
  };
210
211
  export type SubscribeToSequencePropsResponse = {
211
212
  success: true;
@@ -479,6 +480,7 @@ export type PasteEffectsRequest = {
479
480
  type: EffectClipboardPasteType;
480
481
  effects: EffectClipboardSnapshot[];
481
482
  clientId: string;
483
+ insertAtIndices: number[] | null;
482
484
  };
483
485
  export type PasteEffectsResponse = {
484
486
  success: true;
@@ -602,6 +604,7 @@ export type UpdateElementInstallTargetRequest = {
602
604
  canInstall: boolean;
603
605
  lastFocusedAt: number | null;
604
606
  readOnly: boolean;
607
+ studioUrl: string;
605
608
  };
606
609
  export type UpdateElementInstallTargetResponse = {};
607
610
  export type DownloadRemoteAssetRequest = {
@@ -1,15 +1,13 @@
1
- export declare const getDefinePluginDefinitions: ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, experimentalClientSideRenderingEnabled, }: {
1
+ export declare const getDefinePluginDefinitions: ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, }: {
2
2
  maxTimelineTracks: number | null;
3
3
  askAIEnabled: boolean;
4
4
  interactivityEnabled: boolean;
5
5
  keyboardShortcutsEnabled: boolean;
6
6
  bufferStateDelayInMilliseconds: number | null;
7
- experimentalClientSideRenderingEnabled: boolean;
8
7
  }) => {
9
8
  'process.env.MAX_TIMELINE_TRACKS': number | null;
10
9
  'process.env.ASK_AI_ENABLED': boolean;
11
10
  'process.env.INTERACTIVITY_ENABLED': boolean;
12
11
  'process.env.KEYBOARD_SHORTCUTS_ENABLED': boolean;
13
12
  'process.env.BUFFER_STATE_DELAY_IN_MILLISECONDS': number | null;
14
- 'process.env.EXPERIMENTAL_CLIENT_SIDE_RENDERING_ENABLED': boolean;
15
13
  };
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDefinePluginDefinitions = void 0;
4
- const getDefinePluginDefinitions = ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, experimentalClientSideRenderingEnabled, }) => ({
4
+ const getDefinePluginDefinitions = ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, }) => ({
5
5
  'process.env.MAX_TIMELINE_TRACKS': maxTimelineTracks,
6
6
  'process.env.ASK_AI_ENABLED': askAIEnabled,
7
7
  'process.env.INTERACTIVITY_ENABLED': interactivityEnabled,
8
8
  'process.env.KEYBOARD_SHORTCUTS_ENABLED': keyboardShortcutsEnabled,
9
9
  'process.env.BUFFER_STATE_DELAY_IN_MILLISECONDS': bufferStateDelayInMilliseconds,
10
- 'process.env.EXPERIMENTAL_CLIENT_SIDE_RENDERING_ENABLED': experimentalClientSideRenderingEnabled,
11
10
  });
12
11
  exports.getDefinePluginDefinitions = getDefinePluginDefinitions;
@@ -400,6 +400,17 @@ exports.EFFECT_CATALOG = [
400
400
  config: {},
401
401
  },
402
402
  },
403
+ {
404
+ id: 'effects-skew',
405
+ category: 'Distort',
406
+ label: 'skew()',
407
+ description: 'Skew the source on two axes',
408
+ effect: {
409
+ name: 'skew',
410
+ importPath: '@remotion/effects/skew',
411
+ config: {},
412
+ },
413
+ },
403
414
  {
404
415
  id: 'effects-burlap',
405
416
  category: 'Stylize',
@@ -630,6 +641,17 @@ exports.EFFECT_CATALOG = [
630
641
  config: {},
631
642
  },
632
643
  },
644
+ {
645
+ id: 'effects-liquid-contours',
646
+ category: 'Generate',
647
+ label: 'liquidContours()',
648
+ description: 'Two-color liquid contour background',
649
+ effect: {
650
+ name: 'liquidContours',
651
+ importPath: '@remotion/effects/liquid-contours',
652
+ config: {},
653
+ },
654
+ },
633
655
  {
634
656
  id: 'effects-checkerboard',
635
657
  category: 'Generate',
@@ -1,4 +1,4 @@
1
- export declare const packages: readonly ["svg-3d-engine", "animation-utils", "animated-emoji", "astro-example", "babel-loader", "bugs", "brand", "bundler", "browser-studio", "canvas-capture", "cli", "cloudrun", "codex-plugin", "compositor-darwin-arm64", "compositor-darwin-x64", "compositor-linux-arm64-gnu", "compositor-linux-arm64-musl", "compositor-linux-x64-gnu", "compositor-linux-x64-musl", "compositor-win32-x64-msvc", "core", "create-video", "discord-poster", "docusaurus-plugin", "docs", "enable-scss", "eslint-config", "eslint-config-flat", "eslint-config-internal", "eslint-plugin", "example-without-zod", "example", "fonts", "gif", "google-fonts", "install-whisper-cpp", "it-tests", "react18-tests", "lambda-go-example", "lambda-go", "lambda-php", "lambda-ruby", "lambda-python", "lambda", "lambda-client", "layout-utils", "rounded-text-box", "licensing", "lottie", "mcp", "media-utils", "motion-blur", "noise", "paths", "player-a11y", "player-example", "player", "preload", "renderer", "rive", "shapes", "skia", "promo-pages", "streaming", "serverless", "serverless-client", "skills", "skills-evals", "studio-server", "studio-shared", "studio", "tailwind", "tailwind-v4", "timeline-utils", "test-utils", "three", "transitions", "media-parser", "zod-types", "zod-types-v3", "webcodecs", "convert", "captions", "openai-whisper", "elevenlabs", "compositor", "example-videos", "whisper-web", "media", "remotion-media", "web-renderer", "design", "light-leaks", "rough-notation", "starburst", "vercel", "sfx", "effects"];
1
+ export declare const packages: readonly ["svg-3d-engine", "animation-utils", "animated-emoji", "astro-example", "babel-loader", "bugs", "brand", "bundler", "browser-studio", "canvas-capture", "claude-code-plugin", "cli", "cloudrun", "codex-plugin", "kimi-code-plugin", "compositor-darwin-arm64", "compositor-darwin-x64", "compositor-linux-arm64-gnu", "compositor-linux-arm64-musl", "compositor-linux-x64-gnu", "compositor-linux-x64-musl", "compositor-win32-x64-msvc", "core", "create-video", "discord-poster", "docusaurus-plugin", "docs", "enable-scss", "eslint-config", "eslint-config-flat", "eslint-config-internal", "eslint-plugin", "example-without-zod", "example", "fonts", "gif", "google-fonts", "install-whisper-cpp", "it-tests", "react18-tests", "lambda-go-example", "lambda-go", "lambda-php", "lambda-ruby", "lambda-python", "lambda", "lambda-client", "layout-utils", "rounded-text-box", "licensing", "lottie", "mcp", "media-utils", "motion-blur", "noise", "paths", "player-a11y", "player-example", "player", "preload", "renderer", "rive", "shapes", "skia", "promo-pages", "streaming", "serverless", "serverless-client", "skills", "skills-evals", "studio-server", "studio-shared", "studio", "tailwind", "tailwind-v4", "timeline-utils", "test-utils", "three", "transitions", "media-parser", "zod-types", "zod-types-v3", "webcodecs", "convert", "captions", "openai-whisper", "elevenlabs", "compositor", "example-videos", "whisper-web", "media", "remotion-media", "web-renderer", "design", "light-leaks", "rough-notation", "starburst", "vercel", "sfx", "effects"];
2
2
  export type Pkgs = (typeof packages)[number];
3
3
  export type ExtraPackage = {
4
4
  name: string;
@@ -12,9 +12,11 @@ exports.packages = [
12
12
  'bundler',
13
13
  'browser-studio',
14
14
  'canvas-capture',
15
+ 'claude-code-plugin',
15
16
  'cli',
16
17
  'cloudrun',
17
18
  'codex-plugin',
19
+ 'kimi-code-plugin',
18
20
  'compositor-darwin-arm64',
19
21
  'compositor-darwin-x64',
20
22
  'compositor-linux-arm64-gnu',
@@ -131,7 +133,9 @@ exports.descriptions = {
131
133
  compositor: 'Rust binary for Remotion',
132
134
  player: 'React component for embedding a Remotion preview into your app',
133
135
  cloudrun: 'Render Remotion videos on Google Cloud Run',
136
+ 'claude-code-plugin': null,
134
137
  'codex-plugin': null,
138
+ 'kimi-code-plugin': null,
135
139
  renderer: 'Render Remotion videos using Node.js or Bun',
136
140
  cli: 'Control Remotion features using the `npx remotion` command',
137
141
  core: 'Make videos programmatically',
@@ -217,7 +221,7 @@ exports.descriptions = {
217
221
  'serverless-client': null,
218
222
  media: 'Experimental WebCodecs-based media tags',
219
223
  'remotion-media': null,
220
- 'web-renderer': 'Render videos in the browser (not yet released)',
224
+ 'web-renderer': 'Render videos in the browser',
221
225
  design: 'Design system',
222
226
  'light-leaks': 'Light leak effects for Remotion',
223
227
  'rough-notation': 'Rough annotation primitives for Remotion',
@@ -240,7 +244,9 @@ exports.installableMap = {
240
244
  'canvas-capture': false,
241
245
  cli: false,
242
246
  cloudrun: true,
247
+ 'claude-code-plugin': false,
243
248
  'codex-plugin': false,
249
+ 'kimi-code-plugin': false,
244
250
  'lambda-client': false,
245
251
  'serverless-client': false,
246
252
  'compositor-darwin-arm64': false,
@@ -330,7 +336,9 @@ exports.installableMap = {
330
336
  exports.apiDocs = {
331
337
  player: 'https://www.remotion.dev/docs/player',
332
338
  cloudrun: 'https://www.remotion.dev/docs/cloudrun',
339
+ 'claude-code-plugin': null,
333
340
  'codex-plugin': null,
341
+ 'kimi-code-plugin': null,
334
342
  renderer: 'https://www.remotion.dev/docs/renderer',
335
343
  cli: 'https://www.remotion.dev/docs/cli',
336
344
  core: 'https://www.remotion.dev/docs/remotion',
@@ -47,7 +47,6 @@ export type RenderDefaults = {
47
47
  chromeMode: ChromeMode;
48
48
  publicLicenseKey: string | null;
49
49
  outputLocation: string | null;
50
- allowHtmlInCanvas: boolean;
51
50
  sampleRate: number;
52
51
  };
53
52
  declare global {
@@ -84,9 +84,6 @@ const getSchemaFieldRowHeight = ({ fieldSchema, value, }) => {
84
84
  value,
85
85
  }) * exports.SCHEMA_FIELD_ROW_HEIGHT);
86
86
  }
87
- if (fieldSchema.type === 'text-content') {
88
- return exports.SCHEMA_FIELD_ROW_HEIGHT * 2;
89
- }
90
87
  return exports.SCHEMA_FIELD_ROW_HEIGHT;
91
88
  };
92
89
  const getEffectFieldValue = ({ key, dragOverrides, effectStatus, }) => {
@@ -0,0 +1,22 @@
1
+ export declare const SHAPE_DRAG_MIME_TYPE = "application/vnd.remotion.shape+json";
2
+ export declare const shapeNames: readonly ["Arrow", "Circle", "Ellipse", "Heart", "Pie", "Polygon", "Rect", "Star", "Triangle"];
3
+ export type ShapeName = (typeof shapeNames)[number];
4
+ export type ShapeAttribute = {
5
+ name: string;
6
+ value: string | number | boolean;
7
+ };
8
+ export type ShapeDragData = {
9
+ type: 'remotion-shape';
10
+ version: 1;
11
+ shape: ShapeName;
12
+ attributes: ShapeAttribute[];
13
+ };
14
+ export declare const isShapeName: (value: unknown) => value is "Arrow" | "Circle" | "Ellipse" | "Heart" | "Pie" | "Polygon" | "Rect" | "Star" | "Triangle";
15
+ export declare const isShapeAttributeName: (value: unknown) => value is string;
16
+ export declare const isShapeAttribute: (value: unknown) => value is ShapeAttribute;
17
+ export declare const areShapeAttributes: (value: unknown) => value is ShapeAttribute[];
18
+ export declare const makeShapeDragData: ({ attributes, shape, }: {
19
+ attributes: ShapeAttribute[];
20
+ shape: "Arrow" | "Circle" | "Ellipse" | "Heart" | "Pie" | "Polygon" | "Rect" | "Star" | "Triangle";
21
+ }) => ShapeDragData;
22
+ export declare const parseShapeDragData: (value: string) => ShapeDragData | null;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseShapeDragData = exports.makeShapeDragData = exports.areShapeAttributes = exports.isShapeAttribute = exports.isShapeAttributeName = exports.isShapeName = exports.shapeNames = exports.SHAPE_DRAG_MIME_TYPE = void 0;
4
+ exports.SHAPE_DRAG_MIME_TYPE = 'application/vnd.remotion.shape+json';
5
+ exports.shapeNames = [
6
+ 'Arrow',
7
+ 'Circle',
8
+ 'Ellipse',
9
+ 'Heart',
10
+ 'Pie',
11
+ 'Polygon',
12
+ 'Rect',
13
+ 'Star',
14
+ 'Triangle',
15
+ ];
16
+ const isRecord = (value) => {
17
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
18
+ };
19
+ const isShapeName = (value) => {
20
+ return typeof value === 'string' && exports.shapeNames.includes(value);
21
+ };
22
+ exports.isShapeName = isShapeName;
23
+ const isShapeAttributeName = (value) => {
24
+ return (typeof value === 'string' &&
25
+ value !== 'style' &&
26
+ /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value));
27
+ };
28
+ exports.isShapeAttributeName = isShapeAttributeName;
29
+ const isShapeAttribute = (value) => {
30
+ if (!isRecord(value)) {
31
+ return false;
32
+ }
33
+ if (!(0, exports.isShapeAttributeName)(value.name)) {
34
+ return false;
35
+ }
36
+ return (typeof value.value === 'string' ||
37
+ typeof value.value === 'boolean' ||
38
+ (typeof value.value === 'number' && Number.isFinite(value.value)));
39
+ };
40
+ exports.isShapeAttribute = isShapeAttribute;
41
+ const areShapeAttributes = (value) => {
42
+ if (!Array.isArray(value)) {
43
+ return false;
44
+ }
45
+ const seen = new Set();
46
+ for (const attribute of value) {
47
+ if (!(0, exports.isShapeAttribute)(attribute) || seen.has(attribute.name)) {
48
+ return false;
49
+ }
50
+ seen.add(attribute.name);
51
+ }
52
+ return true;
53
+ };
54
+ exports.areShapeAttributes = areShapeAttributes;
55
+ const makeShapeDragData = ({ attributes, shape, }) => {
56
+ return {
57
+ type: 'remotion-shape',
58
+ version: 1,
59
+ shape,
60
+ attributes,
61
+ };
62
+ };
63
+ exports.makeShapeDragData = makeShapeDragData;
64
+ const parseShapeDragData = (value) => {
65
+ try {
66
+ const parsed = JSON.parse(value);
67
+ if (!isRecord(parsed)) {
68
+ return null;
69
+ }
70
+ if (parsed.type !== 'remotion-shape' || parsed.version !== 1) {
71
+ return null;
72
+ }
73
+ if (!(0, exports.isShapeName)(parsed.shape)) {
74
+ return null;
75
+ }
76
+ if (!(0, exports.areShapeAttributes)(parsed.attributes)) {
77
+ return null;
78
+ }
79
+ return {
80
+ type: 'remotion-shape',
81
+ version: 1,
82
+ shape: parsed.shape,
83
+ attributes: parsed.attributes,
84
+ };
85
+ }
86
+ catch (_a) {
87
+ return null;
88
+ }
89
+ };
90
+ exports.parseShapeDragData = parseShapeDragData;
@@ -4,5 +4,4 @@ export type StudioRuntimeConfig = {
4
4
  readonly interactivityEnabled: boolean;
5
5
  readonly keyboardShortcutsEnabled: boolean;
6
6
  readonly bufferStateDelayInMilliseconds: number | null;
7
- readonly experimentalClientSideRenderingEnabled: boolean;
8
7
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/studio-shared"
4
4
  },
5
5
  "name": "@remotion/studio-shared",
6
- "version": "4.0.490",
6
+ "version": "4.0.491",
7
7
  "description": "Internal package for shared objects between the Studio backend and frontend",
8
8
  "main": "dist",
9
9
  "scripts": {
@@ -20,11 +20,11 @@
20
20
  "url": "https://github.com/remotion-dev/remotion/issues"
21
21
  },
22
22
  "dependencies": {
23
- "remotion": "4.0.490"
23
+ "remotion": "4.0.491"
24
24
  },
25
25
  "devDependencies": {
26
- "@remotion/renderer": "4.0.490",
27
- "@remotion/eslint-config-internal": "4.0.490",
26
+ "@remotion/renderer": "4.0.491",
27
+ "@remotion/eslint-config-internal": "4.0.491",
28
28
  "eslint": "9.19.0",
29
29
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
30
30
  },