┤ HERO ├~/repo · git diff → diffing

LOCAL-FIRST · NO ACCOUNT · NO CLOUD · MIT

git diff, reimagined as a review workspace.

diffing is a drop-in replacement for git diff that opens your changes in an interactive, local-first browser UI — review, comment, and hand off to your AI agent without leaving the terminal.

Auto-detects your terminal: TTY → opens the web UI · pipe/redirect → prints a unified patch.


                    
┤ WORKSPACE GUIDE ├guided tour
┤ SPEC PROFILE ├verified facts
package
diffing
version
0.2.1
license
MIT
bin
diffing → ./dist/cli.mjs
default theme
nord
ui font
Geist Mono
code font
JetBrains Mono
themes
52
mcp tools
10
git flags
60+ / 12 categories
default host
127.0.0.1
quotes
31
┤ THE FEEL — SOUND / HAPTIC LAB ├11 sounds · 10 haptics

It feels like a tool, not a webpage. Every interaction is scored: 11 synthesized Web-Audio cues, 10 haptic presets, a terminal startup animation, and a vim status bar. Toggle AUDIO and HAPTICS in the status strip.

Sound presets — exact synth from useHaptics.tsx

Haptic presets — navigator.vibrate

One of 31 curated developer quotes greets you on launch.

┤ INTERACTIVE SHELL ├type a command + Enter
~/repo on main

try: diffing · diffing --help · diffing await-review · diffing plan submit · diffing mcp · diffing update  (/ history · Tab complete · clear)

┤ LIVE DIFF SHOWCASE ├click a +/- line to comment
view: split (press m)
┤ THEMES (52 in the app · 5 previewed here) ├press g t

52 built-in themes with instant switching, live preview, and dark/light variants. Nord is the default. Press g t to open the theme picker in the app — search, filter by dark/light, arrow-key navigate, Enter to apply, Esc to close.

┤ WHAT IT IS ├

① Drop-in for git diff

Same revisions, options, and pathspecs. 60+ git-compatible flags across 12 categories. Swap git diffdiffing and review in the browser.

② Two output modes, auto-detected

TTY launches the local web server; a pipe or redirect prints a standard unified patch to stdout. Force either with --web or --terminal.

③ Built for human + agent review

Inline comments, plan review, and an AI handoff protocol over a local HTTP/SSE server and an MCP server — all on 127.0.0.1, nothing leaves your machine.

┤ INSTALL · RUN · UPDATE ├click any line to copy

diffing update self-upgrades via npm (or pnpm if present): npm install -g diffing@latest.

Skills install (for AI assistants)

┤ WEB-UI FEATURES ├

A GitHub-grade review UI, served from localhost.

┤ SEARCH ├Rust-powered · fff

Native Rust-powered code search across four scopes.

scopes: files · text · symbols · all  ·  symbol patterns: 17  ·  default 60 results · max 200

┤ REAL-TIME / SSE ├

Every browser tab updates live.

Edit a file, drop a comment, or have your agent reply — the change streams to every open tab over Server-Sent Events, with a 15-second heartbeat keeping the connection warm.

heartbeat 15s · change 200ms · comments/plans 120ms

┤ AI HANDOFF · MCP · SKILLS ├

Hand the review to your AI agent — locally.

Click "Send to agent" in the UI with a verdict (Approve / Request Edits / Reject) and an optional note. Your agent — running in the same repo — picks up the comments, replies inline, applies fixes, and resolves threads. No port to configure: discovery is automatic via a per-repo lockfile.

CLI subcommands (agent-facing, port-agnostic)

MCP server — diffing mcp

{ "mcpServers": { "diffing": { "command": "diffing", "args": ["mcp"] } } }

Exposes 10 tools: await_review, list_comments, reply_to_comment, resolve_comment, submit_plan, await_plan_review, list_plans, get_plan, reply_to_plan_comment, resolve_plan_comment.

Skills

npx skills add ahmedragab20/diffing installs diffing skills into your AI coding assistant.

subcommands · 10 MCP tools · await default 570s · exit 0/2/3/4/5

┤ PLAN REVIEW ├

Get sign-off before you write code.

Submit a markdown implementation plan and block until a human approves, rejects, or requests changes. Comment on specific plan lines or sections; the agent replies and resolves — then proceeds, revises and resubmits, or stops.

verdicts: pending · approved · changes-requested · rejected  ·  plan await default 570s

┤ SECURITY & LOCAL-FIRST ├

Your code never leaves your machine.

bind 127.0.0.1 · 403 on traversal · auto-prune 14d

┤ KEYBOARD SHORTCUTS ├press ? anytime
Key Action

Multi-key sequences use an 800 ms buffer. A vim-style status bar shows NORMAL / INSERT depending on whether a text field is focused; all shortcuts are disabled while typing in an input/textarea/contenteditable.