Tijs van Erp10 downloadsReview side panel for OKF documents: record human verification events, set lifecycle status and stale-after dates.
An Obsidian plugin that adds a review side panel for OKF (Open Knowledge Format-style) documents — notes whose frontmatter carries a type. It lets a reviewer record verification events, set a lifecycle status, and manage a stale_after review date, all written straight to the note's frontmatter.
type in its frontmatter), and stays inactive — without touching the note — for non-OKF or malformed-frontmatter notes.stale_after has passed.verified event as { by: <reviewer identity>, at: <now> }. It appends alongside any existing events from other actors (a single object promotes to an array on the second event), but overwrites the at in place if that reviewer identity already has an event, instead of piling up duplicates.verified key is removed entirely once the last event is gone.draft, stable, or deprecated.processFrontMatter; a failed write shows a Notice and the panel reverts to the persisted state — body text and unrelated frontmatter keys are never touched.Each OKF document's entry in the file explorer is annotated with three independent signals:
generated.by: green if human-authored, blue if machine-authored, left uncolored if unknown.status: a muted [DRAFT] suffix for drafts, a strikethrough for deprecated, nothing for stable. Unknown, missing, or malformed statuses leave the label plain — the file name itself is never modified (the suffix is a separate decoration element).Green/blue/red are tuned separately for light and dark themes to keep sufficient contrast in both; the status decoration inherits the entry's existing color, so it works in both themes as-is. Labels update within a second of a status change (panel edit, frontmatter edit, or external write) and are removed cleanly when the plugin is disabled.
In Settings → OKF Reviewer:
human:<id> actor recorded as by on Mark verified (default human:reviewer).That's the only setting. Status and stale-after have no configurable defaults — status is a row of buttons that just reflects whatever's already set, and stale-after has its date picker plus 30/90/180/365-day preset pills right in the panel, so a settings-level default would just be one more place to look instead of one less click.
| Key | Shape | Notes |
|---|---|---|
type |
non-empty string | required for the plugin to treat a note as an OKF document |
verified |
{ by, at } or a list of those |
by is free text; a human:<id> prefix marks it as a human event |
status |
draft | stable | deprecated |
optional |
stale_after |
YYYY-MM-DD |
optional; a past date means the document is due for review |
generated.by |
free text | optional, read-only to this plugin; drives the file-explorer text color |
This plugin isn't in the community plugin store. To install it manually:
.obsidian/plugins/okf-reviewer/.npm run build first if installing from source).npm install # install dependencies
npm run dev # esbuild in watch mode
npm run build # type-check (tsc) + production bundle
npm run lint # eslint (eslint-plugin-obsidianmd)
npm test # vitest — unit tests for the pure frontmatter/marker logic
src/okf.ts and src/markers.ts are plain TypeScript with no Obsidian imports, so the frontmatter mapping and file-explorer marker rules are covered by npm test independent of a running vault. Everything else (main.ts, panel.ts, settings.ts, explorer.ts) is Obsidian-API glue, validated manually in a live vault.
0BSD — see LICENSE.