| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
|
| |
Yesterday's verified web session (gates green: 316 tests, tsc, build):
- ripple-extend pushes right-hand chain on static-element resize
- per-position video filmstrip thumbnails with zoom-adaptive density
- fps-aware export bitrate, 2s keyframes, even-dim export canvas
- freeze frame uses fixed 3s duration, prompt removed
|
| |
|
|
|
|
|
|
|
| |
Shared wiring for the six roadmap slices in one commit: action ids and
handlers for create-checkpoint, toggle-versions-panel,
export-project-archive, and voice-over; the freeze-frame handler awaits
the duration prompt before capture; editor header gains the versions
popover and export menu item (and loses the feedback popover and
Discord item, part of the branding strip).
|
| |
|
|
|
|
|
|
|
| |
The handler fired four separate commands (asset add, split, move, insert),
producing four undo steps. It now builds one BatchCommand and executes it
once. The new ShiftSplitRemainderCommand resolves the split's right-side
elements lazily at execute() so it can be composed after the split in the
batch, and rebuilds the inner move on redo since a re-executed split
generates fresh element ids.
|
| |
|
|
|
|
|
|
|
|
|
| |
Enable the timeline toolbar freeze-frame button: capture the composited
canvas as PNG, add it as an image media asset, split the video element
at the playhead, shift the right part by the freeze duration, and insert
a 3-second image element in the gap. Adds RendererManager.captureFrame(),
reused by createSnapshot().
Also adds the Nix devshell (flake.nix/flake.lock: bun + nodejs) and
AGENTS.md repository guidelines.
|
| |
|
|
| |
Made-with: Cursor
|
| | |
|
| | |
|
|
|
and dep graph
|