Visorr for Craft CMS

Installation

Requirements

  • Craft CMS 5.3 or later
  • PHP 8.2 or later

No runtime dependencies and no build step. The word-level diff is a few hundred lines of PHP in the package rather than a Composer dependency.

Install

composer require justinholtweb/craft-visorr
php craft plugin/install visorr

The install migration creates three tables — visorr_pins, visorr_revision_sites and visorr_prunes. Everything else Visorr reads comes from Craft's own revisions, elements and elements_sites, which is why Visorr can compare revisions written years before it was installed.

Editions

Craft 5LitePro
Price—Free$49, $29/year renewal
List an element's revisions✓✓✓
Revert to a revision, wholesale✓✓✓
Compare two revisions, field by field—✓✓
Compare a revision against what's live—✓✓
Matrix blocks compared block by block—✓✓
Pin a revision so pruning skips it—✓✓
Purge one element's history—✓✓
Retention policiesone global number—✓
Prune a section, a type, or everything——✓
Scheduled pruning——✓
Restore individual fields——✓
Storage report——✓
Per-site history for shared elements——✓
Console commands—visorr/sites/*✓

The line is seeing versus governing. Lite is the comparison screen Craft should have shipped, plus pinning and purging one element at a time. Pro adds policy across the whole site.

Lite never takes away anything Craft already gave you — whole-element revert stays Craft's own, in both editions.

Permissions

Four permissions, under Settings → Users → the group → Visorr:

PermissionWhat it allows
View revision history and comparisonsThe Visorr screens and the sidebar panel
Pin and unpin revisionsProtecting revisions from pruning
Restore content from a revisionWriting revision content back onto a live element
Delete revisionsPruning and purging

They sit on top of Craft's, never instead of them, because a revision is the element — granting "view revision history" does not open a door around your existing section permissions:

  • Seeing an element's history, comparing it, or pinning its revisions needs the right to view the element, including the right to edit its site on a multi-site install.
  • Changing it needs the right to edit the element as well. That covers restoring fields, reverting the whole element, deleting revisions and purging its history, from either screen.
  • Pruning a section, an element type or everything enforces the retention policies, which an admin wrote, so the delete permission is enough. Purging such a scope regardless of policy takes an admin.
  • The overview, the storage report and the pinned list don't show the titles of elements you can't view; their totals still count them.

Your first comparison

  1. Open any entry that has been saved more than once.
  2. In the sidebar, find the Visorr panel and click Compare.

The screen opens on the most useful comparison there is — the last saved revision against what is live — and lists only the fields that moved, biggest change first. That last part matters more than it sounds: an entry with forty fields and one edited paragraph should not be forty rows of grey.

If the panel is not there, either the user lacks View revision history, or showRevisionPanel is off. See Configuration.

Nothing to switch on

There is no step three. Visorr reads history Craft was already writing, so a fresh install has a full comparison screen immediately, with no backfill and no waiting for new saves.

The one thing worth doing on day one is running the storage report — php craft visorr/report, or Visorr → Storage — before you write any retention policy. Revision bloat is never spread evenly, and the report is what tells you which two sections are actually the problem.

More in Editorial

Pairs well with Visorr

For the people writing the content. Scheduling, staging, revision diffs, house style, find and replace, and a warning before two editors overwrite each other.