Phase 1 (single-element copy/paste) landed in #54 / adf1d710. The original request (#29, upstream #488) also asked for selecting and copying multiple elements at once — descoped in phase 1, same scoping the upstream review settled on for openscreen PR #489.
Scope
- Multi-select UX on the timeline (click+modifier and/or marquee selection across rows).
- Array-based clipboard:
TimelineClipboardItem[] preserving relative time offsets between items.
- Paste at playhead: keep relative offsets anchored to the earliest item; per-kind rules still apply (zoom/trim/speed reject individually on overlap — decide whether a partial paste or all-or-nothing is better UX; annotations/blurs always paste).
- Selection model today is single-select per kind (five
selected*Id states in VideoEditor) — this needs a real multi-selection representation first; that's the bulk of the work.
Building blocks already in place (from #54)
src/components/video-editor/timelineClipboardUtils.ts — clone/span/position helpers + buildPasted* semantics (source:"manual", auto-caption stripping, Auto-Focus All, clamping) are paste-count-agnostic and reusable as-is.
- Ctrl+C/V reserved in
FIXED_SHORTCUTS with load-time sanitization.
- e2e harness pattern:
tests/e2e/timeline-copy-paste.spec.ts.
Phase 1 (single-element copy/paste) landed in #54 /
adf1d710. The original request (#29, upstream #488) also asked for selecting and copying multiple elements at once — descoped in phase 1, same scoping the upstream review settled on for openscreen PR #489.Scope
TimelineClipboardItem[]preserving relative time offsets between items.selected*Idstates in VideoEditor) — this needs a real multi-selection representation first; that's the bulk of the work.Building blocks already in place (from #54)
src/components/video-editor/timelineClipboardUtils.ts— clone/span/position helpers +buildPasted*semantics (source:"manual", auto-caption stripping, Auto-Focus All, clamping) are paste-count-agnostic and reusable as-is.FIXED_SHORTCUTSwith load-time sanitization.tests/e2e/timeline-copy-paste.spec.ts.