<feed xmlns='http://www.w3.org/2005/Atom'>
<title>opencut/notes, branch main</title>
<subtitle></subtitle>
<id>http://git.cashmere.rs/opencut/atom/notes?h=main</id>
<link rel='self' href='http://git.cashmere.rs/opencut/atom/notes?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: Electron desktop app, native ffmpeg export, fully static web</title>
<updated>2026-07-30T16:18:15Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-30T16:17:45Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=ed02ba872c02eafed45f406c68d389d0a1112a4e'/>
<id>urn:sha1:ed02ba872c02eafed45f406c68d389d0a1112a4e</id>
<content type='text'>
- apps/desktop: Electron shell serving the static web build over a
  privileged opencut:// protocol; exports stream frames over IPC to a
  bundled ffmpeg (libx264/libvpx-vp9, BT.709 tagged) with backpressure.
  electron-builder packaging: AppImage, deb, rpm.
- apps/web: dead backend deleted (better-auth, drizzle/pg, upstash,
  botid, freesound proxy, blog, rss, env validation); next build emits
  a zero-env static export; /editor/[project_id] -&gt; /editor?project=.
- Native exporter mirrors SceneExporter; activates when the preload
  bridge is present; web keeps the mediabunny path.
- Docker self-hosting now builds and serves the static export via nginx.
- Release workflow: v* tags publish static web tarball + Linux packages.
- Changelog 0.4.0; README/AGENTS/CONTRIBUTING/roadmap updated.
- GPUI/Rust rewrite parked on branch rust-rewrite.
</content>
</entry>
<entry>
<title>docs: record completed roadmap slices</title>
<updated>2026-07-26T23:22:54Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-26T23:22:54Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=da99dec8a2de1f3849aebbf5695c1e812b2dbdf9'/>
<id>urn:sha1:da99dec8a2de1f3849aebbf5695c1e812b2dbdf9</id>
<content type='text'>
AGENTS.md gains the versions/voiceover/transfer domains and the features
flag module; roadmap marks slices 1-6 done and notes deletion of
flagged-off code as the next strip step.
</content>
</entry>
<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>
<entry>
<title>docs: project versioning design note</title>
<updated>2026-07-26T22:30:47Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-26T22:30:47Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=8474b96e7d5632d7bd71aef077ab9efe2e4523cc'/>
<id>urn:sha1:8474b96e7d5632d7bd71aef077ab9efe2e4523cc</id>
<content type='text'>
Linear history with named checkpoints plus rotating auto-checkpoints,
content-addressed media dedup, jump-only v1. Owner decisions recorded;
branches and diff view explicitly out of scope.
</content>
</entry>
<entry>
<title>docs: record green baseline and quality gates</title>
<updated>2026-07-26T22:26:32Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-26T22:26:32Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=9988b884b381eebcfb66a4bbeb3aad5682612ba8'/>
<id>urn:sha1:9988b884b381eebcfb66a4bbeb3aad5682612ba8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs: add roadmap and session notes</title>
<updated>2026-07-26T21:13:10Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-26T21:13:10Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=607f9717ae44efe8f135b6c79ed85a583f3d2d1d'/>
<id>urn:sha1:607f9717ae44efe8f135b6c79ed85a583f3d2d1d</id>
<content type='text'>
Captures the freeze-duration-prompt task, GPU/CPU rendering state,
prioritized roadmap (strip landing/branding, disable unfinished domains,
self-contained project files, voice-over, versioning, desktop binary),
and known pre-existing breakage.
</content>
</entry>
<entry>
<title>docs: move NOTES.md file</title>
<updated>2026-05-02T14:38:06Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-05-02T14:38:06Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=8ab3aeba7c99cb634254d5c1f52fab3f5f4811b1'/>
<id>urn:sha1:8ab3aeba7c99cb634254d5c1f52fab3f5f4811b1</id>
<content type='text'>
</content>
</entry>
</feed>
