@remotion/cli 4.0.502 → 4.0.504

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,5 +1,5 @@
1
1
  import type { BundlerOverrideFn, RspackConfiguration, RspackOverrideFn, WebpackConfiguration, WebpackOverrideFn } from '@remotion/bundler';
2
- import type { BrowserExecutable, ChromeMode, CodecOrUndefined, ColorSpace, Crf, DeleteAfter, FrameRange, NumberOfGifLoops, StillImageFormat, VideoImageFormat } from '@remotion/renderer';
2
+ import type { BrowserExecutable, ChromeMode, CodecOrUndefined, ColorSpace, Crf, DeleteAfter, DefaultEditor, FrameRange, NumberOfGifLoops, StillImageFormat, VideoImageFormat } from '@remotion/renderer';
3
3
  import type { HardwareAccelerationOption } from '@remotion/renderer/client';
4
4
  import type { Concurrency } from './concurrency';
5
5
  export type { BundlerOverrideFn, Concurrency, RspackConfiguration, RspackOverrideFn, WebpackConfiguration, WebpackOverrideFn, };
@@ -384,6 +384,10 @@ type FlatConfig = RemotionConfigObject & RemotionBundlingOptions & {
384
384
  * Default: false
385
385
  */
386
386
  setForceNewStudioEnabled: (forceNew: boolean) => void;
387
+ /**
388
+ * Set the editor used when opening files from Remotion Studio.
389
+ */
390
+ setDefaultEditor: (editor: DefaultEditor) => void;
387
391
  setDeleteAfter: (day: DeleteAfter | null) => void;
388
392
  /**
389
393
  * Set whether S3 buckets should be allowed to expire.
@@ -18,7 +18,7 @@ const preview_server_1 = require("./preview-server");
18
18
  const still_frame_1 = require("./still-frame");
19
19
  const webpack_caching_1 = require("./webpack-caching");
20
20
  const webpack_poll_1 = require("./webpack-poll");
21
- const { benchmarkConcurrenciesOption, concurrencyOption, offthreadVideoCacheSizeInBytesOption, x264Option, audioBitrateOption, videoBitrateOption, scaleOption, crfOption, jpegQualityOption, enforceAudioOption, overwriteOption, chromeModeOption, mutedOption, videoCodecOption, colorSpaceOption, disallowParallelEncodingOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, glOption, gopSizeOption, headlessOption, numberOfGifLoopsOption, beepOnFinishOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, enableLambdaInsights, logLevelOption, delayRenderTimeoutInMillisecondsOption, publicDirOption, binariesDirectoryOption, preferLosslessOption, framesOption, forSeamlessAacConcatenationOption, audioCodecOption, publicPathOption, hardwareAccelerationOption, audioLatencyHintOption, enableCrossSiteIsolationOption, imageSequencePatternOption, darkModeOption, askAIOption, publicLicenseKeyOption, interactivityOption, keyboardShortcutsOption, forceNewStudioOption, numberOfSharedAudioTagsOption, ipv4Option, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, stillImageFormatOption, videoImageFormatOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, rspackOption, outDirOption, webpackPollOption, imageSequenceOption, bundleCacheOption, envFileOption, runsOption, noOpenOption, sampleRateOption, previewSampleRateOption, } = client_1.BrowserSafeApis.options;
21
+ const { benchmarkConcurrenciesOption, concurrencyOption, offthreadVideoCacheSizeInBytesOption, x264Option, audioBitrateOption, videoBitrateOption, scaleOption, crfOption, jpegQualityOption, enforceAudioOption, overwriteOption, chromeModeOption, mutedOption, videoCodecOption, colorSpaceOption, disallowParallelEncodingOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, glOption, gopSizeOption, headlessOption, numberOfGifLoopsOption, beepOnFinishOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, enableLambdaInsights, logLevelOption, delayRenderTimeoutInMillisecondsOption, publicDirOption, binariesDirectoryOption, preferLosslessOption, framesOption, forSeamlessAacConcatenationOption, audioCodecOption, publicPathOption, hardwareAccelerationOption, audioLatencyHintOption, enableCrossSiteIsolationOption, imageSequencePatternOption, darkModeOption, defaultEditorOption, askAIOption, publicLicenseKeyOption, interactivityOption, keyboardShortcutsOption, forceNewStudioOption, numberOfSharedAudioTagsOption, ipv4Option, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, stillImageFormatOption, videoImageFormatOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, rspackOption, outDirOption, webpackPollOption, imageSequenceOption, bundleCacheOption, envFileOption, runsOption, noOpenOption, sampleRateOption, previewSampleRateOption, } = client_1.BrowserSafeApis.options;
22
22
  const setAllowHtmlInCanvasEnabled = (_enabled) => {
23
23
  log_1.Log.warn({ indent: false, logLevel: 'info' }, 'Config.setAllowHtmlInCanvasEnabled() is now a no-op because HTML-in-canvas is enabled by default when supported. You can remove this option from your config file.');
24
24
  };
@@ -128,6 +128,7 @@ exports.Config = {
128
128
  setEnableCrossSiteIsolation: enableCrossSiteIsolationOption.setConfig,
129
129
  setAskAIEnabled: askAIOption.setConfig,
130
130
  setPublicLicenseKey: publicLicenseKeyOption.setConfig,
131
+ setDefaultEditor: defaultEditorOption.setConfig,
131
132
  setForceNewStudioEnabled: forceNewStudioOption.setConfig,
132
133
  setIPv4: ipv4Option.setConfig,
133
134
  setBundleOutDir: outDirOption.setConfig,
@@ -0,0 +1,2 @@
1
+ export { detectOutdatedRemotionSkills, parseRemotionSkillVersion, } from '@remotion/studio-server';
2
+ export type { RemotionSkillsScope, RemotionSkillsStatus, } from '@remotion/studio-server';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseRemotionSkillVersion = exports.detectOutdatedRemotionSkills = void 0;
4
+ const studio_server_1 = require("@remotion/studio-server");
5
+ Object.defineProperty(exports, "detectOutdatedRemotionSkills", { enumerable: true, get: function () { return studio_server_1.detectOutdatedRemotionSkills; } });
6
+ Object.defineProperty(exports, "parseRemotionSkillVersion", { enumerable: true, get: function () { return studio_server_1.parseRemotionSkillVersion; } });
@@ -7,10 +7,11 @@ exports.reloadConfig = exports.loadConfig = exports.getLoadedConfigFile = void 0
7
7
  const node_fs_1 = require("node:fs");
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
9
  const client_1 = require("@remotion/renderer/client");
10
+ const config_1 = require("./config");
10
11
  const load_config_1 = require("./load-config");
11
12
  const log_1 = require("./log");
12
13
  const parsed_cli_1 = require("./parsed-cli");
13
- const { configOption } = client_1.BrowserSafeApis.options;
14
+ const { configOption, logLevelOption, rspackOption } = client_1.BrowserSafeApis.options;
14
15
  const defaultConfigFileJavascript = 'remotion.config.js';
15
16
  const defaultConfigFileTypescript = 'remotion.config.ts';
16
17
  let loadedConfigFile = null;
@@ -19,9 +20,32 @@ const getLoadedConfigFile = () => {
19
20
  return (_a = loadedConfigFile === null || loadedConfigFile === void 0 ? void 0 : loadedConfigFile.resolved) !== null && _a !== void 0 ? _a : null;
20
21
  };
21
22
  exports.getLoadedConfigFile = getLoadedConfigFile;
23
+ const warnAboutBundlerOverride = () => {
24
+ const useRspack = rspackOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
25
+ const hasWebpackOverride = config_1.ConfigInternals.getWebpackOverrideFn() !==
26
+ config_1.ConfigInternals.defaultOverrideFunction;
27
+ const hasRspackOverride = config_1.ConfigInternals.getRspackOverrideFn() !==
28
+ config_1.ConfigInternals.defaultRspackOverrideFunction;
29
+ if ((useRspack && !hasWebpackOverride) ||
30
+ (!useRspack && !hasRspackOverride)) {
31
+ return;
32
+ }
33
+ const selectedBundler = useRspack ? 'Rspack' : 'Webpack';
34
+ const ignoredBundler = useRspack ? 'Webpack' : 'Rspack';
35
+ const selectedOverride = useRspack
36
+ ? 'overrideRspackConfig'
37
+ : 'overrideWebpackConfig';
38
+ const ignoredOverride = useRspack
39
+ ? 'overrideWebpackConfig'
40
+ : 'overrideRspackConfig';
41
+ const logLevel = logLevelOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
42
+ log_1.Log.warn({ indent: false, logLevel }, `You have selected ${selectedBundler} as the bundler, but Config.${ignoredOverride}() was called. The ${ignoredBundler} override will be ignored. Use Config.${selectedOverride}() or Config.overrideBundlerConfig() instead.`);
43
+ };
22
44
  const loadInitialConfigFile = async (remotionRoot, configFileName, isJavascript) => {
23
45
  try {
24
- return await (0, load_config_1.loadConfigFile)(remotionRoot, configFileName, isJavascript);
46
+ const config = await (0, load_config_1.loadConfigFile)(remotionRoot, configFileName, isJavascript);
47
+ warnAboutBundlerOverride();
48
+ return config;
25
49
  }
26
50
  catch (error) {
27
51
  log_1.Log.error({ indent: false, logLevel: 'error' }, error instanceof Error ? error.message : String(error));
@@ -72,6 +96,7 @@ const reloadConfig = async ({ resetConfigOptions, }) => {
72
96
  try {
73
97
  (0, load_config_1.executeConfigFile)(nextConfigFile);
74
98
  loadedConfigFile = nextConfigFile;
99
+ warnAboutBundlerOverride();
75
100
  return true;
76
101
  }
77
102
  catch (error) {
@@ -0,0 +1,4 @@
1
+ export declare const getVideoImageFormat: ({ codec, uiImageFormat, }: {
2
+ codec: import("@remotion/renderer").CodecOrUndefined;
3
+ uiImageFormat: "jpeg" | "none" | "png" | null;
4
+ }) => "jpeg" | "none" | "png";
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getVideoImageFormat = void 0;
4
+ const client_1 = require("@remotion/renderer/client");
5
+ const pure_1 = require("@remotion/renderer/pure");
6
+ const parsed_cli_1 = require("./parsed-cli");
7
+ const getVideoImageFormat = ({ codec, uiImageFormat, }) => {
8
+ if (uiImageFormat !== null) {
9
+ return uiImageFormat;
10
+ }
11
+ const configured = client_1.BrowserSafeApis.options.videoImageFormatOption.getValue({
12
+ commandLine: parsed_cli_1.parsedCli,
13
+ }).value;
14
+ if (configured !== null) {
15
+ return configured;
16
+ }
17
+ if (pure_1.NoReactAPIs.isAudioCodec(codec)) {
18
+ return 'none';
19
+ }
20
+ if (codec === 'h264' ||
21
+ codec === 'h264-mkv' ||
22
+ codec === 'h264-ts' ||
23
+ codec === 'h265' ||
24
+ codec === 'av1' ||
25
+ codec === 'vp8' ||
26
+ codec === 'vp9' ||
27
+ codec === 'prores' ||
28
+ codec === 'gif') {
29
+ return 'jpeg';
30
+ }
31
+ if (codec === undefined) {
32
+ return 'png';
33
+ }
34
+ throw new Error('Unrecognized codec ' + codec);
35
+ };
36
+ exports.getVideoImageFormat = getVideoImageFormat;
package/dist/index.js CHANGED
@@ -46,7 +46,7 @@ const still_1 = require("./still");
46
46
  const studio_1 = require("./studio");
47
47
  const upgrade_1 = require("./upgrade");
48
48
  const versions_1 = require("./versions");
49
- const { packageManagerOption, versionFlagOption } = client_1.BrowserSafeApis.options;
49
+ const { packageManagerOption, skipSkillsOption, versionFlagOption } = client_1.BrowserSafeApis.options;
50
50
  const cli = async () => {
51
51
  var _a;
52
52
  const [command, ...args] = parsed_cli_1.parsedCli._;
@@ -113,6 +113,7 @@ const cli = async () => {
113
113
  remotionRoot,
114
114
  packageManager: packageManager !== null && packageManager !== void 0 ? packageManager : undefined,
115
115
  version: (_a = versionFlagOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value) !== null && _a !== void 0 ? _a : undefined,
116
+ skipSkills: skipSkillsOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value,
116
117
  logLevel,
117
118
  args,
118
119
  });
@@ -134,7 +135,10 @@ const cli = async () => {
134
135
  });
135
136
  }
136
137
  else if (command === 'skills') {
137
- await (0, skills_1.skillsCommand)(args, logLevel);
138
+ await (0, skills_1.skillsCommand)(args, logLevel, {
139
+ cwd: process.cwd(),
140
+ environment: process.env,
141
+ });
138
142
  }
139
143
  else if (command === versions_1.VERSIONS_COMMAND) {
140
144
  await (0, versions_1.versionsCommand)(remotionRoot, logLevel);
@@ -12,7 +12,6 @@ exports.listOfRemotionPackages = [
12
12
  '@remotion/brand',
13
13
  '@remotion/bundler',
14
14
  '@remotion/browser-studio',
15
- '@remotion/canvas-capture',
16
15
  '@remotion/claude-code-plugin',
17
16
  '@remotion/cli',
18
17
  '@remotion/cloudrun',
@@ -351,6 +351,21 @@ declare const benchmarkConcurrenciesOption: {
351
351
  };
352
352
  setConfig: (value: boolean) => void;
353
353
  id: "dark-mode";
354
+ }, defaultEditorOption: {
355
+ name: string;
356
+ cliFlag: "editor";
357
+ description: () => import("react/jsx-runtime").JSX.Element;
358
+ ssrName: null;
359
+ docLink: string;
360
+ type: import("@remotion/renderer").DefaultEditor | null;
361
+ getValue: ({ commandLine }: {
362
+ commandLine: Record<string, unknown>;
363
+ }) => {
364
+ value: import("@remotion/renderer").DefaultEditor | null;
365
+ source: string;
366
+ };
367
+ setConfig(value: import("@remotion/renderer").DefaultEditor | null): void;
368
+ id: "editor";
354
369
  }, publicLicenseKeyOption: {
355
370
  name: string;
356
371
  cliFlag: "public-license-key";
@@ -1146,6 +1161,24 @@ declare const benchmarkConcurrenciesOption: {
1146
1161
  };
1147
1162
  setConfig(value: boolean): void;
1148
1163
  id: "rspack";
1164
+ }, skipSkillsOption: {
1165
+ name: string;
1166
+ cliFlag: "skip-skills";
1167
+ description: () => import("react/jsx-runtime").JSX.Element;
1168
+ ssrName: null;
1169
+ docLink: string;
1170
+ getValue: ({ commandLine }: {
1171
+ commandLine: Record<string, unknown>;
1172
+ }) => {
1173
+ source: string;
1174
+ value: true;
1175
+ } | {
1176
+ source: string;
1177
+ value: false;
1178
+ };
1179
+ setConfig: () => never;
1180
+ type: boolean;
1181
+ id: "skip-skills";
1149
1182
  };
1150
1183
  export type CommandLineOptions = {
1151
1184
  [browserExecutableOption.cliFlag]: TypeOfOption<typeof browserExecutableOption>;
@@ -1157,6 +1190,7 @@ export type CommandLineOptions = {
1157
1190
  [envFileOption.cliFlag]: TypeOfOption<typeof envFileOption>;
1158
1191
  [ignoreCertificateErrorsOption.cliFlag]: TypeOfOption<typeof ignoreCertificateErrorsOption> | null;
1159
1192
  [darkModeOption.cliFlag]: TypeOfOption<typeof darkModeOption> | null;
1193
+ [defaultEditorOption.cliFlag]: TypeOfOption<typeof defaultEditorOption>;
1160
1194
  [disableWebSecurityOption.cliFlag]: TypeOfOption<typeof disableWebSecurityOption> | null;
1161
1195
  [everyNthFrameOption.cliFlag]: TypeOfOption<typeof everyNthFrameOption>;
1162
1196
  [numberOfGifLoopsOption.cliFlag]: TypeOfOption<typeof numberOfGifLoopsOption>;
@@ -1228,6 +1262,7 @@ export type CommandLineOptions = {
1228
1262
  [rspackOption.cliFlag]: TypeOfOption<typeof rspackOption> | null;
1229
1263
  'experimental-rspack'?: unknown;
1230
1264
  [isProductionOption.cliFlag]: TypeOfOption<typeof isProductionOption> | null;
1265
+ [skipSkillsOption.cliFlag]: TypeOfOption<typeof skipSkillsOption>;
1231
1266
  };
1232
1267
  export declare const BooleanFlags: string[];
1233
1268
  export declare const parsedCli: CommandLineOptions & {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.quietFlagProvided = exports.parsedCli = exports.BooleanFlags = void 0;
7
7
  const client_1 = require("@remotion/renderer/client");
8
8
  const minimist_1 = __importDefault(require("minimist"));
9
- const { benchmarkConcurrenciesOption, beepOnFinishOption, colorSpaceOption, concurrencyOption, disallowParallelEncodingOption, offthreadVideoCacheSizeInBytesOption, encodingBufferSizeOption, encodingMaxRateOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, numberOfGifLoopsOption, x264Option, enforceAudioOption, jpegQualityOption, audioBitrateOption, videoBitrateOption, audioCodecOption, publicPathOption, audioLatencyHintOption, darkModeOption, publicLicenseKeyOption, forceNewStudioOption, numberOfSharedAudioTagsOption, ipv4Option, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, outDirOption, packageManagerOption, webpackPollOption, keyboardShortcutsOption, interactivityOption, imageSequencePatternOption, scaleOption, overwriteOption, crfOption, logLevelOption, videoCodecOption, stillFrameOption, imageSequenceOption, versionFlagOption, bundleCacheOption, envFileOption, glOption, gopSizeOption, runsOption, reproOption, mutedOption, headlessOption, disableGitSourceOption, delayRenderTimeoutInMillisecondsOption, framesOption, forSeamlessAacConcatenationOption, isProductionOption, noOpenOption, portOption, propsOption, configOption, browserOption, sampleRateOption, previewSampleRateOption, rspackOption, } = client_1.BrowserSafeApis.options;
9
+ const { benchmarkConcurrenciesOption, beepOnFinishOption, colorSpaceOption, concurrencyOption, disallowParallelEncodingOption, offthreadVideoCacheSizeInBytesOption, encodingBufferSizeOption, encodingMaxRateOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, numberOfGifLoopsOption, x264Option, enforceAudioOption, jpegQualityOption, audioBitrateOption, videoBitrateOption, audioCodecOption, publicPathOption, audioLatencyHintOption, darkModeOption, defaultEditorOption, publicLicenseKeyOption, forceNewStudioOption, numberOfSharedAudioTagsOption, ipv4Option, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, outDirOption, packageManagerOption, webpackPollOption, keyboardShortcutsOption, interactivityOption, imageSequencePatternOption, scaleOption, overwriteOption, crfOption, logLevelOption, videoCodecOption, stillFrameOption, imageSequenceOption, versionFlagOption, bundleCacheOption, envFileOption, glOption, gopSizeOption, runsOption, reproOption, mutedOption, headlessOption, disableGitSourceOption, delayRenderTimeoutInMillisecondsOption, framesOption, forSeamlessAacConcatenationOption, isProductionOption, noOpenOption, portOption, propsOption, configOption, browserOption, sampleRateOption, previewSampleRateOption, rspackOption, skipSkillsOption, } = client_1.BrowserSafeApis.options;
10
10
  exports.BooleanFlags = [
11
11
  overwriteOption.cliFlag,
12
12
  imageSequenceOption.cliFlag,
@@ -31,6 +31,7 @@ exports.BooleanFlags = [
31
31
  forceNewStudioOption.cliFlag,
32
32
  bundleCacheOption.cliFlag,
33
33
  rspackOption.cliFlag,
34
+ skipSkillsOption.cliFlag,
34
35
  ];
35
36
  exports.parsedCli = (0, minimist_1.default)(process.argv.slice(2), {
36
37
  boolean: exports.BooleanFlags,
@@ -0,0 +1,2 @@
1
+ export { remotionSkillNames } from '@remotion/studio-server';
2
+ export type { RemotionSkillName } from '@remotion/studio-server';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remotionSkillNames = void 0;
4
+ const studio_server_1 = require("@remotion/studio-server");
5
+ Object.defineProperty(exports, "remotionSkillNames", { enumerable: true, get: function () { return studio_server_1.remotionSkillNames; } });
package/dist/skills.d.ts CHANGED
@@ -1,2 +1,5 @@
1
1
  export declare const printSkillsHelp: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
2
- export declare const skillsCommand: (args: string[], logLevel: "error" | "info" | "trace" | "verbose" | "warn") => Promise<void> | undefined;
2
+ export declare const skillsCommand: (args: string[], logLevel: "error" | "info" | "trace" | "verbose" | "warn", { cwd, environment, }: {
3
+ cwd: string;
4
+ environment: NodeJS.ProcessEnv;
5
+ }) => Promise<void> | undefined;
package/dist/skills.js CHANGED
@@ -4,6 +4,7 @@ exports.skillsCommand = exports.printSkillsHelp = void 0;
4
4
  const node_child_process_1 = require("node:child_process");
5
5
  const chalk_1 = require("./chalk");
6
6
  const log_1 = require("./log");
7
+ const remotion_skill_names_1 = require("./remotion-skill-names");
7
8
  const printSkillsHelp = (logLevel) => {
8
9
  log_1.Log.info({ indent: false, logLevel }, chalk_1.chalk.blue('remotion skills'));
9
10
  log_1.Log.info({ indent: false, logLevel }, 'Install or update skills from remotion-dev/skills.');
@@ -17,7 +18,7 @@ const printSkillsHelp = (logLevel) => {
17
18
  log_1.Log.info({ indent: false, logLevel }, 'Update skills from remotion-dev/skills.');
18
19
  };
19
20
  exports.printSkillsHelp = printSkillsHelp;
20
- const skillsCommand = (args, logLevel) => {
21
+ const skillsCommand = (args, logLevel, { cwd, environment, }) => {
21
22
  const subcommand = args[0];
22
23
  const restArgs = args.slice(1);
23
24
  if (!subcommand || !['add', 'update'].includes(subcommand)) {
@@ -25,15 +26,26 @@ const skillsCommand = (args, logLevel) => {
25
26
  return;
26
27
  }
27
28
  const command = process.platform === 'win32' ? 'npx.cmd' : 'npx';
28
- const fullArgs = [
29
- '-y',
30
- '--loglevel=error',
31
- 'skills@1.5.20',
32
- subcommand,
33
- 'remotion-dev/skills',
34
- ...restArgs,
35
- ];
29
+ const fullArgs = subcommand === 'add'
30
+ ? [
31
+ '--loglevel=error',
32
+ 'skills@1.5.20',
33
+ 'add',
34
+ 'remotion-dev/skills',
35
+ ...restArgs,
36
+ '--yes',
37
+ ]
38
+ : [
39
+ '--loglevel=error',
40
+ 'skills',
41
+ 'update',
42
+ ...remotion_skill_names_1.remotionSkillNames,
43
+ ...restArgs,
44
+ '--yes',
45
+ ];
36
46
  const child = (0, node_child_process_1.spawn)(command, fullArgs, {
47
+ cwd,
48
+ env: environment,
37
49
  stdio: 'inherit',
38
50
  });
39
51
  return new Promise((resolve, reject) => {
package/dist/studio.js CHANGED
@@ -15,7 +15,7 @@ const get_render_defaults_1 = require("./get-render-defaults");
15
15
  const log_1 = require("./log");
16
16
  const parsed_cli_1 = require("./parsed-cli");
17
17
  const queue_1 = require("./render-queue/queue");
18
- const { binariesDirectoryOption, publicDirOption, disableGitSourceOption, enableCrossSiteIsolationOption, askAIOption, interactivityOption, keyboardShortcutsOption, forceNewStudioOption, numberOfSharedAudioTagsOption, audioLatencyHintOption, ipv4Option, rspackOption, webpackPollOption, noOpenOption, portOption, browserOption, previewSampleRateOption, } = client_1.BrowserSafeApis.options;
18
+ const { binariesDirectoryOption, publicDirOption, disableGitSourceOption, enableCrossSiteIsolationOption, askAIOption, interactivityOption, keyboardShortcutsOption, forceNewStudioOption, numberOfSharedAudioTagsOption, audioLatencyHintOption, ipv4Option, rspackOption, webpackPollOption, noOpenOption, portOption, browserOption, previewSampleRateOption, defaultEditorOption, } = client_1.BrowserSafeApis.options;
19
19
  const studioCommand = async (remotionRoot, args, logLevel) => {
20
20
  var _a, _b, _c;
21
21
  const { file, reason } = (0, entry_point_1.findEntryPoint)({
@@ -118,6 +118,7 @@ const studioCommand = async (remotionRoot, args, logLevel) => {
118
118
  const getNumberOfAudioTags = () => numberOfSharedAudioTagsOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
119
119
  const getAudioLatencyHint = () => audioLatencyHintOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
120
120
  const getPreviewSampleRate = () => previewSampleRateOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
121
+ const getDefaultEditor = () => defaultEditorOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
121
122
  const result = await studio_server_1.StudioServerInternals.startStudio({
122
123
  previewEntry: require.resolve('@remotion/studio/previewEntry'),
123
124
  browserArgs: parsed_cli_1.parsedCli['browser-args'],
@@ -157,6 +158,7 @@ const studioCommand = async (remotionRoot, args, logLevel) => {
157
158
  forceIPv4: ipv4Option.getValue({ commandLine: parsed_cli_1.parsedCli }).value,
158
159
  getAudioLatencyHint,
159
160
  getPreviewSampleRate,
161
+ getDefaultEditor,
160
162
  enableCrossSiteIsolation,
161
163
  forceNew: forceNewStudioOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value,
162
164
  rspack: useRspack,
@@ -0,0 +1,8 @@
1
+ export declare const updateRemotionSkills: ({ currentVersion, cwd, homeDirectory, skipSkills, logLevel, environment, }: {
2
+ currentVersion: string;
3
+ cwd: string;
4
+ homeDirectory: string;
5
+ skipSkills: boolean;
6
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
7
+ environment: NodeJS.ProcessEnv;
8
+ }) => Promise<void>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateRemotionSkills = void 0;
4
+ const detect_outdated_remotion_skills_1 = require("./detect-outdated-remotion-skills");
5
+ const log_1 = require("./log");
6
+ const skills_1 = require("./skills");
7
+ const updateRemotionSkills = async ({ currentVersion, cwd, homeDirectory, skipSkills, logLevel, environment, }) => {
8
+ if (skipSkills) {
9
+ return;
10
+ }
11
+ const skillsStatuses = (0, detect_outdated_remotion_skills_1.detectOutdatedRemotionSkills)({
12
+ currentVersion,
13
+ cwd,
14
+ homeDirectory,
15
+ });
16
+ if (skillsStatuses.project.type === 'outdated') {
17
+ log_1.Log.info({ indent: false, logLevel }, 'Updating project Remotion Agent Skills...');
18
+ await (0, skills_1.skillsCommand)(['update', '--project'], logLevel, {
19
+ cwd,
20
+ environment,
21
+ });
22
+ }
23
+ };
24
+ exports.updateRemotionSkills = updateRemotionSkills;
package/dist/upgrade.d.ts CHANGED
@@ -20,10 +20,11 @@ export declare const getPackagesToUpgrade: ({ depsWithVersions, catalogEntries,
20
20
  version: string;
21
21
  }[];
22
22
  };
23
- export declare const upgradeCommand: ({ remotionRoot, packageManager, version, logLevel, args, }: {
23
+ export declare const upgradeCommand: ({ remotionRoot, packageManager, version, skipSkills, logLevel, args, }: {
24
24
  remotionRoot: string;
25
25
  packageManager: string | undefined;
26
26
  version: string | undefined;
27
+ skipSkills: boolean;
27
28
  logLevel: "error" | "info" | "trace" | "verbose" | "warn";
28
29
  args: string[];
29
30
  }) => Promise<void>;
package/dist/upgrade.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.upgradeCommand = exports.getPackagesToUpgrade = exports.resolveExtraPackageVersions = void 0;
4
4
  const node_child_process_1 = require("node:child_process");
5
+ const node_os_1 = require("node:os");
5
6
  const renderer_1 = require("@remotion/renderer");
6
7
  const studio_server_1 = require("@remotion/studio-server");
7
8
  const catalog_utils_1 = require("./catalog-utils");
@@ -9,6 +10,7 @@ const chalk_1 = require("./chalk");
9
10
  const extra_packages_1 = require("./extra-packages");
10
11
  const list_of_remotion_packages_1 = require("./list-of-remotion-packages");
11
12
  const log_1 = require("./log");
13
+ const update_remotion_skills_1 = require("./update-remotion-skills");
12
14
  const resolveExtraPackageVersions = (dependencies) => {
13
15
  const extraVersions = { ...extra_packages_1.EXTRA_PACKAGES };
14
16
  for (const pkg of Object.keys(extra_packages_1.EXTRA_PACKAGES)) {
@@ -64,7 +66,7 @@ const getPackagesToUpgrade = ({ depsWithVersions, catalogEntries, targetVersion,
64
66
  return { normalPackages, catalogPackages: catalogPackagesToUpgrade };
65
67
  };
66
68
  exports.getPackagesToUpgrade = getPackagesToUpgrade;
67
- const upgradeCommand = async ({ remotionRoot, packageManager, version, logLevel, args, }) => {
69
+ const upgradeCommand = async ({ remotionRoot, packageManager, version, skipSkills, logLevel, args, }) => {
68
70
  const depsWithVersions = studio_server_1.StudioServerInternals.getInstalledDependenciesWithVersions(remotionRoot);
69
71
  let targetVersion;
70
72
  if (version) {
@@ -152,6 +154,14 @@ const upgradeCommand = async ({ remotionRoot, packageManager, version, logLevel,
152
154
  logLevel,
153
155
  });
154
156
  }
157
+ await (0, update_remotion_skills_1.updateRemotionSkills)({
158
+ currentVersion: targetVersion,
159
+ cwd: remotionRoot,
160
+ homeDirectory: (0, node_os_1.homedir)(),
161
+ skipSkills,
162
+ logLevel,
163
+ environment: process.env,
164
+ });
155
165
  log_1.Log.info({ indent: false, logLevel }, '⏫ Remotion has been upgraded!');
156
166
  log_1.Log.info({ indent: false, logLevel }, 'https://remotion.dev/changelog');
157
167
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/cli"
4
4
  },
5
5
  "name": "@remotion/cli",
6
- "version": "4.0.502",
6
+ "version": "4.0.504",
7
7
  "description": "Control Remotion features using the `npx remotion` command",
8
8
  "main": "dist/index.js",
9
9
  "bin": {
@@ -36,17 +36,18 @@
36
36
  "author": "Jonny Burger <jonny@remotion.dev>",
37
37
  "license": "SEE LICENSE IN LICENSE.md",
38
38
  "dependencies": {
39
- "@remotion/bundler": "4.0.502",
40
- "@remotion/media-utils": "4.0.502",
41
- "@remotion/player": "4.0.502",
42
- "@remotion/renderer": "4.0.502",
43
- "@remotion/studio-shared": "4.0.502",
44
- "@remotion/studio-server": "4.0.502",
45
- "@remotion/studio": "4.0.502",
39
+ "@remotion/bundler": "4.0.504",
40
+ "@remotion/media-utils": "4.0.504",
41
+ "@remotion/player": "4.0.504",
42
+ "@remotion/renderer": "4.0.504",
43
+ "@remotion/studio-shared": "4.0.504",
44
+ "@remotion/studio-server": "4.0.504",
45
+ "@remotion/studio": "4.0.504",
46
46
  "dotenv": "17.3.1",
47
47
  "minimist": "1.2.6",
48
48
  "prompts": "2.4.2",
49
- "remotion": "4.0.502"
49
+ "semver": "7.5.3",
50
+ "remotion": "4.0.504"
50
51
  },
51
52
  "peerDependencies": {
52
53
  "react": ">=16.8.0",
@@ -56,15 +57,16 @@
56
57
  "@types/minimist": "1.2.2",
57
58
  "@types/prompts": "2.4.9",
58
59
  "@types/prettier": "2.7.2",
60
+ "@types/semver": "7.5.3",
59
61
  "@types/node": "20.12.14",
60
- "@remotion/zod-types": "4.0.502",
61
- "@remotion/tailwind-v4": "4.0.502",
62
- "@remotion/enable-scss": "4.0.502",
63
- "@remotion/skia": "4.0.502",
62
+ "@remotion/zod-types": "4.0.504",
63
+ "@remotion/tailwind-v4": "4.0.504",
64
+ "@remotion/enable-scss": "4.0.504",
65
+ "@remotion/skia": "4.0.504",
64
66
  "react": "19.2.3",
65
67
  "react-dom": "19.2.3",
66
68
  "zod": "4.4.3",
67
- "@remotion/eslint-config-internal": "4.0.502",
69
+ "@remotion/eslint-config-internal": "4.0.504",
68
70
  "eslint": "9.19.0",
69
71
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
70
72
  },