<feed xmlns='http://www.w3.org/2005/Atom'>
<title>opencut/apps/web/src/types, branch main</title>
<subtitle></subtitle>
<id>http://git.cashmere.rs/opencut/atom/apps/web/src/types?h=main</id>
<link rel='self' href='http://git.cashmere.rs/opencut/atom/apps/web/src/types?h=main'/>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/'/>
<updated>2026-08-09T00:37:37Z</updated>
<entry>
<title>feat: lens effects tab, standalone motion effects, clip/asset rename, preview popout</title>
<updated>2026-08-09T00:37:37Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-08-09T00:37:37Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=c555f1eaebff90749bdc543592cfa80a060b29e2'/>
<id>urn:sha1:c555f1eaebff90749bdc543592cfa80a060b29e2</id>
<content type='text'>
- New Lens category in the assets panel: Blur, Motion Blur, Zoom In/Out,
  Pan x4, Shake, Pulse, Spin, Custom Zoom. EffectDefinition gains a
  category field; tabs with an empty category are hidden, and the
  properties-panel 'Open effects' button opens the first non-empty one.
- Motion effects work standalone: dropping them on the timeline creates
  an effect-track element that animates (scale/translate/rotate) every
  track below it, computed purely in the TS frame descriptor - no wasm
  changes, identical in preview and export. supportsStandalone removed.
- Motion Blur: directional gaussian smear (amount + angle) reusing the
  existing WGSL shader with arbitrary u_direction.
- Custom Zoom: start/end scale params (keyframable clip-level).
- MotionOffset gains optional rotate, accumulated clip-level and applied
  to standalone layer quads via rotationDegrees.
- Rename clips (timeline context menu) and media assets (media panel
  context menu) via a shared RenameDialog; asset rename persists through
  storageService with rollback on error.
- Preview pops out into a Document Picture-in-Picture window and docks
  back; button hidden where the API is unsupported.
- Export keeps running when the export popover is closed; only the
  explicit Cancel button aborts.
- Captions and Adjustment tabs removed from the assets panel.
</content>
</entry>
<entry>
<title>feat: migrate GPU renderer from WebGL to wgpu/WASM</title>
<updated>2026-04-01T11:57:32Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-01T11:57:32Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=e579ae120290329fd697b50ea9138ffccb65a805'/>
<id>urn:sha1:e579ae120290329fd697b50ea9138ffccb65a805</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: normalize line endings</title>
<updated>2026-03-29T13:56:48Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-03-26T23:55:15Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=4d127a038bf768eded68aae3cfa5c1b12241bdac'/>
<id>urn:sha1:4d127a038bf768eded68aae3cfa5c1b12241bdac</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: masks, properties refactor, shaders, storage migrations, and more</title>
<updated>2026-03-29T13:48:22Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-03-25T15:47:22Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=8db3bead13441a5882d8689dfc6a9f09c82375d9'/>
<id>urn:sha1:8db3bead13441a5882d8689dfc6a9f09c82375d9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: wire ui to have keyframes for: opacity, text color, and all background properties</title>
<updated>2026-03-02T15:36:10Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-03-02T15:36:10Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=a526066b61f18b082adf6faeaf3e19f3d13cd77d'/>
<id>urn:sha1:a526066b61f18b082adf6faeaf3e19f3d13cd77d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: implement keyframe support for more properties at the core (no ui yet)</title>
<updated>2026-03-02T14:08:21Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-03-02T14:08:21Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=81e7a7fb32466633d38fa14bd5e14c2dca7bf658'/>
<id>urn:sha1:81e7a7fb32466633d38fa14bd5e14c2dca7bf658</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: Clip effects, asset sorting, and timeline improvements</title>
<updated>2026-03-02T12:13:07Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-03-02T12:13:07Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=e7dcb586c0408255a0bf788e355fdb6d50d9b923'/>
<id>urn:sha1:e7dcb586c0408255a0bf788e355fdb6d50d9b923</id>
<content type='text'>
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 &amp; 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).
</content>
</entry>
<entry>
<title>feat: introduce WebGL effects system and Blur effect</title>
<updated>2026-02-28T17:41:22Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-02-28T17:41:22Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=216e3e0c397be3719a94e1a22bc1c2ce2de3856c'/>
<id>urn:sha1:216e3e0c397be3719a94e1a22bc1c2ce2de3856c</id>
<content type='text'>
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 &amp; 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.
</content>
</entry>
<entry>
<title>feat: implement keyframe animation system</title>
<updated>2026-02-27T15:33:57Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-02-27T15:33:57Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=49426f19cd8eaed7cf6c47999b66fee7ee637a56'/>
<id>urn:sha1:49426f19cd8eaed7cf6c47999b66fee7ee637a56</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>refactor: move transform type to more relevant file</title>
<updated>2026-02-25T03:14:21Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-02-25T03:14:21Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=987153266ec44c201f6d328d2e18148b06318f6b'/>
<id>urn:sha1:987153266ec44c201f6d328d2e18148b06318f6b</id>
<content type='text'>
</content>
</entry>
</feed>
