mirror of
https://github.com/storytold/filmcraft.git
synced 2026-11-08 17:40:14 +00:00
* fix(timeline): the Mix row's level sets the Mix fader (#3765) The Timeline's Mix track header painted the master level as hot text but nothing could change it, so the Mix volume seemed to do nothing. It is now a hot number, as on an audio track: drag or type to set the Mix fader. It shows the fader at the playhead (its automation, or a control held in the Audio Track Mixer) and changes it through mixer.setValue, which writes a keyframe where the Mix fader is automated. mixer.setValue takes `merge` / `begin`, as clipMixer.set does, so a drag is one undo step; a typed value is its own. Without `merge` nothing changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(mixer): a merged Mix drag stays in its own sequence (#3765) The Mix strip has the same id in every sequence, so the merge key of mixer.setValue now names the active sequence too. Otherwise one undo could revert Mix drags in two sequences. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(timeline): drag the Mix level as a held gesture (#3765) During playback an automation pass runs, and mixer.setValue touches and releases the control on every call, so each drag update of the Timeline's Mix level was its own undo step (and in Touch the return started from the last update). The field now does what the Audio Track Mixer's fader does: mixer.touch while dragging and mixer.release when the drag ends; a typed value still goes through mixer.setValue. Outside playback the release commits the value once, so the merge/begin params of mixer.setValue are no longer needed and are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(timeline): the Touch return starts at the Mix drag's release (#3765) The drag test helper calls `between` once more before the release, so the playhead moves after the last drag update; the Touch test checks that the keyframe at the release time holds the released value. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * timeline: empty_state keeps its doc comment Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>