From 599b3da83d954b72cfcfc88761047419ca0a8475 Mon Sep 17 00:00:00 2001 From: jsongo Date: Sat, 7 Feb 2026 23:58:34 +0800 Subject: [PATCH] feat: re-architect init template and bump version to 0.1.4 - Move rendering logic, composition registration, and player setup to src/main.tsx - Purify src/App.tsx to be a simple business component - Enable users to only modify App.tsx for custom videos - Bump all package versions to 0.1.4 Co-Authored-By: Claude Sonnet 4.5 --- packages/cli/package.json | 2 +- packages/cli/src/index.ts | 54 ++++++++++++++++------------------ packages/core/package.json | 2 +- packages/encoder/package.json | 2 +- packages/renderer/package.json | 2 +- 5 files changed, 30 insertions(+), 32 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 8c2a879..ce3f73b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@open-motion/cli", - "version": "0.1.3", + "version": "0.1.4", "bin": { "open-motion": "dist/bin.js" }, diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index d2bf99a..a4206ab 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -75,23 +75,43 @@ export default defineConfig({ 'src/main.tsx': `import React from 'react'; import ReactDOM from 'react-dom/client'; import { App } from './App.tsx'; +import { CompositionProvider, Composition, Player } from '@open-motion/core'; + +const Root = () => { + const config = { width: 1280, height: 720, fps: 30, durationInFrames: 60 }; + const isRendering = typeof (window as any).__OPEN_MOTION_FRAME__ === 'number'; + + if (isRendering) { + return ( + + + + ); + } + + return ( +
+ +
+ +
+
+ ); +}; ReactDOM.createRoot(document.getElementById('root')!).render( - + );`, 'src/App.tsx': `import React from 'react'; import { - CompositionProvider, useCurrentFrame, useVideoConfig, - interpolate, - Composition, - Player + interpolate } from '@open-motion/core'; -const MyVideo = () => { +export const App = () => { const frame = useCurrentFrame(); const { width, height } = useVideoConfig(); const opacity = interpolate(frame, [0, 30], [0, 1]); @@ -111,28 +131,6 @@ const MyVideo = () => { Hello OpenMotion ); -}; - -export const App = () => { - const config = { width: 1280, height: 720, fps: 30, durationInFrames: 60 }; - const isRendering = typeof (window as any).__OPEN_MOTION_FRAME__ === 'number'; - - if (isRendering) { - return ( - - - - ); - } - - return ( -
- -
- -
-
- ); };` }; diff --git a/packages/core/package.json b/packages/core/package.json index 6cd7375..29ec857 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@open-motion/core", - "version": "0.1.3", + "version": "0.1.4", "main": "dist/index.js", "types": "dist/index.d.ts", "license": "MIT", diff --git a/packages/encoder/package.json b/packages/encoder/package.json index 3c6ce4e..78a42da 100644 --- a/packages/encoder/package.json +++ b/packages/encoder/package.json @@ -1,6 +1,6 @@ { "name": "@open-motion/encoder", - "version": "0.1.3", + "version": "0.1.4", "main": "dist/index.js", "types": "dist/index.d.ts", "license": "MIT", diff --git a/packages/renderer/package.json b/packages/renderer/package.json index 1ab2da2..14fa24d 100644 --- a/packages/renderer/package.json +++ b/packages/renderer/package.json @@ -1,6 +1,6 @@ { "name": "@open-motion/renderer", - "version": "0.1.3", + "version": "0.1.4", "main": "dist/index.js", "types": "dist/index.d.ts", "license": "MIT",