https://github.com/parthjadhav/diffdeck
open git diffs in browser, add comments & send all to agent
https://github.com/parthjadhav/diffdeck
agent ai developer-tools development diff git
Last synced: 19 days ago
JSON representation
open git diffs in browser, add comments & send all to agent
- Host: GitHub
- URL: https://github.com/parthjadhav/diffdeck
- Owner: ParthJadhav
- License: mit
- Created: 2026-04-30T21:33:48.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-27T19:04:16.000Z (19 days ago)
- Last Synced: 2026-05-27T19:14:45.206Z (19 days ago)
- Topics: agent, ai, developer-tools, development, diff, git
- Language: TypeScript
- Homepage:
- Size: 7.21 MB
- Stars: 19
- Watchers: 0
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Diffdeck
[](https://www.npmjs.com/package/@parthj/diffdeck)
Open a Git diff in your browser from the terminal.

`diffdeck` starts a local web UI for the diff you ask Git for, then opens it in your browser. Use it when:
- You do not have a diff view where you are editing.
- `git diff` in the terminal is too hard to read.
- You are SSHed into a server and still want a clean visual review.
Optionally, you can comment on changed lines and copy all of them at once for your AI to resolve — the surrounding code context goes with them, so the agent has everything it needs to act.
## Agentic Setup
Tell your coding agent (Claude Code, Cursor, etc.):
```
Install `@parthj/diffdeck` globally with `npm install -g @parthj/diffdeck`, then add `alias gd='diffdeck'` to my shell rc file. Run `gd` whenever I ask you to show me a diff.
```
## Install
```sh
npm install -g @parthj/diffdeck
```
The package is scoped, but the installed command is `diffdeck`.
To update to the latest version:
```sh
npm install -g @parthj/diffdeck@latest
```
(`npm update -g` won't bump globally-installed packages because they're pinned to an exact version at install time.)
## Make It A Drop-In
Diffdeck accepts the same diff arguments, so the simplest setup is a shell alias:
```sh
alias gd='diffdeck'
```
Then use it like `git diff`:
```sh
gd
gd --cached
gd HEAD~1 HEAD
```
## Use It Like Git Diff
```sh
diffdeck
diffdeck --cached
diffdeck HEAD~1 HEAD
diffdeck -- -- '*.tsx'
```
Everything after Diffdeck's own options is passed through to `git diff` as long as it still produces plain patch output. Summary-only modes such as `--stat`, `--name-only`, `--raw`, and `--no-patch` are rejected because there is no file patch for the browser to render.
## Options
| Option | What it does |
| --- | --- |
| `--repo ` | Run against another repository. |
| `--port ` | Bind to a specific port. Defaults to `4321` (falls back to a free port if taken). |
| `--host ` | Bind to a host. Defaults to `127.0.0.1`. |
| `--no-open` | Start the server without opening a browser. |
| `--version` | Print the installed version and exit. |
| `--help` | Show CLI help. |
## Requirements
- Node.js 20 or newer
- Git available on your `PATH`
## Develop
```sh
bun install
bun run dev
bun run check
```
## Releases
See [GitHub Releases](https://github.com/ParthJadhav/DiffDeck/releases) for the full version history. Highlights:
- **0.3.8** — Refined the review UI with shared controls, icons, compact states, and better mobile diff layout.
- **0.3.7** — Browser page refreshes now reload the current git status instead of reusing a cached session.
- **0.2.0** — File-list virtualization for large diffs (23k+ files), survives non-ASCII patches, comment drafts persist across scroll.
- **0.1.3** — Float copy-comments FAB, render binary file placeholders, oklch theme tokens.
- **0.1.1** — Initial scoped npm release.
## License
MIT