| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | feat: pan & zoom motion presets | cashmere | 2026-08-08 | 1 | -3/+13 |
| | | | | | | | | | | | | | | Ken Burns-style motion effects (zoom in/out, pan left/right/up/down) that drag onto clips like regular effects. Instead of shader passes they evaluate a per-frame transform offset in resolveVisualState, so they stack with keyframed transforms and work in preview and export. - intensity param (0-100%, keyframable) scales the whole effect - easing select maps progress through the graph editor's bezier presets - supportsStandalone: false hides them from effect-track creation - empty shader pass groups are filtered out so pass-less effects and zero-intensity blur no longer crash the compositor | ||||
| * | feat: Electron desktop app, native ffmpeg export, fully static web | cashmere | 2026-07-30 | 1 | -0/+159 |
| | | | | | | | | | | | | | | | | | - apps/desktop: Electron shell serving the static web build over a privileged opencut:// protocol; exports stream frames over IPC to a bundled ffmpeg (libx264/libvpx-vp9, BT.709 tagged) with backpressure. electron-builder packaging: AppImage, deb, rpm. - apps/web: dead backend deleted (better-auth, drizzle/pg, upstash, botid, freesound proxy, blog, rss, env validation); next build emits a zero-env static export; /editor/[project_id] -> /editor?project=. - Native exporter mirrors SceneExporter; activates when the preload bridge is present; web keeps the mediabunny path. - Docker self-hosting now builds and serves the static export via nginx. - Release workflow: v* tags publish static web tarball + Linux packages. - Changelog 0.4.0; README/AGENTS/CONTRIBUTING/roadmap updated. - GPUI/Rust rewrite parked on branch rust-rewrite. | ||||
| * | feat: ripple-extend resize, timeline filmstrip, export hardening | cashmere | 2026-07-28 | 6 | -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) | cashmere | 2026-07-27 | 5 | -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 sites | cashmere | 2026-07-27 | 2 | -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 substrate | Maze Winther | 2026-05-02 | 3 | -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 masks | Maze Winther | 2026-05-02 | 6 | -9/+181 |
| | | | | | Made-with: Cursor | ||||
| * | refactor: make mask renderer dispatch explicit | Maze Winther | 2026-05-02 | 1 | -57/+63 |
| | | | | | Made-with: Cursor | ||||
| * | refactor: animate params over time | Maze Winther | 2026-05-02 | 5 | -1/+304 |
| | | |||||
| * | chore: cleanup | Maze Winther | 2026-05-02 | 2 | -24/+17 |
| | | |||||
| * | refactor: unify element params | Maze Winther | 2026-05-02 | 8 | -16/+417 |
| | | |||||
| * | chore: switch from biome to eslint + prettier; fix ton of lint issues | Maze Winther | 2026-05-02 | 34 | -419/+363 |
| | | |||||
| * | refactor: split animation helpers by domain | Maze Winther | 2026-04-26 | 5 | -269/+412 |
| |\ | |||||
| | * | refactor: split animation helpers by domain | Maze Winther | 2026-04-26 | 1 | -10/+10 |
| | | | |||||
| | * | refactor: centralize editor interaction state | Maze Winther | 2026-04-25 | 1 | -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 leaks | Maze Winther | 2026-04-25 | 1 | -5/+9 |
| | | | |||||
| | * | perf: improve rendering performance by ~20x | Maze Winther | 2026-04-22 | 4 | -259/+402 |
| | | | |||||
| * | | refactor: thinner hooks | Maze Winther | 2026-04-26 | 1 | -20/+25 |
| | | | |||||
| * | | fix: model editor time as wasm MediaTime ticks end-to-end | Maze Winther | 2026-04-26 | 6 | -15/+525 |
| |/ | |||||
| * | refactor: migration run() and pure v1-to-v2 transform | Maze Winther | 2026-04-22 | 36 | -828/+990 |
| | | |||||
| * | chore: formatting | Maze Winther | 2026-04-22 | 7 | -37/+54 |
| | | |||||
| * | fix: project loading thing | Maze Winther | 2026-04-21 | 2 | -17/+43 |
| | | |||||
| * | refactor: restructure files to their domains, new preview overlay system, ↵ | Maze Winther | 2026-04-20 | 28 | -66/+210 |
| | | | | | and dep graph | ||||
| * | fix: WebGL frame rendering and opencut-wasm 0.2.8 | Maze Winther | 2026-04-19 | 1 | -29/+37 |
| | | |||||
| * | feat: clip volume line and timeline waveform improvements | Maze Winther | 2026-04-18 | 1 | -0/+87 |
| | | |||||
| * | feat: text / custom masks, fix preview pan, refactor selection | Maze Winther | 2026-04-15 | 6 | -86/+256 |
| | | |||||
| * | chore: formatting | Maze Winther | 2026-04-15 | 2 | -9/+3 |
| | | |||||
| * | fix: repair scene tracks broken by v23-to-v24 migration | Maze Winther | 2026-04-15 | 4 | -5/+161 |
| | | |||||
| * | chore: remove debugging throughout codebase | Maze Winther | 2026-04-15 | 2 | -23/+1 |
| | | |||||
| * | refactor: move constants to domain modules | Maze Winther | 2026-04-14 | 9 | -15/+19 |
| | | |||||
| * | fix: text measurement, rotation handle, video cache races, playback sync | Maze Winther | 2026-04-13 | 1 | -0/+16 |
| | | | | | Made-with: Cursor | ||||
| * | refactor: rendering pipeline | Maze Winther | 2026-04-13 | 18 | -1237/+1766 |
| | | | | | Made-with: Cursor | ||||
| * | feat: position animated independently per axis | Maze Winther | 2026-04-13 | 3 | -56/+214 |
| | | | | | Made-with: Cursor | ||||
| * | refactor: structured track layout per scene | Maze Winther | 2026-04-07 | 5 | -29/+148 |
| | | |||||
| * | refactor: split effects and masks into dedicated rust crates, introduce ↵ | Maze Winther | 2026-04-07 | 11 | -212/+766 |
| | | | | | MediaTime and FrameRate | ||||
| * | fix: clean up | Maze Winther | 2026-04-06 | 1 | -1/+35 |
| | | |||||
| * | refactor: rewrite animation system to use bindings and scalar channels | Maze | 2026-04-05 | 5 | -93/+865 |
| | | |||||
| * | refactor: split constants by domain and isolate timeline panel from core | Maze Winther | 2026-04-01 | 3 | -18/+27 |
| | | |||||
| * | fix: don't crash when GPU isn't available | Maze Winther | 2026-04-01 | 1 | -9/+23 |
| | | |||||
| * | fix: align background blur with effect blur intensity scale | Maze Winther | 2026-04-01 | 5 | -4/+180 |
| | | |||||
| * | feat: migrate GPU renderer from WebGL to wgpu/WASM | Maze Winther | 2026-04-01 | 11 | -764/+231 |
| | | |||||
| * | feat: separate audio from elements | Maze Winther | 2026-03-31 | 4 | -1/+247 |
| | | |||||
| * | Merge branch 'feature/track-placement' | Maze Winther | 2026-03-31 | 1 | -1/+1 |
| |\ | |||||
| | * | refactor: centralize track placement into its own module | Maze Winther | 2026-03-31 | 1 | -1/+1 |
| |/ | |||||
| * | refactor: clean up number formatting and step handling in property tabs | Maze Winther | 2026-03-29 | 1 | -1/+3 |
| | | |||||
| * | chore: normalize line endings | Maze Winther | 2026-03-29 | 58 | -4838/+4838 |
| | | |||||
| * | feat: masks, properties refactor, shaders, storage migrations, and more | Maze Winther | 2026-03-29 | 51 | -564/+2874 |
| | | |||||
| * | fix: fallback to opus codec | Maze Winther | 2026-03-09 | 1 | -1/+14 |
| | | |||||
| * | feat: wire ui to have keyframes for: opacity, text color, and all background ↵ | Maze Winther | 2026-03-02 | 1 | -10/+45 |
| | | | | | properties | ||||
| * | feat: implement keyframe support for more properties at the core (no ui yet) | Maze Winther | 2026-03-02 | 1 | -7/+21 |
| | | |||||
