TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
翻译准备中
正在加载评论。
正在确认登录状态。
Side-by-side diff for prose, not code: compare Word, LibreOffice and Markdown versions, follow moved text, see new and removed comments, restore tracked changes. AI review of the edits, or of a single document: problems marked in the text, fixes returned as tracked changes and comments in Word or LibreOffice. Two files, two folders or git.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
See what changed between two drafts, and have an AI tell you whether the
revision is better: Word documents (.docx) first, OpenDocument (.odt) and
Markdown too.查看完整 README ↗See what changed between two drafts, and have an AI tell you whether the revision is better: Word documents (.docx) first, OpenDocument (.odt) and Markdown too.
prosediff --setup-git,
git diff, git log -p and git show print .docx and .odt files as
text instead of "Binary files differ", and git difftool -t prosediff
opens the side-by-side report (git integration).What the AI reads. Comparing two versions, the AI is sent prosediff's
own word diff between them ([-removed-], {+added+}), computed from the
two texts and not from the files' Track Changes, and, by default, the whole
new version. Reviewing one file, it is sent the file. Other files can go with it as
context, to draw on, not to assess (--assess-file, or the window's
Other files switch): a journal's guidelines, a reviewer's report, a
cited paper, as PDF, Word, OpenDocument, Markdown or text. Either way, a Word or
OpenDocument file is read with its tracked changes accepted, so the AI sees
the final text, not who changed what: --docx-changes reject-all reads the
text before them, and --docx-changes show keeps them in the text as
marked insertions and deletions, with author and date, for the AI to see
(in the window, Tracked changes). Comments marked resolved are never
sent unless --no-skip-resolved. The AI's answers are saved beside the
report (NAME.ai.json), and --rebuild (the window's Rebuild tab)
remakes the report from them without asking the AI again.
Underneath is a diff made for prose, not code: a self-contained HTML report of two versions side by side, each paragraph facing the one it came from, changed words highlighted inside it. The versions are two Word or OpenDocument documents, two Markdown or text files, two folders, or commits of a git repository.
git diff, GitHub, diff2html, Meld) show a Word
document as a binary file and a paragraph as one long changed line.
Word's Compare Documents gives a third Word file full of revision
marks, and cannot compare folders, git history or Markdown.--no-skip-resolved, or the window's Skip resolved comments
switch, keeps them).uv tool install prosediff
This installs prosediff-gui (the window) and prosediff (the command line).
It needs Python 3.11 or later and git on PATH for
every comparison, files and folders included. The AI assessment is an
optional extra: "prosediff[claude]", "prosediff[codex]" or
"prosediff[models]" (Ollama and API models).
Run prosediff-gui, or double-click it (on Windows it opens no console).
In the window:
prosediff-gui OLD.docx NEW.docx opens the window with two files filled
in. Every option has a tooltip; The window describes them
all. Everything the window does is also on the command line, for scripts
and git: see Command line.
prosediff-gui.prosediff, examples, and git integration.uv run pytest # the tests
uv run playwright install chromium # once, for the browser tests
uv run ruff check && uv run ruff format --check
uv run python docs/make_screenshots.py --assess claude # the README screenshots
uv run --with pillow python docs/make_icon.py # the window icons, from docs/logo.svg
The tests build throwaway repositories with GitPython and need git on
PATH; the browser tests need Playwright's Chromium, and are skipped
without it. The AI assessment is tested with a stand-in for the models, and
once with a real local one, the smallest there is (ollama pull gemma3:270m, 292 MB), skipped when Ollama or that model is missing; no
test calls Claude, Codex or a paid API. The Word tests write their documents with python-docx, or as raw
XML for what it cannot write (tracked changes, footnotes, equations), and
the OpenDocument tests as raw XML. The git tests keep git's global and
system settings out of the way. .github/workflows/tests.yml runs
the linter, and the tests on Windows, Linux and macOS with Python 3.11 and
3.14.
Two benchmarks guide the defaults: docs/passage_benchmark.py (moved
passages, report docs/passage_benchmark.txt) and
docs/word_matcher_benchmark.py (the word matchers, report and
recommendation in docs/word_matcher_benchmark.md). Their test set is kept
in docs/benchmark_data/: the Project Gutenberg books, as served, and the
simulated revisions made from them, so no run downloads or rebuilds them.
prosediff was inspired by diff2html (rtfpessoa/diff2html), whose side-by-side HTML view of a diff it carries over from code to prose.
The HTML report reads and writes the zips of the Word and LibreOffice
documents it offers with fflate
(0.8.3, MIT licence), whose browser build ships with prosediff
(src/prosediff/vendor/, its licence beside it).
prosediff was written with the help of Claude Code, Anthropic's AI coding assistant.