effectcraft/crates
bflatastic 9929b5f9ac M5.10: keyframes behave like After Effects: drags never destroy keys, stretched layers, Shift/Ctrl/Ctrl+Alt clicks, locked layers, Hold off
- A drag (keys.move steps sharing a merge key) applies its total offset to the keys as they
  were before it (`Session::key_move`, `prop::shift_keys`): dragging over another key of the
  property no longer deletes it; only the drop position replaces a key, as in After Effects.
- Keys of time-stretched layers move with the pointer: offsets are applied in comp time and
  snapped to comp frames (drags and Alt+Arrow nudges; they moved by the layer-time distance).
- Shift+click toggles a key in or out of the selection (`keys.select {toggle}`); Ctrl+click
  switches Linear ↔ Auto Bezier and Ctrl+Alt+click toggles Hold.
- Keys of locked layers can't be selected (clicks, marquee, Select All Keyframes), so nothing
  edits them.
- Toggle Hold off returns an eased key to Bezier (it always restored Linear).
- Shift-dragging a key snaps to everything the current time snaps to — other keys, layer in /
  out points, layer and comp markers, the work area — and a tooltip shows the key's time and how
  many frames it moved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 07:40:42 +07:00
..
automation Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
av1enc Never crash: AV1 encoder without expect()/unreachable!() 2026-10-04 13:22:59 -04:00
color Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
effects Never crash: effects crate without expect() 2026-10-04 14:14:16 -04:00
engine M5.10: keyframes behave like After Effects: drags never destroy keys, stretched layers, Shift/Ctrl/Ctrl+Alt clicks, locked layers, Hold off 2026-10-05 07:40:42 +07:00
export Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
expr Never crash: reject deeply nested expressions instead of overflowing the stack 2026-10-04 13:22:36 -04:00
geom Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
gpu Never crash: render and gpu crates without panic!() 2026-10-04 14:20:37 -04:00
hevcenc Never crash: HEVC encoder without expect()/unreachable!() 2026-10-04 13:23:03 -04:00
host Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
interchange Never crash: reject timeline documents nested too deeply 2026-10-04 14:05:57 -04:00
keyframe M13.15: qa scenarios 1-4 (kinetic type, shape logo, compositing, tracking) and fixes 2026-10-03 12:09:41 -04:00
lottie Never crash: Lottie enum values can't overflow 2026-10-04 13:24:14 -04:00
media Merge pull request #17 from storytold/pr/never-crash-media 2026-10-04 15:29:59 -04:00
model Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
opusenc Never crash: Opus and VP9 encoders without expect() 2026-10-04 13:23:06 -04:00
path Never crash: raster and path crates without expect()/unwrap()/unreachable!() 2026-10-04 13:41:09 -04:00
pdf Never crash: PostScript radix numbers outside 2..=36 2026-10-04 14:21:14 -04:00
plugin Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
project M3.9: an edit that only allocates ids still counts as a change 2026-10-05 06:43:10 +07:00
psd Never crash: bound PSD descriptor nesting 2026-10-04 14:05:55 -04:00
raster Never crash: raster and path crates without expect()/unwrap()/unreachable!() 2026-10-04 13:41:09 -04:00
render Merge pull request #35 from storytold/pr/never-crash-render-gpu 2026-10-04 15:33:18 -04:00
script Merge pull request #27 from storytold/pr/never-crash-script 2026-10-04 15:31:21 -04:00
svg Never crash: reject SVGs nested too deeply 2026-10-04 14:05:58 -04:00
text Never crash: text layout and font resolution without expect() 2026-10-04 13:27:38 -04:00
time Never crash: Tick and timecode arithmetic can't overflow or divide by zero 2026-10-04 14:20:33 -04:00
track Never crash: trackers and camera solver without expect() 2026-10-04 13:24:17 -04:00
ui-egui M5.10: keyframes behave like After Effects: drags never destroy keys, stretched layers, Shift/Ctrl/Ctrl+Alt clicks, locked layers, Hold off 2026-10-05 07:40:42 +07:00
vp9enc Never crash: Opus and VP9 encoders without expect() 2026-10-04 13:23:06 -04:00