Skip to content

Releases: MR-TABATA/MrDiff

mrdiff 0.8.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 04:24

sha256: 9195a021cbb6f2b91922f53984923b4b0702c1f4f348688c2b03a26995aa110c

mrdiff 0.7.1

Choose a tag to compare

@github-actions github-actions released this 15 Sep 02:17

sha256: 06904233cc9e1f8c115e70b70daec2bbc7e0939e7c6bf4f293847cffcde068e7

mrdiff 0.7.0

Choose a tag to compare

@github-actions github-actions released this 15 Sep 01:24

sha256: 0ad0d09c28fa791e9529307bd618cb3d276d386df859d45872eabecb1f411881

mrdiff 0.6.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 07:23

--offset=dx,dy for images

Two screenshots whose header moved by one row are "49% different" pixel for pixel. --offset places the right image at (dx, dy) on the left one and compares the overlap only, so the question becomes "is the content the same once aligned?":

$ mrdiff --offset=0,-24 before.png after.png
Images differ — 1,440 of 518,400 pixels (0.3%)
First difference at (356, 260)
  right shifted by (0, -24) — the 518,400 overlapping pixels only
  • Images of different sizes are compared too, over the overlap.
  • The output always states the shift and how many pixels that left to compare.
  • --json: image gains offset: {x, y}; total then counts the overlap. Nothing existing changed.
  • --offset on anything but two images is refused.

The core also exposes its PDF page renderer and font glyph renderer (renderPDFPage, FontGlyphs), so a viewer built on it can draw with the same hand that judges.

日本語

画像の --offset=dx,dy。右の絵を左の (dx, dy) に置いて、重なる範囲だけ比べます ── ヘッダーが 1 行動いたスクリーンショット 2 枚が「49% 違う」ではなく「揃えたら中身は同じか」に答えます。寸法が違っても重なる範囲で比べます。出力は必ず、ずらしと重なった画素の数を言います。--json の image に offset が増え、既存の形は変わっていません。


sha256: b030ccaf579b6d864f116e2e95472aeb5a77165cbb3f57d2686312e87e5b62c0

mrdiff 0.5.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 12:31

PDF text

The text of a PDF is now compared alongside the rendering, and reported separately — a re-exported proof whose fonts changed and a contract whose clause changed are different events:

$ mrdiff proof-v1.pdf proof-v2.pdf
PDFs differ — 1 of 12 pages
p.7  1 region
     top 69 mm, left 96 mm, 16 × 5 mm
  the text is identical — only the rendering differs (fonts, images, layout)

--text shows the text diff instead: one line per extracted line, [p.N] marking pages, with the character-level highlight. Annotations (FreeText notes, comments) and form-field values are included as [FreeText] … lines. A PDF with no text (scanned pages) says so.

$ mrdiff --text contract-v1.pdf contract-v2.pdf
text: 1 lines changed, 0 added, 0 removed
   12      - Article 3  Delivery by 31 October 2026.
        12 + Article 3  Delivery by 30 November 2026.

--json: pdf gains text: {result, changed, added, removed, lines_a, lines_b} (null when a side has no text); --text reports kind: "pdf-text". Nothing existing changed.

The README's speed table now has a text row: a 780 MB, ten-million-line log with two changed lines compares in 0.7 s (warm cache).


日本語

PDF の文字も見た目と並べて比べ、別に言います ──「文字は同じ、違うのは見た目だけ」と「文字が N 行違う」。--text で行 diff が出ます([p.N] がページの境、注釈とフォームの値も含む)。文字の無い PDF(スキャン)はそう言います。--json は pdf に text が増え、--text は kind: "pdf-text"。既存の形は変わっていません。


sha256: c7c9981a1135c83909e4b4c9eee0e601005b551ed95fd9aa9c4d8e3eba0f1b09

mrdiff 0.4.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 11:41

Archives

Any zip — docx, xlsx, pptx, EPUB, Sketch, jar — is compared as a folder: which files inside differ, read from the archive's own table of contents (CRC and size per entry), without unpacking.

$ mrdiff deck-v1.pptx deck-v2.pptx
changed   ppt/slides/slide3.xml
only in B   ppt/media/image7.png
1 changed, 0 only in A, 1 only in B (inside the archive)

Word documents

When both archives hold a Word body, each paragraph's text is pulled out and compared as a line diff — one paragraph per line, with the character-level highlight. Other parts (formatting, media, properties) are counted, not compared.

$ mrdiff contract-v1.docx contract-v2.docx
paragraphs: 1 changed, 1 added, 0 removed
  1 other parts differ (formatting, media, properties) — the text above is what changed in the body
    1       - Article 1  Delivery by 31 October 2026.
          1 + Article 1  Delivery by 30 November 2026.

