effectcraft/crates
bflatastic cc594a7385 Keyframes: ease curves measure and apply the ease of a keyframe pair (#254)
An EaseCurve is the temporal ease of one segment independent of its
duration and values: the out side of the first key and the in side of
the second, as influence (%) and speed relative to the segment's
average speed (1 = linear, 0 = at rest). Its handles in the normalised
value graph are cubic-bezier points. apply() eases a pair of keys per
dimension, along the motion path for spatial values and as overall
progress for paths and gradients, the way Easy Ease shapes them; an
Auto Bezier key keeps its other side as it plays. measure() reads the
curve a segment plays back. Non-finite numbers are rejected and
influences and speeds clamped.

Test: handles_round_trip_and_reject_non_finite_numbers,
applied_curve_scales_to_each_dimension_and_measures_back,
spatial_curve_follows_the_motion_path,
linear_and_auto_bezier_sides_measure_as_they_play (effectcraft-keyframe).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 17:25:00 +07:00
..
automation MCP: add_effect is one undo step and leaves nothing applied when it fails (#175) 2026-10-07 15:48:17 +07:00
av1enc G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
color G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
effects Effects: the sim golden test accepts macOS 27's libm hash for Mr. Mercury (#232) 2026-10-08 13:36:09 +07:00
engine Viewer: Snapping options pick which layer features snap (#253) 2026-10-08 17:14:05 +07:00
export VP9: frames never end in a byte that reads as a superframe marker (#161) 2026-10-07 14:15:33 +07:00
expr Merge pull request #6 from storybored379/pr/expr-runtime-stack-leak 2026-10-05 12:10:53 +07:00
geom Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
gpu GPU: the compositor declines OpenGL adapters at once (#243) 2026-10-08 13:57:08 +07:00
hevcenc Untrack crates/hevcenc/target (36 MB of build output) and ignore nested target/ 2026-10-06 15:02:20 -04:00
host G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
interchange Never crash: reject timeline documents nested too deeply 2026-10-04 14:05:57 -04:00
keyframe Keyframes: ease curves measure and apply the ease of a keyframe pair (#254) 2026-10-08 17:25:00 +07:00
lottie G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
media Media: conformed audio keeps its sound past 12:36 (#172) 2026-10-07 14:20:47 +07:00
model G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
opusenc G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
path G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
pdf G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
plugin G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
project Project: new layers take their item's label colour (#153) 2026-10-07 13:32:40 +07:00
psd G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
raster G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
render Effects: Turbulent Displace displaces the whole layer, not one quadrant (#227) 2026-10-08 12:20:10 +07:00
script Scripting: script.run reports .jsxbin scripts as unsupported (#176) 2026-10-07 15:48:17 +07:00
segment G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
svg G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
text test: tolerate installed variants of bundled font families 2026-10-06 16:40:12 -05:00
time Never crash: Tick and timecode arithmetic can't overflow or divide by zero 2026-10-04 14:20:33 -04:00
track G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
ui-egui Viewer: wrap the snap() doc comment (#253) 2026-10-08 17:14:18 +07:00
vp9enc VP9: frames never end in a byte that reads as a superframe marker (#161) 2026-10-07 14:15:33 +07:00