effectcraft/crates
bflatastic 5afc25d0d8 M13.34: audio scrubbing (Ctrl/Cmd-drag the current time)
- audio::AudioScrub: an open output that plays a faded snippet (one frame, 30–100 ms) of the
  comp's mix at each new frame, replacing what is still queued; holding still repeats nothing.
  The mixing is shared with the preview feeder (mix_block); AudioFeed::clear.
- The Timeline ruler: Ctrl/Cmd-drag scrubs audio (EffectcraftApp::scrub_audio opens the output
  through the audio device hook on first use). The Audio panel meters follow the snippets; an
  idle second closes the output.
- playback.scrubAudio {time?} for agents.
- Tests: ui_audio_scrub (snippet length, fades, same-frame no-op, replace not pile up, silent
  comps, Cmd-drag in the ruler, idle close) with a fake device. Docs: parity.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:18:54 +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 M5.16: Key Light: keyer eyedroppers pick from the effect input (effect.pickColor); "keylight" search 2026-10-05 11:04:10 +07:00
engine M13.34: audio scrubbing (Ctrl/Cmd-drag the current time) 2026-10-05 15:18:54 +07:00
export Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04: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 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 Keyframes: a Hold key no longer eases the motion into it 2026-10-04 01:17:34 -07: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 M13.30: the ArtCraft mark in the Tools bar, About and Home; VectorCraft sibling link 2026-10-05 12:49:47 +07: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 M4.14: content-keyed RAM preview frames; proxies in the disk cache's content key 2026-10-05 14:39:17 +07:00
script Merge pull request #10 from storybored379/pr/spatial-tangent-getter-names 2026-10-05 12:11:18 +07: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 M13.34: audio scrubbing (Ctrl/Cmd-drag the current time) 2026-10-05 15:18:54 +07:00
vp9enc Never crash: Opus and VP9 encoders without expect() 2026-10-04 13:23:06 -04:00