Fonts

OTF, TTF, TTC. Every character both fonts have is drawn into the same 48 px cell and compared pixel by pixel; characters only one side has are listed as added or removed. WOFF is not read.

$ mrdiff Mincho-1.002.otf Mincho-1.003.otf
Fonts differ — 12 of 6,842 glyphs render differently
  first: あ U+3042
  only in B: 3 characters (first ① U+2460)
  version: 1.002 → 1.003

--json gains kind: "archive", "docx", "font". Nothing existing changed. The README now also lists what ImageIO already decodes (PSD, HEIC, AVIF, WebP, TIFF, camera RAW).


日本語

  • アーカイブ:zip なら何でも(docx・xlsx・pptx・EPUB・Sketch・jar)目次からフォルダとして比べ、中のどのファイルが違うかを言います。展開しません
  • Word 文書:両方に本文があれば、段落ごとの文字を抜いて行 diff に掛けます。書式・画像・プロパティは数だけ
  • フォント:OTF・TTF・TTC。両方が持つ文字を同じ枠に描いて画素で比べ、違った字形と増減した文字を言います。WOFF は読みません

--json に archive・docx・font が増え、既存の形は変わっていません。


sha256: 76c8fa938ff980d9b51b953d59629bb14c3818316412a4b5949ee66ef4837799

mrdiff 0.3.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 11:21

Two folders

mrdiff old/ new/ walks both trees and 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.

changed   ch/chapter-02.pdf
only in A   appendix.md
only in B   chapter-07.md
1 changed, 1 only in A, 1 only in B
  • File level on purpose: hand it the two files and it tells you which page / which pixels.
  • Nothing is filtered (.DS_Store counts, as with diff -r).
  • --json gains kind: "dir" — same shape as tree, with only_a / only_b. Nothing existing changed.
  • A folder and a file are not compared; --tolerance / --ignore-alpha are refused for folders.

フォルダ 2 つ(日本語)

mrdiff old/ new/ で両方のツリーを歩き、どのファイルが違うか・片側にしか無いかを言います。--ssh がサーバ相手に返していた答えを、隣のフォルダに。ファイル単位で止めるのは意図したもので、その 2 本を渡せばどのページかまで出ます。--json には kind: "dir" が増え、既存の形は変わっていません。


sha256: bad277b76c18d74f2989634069df788dccdb9498de801f3401d46a7b55a03beb

mrdiff 0.2.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 08:01

PDF

mrdiff a.pdf b.pdf compares PDFs page by page and says where on the page — in millimetres, not pixels.

PDFs differ — 1 of 12 pages
p.7  2 regions
     top 107 mm, left 25 mm, 71 × 14 mm
     top 205 mm, left 106 mm, 21 × 21 mm
p.13  only in B
  • Pages are paired by number; extra pages are listed, not compared. A page whose paper size differs is reported and not compared further.
  • Rendered at 72 dpi on white. --tolerance works as for images; --ignore-alpha is refused (nothing to apply to).
  • --json gains kind: "pdf" with pages[] and regions[] in mm. Nothing existing changed.

--help and --lang

  • mrdiff --help — every option, one line each.
  • --lang=en|ja — same as MRDIFF_LANG, for one run. mrdiff --help --lang=ja shows the help in Japanese. The OS locale is still never consulted.

PDF(日本語)

mrdiff a.pdf b.pdf で PDF をページごとに比べ、そのページのどこかを画素ではなく mm で言います。ページは番号で対にし、余ったページは列挙するだけで比べません。紙の大きさが違うページはそう言って、それ以上比べません。--json には kind: "pdf" が増え、既存の形は変わっていません。

--help と --lang

mrdiff --help でオプションの一覧(1 つ 1 行)。--lang=ja は MRDIFF_LANG=ja と同じで 1 回きり。mrdiff --help --lang=ja で日本語の一覧が出ます。


sha256: 8725f25221c76b2c1df2bf926f8246fa351a3b5cb0ac2217864c0555bc886692

mrdiff 0.1.2

Choose a tag to compare

@github-actions github-actions released this 12 Sep 13:20

sha256: 013f9cb9d03424376cf31ce6791b171d778134139a147aafacbf6c71b7fbd634

mrdiff 0.1.1

Choose a tag to compare

@github-actions github-actions released this 12 Sep 13:13

sha256: 4afb4b789248af1d9b4dc0341360ab26c1d8ed3ef5ba71b09ad29e4ef9f71087