TODO:

Medium-prio:
* (testsuite) Provide ~100% automated test coverage of all functionality.
* (feature) Show "you have N pending edits" link to non-automoderated users
	("shopping cart" style), so that they would know to which pages
	to return to continue editing.

Low-prio:
* (feature) Special page to list users blocked via "Mark as spammer".
* (feature) modaction=promote for quickly assigning "automoderated" flag.
* (documentation) Ensure that testsuite and hooks have Doxygen-style comments.
	Testsuite is documented quite well, but those are non-Doxygen comments.
	The list in README.testsuite is outdated and inconvenient to maintain.
* (interface) Improve $wgModerationUseAjax - actions like Approve via Ajax
	(without leaving Special:Moderation). Partially implemented,
	but need feedback from users on UX (is it convenient to use or not?)
* (testsuite) Selenium testsuite: investigate test flakiness of notify.js
	(in IE11, notification sometimes doesn't disappear after the click)
* (feature) Support gzip compression and external storage of mod_text.
	Since MediaWiki 1.31, this can be easily done using BlobStore class.
* (feature) Backup previous text when a pending change is modified.
	This would prevent situation when a user has accidentally deleted
	important text in his own pending change, and the old text wasn't
	recoverable.
	It would also make [action=editchange] safe from moderator's errors,
	and would allow to log what exactly did the moderator change.
	Note: this backup must be in a separate SQL table.
	Not having "edit history" in moderation table simplifies everything.
* (feature) Support MCR (multi-content revisions) - editing of non-main slots.
	Note: this is easier to implement after MW 1.31 becomes deprecated,
	because 1.31 didn't support MCR.

Background-prio (may not be needed):
* (meta) Display notification "Please run update.php" on Special:Moderation if
some new feature (that requires DB update) is disabled because it wasn't done.
* (feature) Add "rejected edits" link for moderators in ContributionsToolLinks hook.
	It's not a simple UI change, because "moderation" SQL table currently
	doesn't have an index for selecting edits by author.
* (feature) Should ApproveHook update timestamps of upload/move logs?
* (UX) Improve handling of null edits. (having to reject them manually doesn't feel right)

Unit tests:
* Use mocks to decouple unit tests (under tests/consequence/) to such a degree
that generating code coverage with --strict-coverage would be possible.

FIXME:
* When approving, tags related to moderator (and unrelated to original author)
	shouldn't be applied (e.g. if moderator clicks Approve in Mobile view,
	approved edit shouldn't be tagged as "Mobile edit" - unless, of course,
	the original author also used Mobile view and this tag is in mod_tags).
* When modaction=merge results in null edit (because some other user previously
	modified the target page to have exactly the same text),
	edit of this other user shouldn't be tagged as [moderation-merged].
* "Move associated talk page" checkbox should work for intercepted page moves.
	Note: this is easier to implement after MW 1.31 becomes deprecated,
	allowing MovePageCheckPermissions hook to be replaced with TitleMove.
