GitHub - Ataraxy-Labs/lazydiff: A fast terminal UI for reviewing Git diffs with support for annotations for agents

2 min read Original article ↗

Version License: MIT

image

A fast terminal UI for reviewing Git diffs and GitHub pull requests.

LazyDiff is for the code-review loop: jump through changed files, inspect hunks, search the diff, browse semantic changes, and keep your focus in the terminal.

Alpha: LazyDiff is currently intended for early adopters and dogfooding. Expect UI and workflow changes between alpha releases.

Features

  • Review worktree changes, staged changes, commits, refs, patch files, and stdin diffs.
  • Browse pull requests from a terminal-first review queue.
  • Open PR descriptions and changed files side by side.
  • See semantic code changes powered by sem-core.
  • Search within diffs and jump directly to matching files or hunks.
  • Switch between unified and split diff views.
  • Persist lightweight review state locally.
  • Login, logout, and update from the CLI.

Installation

Install the latest release:

curl -fsSL https://raw.githubusercontent.com/Ataraxy-Labs/lazydiff/main/install | sh

Install a specific version:

curl -fsSL https://raw.githubusercontent.com/Ataraxy-Labs/lazydiff/main/install | sh -s -- --version v0.1.0-alpha.5

Verify the install:

From source

cargo install --git https://github.com/Ataraxy-Labs/lazydiff

Usage

Open LazyDiff in a Git repository:

Review local changes directly:

lazydiff diff                    # worktree changes vs HEAD
lazydiff diff --staged           # staged changes
lazydiff diff origin/main        # current branch vs a base ref
lazydiff show HEAD~1             # a commit
lazydiff patch path/to/file.diff # a patch file
git diff --no-color | lazydiff pager

GitHub PR review uses device login:

lazydiff login
lazydiff logout

The GitHub device login needs an OAuth app client ID. Configure it locally:

# ~/.config/lazydiff/config.toml
github_client_id = "your-github-oauth-client-id"

Update LazyDiff from GitHub Releases:

Keybindings

Key Action
j / k Move line
ctrl-d / ctrl-u Half-page scroll
/ Search
f Open file picker
m Toggle split/unified diff mode
enter Open focused item
q / esc Back / quit

Development

git clone https://github.com/Ataraxy-Labs/lazydiff.git
cd lazydiff
cargo run

Fast local TUI loop:

cargo build --profile dev-fast
scripts/dev-watch-tui.sh

Quality checks:

cargo fmt --check
cargo clippy --all-targets
cargo test

Release builds

Release artifacts are published as GitHub Release archives for Linux, macOS, and Windows, with .sha256 checksums.

Release builds currently include a focused semantic grammar set — TypeScript/TSX, JavaScript/JSX, Python, Go, Rust, and Java — to keep binaries small. Other languages still fall back to normal textual diff review.

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md for local development notes.

License

MIT