In-place Diff View

Disclaimer

Is this plugin open source? Yes
Is this plugin completely free? Yes
Is this plugin vibe-coded beyond the author’s ability to comprehend how it works? No
Community Directory: In-place Diff View


In-place Diff View — review AI edits (or any text corrections) inline, then accept or reject each one

Demo: markers in Live Preview with the hover tooltip

Repo: https://github.com/glechic/inplace-diff-view

I do a lot of my writing with an AI agent in the loop, and I kept hitting the same wall: the agent would “fix” a note by rewriting whole sentences, and I couldn’t see what actually changed without diffing versions in another tool. So I built a small workflow, and this plugin is the viewing half of it.

The idea: corrections are written into a copy of your note using tiny inline markers:

I've been using for {a half | half a} year now, and {coping | copying} files every day.
Watch out {note|ambiguous — did you mean X or Y?}

The plugin renders those in Reading view and Live Preview:

  • {old | new} — old text in struck-through red, new in green, arrow between
  • {|word} — pure insertion (green)
  • {word|} — pure deletion (red strikethrough)
  • {note|...} — a blue chip for observations and questions that aren’t corrections

Hover a marker and you get a tooltip:

  • Corrections: Accept new / Keep old
  • Notes: Delete note

Each action is a single undoable editor transaction — ⌘Z reverts it. There are also commands for the lazy path: Accept all corrections, Keep original text for all corrections, Delete all notes.

Where the markers come from is up to you — the syntax is deliberately trivial. I generate them with an AI agent skill (the README documents the full syntax contract and how to encode it as a skill for whatever agent you use). But it works just as well for human proofreading: paste a text into a copy of a note, mark it up by hand, then sweep through with the tooltip.

A few implementation notes for the curious:

  • markers inside code fences and YAML frontmatter are ignored, so code snippets with braces never break
  • pipes inside markdown tables are escaped ({a \| b}) and still render as markers
  • only word-level changes belong in markers — the old side must match the original exactly, or it stays raw text (a nice property: broken markers are inert, they just look like text)
  • in Live Preview, the marker under your cursor stays raw so you can edit it, then re-renders when the cursor moves away

Install (pending review for the community directory):

  1. Grab main.js, manifest.json, styles.css from the 0.1.1 release
  2. Drop them into <vault>/.obsidian/plugins/inplace-diff-view/
  3. Enable “In-place Diff View” in Settings → Community plugins

Or install via BRAT: add glechic/inplace-diff-view as a beta plugin.

Happy to hear feedback, especially on the marker syntax — if you’d use this with a different workflow (git-based review, languagetool output, whatever), I’m curious how the syntax would need to bend.

  • More themes / appearance options
  • Settings (marker colors, hover delay)
  • Editor suggest: type { and get marker autocomplete
  • Ability to change | as a separator to another symbol in the settings like to ,