feat: add multi-track timeline foundation#1207
Conversation
|
@YLaxmikanth is attempting to deploy a commit to the magic-peach1's projects Team on Vercel. A member of the Team first needs to authorize it. |
✅ PR Format Check Passed — @YLaxmikanthBasic format checks passed. A maintainer will review your code changes. This does not mean the PR is approved — it just means the format is correct. |
👋 Thanks for your PR, @YLaxmikanth!Welcome to Reframe — a browser-based video editor built for everyone 🎬
What happens next
Quick checklist
Useful links
Happy coding! 🎉 |
|
Implemented the requested Phase 1 multi-track timeline foundation architecture for #1204. Included
Validation
Also cleaned up:
The implementation intentionally limits Phase 1 to lightweight foundational primitives and avoids a risky full-editor rewrite in a single PR. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@YLaxmikanth please add a screen recording so that i can approve the changes |
Description
This PR introduces a Phase 1 MVP implementation of Reframe’s multi-track non-linear timeline architecture.
The objective of this phase is to establish a scalable and extensible foundation for layered video editing workflows while preserving compatibility with the existing single-track editor pipeline.
This implementation focuses on:
The scope intentionally avoids a risky full-editor rewrite in a single PR and instead introduces a clean incremental foundation.
Related Issue
Closes #1204
Type of Contribution
Participant Info
Checklist
bun run lintpasses (no ESLint errors)bunx tsc --noEmitpasses (no TypeScript errors)aria-label/ accessible namesconsole.logstatements left inArchitecture Summary
Background
The previous editing workflow was primarily built around a single-video editing model:
While suitable for simple trimming/cropping workflows, this structure limited support for:
Phase 1 MVP Goals
This PR establishes the core primitives required for future non-linear editing support while keeping the implementation:
This phase intentionally excludes:
Core Features
Multi-Track Timeline Data Model
Introduced reusable timeline primitives in:
src/lib/types.tsNew structures include:
TimelineTrackTimelineTrackTypeTrackTransformTrackPositionTracks now support:
Timeline Utility Layer
Added:
src/lib/timeline.tsImplements:
This creates a stable foundation for future timeline editing workflows.
Dynamic FFmpeg Overlay Graph Generation
Added:
src/lib/overlayGraph.tsIntroduced:
buildOverlayFilterGraph()The system dynamically generates FFmpeg
filter_complexoverlay graphs for:Example generated graph:
This architecture establishes the foundation for future:
Layered Preview Rendering
Updated:
src/components/VideoPreview.tsxThe preview renderer now supports:
while preserving:
Extended Editor State Management
Updated:
src/hooks/useVideoEditor.tsAdded:
Existing workflows remain functional without regressions.
Test Coverage
Added:
src/lib/tests/timeline.test.tssrc/lib/tests/overlayGraph.test.tsCoverage includes:
Validation
Build
npm run build✅Lint
npm run lint✅Tests
npm run test✅TypeScript
bunx tsc --noEmit✅Files Added
New Files
src/lib/timeline.tssrc/lib/overlayGraph.tssrc/lib/tests/timeline.test.tssrc/lib/tests/overlayGraph.test.tsPHASE_1_MVP.mdUpdated Files
src/lib/types.tssrc/hooks/useVideoEditor.tssrc/components/VideoPreview.tsxvitest.config.tsPerformance Considerations
FFmpeg.wasm operates entirely inside the browser and is constrained by available memory and CPU resources.
To ensure Phase 1 remains stable:
This keeps the implementation practical for browser-based processing.
Future Roadmap
This architecture now enables future incremental work for:
without requiring another foundational rewrite.
Expected Outcome
Reframe now has a scalable foundational architecture for:
while remaining: