MCPcopy Index your code
hub / github.com/Ataraxy-Labs/lazydiff

github.com/Ataraxy-Labs/lazydiff @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,711 symbols 5,687 edges 45 files 26 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

LazyDiff

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:

lazydiff --version

From source

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

Usage

Open LazyDiff in a Git repository:

lazydiff

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:

lazydiff update

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

Extension points exported contracts — how you extend this code

Forge (Interface)
Abstraction over a code forge (GitHub, GitLab, Gitea/Forgejo, …). [4 implementers]
src/forge/mod.rs

Core symbols most depended-on inside this repo

rgb
called by 359
src/design_system.rs
len
called by 286
src/bounded_map.rs
iter
called by 230
src/bounded_map.rs
get
called by 206
src/bounded_map.rs
push
called by 157
src/ui/mod.rs
push
called by 121
src/app.rs
viewer_mut
called by 102
src/app/diff_buffer.rs
viewer
called by 89
src/app/diff_buffer.rs

Shape

Method 835
Function 618
Class 188
Enum 69
Interface 1

Languages

Rust100%

Modules by API surface

src/app.rs329 symbols
crates/lazydiff-diffs/src/lib.rs167 symbols
crates/lazydiff-diffs/src/viewer.rs160 symbols
src/persistence/review_store.rs107 symbols
src/github/service.rs89 symbols
src/app/semantic.rs71 symbols
src/main.rs64 symbols
src/app/surfaces.rs64 symbols
src/highlight_daemon.rs51 symbols
crates/lazydiff-diffs/src/pierre.rs51 symbols
src/app/finder.rs47 symbols
src/app/diff_buffer.rs45 symbols

For agents

$ claude mcp add lazydiff \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page