<feed xmlns='http://www.w3.org/2005/Atom'>
<title>opencut/apps/web/src/media, branch main</title>
<subtitle></subtitle>
<id>http://git.cashmere.rs/opencut/atom/apps/web/src/media?h=main</id>
<link rel='self' href='http://git.cashmere.rs/opencut/atom/apps/web/src/media?h=main'/>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/'/>
<updated>2026-08-16T04:16:56Z</updated>
<entry>
<title>feat: add transitions, track mixing, and voiceover controls</title>
<updated>2026-08-16T04:16:56Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-08-16T04:16:56Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=f1043734438c8518a302f698d9ae6583a75f0c14'/>
<id>urn:sha1:f1043734438c8518a302f698d9ae6583a75f0c14</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: freeze frame at playhead</title>
<updated>2026-07-26T19:06:33Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-26T19:06:33Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=fc0a801e8829b623d62137a3f7cbdec38c6d555a'/>
<id>urn:sha1:fc0a801e8829b623d62137a3f7cbdec38c6d555a</id>
<content type='text'>
Enable the timeline toolbar freeze-frame button: capture the composited
canvas as PNG, add it as an image media asset, split the video element
at the playhead, shift the right part by the freeze duration, and insert
a 3-second image element in the gap. Adds RendererManager.captureFrame(),
reused by createSnapshot().

Also adds the Nix devshell (flake.nix/flake.lock: bun + nodejs) and
AGENTS.md repository guidelines.
</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>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>
<entry>
<title>fix: surface unsupported video codec on import, fix Input leaks</title>
<updated>2026-04-25T00:46:31Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-25T00:46:31Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=0dffefdd59d8c70fece63436e8556f8ec1e43a49'/>
<id>urn:sha1:0dffefdd59d8c70fece63436e8556f8ec1e43a49</id>
<content type='text'>
</content>
</entry>
<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>
</feed>
