Skip to content

[6/10] fix: apply effect and transition presets over keyframes in preview - #254

Merged
dazzatronus merged 9 commits into
mainfrom
derk/sdk-motion-presets-over-keyframes
Oct 26, 2026
Merged

dazzatronus merged 9 commits into
mainfrom
derk/sdk-motion-presets-over-keyframes

Conversation

@dazzatronus

@dazzatronus dazzatronus commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

A clip with any visual keyframes previewed without its effect and transitions. Presets now insert their points over the keyframes the way the render does: the effect first, then the in transition, then the out. Each reads the keyframed value at its boundary, and a preset point replaces a user point at the same time. The separate layer that used to combine presets with keyframes is removed, because presets now write into the keyframe curves themselves.

Some static clips change with this, to match the render. Zoom and shuffle add to the clip's scale instead of multiplying it, and a slide effect sets the offset (and the scale, when it has to enlarge).

Not matched yet: the render's one-frame offsets at clip ends, its three box-blur passes on zoom (approximated with a Gaussian), and reveal's 1% overshoot.

Size: 562 lines including tests. The old layer and its tests go in the same change that replaces them, so splitting this would leave a version that composes presets neither way.

Verify: npm test (2364, +10).

# PR Adds Why separate
1/10 #249 Internal type for the render's default curve Mechanical, no behaviour change
2/10 #250 Transitions match the render Transition presets
3/10 #251 shuffle* previews A missing preset
4/10 #252 Slide effects match the render Effect presets
5/10 #253 Keyframes hold and ease like the render Keyframe model
6/10 #254 Presets compose over keyframes Builds on 2–5
7/10 #255 The toolbar allows presets with keyframes UI change that needs 6/10
8/10 #256 Default fps matches the render Output settings
9/10 #257 shotstack-canvas 2.14.1 Dependency bump
10/10 #258 html5 capture sees the page's markup Uses 9/10's new inputs

Merge bottom-up, retargeting each PR after its predecessor lands. Since #248 the release workflow skips the release when the merged PR's title starts [n/m] with n < m, so 1/10 to 9/10 hold, and 10/10 releases the stack as one version.

Merge subject: [6/10] fix: apply effect and transition presets over keyframes in preview. The repo squashes a single-commit PR under its commit message, so type this in the merge dialog.

Base automatically changed from derk/sdk-motion-keyframe-holds to main October 26, 2026 23:27
@dazzatronus
dazzatronus merged commit 8ee2542 into main Oct 26, 2026
1 check passed
@dazzatronus
dazzatronus deleted the derk/sdk-motion-presets-over-keyframes branch October 27, 2026 00:32
github-actions Bot pushed a commit that referenced this pull request Oct 27, 2026
## [2.29.2](v2.29.1...v2.29.2) (2026-10-27)

### Bug Fixes

* apply effect and transition presets over keyframes in preview ([#254](#254)) ([8ee2542](8ee2542))
* capture html5 clips animated only by their markup ([#258](#258)) ([78c88b6](78c88b6))
* default the output frame rate to the render's ([#256](#256)) ([16d560e](16d560e))
* **deps:** use shotstack-canvas 2.14.1 ([#257](#257)) ([8db1111](8db1111))
* hold the first keyframe value and ease gaps like the render ([#253](#253)) ([0039a74](0039a74))
* let keyframed clips take effects and transitions in the toolbar ([#255](#255)) ([a4127fe](a4127fe))
* preview slide effects with the render's distances ([#252](#252)) ([4afc59a](4afc59a))
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 2.29.2 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant