From marks to mapped edits
Every markup in the PDF becomes a review item anchored to a source line.
Works in
Two places, one shared core and one review format.
▣ VS Code
Released. Activity-bar tree, inline decorations, Problems panel, comment threads and lightbulb quick-fixes.
◇ Obsidian
New; the first release is pending and the plugin has not yet been tested on real devices. A review panel, editor markup, and mobile support through the same code.
›_ Command line
Extract, map, report, stamp and strip anchors without an editor. It reads and writes the same review files.
What it does
Extract, map, review, and act — without ever rewriting your prose automatically.
◈ Extracts
Highlights, strikethroughs, underlines, sticky-note comments and caret/insert marks from the PDF via pdfjs — including the comment body and author.
⇄ Maps
Fuzzy text matching that strips AsciiDoc syntax first, so a highlighted phrase lines up with your markup-laden source. Unicode-aware (incl. Cyrillic).
▤ Shows
An activity-bar tree grouped Open / Needs review / Unmatched / Resolved, inline decorations with hovers, and Problems-panel diagnostics.
✎ Acts
Lightbulb quick-fixes: delete struck text character-precisely, replace a marked range, insert at a caret offset, or pull a remark in as a comment. All explicit and undoable.
☰ Triages
Clear a pile of unmatched marks in one keyboard pass, each with a pre-ranked shortlist of candidate source lines to link or skip.
⤓ Tracks
Resolution state, replies and manual re-links persist in a diffable .review.json sidecar — preserved across re-maps and across rounds.
◐ Handles rounds
Several rounds, each with several annotated PDFs from different editors. Resolved state carries forward; mappings can be merged or extended with more PDFs.
◇ On mobile
In Obsidian the same code is meant to run on phones and tablets, with the PDF kept in the vault. Checked on desktop Obsidian and tried on a phone.
Eddie Doc for Obsidian
Review an editor's PDF against your AsciiDoc source, inside your vault.
The plugin gives you a review panel (Open, Needs review, Unmatched, Resolved) with threaded replies, resolve, and buttons that apply a struck-out deletion or a replacement to the source. In the editor it adds line highlights, gutter number badges and hover text, display only and never written to your file. It does not render AsciiDoc; use another plugin for a preview.
Status: version 1.4.0. It has been tested in a running Obsidian on macOS (1.8.4 and 1.13.7) and tried on a phone, though not measured on a large PDF. It is not in the community plugin list yet.
- Download
main.js,manifest.jsonandstyles.cssfrom the release whose tag has novinto<vault>/.obsidian/plugins/eddie-doc/and enable the plugin, or addVolland/eddie-docin the BRAT plugin. - Put the
.adocand the annotated PDF in the vault. - Run Eddie Doc: Open PDF review and work through the panel.
How mapping works
Robust to the source and PDF not being character-identical.
- PDF markup annotations carry quadPoints — per-line rectangles over the marked text. Eddie Doc intersects those with the positioned text of each page to recover the words under the mark.
- Both the recovered text and every source line are normalized — AsciiDoc delimiters, roles, macros and inline markers stripped, lowercased, punctuation removed.
- They're compared with a blended Sørensen–Dice (bigram) + token-overlap score over a sliding window of source lines. The best span above the threshold wins.
- Low-confidence matches surface as Unmatched for a one-click manual re-link, rather than guessing.
The workflow
Navigate + review, edit by hand. Eddie Doc points you at the right line and remembers what you've handled.
- Open the
.adocyou're reviewing and run Eddie Doc: Open PDF Review for AsciiDoc. Pick the annotated PDF. - Annotations appear in the sidebar and as inline markers. Click to jump; hover a line to read the comment and mark it resolved.
- Edit your
.adoc, then run Re-map Annotations to re-check positions. Resolution state is preserved across re-maps.
An open, portable artifact
The review lives in a committable, tool-agnostic sidecar — not locked inside the editor.
Every mapping is stored as a .review.json file in the
Eddie Doc Review Format: a versioned, schema-validated
standard with relative paths and content hashes, so it travels with your repo or vault
and can be read by the VS Code extension, the Obsidian plugin, the CLI, a CI gate, or another editor.
Tell us what to build next
A five-minute survey for people who actually run review rounds.
Which features earn their place, how often marks land under Unmatched, and the one thing you wish Eddie Doc did — the answers go straight into the roadmap. No account needed, and you can skip anything.