Files
19fb3366ce fix(timeline): the Mix row's level sets the Mix fader (#3765) (#3954)
* 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>
2026-11-03 00:10:07 -05:00
..
…
…
…
…
…
2026-10-31 03:39:22 +00:00
…
2026-10-31 03:39:22 +00:00
…
…
…
…
…