[pull] main from remotion-dev:main#849
Merged
Merged
Conversation
Streamline timeline list and expanded rows to use a shared row chrome with depth-based padding, fixed eye/arrow columns, and correct effect field auxiliaryKeys for expansion state keys. Closes #7469 Co-authored-by: Cursor <cursoragent@cursor.com>
Use valid SequencePropsSubscriptionKey shape, required schema defaults, and type assertions so tsgo includes the test file without errors. Co-authored-by: Cursor <cursoragent@cursor.com>
- Wrap `<RemotionRiveCanvas>` in a `<Sequence layout="none">` so it shows up in the timeline and supports inheritable Sequence props (`from`, `durationInFrames`, `name`, `showInTimeline`, `hidden`). - Attach a schema (fit, alignment, visual style, hidden) so the studio can display draggable controls for the canvas. - Hook into the effect chain via `_experimentalEffects`: Rive now draws to an internal source canvas and the result is composited onto the visible canvas through `runEffectChain`. When effects change without the frame advancing, the canvas is redrawn so the new effect parameters take effect immediately. - Expose `className` and `style` props for the underlying `<canvas>`. Closes #7470. Co-authored-by: Cursor <cursoragent@cursor.com>
Apply nesting indent after the eye column so the visibility toggle stays pinned to the left edge while depth padding shifts arrow and content to the right. Co-authored-by: Cursor <cursoragent@cursor.com>
…ects testbed - Add a `RemotionRiveCanvas` tile to `ExperimentalControlsShowcase` so we can verify schema + sequenceVisualStyleSchema controls (translate / scale / rotate / opacity / hidden) wire through. - Add `rive-effects-testbed` composition (`packages/example/src/Rive/RiveEffects.tsx`) that mirrors `EffectsTestbed` but uses `<RemotionRiveCanvas>` to exercise the effects pipeline (baseline, tint, halftone, animated blur, animated wave, and a stacked chain). The animated blur tile also covers the "redraw on effect change" path: its radius pulses between frames. Co-authored-by: Cursor <cursoragent@cursor.com>
Control fields (e.g. styles) now appear first in the expanded timeline section, with the Effects group listed underneath. Co-authored-by: Cursor <cursoragent@cursor.com>
Subtract the left chrome width (padding, eye, indent, arrow) from the 50% label column so value editors start at the same horizontal position regardless of tree depth. Co-authored-by: Cursor <cursoragent@cursor.com>
Give field label columns an extra 15px of width and remove the timeline tree layout unit tests. Co-authored-by: Cursor <cursoragent@cursor.com>
`addSequenceStackTraces(RemotionRiveCanvas)` injects a `stack` prop via the React.createElement proxy, but the inner component was destructuring known props and dropping the rest. Spread `...props` (which contains `stack`) onto the wrapping `<Sequence>` so the studio can resolve the source location of each Rive instance, matching what `<Solid>` does. Co-authored-by: Cursor <cursoragent@cursor.com>
… empty The previous draw path wrapped the rive draw ops in \`riveCanvasInstance.requestAnimationFrame(...)\`. The Rive runtime only flushes the renderer's queued draw calls at the *end* of that callback, but \`runEffectChain\` reads from \`sourceCanvas\` from *inside* the same callback - i.e. before the flush. Symptom: the first paint after mount composites an empty source canvas onto the visible canvas, so nothing is shown. After the user seeks (or otherwise re-runs the effect), the source canvas has the *previous* frame's pixels, which is why "it draws after seek". Fix: drop the Rive-wrapped rAF and do the draw synchronously inside \`useEffect\`, calling \`resolveAnimationFrame()\` ourselves between the rive draw and the effect chain. This is exactly the pattern the \`resolveAnimationFrame\` docstring describes for non-rive-rAF draw loops. Co-authored-by: Cursor <cursoragent@cursor.com>
…the bug Once `CompositionErrorBoundary` caught a runtime error in a composition, it stayed in `hasError = true` forever and never tried to render the children again. After the user fixed the bug, the boundary's children were never re-rendered, the studio's `renderError` was never cleared, and the error UI persisted until a full page reload. See #7447. This fixes it by giving the boundary a `resetKey` prop, sourced from a new `FastRefreshSignalContext` that the studio bumps every time webpack HMR settles. When the key changes, `getDerivedStateFromProps` drops the error flag and the boundary retries rendering its children — either catching a fresh error or, in the happy path, calling `onClear()` so the error UI dismisses. `componentDidMount` also calls `onClear()` to cover the case where Fast Refresh remounts the boundary entirely. Covered by a new Playwright e2e test (`packages/example/e2e/error-overlay.test.mts`) that toggles a `blur({})` parameter to reproduce the original report. Co-authored-by: Cursor <cursoragent@cursor.com>
`@remotion/studio`: Fix timeline indentation
`@remotion/rive`: Integrate effects system with Rive
Replaces the overlapping `isTrackHidden` helper and redundant `showInTimeline` checks with a single `shouldShowTrackInTimeline` predicate, so the rules for whether a track appears in the timeline list live in one self-documenting place. Closes #7471 Co-authored-by: Cursor <cursoragent@cursor.com>
The previous commit propagated a Fast Refresh counter through a new `FastRefreshSignalContext` so `CompositionErrorBoundary` could see it as a `resetKey` prop. That worked but re-rendered every consumer of the context on every HMR cycle. Move the HMR awareness into the boundary itself: while in the error state, subscribe to `__webpack_module__.hot.addStatusHandler` and drop `hasError` on the next `idle` status. Unsubscribe on success or unmount, so there are no extra renders elsewhere in the tree when no error is active. `componentDidMount` still calls `onClear()` when mounted in the success state to cover Fast Refresh remounting the errored boundary in place during `apply` — the new instance has nothing to transition from, so the status handler approach alone wouldn't dismiss the stale host error. Reverts the context plumbing in `Composition.tsx`, `internals.ts`, and `FastRefreshProvider.tsx`, and deletes `fast-refresh-signal-context.ts`. The Playwright regression test in `packages/example/e2e/error-overlay.test.mts` still passes. Co-authored-by: Cursor <cursoragent@cursor.com>
…eline-filter `@remotion/studio`: Consolidate timeline `showInTimeline` filtering
Adds a third HMR cycle to the regression test for #7447: after the boundary has reset once and successfully rendered the children, breaking the composition again should bring the error UI back. Guards against regressions where the boundary gets stuck in the success state after the first HMR reset. Also refactors the file-write + wait-for-rebuild dance into a local helper to keep the three cycles readable. Co-authored-by: Cursor <cursoragent@cursor.com>
Adds `_experimentalEffects` support, runs the chain at intrinsic GIF dimensions, and adds a Studio testbed composition. Fixes #7477. Co-authored-by: Cursor <cursoragent@cursor.com>
Move Rive, Gif, AnimatedImage, and video effect compositions out of unrelated folders into a dedicated Effects folder. Co-authored-by: Cursor <cursoragent@cursor.com>
Bumps [turbo](https://github.com/vercel/turborepo) from 2.9.3 to 2.9.14. - [Release notes](https://github.com/vercel/turborepo/releases) - [Changelog](https://github.com/vercel/turborepo/blob/main/RELEASE.md) - [Commits](vercel/turborepo@v2.9.3...v2.9.14) --- updated-dependencies: - dependency-name: turbo dependency-version: 2.9.14 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Omit `_experimentalEffects` from inherited `SequenceProps` before re-adding it as `EffectsProp`, avoiding an intersection with `EffectDefinition[]` that broke effect factories in the example package. Co-authored-by: Cursor <cursoragent@cursor.com>
…rbo-2.9.14 Bump turbo from 2.9.3 to 2.9.14
Co-authored-by: pullfrog[bot] <226033991+pullfrog[bot]@users.noreply.github.com>
…ring-7447 `remotion`: Dismiss in-canvas error overlay after Fast Refresh fixes the bug
Co-authored-by: Cursor <cursoragent@cursor.com>
Fixes react-hooks/exhaustive-deps lint failure in CI. Co-authored-by: Cursor <cursoragent@cursor.com>
Docs: Document PDF not supported on Lambda for still renders
`@remotion/gif`: Integrate effect system with `<Gif>`
* Rename effects API for launch (#7476) Ship the public `effects` prop on canvas sources while keeping sequence registration internal via `_remotionInternalEffects`. Consolidate `@remotion/effects` presets under `EffectInternals` with no documented subpath exports yet. Co-authored-by: Cursor <cursoragent@cursor.com> * Fix gif effects rename after merging main (#7476) Update @remotion/gif and example compositions to use `effects` and `_remotionInternalEffects`. Fix studio-server memfs assignment for tsgo. Co-authored-by: Cursor <cursoragent@cursor.com> * Fix lost-node-path e2e for renamed effects API Update the issue #7393 refactor fixture to use memoizedEffects and EffectInternals.tint so the Sequence line shifts after refactor. Co-authored-by: Cursor <cursoragent@cursor.com> * Rename findExperimentalEffectsAttr to findEffectsAttr Remove the last experimental-effects naming from studio-server AST helpers. They already match the `effects` JSX attribute. Co-authored-by: Cursor <cursoragent@cursor.com> * Remove dead empty index.mjs fallback in effects bundle EffectInternals exports make the export {} workaround unnecessary. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
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 : )