Releases: explicit09/vedit
v0.0.1 — first public release
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 indocs/RESOLVE.mdfor 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 diffreported 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
- README and full architecture: https://github.com/explicit09/vedit
- Resolve setup: https://github.com/explicit09/vedit/blob/main/docs/RESOLVE.md
- Python wheel: https://pypi.org/project/pyvedit/
Apache 2.0.