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:
1 parent
69de48ea8d
commit
d4c4830fe2
17 files changed
+1332
-153
No files matched your search
@@ -160,6 +160,7 @@ export const en = {
|
||||
dropNewTrackHint: 'Drop a clip here to add a new track',
|
||||
addGroup: 'Add group',
|
||||
addGroupTooltip: 'Create a new track group',
|
||||
addKeyframeTooltip: 'Add keyframe for the selected track at the playhead',
|
||||
groupChildCount: '{n} tracks',
|
||||
groupEmpty: 'Drop tracks here',
|
||||
renameGroupDialog: {
|
||||
@@ -175,6 +176,8 @@ export const en = {
|
||||
snapOff: 'Snapping off',
|
||||
hideLocked: 'Hide locked tracks',
|
||||
showLocked: 'Show locked tracks',
|
||||
inPoint: 'In point — drag to set where playback and export start',
|
||||
outPoint: 'Out point — drag to set where playback and export end',
|
||||
stillFrameTooltip: 'Still frame {time} — holds until the next keyframe',
|
||||
keyframeTooltip: 'Keyframe {time} — drag to move, right-click for options',
|
||||
trimTooltip: '{name} · {duration}s{trims} · Drag edges to trim, double-click to open',
|
||||
@@ -229,6 +232,27 @@ export const en = {
|
||||
clipart: 'Clipart',
|
||||
theme: 'UI Theme',
|
||||
},
|
||||
bgVideoLabel: 'Video',
|
||||
bgVideoNone: 'No background video',
|
||||
bgVideoPickFile: 'Pick video file…',
|
||||
bgVideoPickUrl: 'Set URL…',
|
||||
bgVideoClear: 'Remove background video',
|
||||
bgVideoLocalFile: 'Local video file',
|
||||
bgVideoHint:
|
||||
'The video plays behind all layers and tracks the playhead. For best results use MP4 (H.264). The source is stored with the project (data URL for local files) or referenced by URL. In the export the video is not embedded — the exported HTML references the same URL.',
|
||||
bgVideoStageSizeTitle: 'Apply video dimensions?',
|
||||
bgVideoStageSizeMessage:
|
||||
'The video is {w}×{h}. Your canvas is currently {cw}×{ch}. Resize the canvas to match the video?',
|
||||
bgVideoStageSizeConfirm: 'Resize canvas',
|
||||
bgVideoStageSizeCancel: 'Keep current size',
|
||||
bgVideoDurationTitle: 'Extend scene duration?',
|
||||
bgVideoDurationMessage:
|
||||
'The video is {d}s. Scene duration is {cd}s. Extend the scene to match the video length?',
|
||||
bgVideoDurationConfirm: 'Extend duration',
|
||||
bgVideoDurationCancel: 'Keep current duration',
|
||||
bgVideoUrlTitle: 'Background video URL',
|
||||
bgVideoUrlMessage: 'Paste the video URL (must be reachable by the browser):',
|
||||
bgVideoUrlConfirm: 'Load',
|
||||
canvas: 'Canvas',
|
||||
width: 'Width',
|
||||
height: 'Height',
|
||||
|
||||
Reference in new issue
Block a user