A Git diff viewer for macOS
DiffViewer is an Electron-based application that provides an interface for viewing Git diffs between branches. Perfect for code reviews, understanding changes, and visualizing your development progress.
This was built after constantly running into problems reviewing changes using agent coding tools like Claude Code, Codex and Cursor.
- Interface - UI focused on code changes
- Side-by-Side & Unified Views - Switch between diff viewing modes
- Smart File Filtering - Quickly find specific files in large changesets
- Auto-Refresh - Automatically updates when your repository changes
- Dark/Light Theme - Because y'all will demand it
- Commit History - View commits ahead of your target branch
- File Status Indicators - Badges for new, modified, and deleted files
- Performance - Optimized for large repositories and diffs
- Syntax Highlighting - Code highlighting powered by highlight.js
- Go to Releases
- Download the latest
DiffViewer.dmg
for macOS - Open the DMG and drag DiffViewer to your Applications folder
- Launch DiffViewer and open any Git repository
# Clone the repository
git clone https://github.com/yourusername/diffviewer.git
cd diffviewer
# Install dependencies
npm install
# Start the application
npm start
- Node.js 16+
- npm or yarn
- macOS (for native features)
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build for production
npm run build
# Package as macOS app
npm run dist
diffviewer/
├── src/
│ ├── main.js # Electron main process
│ ├── renderer.js # Frontend application logic
│ ├── index.html # Main window HTML
│ └── styles.css # Application styles
├── assets/ # Icons and images
└── package.json # Dependencies and scripts
DiffViewer compares your current branch against a target branch (typically main
or master
) and shows:
- File Changes - All modified, added, and deleted files
- Diff Views - Line-by-line changes in side-by-side or unified format
- Commit History - Commits that exist on your branch but not the target
- Live Updates - Automatically refreshes when you make changes
- Branch comparisons (
feature-branch
vsmain
) - Automatic target branch detection (
main
↔master
) - Real-time repository watching
- Large diff handling with performance optimization
Bring on your contributions yo!
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes and add tests if applicable
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Use 2-space indentation
- Follow existing code style
- Test your changes thoroughly
- Update documentation as needed
- Very large files (>10MB) may load slowly
- Some Git operations might not trigger auto-refresh immediately
This project is licensed under the MIT License - see the LICENSE file for details.
- simple-git - Git operations in Node.js
- Electron - Cross-platform desktop apps
- highlight.js - Syntax highlighting