[pull] main from remotion-dev:main#851
Merged
Merged
Conversation
Pass the composition registration stack through Studio codemods so duplicate, rename, and delete edit the file where `<Composition>` is defined instead of guessing the root file. Refactor template-recorder registration to use the shared applyCodemodToFile helper. Fixes #6992 Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Export blur from the package root and @remotion/effects/blur subpath, add horizontal/vertical axis options, document the effect, and update examples to use the public import. Closes #7495 Co-authored-by: Cursor <cursoragent@cursor.com>
When a <Composition> is the sole return value of a wrapper component (e.g. `return (<Composition id="X" .../>)`) or the concise body of an arrow function, the recast-mods walker only inspected JSX children and never touched the element itself, so delete/rename/duplicate codemods threw "Unable to calculate the changes needed for this file." Now we detect this position and: - delete-composition: replace the JSXElement with `null` (`return null;`) - rename-composition: rewrite the id attribute in place - duplicate-composition: wrap original + new element in a JSXFragment When wrapping into a fragment we also strip Babel's `extra.parenthesized` hint from the moved children so recast does not emit stray `(` / `)` characters from the original `return (...)` parens. Co-authored-by: Cursor <cursoragent@cursor.com>
Swap the flat #0b84f3 and pink scene backgrounds used in the transition docs for textured photos so transitions and effects are easier to see. Table of contents previews load smaller variants. The pre-rendered html-in-canvas videos have been re-rendered to match. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Track delay-playback handles so in-flight decode/seek work arms the player buffer when premount ends, and disarms again when re-entering premount. Fixes #7510 Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…cated-stack `@remotion/studio`: Use symbolicated stack for composition codemods
Docs: Replace solid backgrounds in transition demos with textured images
- Remove `blur` from main package root entry; subpath import only - Switch docs/README examples to `<Video>` from `@remotion/media` - Add `typesVersions` for legacy moduleResolution to find `./blur` - Wire `@remotion/effects` into docs package + tsconfig references - Add a preview thumbnail to the @remotion/effects table of contents - Simplify Studio schema labels (Blur / Horizontal / Vertical) - Reorder sidebar alphabetically (effects, elevenlabs, enable-scss) - Update package description in package.json and studio-shared - Add effect-key regression test for axis flags - Document the radius:0 shader passthrough trick Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The Table of Contents on /docs/transitions/ uses `pointerenter` on each preview tile to start the transition. The listener was attached imperatively inside a `useEffect`, which runs after commit, hydration and paint. `pointerenter` only fires on a transition *into* the element, so whenever the user's cursor was already over a tile when the listener was attached (very easy to do on this page: many small tiles, hydration after SSR, the `<Player>` can briefly render `null` while its composition config resolves and then mount again under the cursor), the first hover was missed and the preview never played. Wrap the `<Player>` in a div with React's synthetic `onPointerEnter` and additionally trigger the preview once on mount if the wrapper already matches `:hover`, so the cursor-already-inside case is also covered. Fixes #7528 Co-authored-by: Cursor <cursoragent@cursor.com>
…ability Docs: Make transition presentation hover-to-preview reliable
`@remotion/effects`: Promote blur() to public API with axis control
`<Img>` does not accept the `effects` prop, so it should not be listed as an example of a Remotion-based canvas component that supports effects. Use `<HtmlInCanvas>` instead, which actually supports the `effects` prop. Refs #7530 Co-authored-by: Cursor <cursoragent@cursor.com>
- Delete 3 unreferenced files from packages/example/public/ (~14 MB): long-video.mp4, spiral_.mp4, video.mp4. - Move 12 largest referenced fixtures and sounds/1.wav-9.wav to https://remotion.media/... URLs (~157 MB removed from public/). - Inline the remote URLs at the call sites in packages/example/src/. - Add a small cached-example-media module in @remotion/example-videos that downloads the files into node_modules/.videos as part of make, so media-parser tests still see them as local file paths. Co-authored-by: Cursor <cursoragent@cursor.com>
#7522) * `@remotion/web-renderer`: Fix collapsed spaces between words in canvas text Measure one token per visual line with the Range API instead of per-word DOM mutations, so whitespace is not measured as zero width. Fixes #7489 Co-authored-by: Aryan <aryan@heygaia.io> Co-authored-by: Cursor <cursoragent@cursor.com> * Fix TypeScript and lint errors in findWords - Use `instanceof Text` so the guard narrows `ChildNode` to `Text`, fixing 4 TS2345 errors at the `measureRange` call sites. - Destructure `top` from `measureRange` to satisfy `prefer-destructuring`. Co-authored-by: Cursor <cursoragent@cursor.com> * Add visual regression test for issue 7489 Mirrors the minimal repro from #7489 (`<span>ship it tomorrow?</span>` inside an AbsoluteFill) so future regressions of the inter-word-space collapsing bug are caught by snapshot diffs across chromium, firefox, and webkit. Co-authored-by: Cursor <cursoragent@cursor.com> * Revert findWords rewrite, keep issue-7489 fixture The line-break-based rewrite of findWords caused regressions. Restore the original Intl.Segmenter implementation and drop the regression test + baseline snapshots that depended on the fix. The issue-7489 fixture and its Root.tsx entry are kept so the bug stays reproducible in the studio testbed for whoever picks this up next. Co-authored-by: Cursor <cursoragent@cursor.com> * Restore issue-7489 visual test for debugging Keep the test harness alongside the fixture so the next person can iterate on a fix and see the snapshot diff change as they go. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Aryan <aryan@heygaia.io> Co-authored-by: Cursor <cursoragent@cursor.com>
…sehood-7530 Docs: Replace `<Img>` with `<HtmlInCanvas>` in effects intro
Replace the experimental 2D slice renderer with a WebGL2 UV warp, rename evolution to phase, add a direction enum, remove background and sliceWidth, and export wave from @remotion/effects/wave with docs. Co-authored-by: Cursor <cursoragent@cursor.com>
- turbo.json: cache node_modules/.videos for @remotion/example-videos#make so that downloaded test fixtures are restored on turbo cache hits. Without this, Ubuntu and browser-test jobs failed because the make task was cached, dist/ was restored, but the downloaded videos under node_modules/.videos/ were missing. - AudioTesting/index.tsx: stop looking up music.mp3 via getStaticFiles() (the file no longer exists in public/) and inline the https://remotion.media/music.mp3 URL instead. Fixes the "audio-testing" composition rendering test on macOS. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Add HtmlInCanvas + Img preview compositions, regenerate blur at radius 15, and render wave preview stills for the effects table of contents. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
PR #7529 tried to fix unreliable hover-to-preview on /docs/transitions/ by wrapping the Player and handling :hover on mount. That did not fix the issue. The player was blocked waiting for the AudioContext to resume while unmuted. Set initiallyMuted on the preview tiles so playback can start on hover without requiring user gesture for audio. Reverts #7529 Fixes #7528 Co-authored-by: Cursor <cursoragent@cursor.com>
Wrap <Img> in <Sequence layout="none"> for timeline registration, matching the @remotion/media Video pattern. Remove useImageInTimeline and register image sequences in Sequence.tsx. Fixes #6989 Co-authored-by: Cursor <cursoragent@cursor.com>
Stop re-exporting docs components from @remotion/example; they lived outside example's tsconfig rootDir and broke CI. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…n chain (#7535) * Fix upside-down WebGL effects after 2D effects in chain Only enable UNPACK_FLIP_Y_WEBGL when uploading raw DOM media. Skip the flip for ImageBitmap bridge outputs and prior WebGL ping-pong canvases so wave + blur and similar stacks render upright. Fixes #7483 Co-authored-by: Cursor <cursoragent@cursor.com> * Narrow WebGL Y-flip to actual effect-chain sources Only flip 2D frame canvases and ImageBitmap/WebGL pool outputs from runEffectChain — not HTMLVideoElement/HTMLImageElement, which are not used as effect sources (@remotion/media uses WrappedCanvas.canvas). Co-authored-by: Cursor <cursoragent@cursor.com> * Fix 2D→WebGL effect bridge orientation in runEffectChain Skip createImageBitmap when handing 2D output to WebGL so blur uses the same canvas + UNPACK_FLIP_Y path as blur-only. Pass flipSourceY from the chain runtime instead of guessing from source type. Co-authored-by: Cursor <cursoragent@cursor.com> * Use flipSourceY for light leak and starburst effect uploads WebGL effects in @remotion/light-leaks and @remotion/starburst sample uSource via texImage2D; respect flipSourceY from runEffectChain like blur and halftone so 2D→WebGL chains stay upright. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
Pass only {type: 'image', src} to Sequence and let it handle registerSequence.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ially-muted Docs: Fix transition hover preview with initiallyMuted (revert #7529)
Co-authored-by: Cursor <cursoragent@cursor.com>
…otion into cursor/d7691aa3
`@remotion/effects`: Graduate wave() with WebGL2 warp
Implements a `dissolve()` HTML-in-canvas presentation ported from the gl-transitions "dissolve" shader. The transition burns the outgoing scene away using a luminance threshold, revealing the incoming scene through a configurable glowing edge. Closes #7513 Co-authored-by: Cursor <cursoragent@cursor.com>
Move large example public assets to remotion.media
Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # packages/example/src/HtmlInCanvas/index.tsx # packages/example/src/Root.tsx
`remotion`: `<Img>` inherits from `<Sequence layout="none">`
`@remotion/transitions`: Add `dissolve()` HTML-in-canvas presentation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )