<feed xmlns='http://www.w3.org/2005/Atom'>
<title>opencut/apps/web/src/preview, branch rust-rewrite</title>
<subtitle></subtitle>
<id>http://git.cashmere.rs/opencut/atom/apps/web/src/preview?h=rust-rewrite</id>
<link rel='self' href='http://git.cashmere.rs/opencut/atom/apps/web/src/preview?h=rust-rewrite'/>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/'/>
<updated>2026-05-02T01:27:23Z</updated>
<entry>
<title>refactor: remove dead tangent handle variant</title>
<updated>2026-05-02T01:27:23Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-05-01T23:33:20Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=23187b0b6a9f179bdb68578fc4bdaa8414b8316d'/>
<id>urn:sha1:23187b0b6a9f179bdb68578fc4bdaa8414b8316d</id>
<content type='text'>
The { kind: "tangent" } MaskHandleId variant was never constructed — neither
getFreeformDisplayHandles nor any other code ever produced a tangent handle
object. The in/out control-arm branches in computeFreeformParamUpdate, the
tangent case in maskHandleIdKey, and the CUSTOM_MASK_TANGENT_SIZE rendering
path in mask-handles.tsx were all unreachable. Removed all four dead paths
and removed "tangent" from MaskHandleKind.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;
</content>
</entry>
<entry>
<title>refactor: split builtin and freeform masks</title>
<updated>2026-05-02T01:27:23Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-29T16:41:15Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=79dcec8a2ec2f5cad9be95e5b52fbfa752fb6ac4'/>
<id>urn:sha1:79dcec8a2ec2f5cad9be95e5b52fbfa752fb6ac4</id>
<content type='text'>
Made-with: Cursor
</content>
</entry>
<entry>
<title>refactor: type mask handle identifiers</title>
<updated>2026-05-02T01:27:23Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-29T16:31:24Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=97f8d1968f186028e41f83b04c0897130e6c69f4'/>
<id>urn:sha1:97f8d1968f186028e41f83b04c0897130e6c69f4</id>
<content type='text'>
Made-with: Cursor
</content>
</entry>
<entry>
<title>refactor: unify element params</title>
<updated>2026-05-02T01:27:23Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-28T23:28:50Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=2ee0a44735d2b930348e9774909638b2c1909738'/>
<id>urn:sha1:2ee0a44735d2b930348e9774909638b2c1909738</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: switch from biome to eslint + prettier; fix ton of lint issues</title>
<updated>2026-05-02T01:27:23Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-28T22:37:56Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=a9b9cf6bf50f08723896659634f2e6afc17bcd42'/>
<id>urn:sha1:a9b9cf6bf50f08723896659634f2e6afc17bcd42</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: split animation helpers by domain</title>
<updated>2026-04-26T18:44:07Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-26T18:44:07Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=6b1f38a9a31a0eedaa7abea70f232960469351d5'/>
<id>urn:sha1:6b1f38a9a31a0eedaa7abea70f232960469351d5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: thinner hooks</title>
<updated>2026-04-26T15:31:28Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-26T15:31:28Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=56ca09692a308b22455420d11376ff8d41244c47'/>
<id>urn:sha1:56ca09692a308b22455420d11376ff8d41244c47</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: split animation helpers by domain</title>
<updated>2026-04-26T02:04:30Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-26T02:04:30Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=0b7597b31fa956c7f3d4838923b545ba5e341422'/>
<id>urn:sha1:0b7597b31fa956c7f3d4838923b545ba5e341422</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: model editor time as wasm MediaTime ticks end-to-end</title>
<updated>2026-04-26T00:50:04Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-26T00:50:04Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=eea6d43c82e1fd09d94d73001090dad205b1f1d2'/>
<id>urn:sha1:eea6d43c82e1fd09d94d73001090dad205b1f1d2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: centralize editor interaction state</title>
<updated>2026-04-25T01:56:22Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-25T01:56:22Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=6a22a3ecbdff2d0e6a4c24c8db40bb86bc01b692'/>
<id>urn:sha1:6a22a3ecbdff2d0e6a4c24c8db40bb86bc01b692</id>
<content type='text'>
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
</content>
</entry>
</feed>
