vtcode-diff 0.167.0

Bounded structured text diffs and renderer-neutral terminal preview rows
Documentation

vtcode-diff

vtcode-diff computes bounded, structured text diffs and lays them out as renderer-neutral semantic rows. It supports unified and side-by-side previews, Unicode display-width wrapping, intraline emphasis, bounded head/tail excerpts, and parsing existing unified-diff text.

use vtcode_diff::{DiffDocument, DiffLayout, DiffOptions, LayoutOptions};

let diff = DiffDocument::between("old\n", "new\n", DiffOptions::default());
let rows = diff.layout(LayoutOptions {
    layout: DiffLayout::Unified,
    width: 80,
    ..LayoutOptions::default()
});
assert!(rows.iter().any(|row| row.marker == '+'));

For paired old/new columns, select the side-by-side layout:

let rows = diff.layout(LayoutOptions {
    layout: DiffLayout::SideBySide,
    width: 120,
    ..LayoutOptions::default()
});

Layout automatically falls back to unified below min_side_by_side_width. max_rows retains a head/tail excerpt with an omission row and accurate document statistics.

Features:

  • serde: serialization for public model types.
  • ratatui: conversion helpers for Ratatui text rows.
  • ansi: ANSI rendering with a caller-supplied palette.

Practical Myers is the default algorithm. Computation and intraline refinement have separate timeouts, and costly intraline work is skipped for large inputs.

Acknowledgments

The presentation architecture and underlying ideas (unified and side-by-side terminal previews with intraline emphasis) were informed by OpenAI Codex, licensed under Apache-2.0. This crate is an independent implementation for VT Code; no Codex source code was copied.

Licensed under MIT or Apache-2.0, at your option.