<feed xmlns='http://www.w3.org/2005/Atom'>
<title>opencut/apps/web/src/components/editor, branch main</title>
<subtitle></subtitle>
<id>http://git.cashmere.rs/opencut/atom/apps/web/src/components/editor?h=main</id>
<link rel='self' href='http://git.cashmere.rs/opencut/atom/apps/web/src/components/editor?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: 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>feat: wire versioning/transfer/voice-over actions and header UI</title>
<updated>2026-07-26T23:21:29Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-26T23:21:29Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=9c3b788b47cc639ee463dd07e1a4cce91e6376cc'/>
<id>urn:sha1:9c3b788b47cc639ee463dd07e1a4cce91e6376cc</id>
<content type='text'>
Shared wiring for the six roadmap slices in one commit: action ids and
handlers for create-checkpoint, toggle-versions-panel,
export-project-archive, and voice-over; the freeze-frame handler awaits
the duration prompt before capture; editor header gains the versions
popover and export menu item (and loses the feedback popover and
Discord item, part of the branding strip).
</content>
</entry>
<entry>
<title>refactor: strip landing page and upstream branding</title>
<updated>2026-07-26T23:21:02Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-26T23:21:02Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=2a372fdec256b8be890e181c221c2a012ead9efa'/>
<id>urn:sha1:2a372fdec256b8be890e181c221c2a012ead9efa</id>
<content type='text'>
/ redirects to /projects; marketing landing components, the feedback
popover + API route, and all Discord links removed (editor header,
footer, onboarding copy).
</content>
</entry>
<entry>
<title>feat: gate sounds/stickers/effects UI behind feature flags</title>
<updated>2026-07-26T23:21:02Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-26T23:21:02Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=f8fdff7f0c1b8efdef9093c932e28e427799d6ef'/>
<id>urn:sha1:f8fdff7f0c1b8efdef9093c932e28e427799d6ef</id>
<content type='text'>
FEATURES in src/features.ts (all false) hides the assets-panel tabs and
views, the clip effects properties tab, and the timeline effects badge.
Existing project data still renders and stays editable (standalone effect
tab, sticker config, renderer nodes untouched).
</content>
</entry>
<entry>
<title>fix: guard MediaPreview against image assets without url</title>
<updated>2026-07-26T20:34:11Z</updated>
<author>
<name>cashmere</name>
<email>cashmere@autistici.org</email>
</author>
<published>2026-07-26T20:34:11Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=4b6caee158a4913f9fda423e4df7f9df2e8a53a0'/>
<id>urn:sha1:4b6caee158a4913f9fda423e4df7f9df2e8a53a0</id>
<content type='text'>
The image branch rendered &lt;Image src={item.url ?? ""}&gt;, crashing the
assets panel for any image asset lacking url. It now falls back to
thumbnailUrl and then to the existing MediaTypePlaceholder, mirroring the
video branch's fallback.
</content>
</entry>
<entry>
<title>refactor: animate params over time</title>
<updated>2026-05-02T01:27:23Z</updated>
<author>
<name>Maze Winther</name>
<email>mazewinther@gmail.com</email>
</author>
<published>2026-04-29T08:37:39Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/opencut/commit/?id=401cc35743aafc4c8bdfb8055501650390bde88b'/>
<id>urn:sha1:401cc35743aafc4c8bdfb8055501650390bde88b</id>
<content type='text'>
</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>
</feed>
