Skip to content

Releases: explicit09/vedit

v0.0.1 — first public release

07 May 09:20

Choose a tag to compare

v0.0.1 — first public release

vedit is semantic version control for video timelines (OpenTimelineIO).
git-style commit/branch/diff/merge, but it understands what changed at
the level of edit decisions, not bytes.

This release covers everything on the original v0.1–v0.6 roadmap.

Install

pip install pyvedit            # Python module: import vedit
cargo install --path crates/vedit-cli   # CLI binary, from source

The PyPI distribution is pyvedit; the importable Python module is vedit.
The vedit PyPI name is held by an unrelated 2016 project. Build-from-
source for the CLI is the only path until a Rust release on crates.io.

What's in v0.0.1

  • vedit diff a.otio b.otio — semantic diff in plain English, JSON
    output for agents. Detects trim, move, add, remove, replace, effects,
    transitions, tracks. Position-aware matcher handles real Resolve
    exports where the same media file is reused multiple times.
  • vedit init/commit/log/show/checkout — content-addressed object
    store with gzipped JSON, SHA-256 over canonical JSON, git-shaped
    refs/heads/ layout.
  • vedit branch / branches — divergent histories.
  • vedit merge — three-way merge, fast-forward when possible,
    structured conflict reporting on overlap. Track-granular conflicts
    in v0.6.0; clip-granular comes in v0.6.1.
  • vedit watch <path> — auto-commit on file change, with auto-
    generated messages from the diff. Pairs with the Resolve export
    script in docs/RESOLVE.md for hands-off versioning while you edit.
  • Python bindings (pyvedit)repo.commit(timeline_dict, ...),
    vedit.diff(a, b), repo.create_branch(...), etc. The agent
    surface, no temp files required.

Validated

  • 79 automated tests (66 Rust + 13 Python) including 7 fixtures from
    the AcademySoftwareFoundation OpenTimelineIO sample set.
  • End-to-end round-trip tested on a real DaVinci Resolve project: OTIO
    export → vedit commit → vedit checkout → re-import to Resolve. The
    recovered timeline opened correctly. vedit diff reported no
    semantic changes; the byte-size delta was canonical-JSON
    normalization, not data loss.
  • v0.6 merge tested on real Resolve OTIO: clean merge of disjoint
    edits produced a 2-parent commit; overlapping edits refused with
    the right reason.

What this is for

Built primarily for AI tools that generate or modify video timelines
and need version control without reinventing it. Also usable by human
editors who want a real edit history beyond their NLE's undo stack —
see docs/RESOLVE.md for the hands-off setup.

Prior art

vit (https://github.com/LucasHJin/vit) is the closest project. It
targets human editors collaborating in DaVinci Resolve via a Resolve
panel plugin. vedit is the layer below — editor-agnostic infrastructure
for programmatic consumers, with content-fingerprint identity instead
of positional keying. Both projects can coexist.

Known limitations (v0.6.1+ targets)

  • Merge conflicts are reported at track granularity. Two editors
    touching different clips on the same track will conflict spuriously.
  • No Python binding for repo.merge() yet — agents use the CLI for
    merging.
  • macOS Intel wheels not built (Apple stopped selling Intel Macs in
    2023; build from source via maturin works).
  • No remotes, no PyPI release for the Rust crate yet.

Links

Apache 2.0.