Skip to main content

Terminal UI for reviewing markdown documents with inline comments

Project description

mdreview

Terminal UI for reviewing markdown documents with inline comments. Built with Python and Textual.

Features

  • Inline comments — select line ranges and add comments, stored in sidecar .review.json files
  • Review workflow — approve or request changes on each file, with exit codes for CI integration
  • Diff between rounds — see what changed since your last review decision
  • Mermaid diagrams — ASCII rendering in the terminal, or open in mermaid.live
  • Anchor drift — comments follow content when lines are added, removed, or moved
  • Live reload — files reload automatically when modified externally
  • Multi-file — review multiple files or an entire directory in one session

Installation

# From PyPI
pip install mdreview

# Or with uv
uv tool install mdreview

# Or with pipx
pipx install mdreview

# From source
uv tool install git+https://github.com/lazyoft/mdreview.git

Usage

# Review a single file
mdreview document.md

# Review multiple files
mdreview chapter1.md chapter2.md chapter3.md

# Review all markdown files in a directory
mdreview --dir docs/

Keybindings

Key Action
Up/Down Move cursor between blocks
Left/Right Previous/next file
c Start/confirm line selection for comment
Shift+Up/Down Extend selection
Ctrl+S Submit comment (in modal)
Esc Cancel selection or input
d Delete comment (when popover visible)
D Delete all comments on file
e Edit comment
A Approve file
R Request changes
v Toggle diff view
f Open file selector
m Toggle Mermaid ASCII/raw
o Open Mermaid diagram in browser
? Show help
q Quit

Customizing Keybindings

All keybindings can be customized via a TOML config file. Run:

mdreview --config

This creates ~/.config/mdreview/keys.toml (pre-populated with all defaults) and opens it in your $EDITOR. Edit any key and save — changes take effect next time you launch mdreview.

Example customization:

[keys]
quit = "x"
approve = "a"
cursor_up = "k"
cursor_down = "j"

Exit Codes

Code Meaning
0 All files approved
1 Changes requested on one or more files
2 Incomplete — unreviewed files remain

Development

# Clone and install in dev mode
git clone https://github.com/lazyoft/mdreview.git
cd mdreview
uv venv && uv pip install -e ".[test]"

# Run tests
uv run pytest

# Lint
uv run ruff check src/

See CONTRIBUTING.md for more details.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mdreview-0.3.0.tar.gz (99.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mdreview-0.3.0-py3-none-any.whl (31.5 kB view details)

Uploaded Python 3

File details

Details for the file mdreview-0.3.0.tar.gz.

File metadata

  • Download URL: mdreview-0.3.0.tar.gz
  • Upload date:
  • Size: 99.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mdreview-0.3.0.tar.gz
Algorithm Hash digest
SHA256 1f672c7c287796c902e1b8c9c3e4933f4733eb5f9ae40415975cb24ff79e5fca
MD5 18ee02f5453619d675c9f479a2cf7a7f
BLAKE2b-256 d6655e661166639820df7f619ba19ed356a26fcb8a0f99e8a200671d009ed72e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdreview-0.3.0.tar.gz:

Publisher: publish.yml on lazyoft/mdreview

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mdreview-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: mdreview-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 31.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mdreview-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5a6a473cf79b980b5d3bf54be672b34cd430475fb02b1a262257e67c322fcb93
MD5 d8f6cf19e81ce3ace1a31b71a709c08c
BLAKE2b-256 09366e7a5a4c55b33a0989ee8f2f5d02e978c21185e602977504f8fc92980beb

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdreview-0.3.0-py3-none-any.whl:

Publisher: publish.yml on lazyoft/mdreview

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page