fablecut 1.12.1 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +657 -11
- package/README.md +45 -10
- package/app.js +3352 -212
- package/color.js +47 -14
- package/comp.js +195 -0
- package/edit-ops.js +70 -17
- package/export-jobs.js +8 -5
- package/index.html +148 -62
- package/library/README.md +2 -0
- package/library/elements/logo-placeholder.svg +12 -0
- package/mask.js +467 -0
- package/mcp-server.js +639 -19
- package/motion.js +803 -0
- package/package.json +1 -1
- package/paths.js +25 -2
- package/server.js +42 -2
- package/style.css +188 -24
- package/templates.js +576 -0
- package/tracker.js +253 -0
package/index.html
CHANGED
|
@@ -55,8 +55,10 @@
|
|
|
55
55
|
<div class="bin-tabs" id="binTabs">
|
|
56
56
|
<button type="button" data-tab="project" class="on" title="Media used by this project — right-click for New folder">Project</button>
|
|
57
57
|
<button type="button" data-tab="elements" title="Overlay art from library/elements">Elements</button>
|
|
58
|
-
<button type="button" data-tab="sfx" title="Sound effects from library/sfx">
|
|
58
|
+
<button type="button" data-tab="sfx" title="Sound effects from library/sfx">SFX</button>
|
|
59
59
|
<button type="button" data-tab="svg" title="Vector animations from library/svg">SVG</button>
|
|
60
|
+
<button type="button" data-tab="shapes" title="Shape layers and null objects">Shapes</button>
|
|
61
|
+
<button type="button" data-tab="templates" title="Lower thirds, logo animations and social layouts — with fields you edit in the Inspector">Templates</button>
|
|
60
62
|
</div>
|
|
61
63
|
<input type="file" id="fileInput" class="sr-only" multiple accept="video/*,audio/*,image/*,.mp4,.mov,.webm,.mkv,.mp3,.wav,.m4a,.png,.jpg,.jpeg,.gif,.webp,.svg">
|
|
62
64
|
<div class="bin-list" id="binList">
|
|
@@ -195,6 +197,7 @@
|
|
|
195
197
|
<!-- ══════════ TIMELINE ══════════ -->
|
|
196
198
|
<section class="panel timeline-panel" id="timelinePanel">
|
|
197
199
|
<div class="timeline-toolbar">
|
|
200
|
+
<span class="comp-crumb hidden" id="compCrumb" aria-label="Open composition"></span>
|
|
198
201
|
<button class="btn tiny hidden" id="btnTrimIO" title="Trim clips to IN/OUT (⇧T)"><svg class="ico" viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.85" stroke-linecap="square" d="M1.25 4.5H12M4.5 1.25V12M4.5 12H14.75M12 4.5V14.75"/></svg> Trim</button>
|
|
199
202
|
<button class="btn tiny toggle hidden" id="btnWorkAreaPlay" title="Limit playback to IN/OUT (Home/End jump to markers; playhead outside = override)"><svg class="ico" viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.85" stroke-linecap="square" stroke-linejoin="miter" d="M1.5 2.5V13.5M14.5 2.5V13.5M4.25 8H11.75M9.35 5.6L12 8L9.35 10.4"/></svg> Limit</button>
|
|
200
203
|
<span class="tool-seg" role="group" aria-label="Edit tool"><button type="button" class="btn tiny on" data-edit-tool="select" aria-pressed="true" title="Selection tool (V) — move and trim clips"><svg class="ico" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path fill="currentColor" d="M4 1.5v11.2l3-2.9 1.9 4.6 1.8-.8-1.9-4.4h4.2z"/></svg></button><button type="button" class="btn tiny" data-edit-tool="ripple" aria-pressed="false" title="Ripple edit (B) — drag a clip edge; everything after it moves with it"><svg class="ico" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M5 2.5v11M5 8h8.5M11 5.5 13.5 8 11 10.5"/></svg></button><button type="button" class="btn tiny" data-edit-tool="roll" aria-pressed="false" title="Rolling edit (R) — drag a cut; the clips on both sides trim, nothing else moves"><svg class="ico" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M8 2v12M1.5 8h4M10.5 8h4M3.5 6 1.5 8l2 2M12.5 6l2 2-2 2"/></svg></button><button type="button" class="btn tiny" data-edit-tool="slip" aria-pressed="false" title="Slip (Y) — drag a clip to change which part of the source it shows"><svg class="ico" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M2.5 3v10M13.5 3v10M5 8h6M6.8 6.2 5 8l1.8 1.8M9.2 6.2 11 8l-1.8 1.8"/></svg></button><button type="button" class="btn tiny" data-edit-tool="slide" aria-pressed="false" title="Slide (U) — drag a clip along the track; its neighbours trim to make room"><svg class="ico" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="5" y="4" width="6" height="8" rx="1"/><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M1 8h2.5M12.5 8H15M2.3 6.7 1 8l1.3 1.3M13.7 6.7 15 8l-1.3 1.3"/></svg></button></span>
|
|
@@ -342,67 +345,145 @@
|
|
|
342
345
|
<!-- ══════════ HELP OVERLAY ══════════ -->
|
|
343
346
|
<div class="overlay hidden" id="helpOverlay">
|
|
344
347
|
<div class="dialog help">
|
|
345
|
-
<
|
|
346
|
-
|
|
347
|
-
<
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
<
|
|
352
|
-
<
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
<
|
|
365
|
-
<
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
<
|
|
373
|
-
<
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
<
|
|
389
|
-
<
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
<
|
|
398
|
-
<
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
348
|
+
<div class="help-head">
|
|
349
|
+
<h2>Keyboard shortcuts</h2>
|
|
350
|
+
<input type="search" id="helpFilter" class="help-filter" placeholder="Filter — e.g. marker, trim, mask" aria-label="Filter shortcuts" autocomplete="off" spellcheck="false">
|
|
351
|
+
</div>
|
|
352
|
+
<div class="keys-cols" id="helpKeys">
|
|
353
|
+
<section class="keys-sec">
|
|
354
|
+
<h3>Playback</h3>
|
|
355
|
+
<table class="keys">
|
|
356
|
+
<tr><td><kbd>Space</kbd></td><td>Play / pause (Source or Program — whichever is active)</td></tr>
|
|
357
|
+
<tr><td><kbd>J</kbd> <kbd>K</kbd> <kbd>L</kbd></td><td>Shuttle — <kbd>L</kbd> plays forward, <kbd>J</kbd> in reverse (silent); tap again for 1.5× · 2× · 4×, the other key turns around; <kbd>K</kbd> stops</td></tr>
|
|
358
|
+
<tr><td><kbd>K</kbd>+<kbd>J</kbd> / <kbd>K</kbd>+<kbd>L</kbd></td><td>Hold <kbd>K</kbd> and tap to step one frame; hold both to crawl at ¼ speed</td></tr>
|
|
359
|
+
<tr><td><kbd>←</kbd> <kbd>→</kbd></td><td>Step 1 frame (<kbd>⇧</kbd> = 1 second)</td></tr>
|
|
360
|
+
<tr><td><kbd>↑</kbd> / <kbd>↓</kbd></td><td>Jump to previous / next cut (selected clip In then Out; no selection → targeted tracks). Source monitor: In / Out marks</td></tr>
|
|
361
|
+
<tr><td><kbd>Home</kbd> / <kbd>End</kbd></td><td>Jump to start / end</td></tr>
|
|
362
|
+
<tr><td><kbd>0</kbd>–<kbd>9</kbd> / click timecode</td><td>Type a time: <code>01:15:00</code>, packed <code>1500</code> (= 15 s), <code>+30</code> / <code>-1:00</code> to offset, <code>12.5</code> seconds. Click IN / OUT readouts to type those too</td></tr>
|
|
363
|
+
<tr><td>Limit (toolbar)</td><td>Play stops at OUT; Home / End use IN / OUT</td></tr>
|
|
364
|
+
</table>
|
|
365
|
+
</section>
|
|
366
|
+
<section class="keys-sec">
|
|
367
|
+
<h3>Source monitor</h3>
|
|
368
|
+
<table class="keys">
|
|
369
|
+
<tr><td>Dbl-click bin / clip</td><td>Load into the Source monitor</td></tr>
|
|
370
|
+
<tr><td><kbd>,</kbd></td><td>Insert Source In→Out at the timeline playhead (ripples later clips)</td></tr>
|
|
371
|
+
<tr><td><kbd>.</kbd></td><td>Replace — overwrite at the playhead, or apply new Source In / Out to a timeline-loaded clip (ripples if the duration changes)</td></tr>
|
|
372
|
+
</table>
|
|
373
|
+
</section>
|
|
374
|
+
<section class="keys-sec">
|
|
375
|
+
<h3>Editing</h3>
|
|
376
|
+
<table class="keys">
|
|
377
|
+
<tr><td><kbd>V</kbd> <kbd>B</kbd> <kbd>R</kbd> <kbd>Y</kbd> <kbd>U</kbd></td><td>Tools: Selection · Ripple edit (drag an edge, the rest follows) · Rolling edit (drag a cut) · Slip (change the source under a clip) · Slide (move a clip, neighbours trim)</td></tr>
|
|
378
|
+
<tr><td><kbd>S</kbd></td><td>Split clip(s) at the playhead (selection, else targeted tracks)</td></tr>
|
|
379
|
+
<tr><td><kbd>[</kbd> / <kbd>]</kbd></td><td>Trim selected in / out to the playhead</td></tr>
|
|
380
|
+
<tr><td><kbd>Del</kbd></td><td>Delete selected clip(s), or clear the focused transition</td></tr>
|
|
381
|
+
<tr><td><kbd>⇧</kbd>+<kbd>Del</kbd></td><td>Ripple delete — remove the selection and close the gap on targeted tracks</td></tr>
|
|
382
|
+
<tr><td><kbd>G</kbd></td><td>Find the next shared gap (wraps; respects IN / OUT)</td></tr>
|
|
383
|
+
<tr><td><kbd>⇧</kbd>+<kbd>G</kbd></td><td>Close the gap at the playhead (targeted tracks)</td></tr>
|
|
384
|
+
<tr><td><kbd>Alt</kbd>+<kbd>T</kbd></td><td>Add a transition at the playhead (in / out by half)</td></tr>
|
|
385
|
+
<tr><td><kbd>⇧</kbd>+<kbd>E</kbd></td><td>Disable / enable selected clip(s) — hidden from preview and export</td></tr>
|
|
386
|
+
<tr><td><kbd>Ctrl/Cmd</kbd>+<kbd>L</kbd></td><td>Unlink / link video and its audio</td></tr>
|
|
387
|
+
<tr><td><kbd>Ctrl</kbd>+<kbd>Z</kbd> / <kbd>Ctrl</kbd>+<kbd>⇧</kbd>+<kbd>Z</kbd></td><td>Undo / redo (also <kbd>Ctrl</kbd>+<kbd>Y</kbd>)</td></tr>
|
|
388
|
+
</table>
|
|
389
|
+
</section>
|
|
390
|
+
<section class="keys-sec">
|
|
391
|
+
<h3>Selection</h3>
|
|
392
|
+
<table class="keys">
|
|
393
|
+
<tr><td>Drag empty area</td><td>Marquee-select clips</td></tr>
|
|
394
|
+
<tr><td><kbd>Ctrl</kbd>+click clip</td><td>Add to / remove from the selection</td></tr>
|
|
395
|
+
<tr><td><kbd>Ctrl</kbd>+<kbd>A</kbd> / <kbd>Esc</kbd></td><td>Select all / deselect</td></tr>
|
|
396
|
+
<tr><td>Right-click clip</td><td>Disable / lock / link or unlink / precompose</td></tr>
|
|
397
|
+
</table>
|
|
398
|
+
</section>
|
|
399
|
+
<section class="keys-sec">
|
|
400
|
+
<h3>IN / OUT and markers</h3>
|
|
401
|
+
<table class="keys">
|
|
402
|
+
<tr><td><kbd>I</kbd> / <kbd>O</kbd></td><td>Set Source In / Out (Source mode) or the timeline work area (Program; also bounds Export)</td></tr>
|
|
403
|
+
<tr><td><kbd>⇧</kbd>+<kbd>I</kbd> / <kbd>⇧</kbd>+<kbd>O</kbd></td><td>Clear Source or timeline IN / OUT</td></tr>
|
|
404
|
+
<tr><td><kbd>T</kbd></td><td>Split clips at the IN / OUT marks</td></tr>
|
|
405
|
+
<tr><td><kbd>⇧</kbd>+<kbd>T</kbd></td><td>Trim clips to IN / OUT (remove heads and tails)</td></tr>
|
|
406
|
+
<tr><td><kbd>;</kbd> / <kbd>'</kbd></td><td>Lift / Extract IN→OUT on targeted tracks (Extract closes the gap)</td></tr>
|
|
407
|
+
<tr><td><kbd>M</kbd></td><td>Add / remove a marker at the playhead</td></tr>
|
|
408
|
+
<tr><td><kbd>⇧</kbd>+<kbd>M</kbd> / <kbd>Alt</kbd>+<kbd>⇧</kbd>+<kbd>M</kbd></td><td>Go to the next / previous marker</td></tr>
|
|
409
|
+
<tr><td>Marker on ruler</td><td>Drag to move · click to jump · double-click or right-click to name / colour / delete · <b>Markers</b> lists them all</td></tr>
|
|
410
|
+
</table>
|
|
411
|
+
</section>
|
|
412
|
+
<section class="keys-sec">
|
|
413
|
+
<h3>Timeline view and tracks</h3>
|
|
414
|
+
<table class="keys">
|
|
415
|
+
<tr><td><kbd>+</kbd> / <kbd>-</kbd></td><td>Zoom the timeline</td></tr>
|
|
416
|
+
<tr><td><kbd>Ctrl</kbd>+wheel</td><td>Zoom at the cursor</td></tr>
|
|
417
|
+
<tr><td><kbd>Z</kbd></td><td>Zoom to the selected clip(s)</td></tr>
|
|
418
|
+
<tr><td><kbd>Alt</kbd>+<kbd>Z</kbd></td><td>Zoom to the IN–OUT work area</td></tr>
|
|
419
|
+
<tr><td><kbd>⇧</kbd>+<kbd>Z</kbd></td><td>Zoom to fit</td></tr>
|
|
420
|
+
<tr><td><kbd>N</kbd></td><td>Snapping on / off — <b>▾</b> picks targets (clip edges, playhead, markers, IN / OUT, keyframes, frame grid)</td></tr>
|
|
421
|
+
<tr><td>Click track name</td><td>Target / untarget the track — edits touch lit (targeted) tracks only</td></tr>
|
|
422
|
+
<tr><td>Track <b>S</b></td><td>Solo the track (mutes all others; click again to restore)</td></tr>
|
|
423
|
+
<tr><td>Track padlock</td><td>Lock the track — nothing on it can be edited or moved</td></tr>
|
|
424
|
+
<tr><td>Right-click track</td><td>Remove an empty track (keeps ≥1 video + ≥1 audio)</td></tr>
|
|
425
|
+
</table>
|
|
426
|
+
</section>
|
|
427
|
+
<section class="keys-sec">
|
|
428
|
+
<h3>Keyframes, presets and Inspector</h3>
|
|
429
|
+
<table class="keys">
|
|
430
|
+
<tr><td><kbd>Ctrl/Cmd</kbd>+<kbd>←</kbd> / <kbd>→</kbd></td><td>Go to the previous / next keyframe (the Inspector follows)</td></tr>
|
|
431
|
+
<tr><td><kbd>Ctrl/Cmd</kbd>+click inspector label or slider</td><td>Reset a property and clear all its keyframes</td></tr>
|
|
432
|
+
<tr><td><kbd>⇧</kbd>+click label</td><td>Reset the value at the playhead, or remove that keyframe</td></tr>
|
|
433
|
+
<tr><td>Motion → Presets</td><td>In · Out · At playhead · Loop menus key a ready-made animation onto the selected clips · <b>Save as preset</b> keeps this clip's keyframes for every project</td></tr>
|
|
434
|
+
</table>
|
|
435
|
+
</section>
|
|
436
|
+
<section class="keys-sec">
|
|
437
|
+
<h3>Audio</h3>
|
|
438
|
+
<table class="keys">
|
|
439
|
+
<tr><td>Volume line</td><td>Drag to change the level · <kbd>Ctrl/Cmd</kbd>+click adds a keyframe · <kbd>Alt</kbd>+click or double-click removes one · corner grips drag fades</td></tr>
|
|
440
|
+
<tr><td><kbd>⇧</kbd>+<kbd>D</kbd></td><td>Crossfade the audio cut next to the selected clip (or at the playhead)</td></tr>
|
|
441
|
+
</table>
|
|
442
|
+
</section>
|
|
443
|
+
<section class="keys-sec">
|
|
444
|
+
<h3>Bin, compositions and templates</h3>
|
|
445
|
+
<table class="keys">
|
|
446
|
+
<tr><td><kbd>Ctrl</kbd>+click bin</td><td>Import media files</td></tr>
|
|
447
|
+
<tr><td>Right-click <b>Project</b> tab</td><td>New folder · New composition</td></tr>
|
|
448
|
+
<tr><td>Comp clip / bin comp</td><td>Double-click to open it on the timeline · drag a bin comp onto the timeline to place it · the breadcrumb above the timeline steps back out</td></tr>
|
|
449
|
+
<tr><td>Right-click clips</td><td><b>Precompose</b> — move the selection into a new comp</td></tr>
|
|
450
|
+
<tr><td><kbd>Esc</kbd> inside a comp</td><td>Back out one level (once nothing is selected)</td></tr>
|
|
451
|
+
<tr><td><b>Templates</b> tab</td><td>Drag a lower third, logo animation or social layout onto the timeline (or click +) · fill in its fields in the Inspector's <b>Template</b> section · right-click a comp → <b>Save as template</b></td></tr>
|
|
452
|
+
</table>
|
|
453
|
+
</section>
|
|
454
|
+
<section class="keys-sec">
|
|
455
|
+
<h3>Color workspace</h3>
|
|
456
|
+
<table class="keys">
|
|
457
|
+
<tr><td>Colour wheel</td><td>Drag to tint (<kbd>⇧</kbd> = fine) · double-click resets the colour · double-click a label or slider name to reset it</td></tr>
|
|
458
|
+
<tr><td>WB pick / Pick</td><td>Click the monitor to balance, to mark a colour on the curves, or to select it in a layer's qualifier · <kbd>Esc</kbd> cancels</td></tr>
|
|
459
|
+
<tr><td>Curves</td><td>Click adds a point on the curve · drag moves it · double-click removes it</td></tr>
|
|
460
|
+
<tr><td>Layer mask on monitor</td><td>Drag inside to move · handles resize · the knob rotates (<kbd>⇧</kbd> snaps to 15°) · poly / bezier: <kbd>Ctrl/Cmd</kbd>+click adds a point, double-click removes one · <b>Draw</b>: drag a free-hand outline</td></tr>
|
|
461
|
+
</table>
|
|
462
|
+
</section>
|
|
463
|
+
<section class="keys-sec">
|
|
464
|
+
<h3>Masks <span>Inspector → Masks</span></h3>
|
|
465
|
+
<table class="keys">
|
|
466
|
+
<tr><td>Pen</td><td>Click to place points, drag while placing to pull curve handles · click the first point or <kbd>Enter</kbd> closes · <kbd>Ctrl</kbd>+<kbd>Z</kbd> / <kbd>Backspace</kbd> removes the last point, <kbd>Ctrl</kbd>+<kbd>⇧</kbd>+<kbd>Z</kbd> puts it back · <kbd>Esc</kbd> cancels</td></tr>
|
|
467
|
+
<tr><td>Draw</td><td>Drag a free-hand outline — it becomes an editable bezier</td></tr>
|
|
468
|
+
<tr><td>Mask on monitor</td><td>Drag inside to move · edge handles resize · the knob rotates (<kbd>⇧</kbd> snaps to 15°) · drag a point or its handles (<kbd>Alt</kbd> breaks the pair) · <kbd>Alt</kbd>+drag a point pulls new handles · <kbd>Ctrl/Cmd</kbd>+click the outline adds a point · double-click a point removes it · <kbd>Esc</kbd> deselects</td></tr>
|
|
469
|
+
</table>
|
|
470
|
+
</section>
|
|
471
|
+
<section class="keys-sec">
|
|
472
|
+
<h3>Shapes and transforms <span>bin → Shapes · Inspector</span></h3>
|
|
473
|
+
<table class="keys">
|
|
474
|
+
<tr><td>Shape item on monitor</td><td>Drag inside to move · corners resize (<kbd>⇧</kbd> keeps the proportions) · the knob rotates (<kbd>⇧</kbd> snaps to 15°) · line / path: drag a point or its handles (<kbd>Alt</kbd> breaks the pair), <kbd>Alt</kbd>+drag a point pulls new handles · path: <kbd>Ctrl/Cmd</kbd>+click the outline adds a point, double-click a point removes it · <kbd>Esc</kbd> deselects</td></tr>
|
|
475
|
+
<tr><td>Shape / text-path pen</td><td>Click to place points, drag while placing to pull curve handles · click the first point closes the path · <kbd>Enter</kbd> keeps it open · <kbd>Ctrl</kbd>+<kbd>Z</kbd> / <kbd>Backspace</kbd> removes the last point, <kbd>Ctrl</kbd>+<kbd>⇧</kbd>+<kbd>Z</kbd> puts it back · <kbd>Esc</kbd> cancels</td></tr>
|
|
476
|
+
<tr><td>Motion path</td><td>Drag a key square to move it · drag a handle to bend the path (<kbd>Alt</kbd> breaks the pair) · <kbd>Alt</kbd>+drag a key pulls new handles · double-click a key makes it a corner again</td></tr>
|
|
477
|
+
<tr><td>Anchor ✥ Move</td><td>Drag on the monitor to move the anchor point; the picture stays put (<kbd>⇧</kbd> snaps to its centre) · <kbd>Esc</kbd> turns it off</td></tr>
|
|
478
|
+
</table>
|
|
479
|
+
</section>
|
|
480
|
+
<section class="keys-sec">
|
|
481
|
+
<h3>Tracking <span>Inspector → Tracking · a mask’s Track buttons</span></h3>
|
|
482
|
+
<table class="keys">
|
|
483
|
+
<tr><td>Track point</td><td>Click the spot to follow on the monitor — it tracks from the playhead to the clip's end · <kbd>Esc</kbd> cancels the pick, or stops a running track (what was tracked so far is kept)</td></tr>
|
|
484
|
+
</table>
|
|
485
|
+
</section>
|
|
486
|
+
<p class="help-empty hidden" id="helpEmpty">No shortcut matches that.</p>
|
|
406
487
|
</div>
|
|
407
488
|
<div class="dialog-actions"><button class="btn primary" id="btnCloseHelp">Close</button></div>
|
|
408
489
|
</div>
|
|
@@ -413,8 +494,13 @@
|
|
|
413
494
|
<script src="loudness.js"></script>
|
|
414
495
|
<script src="ducking.js"></script>
|
|
415
496
|
<script src="audio-fx.js"></script>
|
|
497
|
+
<script src="mask.js"></script>
|
|
498
|
+
<script src="tracker.js"></script>
|
|
499
|
+
<script src="motion.js"></script>
|
|
416
500
|
<script src="color.js"></script>
|
|
417
501
|
<script src="edit-ops.js"></script>
|
|
502
|
+
<script src="comp.js"></script>
|
|
503
|
+
<script src="templates.js"></script>
|
|
418
504
|
<script src="app.js"></script>
|
|
419
505
|
</body>
|
|
420
506
|
</html>
|
package/library/README.md
CHANGED
|
@@ -10,6 +10,8 @@ place (`/library/...`), never copied into the project.
|
|
|
10
10
|
| `elements/` | Elements | overlay art: PNGs with alpha, light leaks, textures, short loops |
|
|
11
11
|
| `svg/` | SVG | vector animations authored by Claude (see CLAUDE.md conventions) |
|
|
12
12
|
| `fonts/` | (Font editor) | `.ttf .otf .woff .woff2` — auto-registered, family = file name |
|
|
13
|
+
| `presets/` | (Inspector → Motion) | saved animation presets, one `.json` each |
|
|
14
|
+
| `templates/`| Templates | saved templates, one `.json` each, after the built-in ones |
|
|
13
15
|
|
|
14
16
|
Drop free assets you find online into the matching folder — the open editor
|
|
15
17
|
refreshes the list automatically. Subfolders are allowed and listed too.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" width="400" height="400">
|
|
2
|
+
<!-- A stand-in logo for the logo templates: pick your own in the template's Logo field. -->
|
|
3
|
+
<defs>
|
|
4
|
+
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
|
|
5
|
+
<stop offset="0" stop-color="#7b6cff"/>
|
|
6
|
+
<stop offset="1" stop-color="#ff7ac8"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
</defs>
|
|
9
|
+
<rect x="40" y="40" width="320" height="320" rx="84" fill="url(#g)"/>
|
|
10
|
+
<path d="M138 118 L138 282 L262 282" fill="none" stroke="#ffffff" stroke-width="34" stroke-linecap="round" stroke-linejoin="round"/>
|
|
11
|
+
<circle cx="258" cy="142" r="26" fill="#ffffff"/>
|
|
12
|
+
</svg>
|