VisualEditor/Diffs

Inside the visual editor or the 2017 wikitext editor, you can now see visual diffs (differences) of changes to the document before you save, alongside the diff>Help:Diff|traditional two-column wikitext diff.

How it works
[[File:VisualEditor_visual_diff_tool_-_visual_diff.png|alt= Screenshot showing some changes to an article. Most changes are highlighted with text formatting. |left|thumb|300px| When you are finished editing the page, type your edit summary and then choose "".

In visual mode, you will see additions, removals, new links, and formatting highlighted. Other changes, such as changing the size of an image, are described in notes on the side. ]]





Why this feature?
This has two purposes. Firstly, editors can see the changes they and others have made without needing to know the intricacies of wikitext>Special:MyLanguage/wikitext|wikitext. This is particularly helpful for clearly seeing e.g. that a user has deleted a column in a table, as the wikitext diff is quite baffling.

Secondly, we can use the technology to more richly and usefully represent the change to the reader, rather than just a basic string matching. For example, we can identify when an edit swaps two paragraphs and represent it as such, rather than edits to delete one paragraph and add another (which may or may not be identical).

This is currently available as the first diff tool in the desktop visual editor from the 1.31.0-wmf-20 branch onwards (released to Wikimedia production from 6 February 2018). Before that, it was a secondary tool from the 1.29.0-wmf-17 branch onwards (released to Wikimedia production from 21 March 2017).

Features

 * Detects paragraph moves + changes
 * Structural table changes shown more clearly

Technology



 * Google Diff, Match and Patch
 * TreeDiffer.js

Current limitations

 * Some edits aren't shown very clearly, as we haven't added custom explanations for all kinds of content. In particular, references, custom extension tags, and templates need better, more sensible explanations.
 * Some behaviour switches that add UI elements such as TOC or edit links aren't shown.
 * No notices for changes to "invisible" page metadata.
 * ✅ Not yet available on mobile.
 * Has issues with complex changes to lists and tables.
 * Unavailable in certain special pages
 * Undo "diff" pages T78550.
 * Edit conflict pages T153298, T190649.
 * Historical diff pages T167508.
 * Experimentally enabled via feature flag, or appending  to the query string: example
 * ✅ Diffs are shown for the edits from the moment you started the editor – so if you switch mode to wikitext and back, you will only see changes since you moved back, not since you started editing overall.
 * Breaks twinkle rollback on wikipedia https://phabricator.wikimedia.org/T192755#4165632