Skip to main content
← All work

lodestone

A video editor with no timeline. Clips, filters, audio and outputs are objects on an infinite board that you snap together.

Status

Core editing, rendering, playback and captions all work, with a desktop shell around them. 328 tests.

Language
TypeScript, with Rust underneath
Shell
Tauri
Lines
15,218
Tests
328

Two relationships, kept apart

The whole design hinges on two gestures meaning different things. Dropping a filter on top of a clip stacks it — modifiers apply upwards, and the order is drawn on the board rather than implied by a sidebar. Dropping a clip beside another one means play this, then that: the ordinary cut.

A node editor that merges the two makes "apply a look" and "play these in sequence" the same action, and after that neither one reads clearly. Keeping them separate costs a concept and buys a board you can understand at a glance.

Frame precision without a timeline

Losing the timeline cannot mean losing frame accuracy. Each clip is its own miniature timeline: in trim mode its width is proportional to its duration, so the horizontal position of the cursor maps directly onto a source frame, and the status bar shows pixels per frame so the precision available is never a guess.

Hovering scrubs, clicking drops a pin that snaps to scene cuts and clip edges, comma and full stop step the pin a frame at a time, and typing a timecode goes straight there. Seams between snapped clips are grabbable, which rolls the edit — trimming one side while extending the other, the operation a single pin cannot express.