Skip to content

Releases: svandragt/diffsplainer

Diffsplainer 0.1.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 12:20
v0.1.0
2354f43

The first public release of Diffsplainer, a local web app that explains a GitHub pull request chunk by chunk, using Claude Code.

Highlights

  • Run it with one command: uvx diffsplainer, then open http://localhost:3000.
  • See each diff chunk next to a short explanation of what it changes and why.
  • Get a summary of the whole PR, its approach, and up to three things to check.
  • Select any phrase in an explanation and ask what it means.
  • Open the current GitHub PR in Diffsplainer from a bookmarklet.
  • Read diffs with syntax highlighting for over 35 languages, without the page loading anything from the internet.

Upgrade

This is the first release. You need the Claude Code CLI, logged in.

uvx diffsplainer

To read private repos, log in with gh auth login or set GITHUB_TOKEN before you start the app.

Details

Explanations

Diffsplainer splits the diff into logical chunks and asks Claude Code to explain each one in plain language: what it lets the code do differently, and the reason the PR gives for it. Where the PR doesn't state a reason, the explanation says so instead of guessing. Explanations stream in as they finish, and the app keeps them in memory, so reopening a PR costs nothing.

Cost

Each Claude call runs isolated from your own Claude Code settings, plugins and MCP servers, and uses Sonnet by default. A typical batch of chunks costs about $0.05. PRs over 1,000 changed lines show the diff without explanations. Closing the tab stops any Claude runs still in progress.

Security

The app listens on 127.0.0.1 only, and it answers only requests addressed to localhost, 127.0.0.1 or [::1]. That stops a web page from reading your private PRs through DNS rebinding. It also refuses API calls that the browser marks as coming from another site, so other pages can't start Claude runs on your account.

How we checked

Check Result
Unit tests 101 passed on Python 3.11 and 3.13
Lint and format ruff passes
History scan before going public gitleaks found no secrets
Published package uvx diffsplainer@0.1.0 starts the app and serves the page

Known gaps

  • Diffsplainer works with GitHub only, not GitLab.
  • Explanations live in memory, so restarting the app explains PRs again.
  • In browsers that don't send the Sec-Fetch-Site header, such as Safari before 16.4, other sites can start Claude runs, but can't read the results.