Show the clips not picked faint over a sound's wave (#357)

Only the picked clip showed in the wave, between its handles. Where the
other clips lay could only be read from the strip above, so cutting one
next to another meant looking up and down all the time.

- Every clip but the picked one is drawn over the wave as a pale tint
  with a thin edge, as high as the file reaches.
- With the sound picked, all its clips are faint. While a drag spans a
  clip, that one is left out.
- Test hook soundTab.faintClips() names the faint clips.

Tests:
- e2e 34 (melektaus-atx): ALL PASSED, 91 checks (1 extended)
- Gate (melektaus-atx): CHECK EXIT 0, 271 files, 4195 tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 5.5 committed 2026-10-08 21:13:17 +02:00
1 parent 852dce5142
commit 95edf9959b
3 files changed
+54 -5

No files matched your search

+14 -2
View File
@@ -2005,16 +2005,28 @@ export async function sound(t) {
const beside = await json('__gm.soundTab.stripAt(0.5)');
await click(beside.x, beside.y);
const pickedBeside = await picked();
const faintBeside = await json('__gm.soundTab.faintClips()');
await shot('34-sound-faint-clip');
const onBand = await json('__gm.soundTab.stripAt(0.2)');
await click(onBand.x, onBand.y);
const faintPicked = await json('__gm.soundTab.faintClips()');
check(
'one undo takes the clip away, a redo brings it back; a click in the strip picks it, beside it the sound',
'one undo takes the clip away, a redo brings it back; a click in the strip picks it, beside it the sound, the clip then faint over the wave',
undoneClip.clips.length === 0 &&
undoneClip.picked === null &&
redoneClip.map((c) => c.id).join() === clipId &&
pickedBeside === null &&
faintBeside.join() === 'Clip 1' &&
faintPicked.length === 0 &&
(await picked()) === clipId,
JSON.stringify({ undoneClip, redoneClip, pickedBeside, picked: await picked() }),
JSON.stringify({
undoneClip,
redoneClip,
pickedBeside,
faintBeside,
faintPicked,
picked: await picked(),
}),
);
const inClip = await json('__gm.soundTab.at(0.2)');
await click(inClip.x, inClip.y);