summaryrefslogtreecommitdiff
path: root/apps/web/src/services
Commit message (Collapse)AuthorAgeFilesLines
* feat: ripple-extend resize, timeline filmstrip, export hardeningcashmere2026-07-286-3/+747
| | | | | | | | 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
* feat: git-like project versioning (v1)cashmere2026-07-275-72/+200
| | | | | | | | | | | Linear per-project history per notes/project-versioning.md: named checkpoints (thumbnail via renderer.captureFrame) plus auto-checkpoints on save (60s throttle, ring of 20, named never rotate). Restore writes a safety checkpoint first, then swaps the document outside undo/redo. Media assets referenced by any version are pinned against deletion. Migration v31-v32 stamps the schema; the version store lives in its own IDB database with an in-memory fallback for tests. Versions popover in the editor header for jump/rename/delete. 12 new tests.
* fix: update stale adapter and registry call sitescashmere2026-07-272-21/+21
| | | | | | IndexedDBAdapter and DefinitionRegistry.register switched to object params; these call sites still used positional args and were silent no-ops at runtime (sticker providers never actually registered).
* fix: address review findings in masks substrateMaze Winther2026-05-023-2/+79
| | | | | | | | | | | | | | | - Remove dead ternary in getPreferredEdges (always returned undefined; the all-false object was never reached by Object.values().some(Boolean)) - Document why drawWithFeather descriptors zero the feather field in the compositor (analytical renderer handles softness itself; zeroing prevents a second JFA feather pass) - Remove legacyType from V30→V31 migration (not consumed anywhere; a down-migration can map type:"freeform" back to "custom" directly) - Add V30→V31 test coverage: skip-guard branches, freeform passthrough, elements without a masks array - Add snap tests for vertical-edge (bottom) and uniform-scale handle paths Co-authored-by: Cursor <cursoragent@cursor.com>
* refactor: split builtin and freeform masksMaze Winther2026-05-026-9/+181
| | | | Made-with: Cursor
* refactor: make mask renderer dispatch explicitMaze Winther2026-05-021-57/+63
| | | | Made-with: Cursor
* refactor: animate params over timeMaze Winther2026-05-025-1/+304
|
* chore: cleanupMaze Winther2026-05-022-24/+17
|
* refactor: unify element paramsMaze Winther2026-05-028-16/+417
|
* chore: switch from biome to eslint + prettier; fix ton of lint issuesMaze Winther2026-05-0234-419/+363
|
* refactor: split animation helpers by domainMaze Winther2026-04-265-269/+412
|\
| * refactor: split animation helpers by domainMaze Winther2026-04-261-10/+10
| |
| * refactor: centralize editor interaction stateMaze Winther2026-04-251-15/+16
| | | | | | | | | | | | | | | | Move timeline and preview gestures into dedicated controllers so hooks stay thin around editor state and DOM events. This also routes drag and playback synchronization through manager APIs and reuses persistent wasm surfaces so scrubbing, seeking, and preview rendering stay in sync. Made-with: Cursor
| * fix: surface unsupported video codec on import, fix Input leaksMaze Winther2026-04-251-5/+9
| |
| * perf: improve rendering performance by ~20xMaze Winther2026-04-224-259/+402
| |
* | refactor: thinner hooksMaze Winther2026-04-261-20/+25
| |
* | fix: model editor time as wasm MediaTime ticks end-to-endMaze Winther2026-04-266-15/+525
|/
* refactor: migration run() and pure v1-to-v2 transformMaze Winther2026-04-2236-828/+990
|
* chore: formattingMaze Winther2026-04-227-37/+54
|
* fix: project loading thingMaze Winther2026-04-212-17/+43
|
* refactor: restructure files to their domains, new preview overlay system, ↵Maze Winther2026-04-2028-66/+210
| | | | and dep graph
* fix: WebGL frame rendering and opencut-wasm 0.2.8Maze Winther2026-04-191-29/+37
|
* feat: clip volume line and timeline waveform improvementsMaze Winther2026-04-181-0/+87
|
* feat: text / custom masks, fix preview pan, refactor selectionMaze Winther2026-04-156-86/+256
|
* chore: formattingMaze Winther2026-04-152-9/+3
|
* fix: repair scene tracks broken by v23-to-v24 migrationMaze Winther2026-04-154-5/+161
|
* chore: remove debugging throughout codebaseMaze Winther2026-04-152-23/+1
|
* refactor: move constants to domain modulesMaze Winther2026-04-149-15/+19
|
* fix: text measurement, rotation handle, video cache races, playback syncMaze Winther2026-04-131-0/+16
| | | | Made-with: Cursor
* refactor: rendering pipelineMaze Winther2026-04-1318-1237/+1766
| | | | Made-with: Cursor
* feat: position animated independently per axisMaze Winther2026-04-133-56/+214
| | | | Made-with: Cursor
* refactor: structured track layout per sceneMaze Winther2026-04-075-29/+148
|
* refactor: split effects and masks into dedicated rust crates, introduce ↵Maze Winther2026-04-0711-212/+766
| | | | MediaTime and FrameRate
* fix: clean upMaze Winther2026-04-061-1/+35
|
* refactor: rewrite animation system to use bindings and scalar channelsMaze2026-04-055-93/+865
|
* refactor: split constants by domain and isolate timeline panel from coreMaze Winther2026-04-013-18/+27
|
* fix: don't crash when GPU isn't availableMaze Winther2026-04-011-9/+23
|
* fix: align background blur with effect blur intensity scaleMaze Winther2026-04-015-4/+180
|
* feat: migrate GPU renderer from WebGL to wgpu/WASMMaze Winther2026-04-0111-764/+231
|
* feat: separate audio from elementsMaze Winther2026-03-314-1/+247
|
* Merge branch 'feature/track-placement'Maze Winther2026-03-311-1/+1
|\
| * refactor: centralize track placement into its own moduleMaze Winther2026-03-311-1/+1
|/
* refactor: clean up number formatting and step handling in property tabsMaze Winther2026-03-291-1/+3
|
* chore: normalize line endingsMaze Winther2026-03-2958-4838/+4838
|
* feat: masks, properties refactor, shaders, storage migrations, and moreMaze Winther2026-03-2951-564/+2874
|
* fix: fallback to opus codecMaze Winther2026-03-091-1/+14
|
* feat: wire ui to have keyframes for: opacity, text color, and all background ↵Maze Winther2026-03-021-10/+45
| | | | properties
* feat: implement keyframe support for more properties at the core (no ui yet)Maze Winther2026-03-021-7/+21
|
* feat: Clip effects, asset sorting, and timeline improvementsMaze Winther2026-03-027-84/+450
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Major features and improvements: * **Clip Effects**: * Added UI in Properties Panel to manage effects on video/image clips (add, remove, toggle, reorder). * Implemented dynamic parameter fields for effects. * Added support for keyframing effect parameters. * **Assets Panel**: * Added sorting options: Name, Type, Duration, and File Size. * Persisted view preferences (grid/list mode, sort order) to local storage. * Refactored media item rendering and drag interactions. * **Timeline & Interaction**: * **Keyframe Dragging**: Added ability to drag keyframes directly on the timeline element. * **Resizing**: Improved resize logic to respect neighboring clips (prevents overlaps). * **Visuals**: Implemented tiled background rendering for video/image clips on the timeline. * **Shortcuts**: Added "Deselect All" action bound to the `Escape` key. * **Fixes**: Corrected drag-and-drop coordinate calculations when the timeline track area is scrolled. * **Text Elements**: * Refactored text background storage to use an explicit `enabled` flag. * Added `V8toV9` storage migration to update existing projects. * **Architecture**: * Moved export state management to `ProjectManager` for better lifecycle handling. * Refactored `PropertiesPanel` sections to be more composable (custom headers, borders).
* feat: introduce WebGL effects system and Blur effectMaze Winther2026-02-2815-138/+1029
| | | | | | | | | | | | This implements the foundational architecture for video effects, starting with a multi-pass WebGL rendering pipeline and a customizable Gaussian Blur effect. Key changes: - WebGL Engine: Added `raw-loader` for `.glsl` shaders, multi-pass framebuffer rendering, and live offscreen canvas previews. - Node Architecture: Replaced hardcoded background blur with `CompositeEffectNode` and added `EffectLayerNode` to apply effects to specific visual elements. - Timeline & DND: Added a new `effect` track type. Upgraded drag-and-drop to support dropping effects directly onto the timeline. Consolidated track constants into a cleaner `TRACK_CONFIG`. - UI/UX: Added an Effects tab in the assets panel with live previews. Added an Effect Properties panel with sliders and inputs for fine-tuning parameters. - Data Model: Added `sourceDuration` to video and audio elements, and wrote a v8 storage migration to update existing projects to the new schema. - Docs: Added `CHANGELOG.md` tracking v0.1.0 and v0.2.0, plus `docs/effects-renderer.md` to document the new WebGL pipeline.