This module provides opinionated extensions to the diff module that can be developed at a higher velocity than the base module.

New diff user interface featuring user avatars and a minimalist distraction-free configuration strategy

Configuration

This module takes a user-centric approach by optionally allowing for per-user customization of most configuration items. Site owners may (and are encouraged to) grant roles the permission to customize diff plus configurations. Since not everyone is identical, users should be able to optimize their own editorial experience.

Diff Layout Plugins

Presently, a couple new diff layout plugin types are available, Visual Inline (HTML5) and Raw HTML.

The Visual Inline (HTML5) Layout

This is an attempt at improving the Visual Inline layout of the Diff module. It turns off HTMLPurifier for source content and greatly expands the HTML elements that are allowed to be processed by the upstream caxy/php-htmldiff library. See https://www.drupal.org/project/diff_plus/issues/3336511 for progress on beautiful and intuitive <img>and <picture> diffs!

The Raw HTML Diff Layout

Sometimes, changes cannot be sufficiently described by any existing diff layouts.

  • The Visual layout has problems rendering certain elements such as pictures, buttons, etc...
  • Interactive elements that require javascript to function such as accordions, tabs, carousels, etc, often render...strangely.
  • Certain non-visual information added via Layout Builder Overrides may have zero visibility with any of the existing Diff layouts. For example, what about a user-configurable ID on a section?

Raw HTML diff preview showing an added line of content.

While there may be more end-user-friendly ways of tackling these problems, the most simple and direct approach is to simply provide a diff of the rendered HTML itself.

Have a suggestion?

Feel free to open an issue. Be sure to provide your use case and an actionable plan.

Project information

Releases