OpenCut/rust/wasm
Maze Winther 6a22a3ecbd refactor: centralize editor interaction state
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
2026-04-25 03:56:22 +02:00
..
src refactor: centralize editor interaction state 2026-04-25 03:56:22 +02:00
Cargo.toml perf: improve rendering performance by ~20x 2026-04-22 16:48:37 +02:00
README.md refactor: split effects and masks into dedicated rust crates, introduce MediaTime and FrameRate 2026-04-07 01:09:13 +02:00

README.md

opencut-wasm

Shared video editor logic compiled to WebAssembly. Used by the OpenCut web app.

Install

npm install opencut-wasm

Usage

import { formatTimecode, mediaTimeFromSeconds } from "opencut-wasm";

const ticks = mediaTimeFromSeconds(1.5);
const label = formatTimecode({ ticks });

All exports are documented in the TypeScript definitions.

Source

Functions are implemented in Rust under rust/crates/. This package is the compiled WebAssembly output — do not edit it directly.

Local development

The web app depends on the published opencut-wasm package by default. If you are editing the WASM source in this repo and want apps/web to use your local build instead:

# From the repo root
bun run build:wasm

cd rust/wasm/pkg
bun link

cd ../../../apps/web
bun link opencut-wasm

While you work, rebuild on changes from the repo root:

bun dev:wasm