timdommett127 downloadsReview every commit in your vault's git history with a dark-mode diff view, and track which commits you've reviewed and approved. Review state is stored locally so it never creates new commits.
An Obsidian plugin for people who are particular about their vault's git history. It lets you walk through every commit in your vault's repository, read a pretty dark-mode diff for each one, and tick off the commits you've reviewed and approved — with a filter to show everything or just what's left to review.
Built for the classic Obsidian Git auto-commit setup, where commits pile up faster than you can read them.
git log).2 / 5 files reviewed counter shows progress, and when every file is
ticked the commit is ready to approve.The obvious trap: if approving a commit wrote its state into a tracked file, your auto-commit setup would commit that change… which produces a new commit… which needs reviewing… which writes another change… forever.
This plugin avoids that completely:
data.json. Commit hashes never change, so reviews stay glued to the right
commit for good.data.json to your vault's
.gitignore, so changing it never produces a commit. If the file was
somehow already tracked, it's removed from the index (git rm --cached,
your local file is kept).git check-ignore. If your review data is ever not ignored, it turns
orange — click it to fix instantly.In short: your review state is local-only and can never enter your history.
By default your review state is local-only — that's the whole point of the section above, and it's the right default. But if you review on more than one machine, you can opt in to syncing it with Obsidian Sync.
Because the state lives in this plugin's data.json
(.obsidian/plugins/git-history-reviewer/data.json), Obsidian Sync can carry it
along with your other plugin settings:
data.json..gitignore protection
from the section above only affects git; it has no effect on Obsidian Sync,
so your review state keeps out of your vault's history while still syncing
freely.Both devices must be desktop — the plugin shells out to
gitand doesn't run on mobile (see Requirements).
This is deliberately the simplest sync, not the smartest. Two things to know:
data.json once, at startup. If a device already has Obsidian
open when newer review state syncs in, the running plugin won't see it — and
the next time you tick something there it writes its older state back over
the synced file. Reload the plugin (or restart Obsidian) on a device before
reviewing if you last reviewed somewhere else.data.json as a
whole file, so reviewing on two devices at once — or offline on both — lets one
device's session clobber the other's. Review on one device at a time.Used that way — one device at a time, reopen Obsidian when you switch — your approvals follow you around with zero extra setup.
Download main.js, manifest.json, and styles.css from the
latest release,
drop them into <your-vault>/.obsidian/plugins/git-history-reviewer/, reload
Obsidian, and enable Git History Reviewer in Settings → Community plugins.
main.js is a build artifact and is not committed, so build it first:
npm install
npm run build # produces main.js
Then copy main.js, manifest.json, and styles.css into
<your-vault>/.obsidian/plugins/git-history-reviewer/, reload Obsidian, and
enable Git History Reviewer in Settings → Community plugins.
Symlink (or clone) this repo into your vault's plugin folder and run
npm run dev to rebuild on save.
| Setting | What it does |
|---|---|
| Default filter | Which commits show when the view opens. |
| Maximum commits to load | Cap the most-recent N commits (0 = all). |
| Git executable path | Override if git isn't on your PATH. |
| Keep review state local | Auto-manage .gitignore (leave on). |
| Protect review data now | Run the .gitignore protection immediately. |
Bump the version (updates manifest.json and versions.json via
version-bump.mjs):
npm version patch # or minor / major
Push the commit and the tag:
git push && git push --tags
The tag (e.g. 1.0.1, no v prefix) triggers
.github/workflows/release.yml, which runs
npm ci && npm run build and publishes a GitHub release with main.js,
manifest.json, and styles.css attached — exactly what the Obsidian Community
Plugins directory expects.
The workflow follows the official obsidian-sample-plugin conventions (committed
package-lock.json+npm cifor reproducible builds, build-provenance attestation). It publishes a full, non-draft release, as Obsidian's submission flow requires.
To list the plugin in the directory, submit a PR adding it to
obsidianmd/obsidian-releases
once a release is published.
git, which isn't
available on Obsidian mobile.