0.6.0: background video, in/out range, top-level masks, track icons

- background video layer (document-level), syncs to playhead in editor and fullscreen
- playback in/out brackets on the scrub ruler; i/o set them, r rewinds to in-point
- togglePlay, tick, fullscreen loop, WebM + server FFmpeg export all honor [in, out]
- top-level mask layers cascade over everything below until a group boundary
- fullscreen preview slaves localTime to the bg video so it stops stuttering
- welcome "new project" now actually loads a blank scene (was a no-op)
- default canvas background hardened to white via normalizeScene
- new keyframe button (+) in the name-spacer, backspace/delete removes selected kfs
- drag-end auto-selects the created/shifted keyframe so the path is visible
- animation path updates live during drag and spans every selected keyframe
- track rows show an icon per asset kind (rect/circle/image/text/polygon/freeform)
- default mask mode is negative, buttons read − then +
- sticky track-name columns raised above playhead/brackets; orange bracket styling
- tests for playback range, blank scene, mask defaults, cascading top-level masks

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
thandClaude Opus 4.7 committed 2026-04-20 20:19:34 +02:00
1 parent 69de48ea8d
commit d4c4830fe2
17 files changed
+1332 -153

No files matched your search

+4
View File
@@ -13,6 +13,8 @@
--accent-soft-strong: rgba(110, 168, 255, 0.22);
--danger: #ff7a7a;
--danger-soft: rgba(255, 122, 122, 0.12);
--range-bracket: #f59e0b;
--range-hover: #ffffff;
--radius: 6px;
--radius-sm: 4px;
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2);
@@ -36,6 +38,8 @@
--accent-soft-strong: rgba(43, 106, 245, 0.18);
--danger: #d63c3c;
--danger-soft: rgba(214, 60, 60, 0.09);
--range-bracket: #d97706;
--range-hover: #111111;
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
--shadow-md: 0 8px 24px rgba(20, 25, 40, 0.12);
color-scheme: light;