<feed xmlns='http://www.w3.org/2005/Atom'>
<title>opencut/apps/web/src/versions/__tests__/media-pin.test.ts, branch main</title>
<subtitle></subtitle>
<id>http://git.cashmere.rs/opencut/atom/apps/web/src/versions/__tests__/media-pin.test.ts?h=main</id>
<link rel='self' href='http://git.cashmere.rs/opencut/atom/apps/web/src/versions/__tests__/media-pin.test.ts?h=main'/>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/'/>
<updated>2026-07-26T23:21:20Z</updated>
<entry>
<title>feat: git-like project versioning (v1)</title>
<updated>2026-07-26T23:21:20Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-26T23:21:20Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=d55d2583a71ae35fa8d0d1bfbec975e67e66aafa'/>
<id>urn:sha1:d55d2583a71ae35fa8d0d1bfbec975e67e66aafa</id>
<content type='text'>
Linear per-project history per notes/project-versioning.md: named
checkpoints (thumbnail via renderer.captureFrame) plus auto-checkpoints
on save (60s throttle, ring of 20, named never rotate). Restore writes a
safety checkpoint first, then swaps the document outside undo/redo.
Media assets referenced by any version are pinned against deletion.
Migration v31-v32 stamps the schema; the version store lives in its own
IDB database with an in-memory fallback for tests. Versions popover in
the editor header for jump/rename/delete. 12 new tests.
</content>
</entry>
</feed>
