Commit Graph

1058 Commits

Author SHA1 Message Date
Maze Winther a526066b61 feat: wire ui to have keyframes for: opacity, text color, and all background properties 2026-03-02 16:36:10 +01:00
Maze Winther b0165da764 fix: selecting multiple effects didn't work 2026-03-02 16:30:50 +01:00
Maze Winther 81e7a7fb32 feat: implement keyframe support for more properties at the core (no ui yet) 2026-03-02 15:08:21 +01:00
Maze Winther 887d1795dd fix: keyframe drag bug 2026-03-02 15:06:31 +01:00
Maze Winther 9261589ff3 fix: keyframe placement 2026-03-02 15:06:01 +01:00
Maze Winther db50b5214d feat: ripple support for element resize 2026-03-02 13:26:40 +01:00
Maze Winther e7dcb586c0 feat: Clip effects, asset sorting, and timeline improvements
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).
2026-03-02 13:13:07 +01:00
Maze Winther a2727f2ae5 fix button color 2026-03-02 10:36:37 +01:00
Maze Winther 82f8f76a84 feat: mobile gate 2026-03-02 10:36:19 +01:00
Maze Winther 2074dde3e3 feat: add roadmap link to header 2026-03-02 10:34:54 +01:00
Maze Winther feaeec8dbe feat: add react-scan 2026-03-02 10:34:23 +01:00
Maze Winther 3b74cddbfb fix: global.css 2026-03-02 10:34:05 +01:00
Maze Winther a0695dadaa fix: make roadmap page responsive 2026-03-02 10:33:52 +01:00
Maze Winther 77a3708213 web: refactor changelog to support a dedicated page for each version + links for each release 2026-03-02 00:55:08 +01:00
Maze Winther 51234e673b changelog: correct release date for version 0.2.0 2026-03-01 17:56:13 +01:00
Maze Winther 13237a04fd changelog: update ripple editing description for clarity in 0.2.0 2026-03-01 01:52:01 +01:00
Maze Winther 35dd209b4e docs: add ripple editing to 0.2.0 changelog 2026-03-01 01:44:38 +01:00
Maze Winther 5e7c27f542 Merge branch 'dev' into ripple-editing 2026-03-01 01:32:09 +01:00
Maze Winther 354f4dec67 changelog: update titles for no title case 2026-03-01 01:12:57 +01:00
Maze Winther c6bffaa243 fix(audio): stabilize playback startup when timeline selection is heavy 2026-03-01 01:10:56 +01:00
Maze Winther 85f41756d1 feat: changelog page 2026-02-28 23:58:54 +01:00
Maze Winther 216e3e0c39 feat: introduce WebGL effects system and Blur effect
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.
2026-02-28 18:41:22 +01:00
Malthe Hartmann a352eb1aab
feat(projects): add right-click context menu to project cards (#711)
* feat(projects): add right-click context menu to project cards

- Add context menu with Rename, Duplicate, Info, Delete actions
- Works in both grid and list view
- Uses existing Radix UI ContextMenu components
- Mirrors actions from the existing ProjectMenu dropdown

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(projects): lift dialog state out of ProjectMenu and context menu

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Maze Winther <mazewinther@gmail.com>
2026-02-28 14:12:31 +01:00
Maze Winther 6226ceb052 fix coderabbit issues 2026-02-27 20:34:33 +01:00
Maze Winther cb8f003478 another type error 2026-02-27 18:23:13 +01:00
Maze Winther 956f3d201b fix type error 2026-02-27 18:15:36 +01:00
Maze Winther 49426f19cd feat: implement keyframe animation system
Add keyframe support for transform, opacity, and volume properties.
Includes animation engine (interpolation, mutations, resolvers), timeline
markers with selection/snapping, properties panel toggles, keyframe-aware
renderer, and full undo/redo command support.

Also refactor element command constructors to object params, extract
timeline pixel math to pixel-utils.ts, and update cursor rules.
2026-02-27 16:33:57 +01:00
Maze Winther 9b94f89def roadmao 2026-02-25 04:51:50 +01:00
Maze Winther 07c2289168 feat: add properties for video/image/sticker elements 2026-02-25 04:22:00 +01:00
Maze Winther 987153266e refactor: move transform type to more relevant file 2026-02-25 04:14:21 +01:00
Dipanshu Rawat 6da55c7aee
chore: improve accessibility and security (#707)
- Update roadmap description date from July 14, 2025 to February 2026
- Improve landing page hero image alt text for better a11y
- Add noreferrer to external links for security best practice
2026-02-25 03:27:27 +01:00
Maze Winther f75b5d3fd2 fix a ton of issues + improvement 2026-02-25 01:37:56 +01:00
Maze Winther 4d77e3f2bb refactor: snapping system 2026-02-23 10:55:35 +01:00
Maze Winther ab64c48c92 feat: make playhead snap to elements 2026-02-23 10:55:06 +01:00
Maze Winther d352e58570 fix preview snapping threshold 2026-02-23 10:15:51 +01:00
Maze Winther baa5f33407 fix preview perf issues 2026-02-23 10:03:15 +01:00
Maze Winther dbfecbba59 docker + update readme 2026-02-23 09:38:38 +01:00
Maze Winther 86a3592c88 refactor: make export audio consistent to preview
fixes audio export issue with .mkv files
2026-02-23 09:28:54 +01:00
Maze Winther 744419469d feat: basic ripple editing 2026-02-23 07:09:26 +01:00
Maze Winther 1762dc077d persist snapping + ripple 2026-02-23 06:56:05 +01:00
Maze Winther 5616d4e9f3 feat: save frame as image 2026-02-23 06:44:27 +01:00
Maze Winther 71970d5f5f fix: audio from video files not being exported 2026-02-23 06:20:11 +01:00
Maze 93d1e3383c
feat: major editor overhaul (assets, properties, timeline, fonts) (#709)
* feat: major editor overhaul (assets, properties, timeline, fonts)

Refactor editor core systems to standardize UI architecture and improve performance.

Assets & Properties:
- Replace monolithic property items with composable `Section` architecture.
- Add specialized sections for Transform, Blending, and Text.
- Implement `NumberField` with scrubbing and math evaluation.
- Add new ColorPicker with EyeDropper and multiple format support.
- Standardize asset panels using new `PanelView` layout.

Fonts & Stickers:
- Implement custom font atlas/sprite system for high-performance previews.
- Add virtualized FontPicker with search and favorites.
- Refactor stickers to use a provider-based architecture (icons, emoji, flags, shapes).
- Standardize sticker IDs to `provider:value` format.

Timeline & Interaction:
- Convert bookmarks to rich objects with notes, colors, and duration.
- Refactor drag-and-drop to use Command pattern (enabling proper undo/redo).
- Add Shift modifier to disable snapping during moves/resizes.
- Add new overlays for layout guides and text editing.

Renderer:
- Add support for multi-line text, custom line-height, and letter-spacing.
- Implement global composite operation (blend modes).
- Update sticker node to resolve dynamic provider IDs.

Infrastructure:
- Add storage migrations (v3->v6) for text weights, sticker IDs, and bookmarks.
- Update global styles and core UI components (Button, Input, Popover).

* add ts-nocheck directive to settings-legacy.tsx to suppress TypeScript errors

* fix: correct global composite operation assignment in TextNode to ensure proper blend mode handling

* deleted shadcn components with errors

* formatting

* fix linter issues

* migrate from next middleware to proxy

* add missing component back

* add breadcrumb back

* chore: add @radix-ui/react-primitive deps

* chore: more deps

* chore: add missing env vars to bun-ci

* next env
2026-02-23 03:24:02 +01:00
Maze Winther fca99d6126 refactor 2026-02-10 16:28:21 +01:00
Maze Winther 33a8705f0d fix selection not getting cleared after element deletion 2026-02-09 16:38:17 +01:00
Maze Winther fe10cee3eb fix: correct default text capitalization in text constants 2026-02-09 00:34:45 +01:00
Maze Winther 1d05f5ac56 fix linter 2026-02-08 22:23:12 +01:00
Maze Winther 395e415cc4 formatting 2026-02-08 22:22:23 +01:00
Maze Winther e50a817b97 add transform + few fixes
feat: transform
feat: batch command
fix: slider undo
fix: timeline zoom perf
refactor: make updateElement support multiple
2026-02-08 22:21:17 +01:00
Maze Winther 681f006b35 fix: fps not being displayed in some cases 2026-02-08 21:49:32 +01:00
Maze Winther 0282ef2223 scale timeline ruler labels to hours 2026-02-08 18:32:08 +01:00
Maze Winther dc0b57cd6a refactor: replace text-specific update command with generic 2026-02-08 18:01:45 +01:00
Maze Winther a218a52d2d persist sotring (projects) 2026-02-08 17:45:39 +01:00
Maze Winther 1c2cf80188 change default sorting from createdAt to updatedAt in projects store 2026-02-08 17:44:43 +01:00
Maze Winther cdd29eb1dc fix: resize-none 2026-02-08 17:06:16 +01:00
Maze Winther 34cfeacdbb fix: stop audio on timeline scrub 2026-02-08 17:02:49 +01:00
Maze Winther 6d55a34586 refactor: move isScrubbing state to playback manager 2026-02-08 17:01:46 +01:00
Maze Winther c6666fd385 feat: update text properties to use dynamic font size limits and scaling 2026-02-08 16:50:31 +01:00
Maze Winther 9b5fd6eb07 feat: ensure elements on main track starts at 0 2026-02-08 01:51:25 +01:00
Maze Winther 00cf7f6ab7 add todo 2026-02-08 01:23:13 +01:00
Maze Winther a82817a703 fix landing image 2026-02-08 01:17:29 +01:00
Maze Winther 39b6ea5613 type error 2026-02-07 23:57:19 +01:00
Maze Winther ae45ef8154 blog ui fixes 2026-02-07 23:14:31 +01:00
Maze Winther 49c4fcb229 refactor: remove AuthorList component 2026-02-07 22:37:19 +01:00
Maze Winther 464a6e83b9 fix rendering issue from v1 to current 2026-02-05 14:44:31 +01:00
Maze Winther d0b4b1a5fc fix migration dialog 2026-02-05 14:28:16 +01:00
Maze Winther 2257ca2e6f make storage versioning per-project + few other refactors 2026-02-05 12:53:56 +01:00
Maze Winther 490fc170c0 checkbox 2026-02-03 21:10:08 +01:00
Maze Winther feb8a07c16 remove comment 2026-02-03 14:00:43 +01:00
Maze Winther 7366cb27e9 fix v1 to v2 migration 2026-02-03 14:00:04 +01:00
Maze Winther 34daad9df7 comments 2026-02-03 08:48:32 +01:00
Maze Winther 9bc35363b9 remove hover state from export button 2026-02-03 08:33:42 +01:00
Maze Winther e84c0cfda6 comments + codebase index 2026-02-02 23:17:30 +01:00
Maze Winther ad794fa43b Merge branch 'timeline-zoom' 2026-02-02 19:46:51 +01:00
Maze Winther 9ca32e5e39 fix: click empty on track to move playhead 2026-02-02 19:44:27 +01:00
Maze Winther 5120e2efa6 feat: timeline zoom anchoring 2026-02-02 19:42:35 +01:00
Maze Winther 1aec9c5cf5 fix comment 2026-02-02 19:15:25 +01:00
Maze Winther e88a059222 increase zoom of buttons + refactor 2026-02-02 19:14:37 +01:00
Maze Winther c3f0d640ef feat: exponential zoom 2026-02-02 18:11:12 +01:00
Maze Winther 7d5914353b Merge branch 'staging' 2026-02-01 17:01:59 +01:00
Maze Winther ee7eaecc9f add comments 2026-02-01 16:44:07 +01:00
Maze Winther 8ea3db833f organize imports 2026-02-01 16:43:57 +01:00
Maze Winther 22ea6b8925 change rounding 2026-02-01 15:35:53 +01:00
Maze Winther dfccf905bb more test stuff 2026-02-01 13:31:44 +01:00
Maze Winther 3e4584edde fix 2026-02-01 13:19:51 +01:00
Maze Winther 4cd15fcf00 fix default panel sizes 2026-02-01 12:32:28 +01:00
Maze Winther 748856f4c4 fix onboarding text 2026-02-01 12:32:18 +01:00
Maze Winther 2759d7ed31 add tests for storage migrations 2026-02-01 12:15:37 +01:00
Maze Winther 03c2b16064 next-env.d.ts 2026-02-01 11:31:37 +01:00
Maze Winther 5e1e509c11 testing 4 2026-02-01 11:18:38 +01:00
Maze Winther bfcf20e108 testing 3 2026-02-01 11:16:18 +01:00
Maze Winther 4f64ff50cd testing 2 2026-02-01 11:09:55 +01:00
Maze Winther 58f23e8f2a testing 2026-02-01 11:06:20 +01:00
Maze Winther 33f4a54768 please 2026-02-01 10:59:05 +01:00
Maze Winther 1d55b903d7 fix remaining errors 2026-02-01 10:03:51 +01:00
Maze Winther af047ba4a7 more errors 2026-02-01 09:54:29 +01:00
Maze Winther ef3563745a fix errors 2026-02-01 02:10:24 +01:00
Maze Winther d06b7c3b0f update type definition for containerRef in ColorPickerProps to allow null 2026-02-01 01:44:48 +01:00
Maze Winther b7293dc552 fix type definition for ref in PanelBaseViewProps 2026-02-01 00:32:35 +01:00
Maze Winther 82d92934cb typescript error 2026-02-01 00:22:48 +01:00