<feed xmlns='http://www.w3.org/2005/Atom'>
<title>opencut/apps/web/src/hooks/timeline/element/use-keyframe-drag.ts, branch rust-rewrite</title>
<subtitle></subtitle>
<id>http://git.cashmere.rs/opencut/atom/apps/web/src/hooks/timeline/element/use-keyframe-drag.ts?h=rust-rewrite</id>
<link rel='self' href='http://git.cashmere.rs/opencut/atom/apps/web/src/hooks/timeline/element/use-keyframe-drag.ts?h=rust-rewrite'/>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/'/>
<updated>2026-04-20T09:31:17Z</updated>
<entry>
<title>refactor: restructure files to their domains,  new preview overlay system, and dep graph</title>
<updated>2026-04-20T09:31:17Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-20T09:31:17Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=3e89d2998588f8e35c524e523ba2ee853f0f6475'/>
<id>urn:sha1:3e89d2998588f8e35c524e523ba2ee853f0f6475</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: split effects and masks into dedicated rust crates, introduce MediaTime and FrameRate</title>
<updated>2026-04-06T23:09:13Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-06T23:09:13Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=e4b67094e757917588fb624a30aa046667403add'/>
<id>urn:sha1:e4b67094e757917588fb624a30aa046667403add</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: rewrite animation system to use bindings and scalar channels</title>
<updated>2026-04-05T11:15:58Z</updated>
<author>
<name>Maze</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-05T11:15:58Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=1bd9fac203f09736c1225bbbe19e5d7cc31c0b93'/>
<id>urn:sha1:1bd9fac203f09736c1225bbbe19e5d7cc31c0b93</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: split constants by domain and isolate timeline panel from core</title>
<updated>2026-04-01T17:27:49Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-01T17:27:49Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=bd9ec023eefc4b5d26fa8b66c4338e97104f0f96'/>
<id>urn:sha1:bd9ec023eefc4b5d26fa8b66c4338e97104f0f96</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: migrate time utilities from typescript to rust WASM</title>
<updated>2026-03-31T02:03:52Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-03-31T02:03:52Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=dcf54c1250431f5a4a2848f7c07781ef5eebacaf'/>
<id>urn:sha1:dcf54c1250431f5a4a2848f7c07781ef5eebacaf</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>clcik to seek on keyframes</title>
<updated>2026-03-02T15:40:41Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-03-02T15:40:41Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=565d2595da3ab23c39b5cd5fdcacdf676ca0e572'/>
<id>urn:sha1:565d2595da3ab23c39b5cd5fdcacdf676ca0e572</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: selecting multiple effects didn't work</title>
<updated>2026-03-02T15:30:50Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-03-02T15:30:50Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=b0165da764971b8e7f37c9657d0aa81f9bc2dcc9'/>
<id>urn:sha1:b0165da764971b8e7f37c9657d0aa81f9bc2dcc9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: keyframe drag bug</title>
<updated>2026-03-02T14:06:31Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-03-02T14:06:31Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=887d1795dd1662985400af5e02c4b7215c830a7d'/>
<id>urn:sha1:887d1795dd1662985400af5e02c4b7215c830a7d</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>
</feed>
