MrDiff

Release history

Eleven releases in four weeks.

From the first release on 12 September 2026 to v0.7.1 three days later. It shipped comparing text, images and binaries; a day later it compared PDFs and told you where on the page, then two folders, then archives, Word documents and fonts, then the text of a PDF, then a shifted image, then JSON and YAML as data instead of lines, with the values alongside. In October, v0.8.0 added Terraform, SQLite and standard input, and made it fit pipelines.

Newest first

v0.8.0 ← v0.1.0 · 12 Sep – 8 Oct 2026

The CLI is free and MIT. Each release is a universal binary (Apple silicon + Intel) in a zip, and the Homebrew tap points at it.

0.8.08 Oct Terraform, SQLite, and a CLI that fits pipelines. .tfstate, terraform show -json state and plan files are compared resource by resource, with secrets hidden (--show-secrets shows them). SQLite files are compared by schema — tables, columns, indexes, views, triggers — and the answer says the rows were not compared. Standard input works as one side, --quiet / -q answers with the exit code only, --oneline keeps just the summary line, --relative shortens paths in errors, and mrdiff --completions bash|zsh|fish prints a shell completion script. When two files use different line endings, it now says so under the summary; the exit code does not change

0.7.115 Sep JSON/YAML diffs now carry the value, not just the path — ~ version: "1.0" → "1.1" instead of a bare ~ version. A one-line list of paths turned out not to be enough on its own to tell what changed. --json's paths gains before / after (unabridged; the human output's … truncation is display-only)

0.7.015 Sep JSON and YAML, structurally. Two files that both parse as JSON, or both as a deliberate YAML subset, are compared as data — key order stops counting as a change, and an element inserted in the middle of an array does not turn everything after it into noise. Anything that does not parse (anchors, tags, block scalars, multiple documents, or plain text) falls back to the line diff rather than being read wrong. --json gains kind: "json" / "yaml" and a paths array

0.6.014 Sep --offset=dx,dy for images: place the right image on the left one and compare the overlap only — two screenshots whose header moved by a row answer “is the content the same?”. Different sizes are compared over the overlap. The core also exposes its page and glyph renderers, so a viewer can draw with the same hand that judges

0.5.013 Sep PDF text. The text of a PDF is compared alongside the rendering and reported separately — “the text is identical, only the rendering differs” vs “the text differs in 3 lines” — and --text shows the line diff, annotations and form values included. The landing page now leads with “nothing leaves your machine, and it is fast”

0.4.013 Sep Archives, Word documents, fonts. Any zip (docx, xlsx, pptx, EPUB, Sketch) is compared as a folder from its own table of contents; a Word body is compared paragraph by paragraph as a line diff; fonts (OTF, TTF, TTC) glyph by glyph, drawn and compared pixel by pixel. --json gains archive, docx, font

0.3.013 Sep Two folders. mrdiff old/ new/ says which files differ and which exist on one side only — the answer --ssh already gave for a server, now for the folder next door. --json gains kind: "dir"

0.2.013 Sep PDFs. Each page rendered and compared like an image; the answer says which pages differ and where on the page, in millimetres. Page counts and paper sizes are reported separately. Also --help with one line per option, and --lang=en|ja for a one-run language switch

0.1.212 Sep --version, and the release script refuses to build a zip whose version does not match the tag

0.1.112 Sep Three more answers for images: a per-pixel mask, the difference grouped into regions, and the overall tone shift (B − A per channel) — so "44% different" can be told apart from "exported 20 brighter"

0.1.012 Sep First release. Text, images, binaries, two URLs, the clipboard, a deployed site vs its git-tracked folder (--site), a local directory vs a server over SSH (--ssh). --json and --exit-code from day one. Homebrew tap published the same day

About this list

  • Dates are the GitHub release dates (JST). Version numbers follow --version and the tag.
  • Every release here is published with a downloadable zip; there are no tag-only entries.
  • The JSON shape is fixed from v0.1.0 on. v0.2.0 added the pdf kind, v0.3.0 dir, v0.4.0 archive / docx / font, v0.5.0 text inside pdf and the pdf-text kind, v0.6.0 offset inside image, v0.7.0 the json / yaml kinds, v0.7.1 before / after inside those; nothing existing changed.

MrDiff

Swift · MIT License

Created by TABATA Hitoshi · GitHub · 日本語

© 2026 TABATA Hitoshi