MediaWiki 1.31/wmf.20/Changelog

Core changes

 * - DI for CommentStore in WatchedItemQueryService
 * - Mock CommentStore in some RevisionTest tests
 * - Add @covers for RemexStripTagHandler
 * - installer messages: Move to https: links when available
 * - Remove superfluous spaces and semicolons in comments
 * - Follow-up ed76b6736: Also remove the now-unused $mExtStyles
 * - jquery.textSelection: Fix typo
 * - Pass $key into CommentStore methods and use MediawikiServices
 * - Use HTTPS instead of HTTP for interwiki
 * - jquery.localize: Fix rendering of generated documentation
 * - convertExtensionToRegistration: Set requires key in extension.json
 * - Fix back-compat method Article::updateRedirectOn
 * - Use wikimedia/object-factory 1.0.0
 * - Fixing typos for ucfirst magic word translation into Ukrainian: ПЕША_ДІТЕРА → ПЕРША_ЛІТЕРА.
 * - rdbms: clean up and improve LoadBalancer logging calls
 * - EmailNotification: Hard deprecate updateWatchlistTimestamp
 * - rdbms: turn LoadBalancer waitTimeout default into a class constant
 * - Add Siberian Tatar (sty) language
 * - skins: Deprecate MediaWikiI18N::translate
 * - mediawiki.api.edit: Fix errors
 * - skins: Deprecate QuickTemplate::setTranslator and MediaWikiI18N::set
 * - Remove Skin::showIPinHeader, deprecated since 1.27
 * - OutputPage: Remove methods deprecated in 1.27 or before
 * - Add tablesUsed to RevisionStoreDbTest
 * - Do not concat exception class name in Timestamp compat
 * - Preload module 'mediawiki.notification'
 * - Throw exception if php-curl is missing
 * - mediawiki.api.edit: Remove dependency on 'mediawiki.Title'
 * - mediawiki.api.category: Avoid exceptions
 * - Print: pre-wrap elements
 * - SiteStats row initialization cleanups
 * - Add mobile and desktop thresholds
 * - rdbms: Bump TransactionProfiler log entries to WARNING
 * - benchmarks: Fix divide by zero in Benchmarker
 * - Added letter Kra (ĸ) to special characters toolbar
 * - Remove wrapclass from parser cache key
 * - Add 'unwrap' ParserOutput post-cache transform
 * - Shell: Set pipes to non-blocking
 * - objectcache: use region prefixes for mcrouter-backed WAN cache
 * - Force CommentMigration MIGRATION_OLD in 2 RevisionTest tests
 * - Add missing PHPDoc block to DifferenceEngine::getParserOutput
 * - qunit: Test `before` and `after` hooks in QUnit testrunner
 * - Add ability to proxy thumbnail requests to a service
 * - Fix invocation of MWHttpRequest::factory with one argument.
 * - Bump composer/spdx-licenses to 1.3.0
 * - Hygiene: Use “OOUI” as unified name in build and code documentation
 * - deferred: Make MWCallableUpdate support a list of DB handles
 * - Make interim WAN cache key deactivation logic broader
 * - qunit: Refactor and simplify testrunner to fix nested modules
 * - skins: Deprecate QuickTemplate::setRef
 * - tests: Add @group and @covers to wfArrayFilterTest
 * - rdbms: set the schema in the LBFactory local domain
 * - jquery.textSelection: Remove code supporting IE 6 selection APIs
 * - jquery.textSelection: Remove final remnants of WikiEditor iframe support
 * - rdbms: make affectedRows work more consistently
 * - JavaScriptMinifier: Fix "Uninitialized offset" in regexp char class parsing
 * - rdbms: avoid pointless "SHOW SLAVE STATUS" calls in masterPosWait
 * - Fix issue when modifying groups in Special:Userrights
 * - Rewrite pref cleanup script
 * - Fix $wgSharedDB with sqlite
 * - parser: Replace Sanitizer::armorLinksCallback with a closure
 * - postEdit: Show a different success messsage on publish vs. save wikis
 * - resourceloader: Move FILTER_NOMIN annotation to the beginning of output
 * - SpecialPage: Hard deprecate getTitle, deprecated since 1.23
 * - Revert "Remove workaround for comparing database domain IDs."
 * - Remove unused method parameters from TestBagOStuff
 * - SpecialExpandTemplates: Remove leftover 'mw-ui-input-inline' class
 * - jquery.textSelection: Remove outdated FIXME comments
 * - Remove workaround for comparing database domain IDs.
 * - rdbms: clean up non-native Database::replace code
 * - objectcache: add some WANObjectCache comments to set and delete
 * - resourceloader: Add minified version of mw.loader.implement wrapper
 * - resourceloader: Disable minify for embedded 'user.options' module
 * - Revert "selenium: add new message banner test to user spec"
 * - RCFilters: replace usages of deprecated getSelectedItem
 * - .mailmap: Fix my name to use the form used elsewhere
 * - Hide link to ApiSandbox in ApiSandbox
 * - [MCR] RevisionStore::getTitle final logged fallback to master
 * - benchmarks: Add benchmarkSanitizer.php
 * - benchmarks: Add rate per second and standard deviation to output
 * - benchmarks: Simplify benchmarkLruHash.php by using a --method option
 * - API: Allow to pass whitespaces in MultiValue
 * - Improve MediaWiki's lock file error message when uploading files
 * - Move @group and @covers tags in tests close to class
 * - Update CREDITS file to include new contributors
 * - Use ::class to resolve class names in includes files
 * - Remove deprecated PreparedEdit properties
 * - benchmarks: Improve readme and convert to Markdown
 * - Remove "Created on" from file header comments
 * - Use ::class to resolve class names in tests
 * - Revert and fix "Revert "EditPage: Show EditFilterMergedContent hook errors in an errorbox""
 * - Make DatabaseMysqlBase::insertSelect safer to use
 * - Remove misleading comment for $wgLegalTitleChars
 * - cleanupTitles: Don't add 'Broken/' prefix if the title is valid without it
 * - Gallery: Use Parser::parseWidthParam for gallery dimensions
 * - SpecialPage: Fix typo in comment
 * - Convert the sha1 value from base-36 to base-16
 * - LivePreview: Add uselang parameter to API diff request
 * - rdbms: Simplify Database::factory
 * - Use RevisionLookup and RevisionFactory interfaces in Revision
 * - Extra tests for SqlBlobStore with 'windows-1252' legacy encoding
 * - selenium: add new message banner test to user spec
 * - widget: Fix changes of copyright year
 * - Load preferences js/css in mobile
 * - poolcounter: Fix type hint for PoolWorkArticleView::getParserOutput
 * - Don’t write to stderr when testing
 * - Add missing Maintenance import
 * - Create factory for MWHttpRequest
 * - ExtensionRegistry: Properly detect if a global is already set
 * - Remove dot from summary used by fixDoubleRedirects.php
 * - Use ::class to resolve class names in maintenance scripts
 * - Phan: resolve and reenable PhanAccessMethodProtected
 * - Make Gender normalize usernames
 * - Use getSize since SearchSuggestionSet does not implement Countable
 * - mediawiki.special.upload: Use ES5 .forEach instead of jQuery
 * - Use MediaWiki\restoreWarnings in deprecated wfRestoreWarnings
 * - Fix called function case in a bunch of places
 * - Replace some of MaintenanceTest with dataProviders
 * - Refactor MaintenanceTest to use a base test case
 * - Begin splitting out maintenance test base classes
 * - watch.js: Let api.js do the joining of the array
 * - Use ES5 String.prototype.trim instead of jQuery.trim
 * - mediawiki.special.upload: Show an error message on "|"
 * - mediawiki.special.upload: Use mediawiki.api.parse
 * - mediawiki.ForeignStructuredUpload: Simplify code by using ES5
 * - rdbms: make LoadBalancer::waitForAll better respect the timeout
 * - Update RunningStat use statement
 * - Update WrappedString use statements
 * - Update IPSet use statements
 * - Update RelPath calls
 * - Use HTTPS instead of HTTP for caniuse.com
 * - mediawiki.special.upload: trim nameToCheck
 * - Follow-up 95e7c545: Fix .gitattributes file line truncation
 * - Bypass wfGetDB when LoadBalancer is used in scope
 * - Replace deprecated wfGetLB calls here and there
 * - Update UserSaveOptions/UserSaveSettings hook descriptions
 * - Add abstract functions to abstract class..
 * - selenium: add re-creatable page test to page spec
 * - selenium, add restoration test to page spec
 * - selenium: add deletion test to page spec
 * - Special:Upload: Use user interface language for error message
 * - ConfigFactory: Improve error message for invalid callback
 * - Set default fragment mode to [ 'legacy', 'html5' ]
 * - Remove unused SpecialPasswordReset::$passwords
 * - Fix variable name to match code
 * - Remove 2 unused private fields from ApiFormatBase
 * - Remove User::$mGroups
 * - mediawiki.Uri: Don't double-escape fragments
 * - Follow-up 5aea96df: Add release notes for File SHA1 display
 * - Update wikimedia dependencies
 * - PHPVersionCheck: PHP 5.5.0 is no longer supported by upstream, but 5.6.0 is
 * - Move standard tar ignores to .gitattributes so `git archive` works
 * - Fix phpdoc since $proto can be int
 * - Move methods for handling external usernames to a dedicated class
 * - mediawiki.api.category: Use formatversion=2 and simplify code
 * - Revert accidentally removed trait
 * - Use native ES5 Array prototype methods instead of jQuery
 * - Add PHPUnit tests for ApiDelete
 * - Test HHVM LTS versions 3.21 and 3.24 on travis
 * - SpecialLog: Don't ignore offender when it's a nonexistent username
 * - Remove support for PHP extension 'mysql' (not mysqli!)
 * - EditPage: Match the Save/Publish button's tooltip to its label
 * - Non-MySQL comment table updates
 * - EditPage: Simplify getEditButtons
 * - EditPage: Update Save/Publish button flag from 'constructive' to 'progressive'
 * - ApiQueryTags: Remove unused tgprop value
 * - Page title is not used in Selenium tests
 * - Update OOUI to v0.25.1
 * - Add more data to categories dump
 * - New namespace MediaWiki\Tests\Maintenance
 * - rdbms: specify DB name and table prefix even for the local domain
 * - Widgets: Allow titles with name of Object.prototypes
 * - JavaScriptMinifier: Remove support for unused $maxLineLength param
 * - JavaScriptMinifier: Enable phpcs and fix violations
 * - JavaScriptMinifier: Fix "Uninitialized offset" in string and regexp parsing
 * - JavaScriptMinifier: Improve docs for parsing of string literals
 * - Localize namespaces to inh
 * - Simplify documentation headers of includes/widgets/…Widget.php files
 * - mw.Feedback: If the message is posted remotely, link the title correctly
 * - Fix jump-to-nav element overlap on RCFilters
 * - Allow extension of the Special:Upload form
 * - Improve 1-letter variable names in MutableContext and implementations
 * - Change "Special:近易" to "Special:監修" in zh-classical
 * - Remove very, very old disabled test cases and todos
 * - Add collation for Abkhaz (ab)
 * - Warn if stateful ParserOutput transforms are used
 * - Port categories dump header fix
 * - thumb.php: Set ENT_NOQUOTES for htmlspecialchars
 * - Set $_SERVER['SERVER_NAME'] to the value set by --server
 * - Add a hook into LanguageConverter#getPreferredVariant to allow extensions to pull the desired variant from cookies (or other such source)

Vendor

 * - Add wikimedia/object-factory 1.0.0
 * - Update wikimedia dependancies
 * - Run composer update with composer 1.6.2
 * - Add missing files from wikibase/data-model-services 3.9.0
 * - Update OOUI to v0.25.1

3D

 * - Make textures better match style guide
 * - Display placeholder text until 3D thumb is loaded
 * - Prefix i18n messages
 * - Add patent selection to Special:Upload

AbuseFilter

 * - Don't show link to AbuseLog for IP ranges
 * - Allow filtering AbuseLog in API by wiki
 * - Use ExtensionRegistry to check if CheckUser is installed
 * - Removed deprecated position statements from resource loader module
 * - Use SPDX 3.0 license identifier
 * - Compatible with PHP 7.2, avoid passing null to count
 * - Improve @covers tags
 * - Set default when changing afl_namespace on pg
 * - Normalize IPv6 addresses in Special:AbuseFilter/examine

AdvancedSearch

 * - Use default overlay in dropdown menus
 * - Add @covers tag
 * - Change the behavior of search term fields.
 * - Add first selenium test
 * - Update eslint and stylelint

AntiSpoof

 * - Use SPDX 3.0 license identifier

ApiFeatureUsage

 * - Removed deprecated position statements from resource loader module

ArticleCreationWorkflow

 * - Add @covers tag
 * - Config stylelint to lint css files
 * - Allow loading custom CSS for the landing page

ArticlePlaceholder

 * - Localisation of special pagename aliases related to ext ArticlePlaceholder for urwiki.
 * - Removed deprecated position statements from resource loader module
 * - Use SPDX 3.0 license identifier
 * - Adapt SearchHookHandler to changes in WikibaseClient
 * - Type hint against IDatabase instead of Database
 * - Add more test cases to improve overall test coverage

Babel

 * - Update minus-x from 0.2.1 to 0.3.0
 * - Use SPDX 3.0 license identifier

BetaFeatures

 * - build: Update linters
 * - Update minus-x from 0.2.1 to 0.3.0
 * - Removed deprecated position statements from resource loader module
 * - Add missing @covers tags to existing test cases
 * - tests: Quick fix for unit tests asserting the shape of OOUI ids

Campaigns

 * - Adding isApi field to log if the account is created using API.

Capiunto

 * - Add @covers tag

CentralAuth

 * - Split assignment and return statement
 * - Removed deprecated position statements from resource loader module
 * - Replace deprecated wfSuppress- and wfRestoreWarnings functions
 * - Use SPDX 3.0 license identifier

CharInsert

 * - build: Update linters
 * - Enforce minimum width for very narrow or zero-width items
 * - Remove `"group": "noscript"` from the 'ext.charinsert.styles' module
 * - Use text selection cursor in no-JS mode
 * - Map .CodeMirror to #wpTextbox1
 * - Prevent document listener from binding multiple times
 * - Fix #wpTextbox1 selector
 * - build: Update linters
 * - build: Load i18n paths from config
 * - build: Replace jshint/jscs with eslint

CirrusSearch

 * - Split assignment and return statement
 * - Switch FullTextQueryBuilder to profile management
 * - Switch saneitizer config to profile manager
 * - Switch phrase suggester config to profile manager
 * - Unify profiles with i18n messages
 * - Profile management
 * - Use SPDX 3.0 license identifier
 * - Fix typo in InCategoryFeatureTest class name
 * - When running Selenium tests, use `wd/hub`
 * - Move wfWikiId resolution for CirrusSearchIndexBaseName into SearchConfig
 * - Selenium smoke test

Cite

 * - build: Update linters
 * - Removed deprecated position statements from resource loader module
 * - Remove metadata from unit tests

CiteThisPage

 * - Use 'unwrap' post-cache transform instead of setWrapOutputClass( false )

Citoid

 * - build: Update linters

CleanChanges

 * - Use SPDX 3.0 license identifier

CodeEditor

 * - build: Update linters
 * - Use correct directionality for nested inputs (e.g. find & replace)

CodeMirror

 * - build: Update linters
 * - Simplify textSelection overrides using 'register' and 'unregister'
 * - NWE: Fix padding in Vector

CodeReview

 * - wfMemcKey (deprecated in MW 1.30) -> makeKey on a BagOStuff instance

CollaborationKit

 * - Use “OOUI” as unified name in docs & code comments
 * - Add @covers tags
 * - Replace use of OOUI deprecated constructive flag

Collection

 * - Replace QuickTemplate->translator->translate with wfMessage->text
 * - Use SPDX 3.0 license identifier
 * - Add @covers tags
 * - Improve type hints in documentation

ConfirmEdit

 * - build: Update linters
 * - Removed deprecated position statements from resource loader module
 * - Add @covers tags

ContentTranslation

 * - build: Update linters
 * - Use ExtensionRegistry to check if extensions are installed
 * - Follow-up 765771499: Require MediaWiki 1.31
 * - Use SPDX 3.0 license identifier
 * - Update Maintenance scripts in extensions to use $this->requireExtension
 * - Move overlay dependency to file that actually uses it (ext.cx.suggestionlist.js)
 * - Removed deprecated position statements from resource loader module
 * - Add @covers tag
 * - Add nearby suggestions
 * - Restyle personal header
 * - Use “OOUI” as unified name for code comments
 * - Display infobar on CX dashboard

ContributionTracking

 * - Removed deprecated position statements from resource loader module

DisableAccount

 * - Update maintenance script to use $this->requireExtension

DonationInterface

 * - Update return from timeout
 * - Update Amazon SDK fork for TCP proxy
 * - Update GPL
 * - Update Maintenance scripts in extensions to use $this->requireExtension
 * - Batch look up order status for Ingenico
 * - Add __toString method for PaymentTransactionResponse
 * - Add catch statement to processDonorReturn, use timeout status
 * - Fix parameters in phpDoc blocks
 * - Add missing @return tags
 * - Fix typos in comments
 * - Fix extra params on method calls
 * - Seems inelegant but reorders credit cards

Echo

 * - build: Update linters
 * - Don't use deprecated SpecialPage::getTitle
 * - Removed deprecated position statements from resource loader module
 * - Make icon not overlap with confirmation message
 * - Add @covers tags
 * - Don't hide notification popup when scrolling
 * - Fix multiple PHP class declarations in one file in tests
 * - Fix multiple PHP class declarations in one file
 * - When running Selenium tests, use `wd/hub`
 * - Use “OOUI” as unified name for code comments
 * - Align the icon in the popup action sub menus
 * - Fix help menu icon placement for monobook
 * - Truncate page name in the sidebar and organize into table view
 * - Don't use deprecated DatabaseMysql

EducationProgram

 * - Remove unneeded variable assignment
 * - Add @covers tags
 * - Require MediaWiki 1.29 in extension.json for manifest_version 2
 * - Use $this->requireExtension in maintenance scripts
 * - Don't use deprecated DatabaseMysql

Elastica

 * - Use SPDX 3.0 license identifier

ElectronPdfService

 * - When running Selenium tests, use `wd/hub`

EventBus

 * - Use SPDX 3.0 license identifier
 * - Only set the comment field if the comment is non-null.

EventLogging

 * - Update minus-x from 0.2.1 to 0.3.0

ExtensionDistributor

 * - build: Update linters
 * - Use SPDX 3.0 license identifier
 * - Correct $this->requireExtension for ExtensionDistributor
 * - Tweak @covers tags

FlaggedRevs

 * - build: Update linters
 * - Use SPDX 3.0 license identifier
 * - Add output encoding for message 'revreview-reject-cancel'

Flow

 * - Fix mistakes in @var documentation
 * - build: Update linters
 * - Use ExtensionRegistry to check if extensions are installed
 * - Revert "Add copyright footer to all pages that need it"
 * - Ensure TOC button label is truncated
 * - Use SPDX 3.0 license identifier
 * - Avoid using deprecated EmailNotification::updateWatchlistTimestamp
 * - Improve some parameter docs
 * - OptInController catch both errors and exception
 * - Re-add previous patterns to flow archive format
 * - Replace deprecated 'alert' indicator with similar icon
 * - BoardDescriptionWidget: Fix init when no description created yet
 * - Add copyright footer to all pages that need it
 * - noindex,nofollow the 'access denied' topic page
 * - Improve error-handling for OptInController
 * - NewTopicWidget, BoardDescriptionWidget: Don't clear on error
 * - Use “OOUI” as unified name in docs & code comments
 * - Don't use deprecated DatabaseMysql
 * - Change "comment" to "post" in English messages
 * - Fix 'flow_topic_list' table to use non-nullable fields in the primary key

FundraiserLandingPage

 * - Use SPDX 3.0 license identifier
 * - Ignore invalid country codes from query string

FundraisingTranslateWorkflow

 * - Use SPDX 3.0 license identifier

GWToolset

 * - Use SPDX 3.0 license identifier

Gadgets

 * - Use SPDX 3.0 license identifier
 * - Fix PHPDocs of GadgetDefinitionContent::getDeletionUpdates
 * - Update WrappedString use statement
 * - Localize namespaces to inh

GeoCrumbs

 * - Use SPDX 3.0 license identifier

GeoData

 * - Require MediaWiki 1.29 in extension.json for manifest_version 2
 * - Rename GeoDataMathTest --> MathTest, like the class being tested
 * - Add missing @covers tags to existing test cases

GettingStarted

 * - Use SPDX 3.0 license identifier
 * - Use $this->requireExtension in maintenance scripts

GlobalBlocking

 * - Require MediaWiki 1.29 in extension.json for manifest_version 2
 * - Use SPDX 3.0 license identifier
 * - Update maintenance scripts to use $this->requireExtension

GlobalCssJs

 * - Use SPDX 3.0 license identifier

GlobalUsage

 * - Update maintenance scripts to use $this->requireExtension

GlobalUserPage

 * - Use SPDX 3.0 license identifier

GoogleNewsSitemap

 * - Use SPDX 3.0 license identifier

Graph

 * - build: Update linters

ImageMap

 * - Use SPDX 3.0 license identifier

InputBox

 * - Follow-up dd0a0035e: make useve work together with prefix

Insider

 * - Use SPDX 3.0 license identifier

Interwiki

 * - Use SPDX 3.0 license identifier
 * - Load 'ext.interwiki.specialpage' as style module

InterwikiSorting

 * - Use SPDX 3.0 license identifier

JsonConfig

 * - build: Update linters
 * - Require MediaWiki 1.29 in extension.json for manifest_version 2
 * - Use SPDX 3.0 license identifier

Kartographer

 * - build: Update linters
 * - Add directionality to control elements to support RTL interface
 * - Have the sidebar adjust to interface language direction
 * - Use “OOUI” as unified name in docs & code comments
 * - Add @covers tags
 * - build: Update linters
 * - getSelectedItem -> findSelectedItem
 * - Allow 2-digit numeric markers

LabeledSectionTransclusion

 * - Use SPDX 3.0 license identifier

LandingCheck

 * - Use SPDX 3.0 license identifier

LdapAuthentication

 * - Allow searching for POSIX primary group of authed user
 * - Use SPDX 3.0 license identifier

Linter

 * - build: Update linters
 * - Use estimateRowCount instead of actually counting everything
 * - Fix NWE integration to use new tempWikitextEditor
 * - Update IPSet use statement

LiquidThreads

 * - build: Update linters
 * - Require MediaWiki 1.29 in extension.json for manifest_version 2
 * - Use SPDX 3.0 license identifier

Listings

 * - Use SPDX 3.0 license identifier

LocalisationUpdate

 * - Use SPDX 3.0 license identifier
 * - Update maintenance scripts to use $this->requireExtension

LoginNotify

 * - Use the proper way to override the User-Agent header of a request
 * - Maintenance script to generate fake login attemps from any IP
 * - Actually run PHPUnit tests, and fix the broken ones
 * - Add @covers tag

MapSources

 * - Use SPDX 3.0 license identifier

MassMessage

 * - build: Update linters
 * - Removed deprecated position statements from resource loader module
 * - Use editfont for list description
 * - Use OOUI byteLimit widget on edit page
 * - Add missing mediawiki.htmlform.ooui dependency
 * - Added abstract class SpamlistLookup
 * - Use SPDX 3.0 license identifier
 * - Use MWNamespace & LogEventsList

Math

 * - Fix broken links in phpunit covers annotations
 * - build: Update linters
 * - Use SPDX 3.0 license identifier
 * - build: Update linters
 * - getSelectedItem -> findSelectedItem

MobileApp

 * - Use SPDX 3.0 license identifier

MobileFrontend

 * - build: Update linters
 * - Fix refresh button on Special:Nearby page
 * - Hygiene: Remove unnecessary FIXME that is not marked as a FIXME
 * - Use SPDX 3.0 license identifier
 * - mobile.init is now responsible for the console recruit message
 * - Add @covers statements for ParsedMessageModule and MobileLanguages
 * - Use 'unwrap' post-cache transform instead of setWrapOutputClass( false ), when available
 * - Add missing @covers statements
 * - Use Html messageBox helpers
 * - Remove MobilePreferences in favor of core
 * - Hygiene: Add missing @covers statements to Device detection tests
 * - Hygiene: Add missing @covers annotation to phpunit tests
 * - Hygiene: Remove unused ArticlePage props in browser tests
 * - Other less common lead paragraph edge cases
 * - Hygiene: add package-lock file
 * - Always load user styles on mobile user pages
 * - Fix: check old revision for deletion when diffing
 * - Remove blacklisted content before applying transforms
 * - Avoid notice in lead paragraph transform when encounter infobox like elements
 * - Prefix all icons with `mf-`
 * - Hygiene: Remove ExtMobileFrontend::eventLog
 * - Use “OOUI” as unified name for code comments
 * - Drop use of MobileOptionsTracking schema
 * - User page fully managed by MobileFrontend

MultimediaViewer

 * - Bring SVGO optimization to build step
 * - Unify SVG markup
 * - Use “OOUI” as unified name in code comments

MwEmbedSupport

 * - build: Update linters

NavigationTiming

 * - readme: Update to use best current practices
 * - ext.NavigationTiming: Allow oversampling based on geography or user agent

Newsletter

 * - Removed deprecated position statements from resource loader module
 * - Add Help Link page in Extension:Newsletter's Special Pages
 * - Add unit test for removing publishers via API
 * - Add unit test for adding publishers via API

Nuke

 * - Don't show link to Nuke for IP ranges
 * - Move classes into includes/, and rename files to match class name
 * - Remove unneeded $.ready
 * - Fix wrong use of mw.msg

OAuth

 * - Removed deprecated position statements from resource loader module
 * - Require MediaWiki 1.29 in extension.json for manifest_version 2

ORES

 * - Decorator to populate the model table if it's not there
 * - Make ScoreFetcher and SqlScoreLookup implement different interfaces
 * - Update Maintenance scripts in extensions to use $this->requireExtension
 * - Don't cache when sql model lookup returns empty
 * - Take advantage of MaintenanceBaseTestCase
 * - Introduce SqlScoreLookup and use it in API
 * - Tests for PopulateDatabase

OpenStackManager

 * - Removed deprecated position statements from resource loader module
 * - Support ecdsa-sha2-nistp521
 * - Support ecdsa-sha2-nistp384

PageAssessments

 * - Use @covers instead of plain text in tests
 * - Fix wrong class name

PageImages

 * - Require MediaWiki 1.29 in extension.json for manifest_version 2
 * - Update maintenance scripts to use $this->requireExtension

PageTriage

 * - Require MediaWiki 1.29 in extension.json for manifest_version 2
 * - Use $this->requireExtension in maintenance scripts
 * - Remove some backwards-compatibility in tests
 * - Add @covers tags

PageViewInfo

 * - Fix @covers tags
 * - Add @covers tags

PagedTiffHandler

 * - Update Maintenance scripts in extensions to use $this->requireExtension

ParserFunctions

 * - Use SPDX 3.0 license identifier

ParserMigration

 * - build: Update linters

ParsoidBatchAPI

 * - Update IPSet use statement

PdfHandler

 * - Use SPDX 3.0 license identifier

Popups

 * - build: Update linters
 * - Hygiene: add bundlesize test
 * - Hygiene: add package-lock file
 * - Limit line length to 80 characters
 * - Restore test subject
 * - Remove unnecessary .promise call
 * - When running Selenium tests, use `wd/hub`
 * - Update: show placeholder preview for more failures
 * - Hygiene: add more fetch failure test cases
 * - Update: missing preview copy
 * - Fix: preview page URL for 404 RESTBase responses

ProofreadPage

 * - Migrates licence tag in composer to more recent SPX tags
 * - Use SPDX 3.0 license identifier
 * - Update maintenance scripts to use $this->requireExtension
 * - getSelectedItem -> findSelectedItem

PropertySuggester

 * - Use $this->requireExtension in maintenance scripts
 * - Use the more narrow IResultWrapper interface
 * - Improve type hints in different places
 * - Remove unnecessary phpunit dependency

QuickSurveys

 * - Add @covers tag
 * - Removed deprecated position statements from resource loader module
 * - Use “OOUI” as unified name in docs & code comments
 * - Replace use of OOUI deprecated constructive flag

Quiz

 * - Removed deprecated position statements from resource loader module
 * - Fix Undefined Variable Bug

ReadingLists

 * - Use $this->requireExtension in maintenance scripts

RelatedArticles

 * - build: Update linters

Renameuser

 * - Use SPDX 3.0 license identifier
 * - Update maintenance scripts to use $this->requireExtension

RevisionSlider

 * - build: Update linters
 * - Removed deprecated position statements from resource loader module
 * - Hygiene: Use “OOUI” as unified name in code comments
 * - Update eslint and stylelint

SandboxLink

 * - Add support for the "(page does not exist)" tooltip

Score

 * - Removed deprecated position statements from resource loader module
 * - Always pass FileBackend instance to `new FileRepo`

Scribunto

 * - build: Update linters
 * - Removed deprecated position statements from resource loader module
 * - Fix Scribunto_LuaStandaloneInterpreterTest::testGetStatus on 7.1+
 * - Update the Module & Module talk namespace in Nepali Wikipedia
 * - Use SPDX 3.0 license identifier
 * - Update RunningStat use statement

SecurePoll

 * - Revert "Auth: Avoid calls to deprecated wfSetupSession"
 * - Auth: Avoid calls to deprecated wfSetupSession
 * - Update maintenance scripts to use $this->requireExtension

SpamBlacklist

 * - Use SPDX 3.0 license identifier
 * - Make spamblacklist log viewable by logged-in users by default

SyntaxHighlight_GeSHi

 * - Removed deprecated position statements from resource loader module
 * - Use SPDX 3.0 license identifier
 * - Update Maintenance scripts in extensions to use $this->requireExtension

TemplateData

 * - build: Update linters
 * - Removed deprecated position statements from resource loader module
 * - Use textSelection API to modify textarea

TemplateSandbox

 * - build: Update linters
 * - Removed deprecated position statements from resource loader module

TemplateStyles

 * - Fix coverage
 * - Add @covers tags
 * - Move PHP classes into includes/ directory
 * - Temporary feature flag for disabling style output
 * - Use 'unwrap' post-cache transform instead of setWrapOutputClass( false )
 * - Cache processed stylesheets during the parse

TextExtracts

 * - Fix and add @covers tags
 * - Use 'unwrap' post-cache transform instead of setWrapOutputClass( false ), when available

Thanks

 * - Import MediaWikiServices in ThanksHooks
 * - Add alias for Serbian Latin
 * - Update minus-x from 0.2.1 to 0.3.0
 * - Simplify promise by using .then
 * - Move classes to includes/ and rename some to match class names
 * - Follow-up 6bb7939a79: use GenderCache
 * - revthank: Clarify confirmation message and change yes/no messages
 * - revthank: Embed gender of thanks recipients in the page
 * - Fix member variable visbility and doc

TimedMediaHandler

 * - Update video.js to 6.7.1 release
 * - build: Update linters
 * - Removed deprecated position statements from resource loader module
 * - Update ogv.js to 1.5.6
 * - Fill play icon white on BetaFeatures thumbnail
 * - Blacklist ogv.js's wasm on iOS 11.2.5 as well
 * - Update video.js to v6
 * - Update ogv.js to 1.5.4

TitleBlacklist

 * - Use SPDX 3.0 license identifier

TorBlock

 * - Update minus-x from 0.2.1 to 0.3.0
 * - Require MediaWiki 1.29 in extension.json for manifest_version 2

Translate

 * - build: Update linters
 * - Update minus-x from 0.2.1 to 0.3.0
 * - Update version before MLEB release
 * - Removed deprecated position statements from resource loader module
 * - Replace use of OOUI deprecated constructive flag
 * - Fix PageMigration save button bug

TranslationNotifications

 * - Use SPDX 3.0 license identifier
 * - Update maintenance scripts to use $this->requireExtension

TrustedXFF

 * - Update IPSet use statement

TwoColConflict

 * - build: Update linters
 * - Add docs/metrics.md

UniversalLanguageSelector

 * - Update jquery.uls to 54a466e
 * - Update jquery.uls to 3161b34
 * - Update packages
 * - Update copyright year and license shortname
 * - Update jquery.uls to d122f37
 * - Add @covers tag
 * - Add aliases for Georgian, Armenian, Spanish, and Japanese

UploadWizard

 * - build: Update linters
 * - Removed deprecated position statements from resource loader module
 * - Use “OOUI” as unified name in docs & code comments
 * - Avoid using OutputPage::readOnlyPage, now removed
 * - Update Maintenance scripts in extensions to use $this->requireExtension
 * - Add @covers tag
 * - Fix multiple PHP class declarations in one file
 * - Fix javascript error on UploadWizard page

UrlShortener

 * - Update minus-x from 0.2.1 to 0.3.0
 * - Replace spaces with %20 and trim user input

VisualEditor

 * - Fix byteLimit/byteLength dependencies
 * - build: Update linters
 * - Update minus-x from 0.2.1 to 0.3.0
 * - Removed deprecated position statements from resource loader module
 * - Remove use of global for wgEditSubmitButtonLabelPublish
 * - textSelection: Implement getCaretPosition
 * - Implement simple methods from $.textSelection API
 * - Remove unnecessary and low-contrast opacity
 * - Load modules for preview
 * - Update VE core submodule to master (130caccf3)
 * - Update VE core submodule to master (c5fddd508)
 * - Remove "(beta)" from visual diff mode label
 * - NWE: Use internal paste in compatible browsers
 * - MW-Rebaser: Disable history commands
 * - Public API for the tempWikitextEditor
 * - Use jQuery 3 .catch( fn ) instead of .then( null, fn )
 * - Sync tempWikitextEditor just before building target, not on every change
 * - Toolbars: Replace $.height with clientHeight/offsetHeight
 * - MWWikitextStringTransferHandler: Perform Parsoid cleanup on result
 * - Remove Firefox support comment
 * - NWE: Don't attempt to set selection on unattached textarea
 * - Update VE core submodule to master (88ba1eb9a)
 * - Use ve.dm.MetaList without explicitly requiring metadata index
 * - Update TitleInput's getTitle to getMWTitle
 * - Use wgEditSubmitButtonLabelPublish from upstream
 * - Resize link context item after getting description
 * - getSelectedItem -> findSelectedItem
 * - Make visual diffs the default in visual mode
 * - Remember preferred diff viewer
 * - Update VE core submodule to master (d5428e9b3)

WikiEditor

 * - Use SPDX 3.0 license identifier
 * - Escape messages appropriately and not use raw html
 * - Restore isSupported as deprecated dummy function

WikiLove

 * - Removed deprecated position statements from resource loader module
 * - Replace 'edit' by 'csrf' in .postWithToken

Wikibase

 * - Removed double @author of EntityHandler
 * - Remove misplaced semicolon from @var comment
 * - Removed deprecated position statements from resource loader module
 * - Update minus-x from 0.2.1 to 0.3.0
 * - Add missing messages for Wikibase autocomments
 * - Update /* @var … */ comments to use /** with 2 asterisks
 * - Run Minus X as a part of the "composer test" script
 * - Don’t crash if revision was not found
 * - Fixed a typo in a comment
 * - Make all jobs required to pass again
 * - Do not re-instantiate UsageDeduplicator every time
 * - Update PHPDoc documentation of client and repo hook handlers
 * - Turn to a general aspect if too many modifiers have been used
 * - Fix spelling error in the comment
 * - Fix minor mistakes in PHPDoc blocks
 * - Don't use deprecated function utf8ToHexSequence
 * - Fix typo in word "namespaces"
 * - Remove some more referenceness
 * - Remove some referenceness
 * - Improve type hints and remove 100% redundant PHPDoc blocks
 * - Add tracking category to redirects connected to an item
 * - Doc: pageterms query response type for wbptterms
 * - Improve EntityContent::getTextForSummary
 * - Count failed lock grabs in SqlChangeDispatchCoordinator
 * - dispatchChanges add dispatchMaxTime config option
 * - Use external username when building RecentChange entry
 * - Move path array prepending logic to ClaimDifferenceVisualizer
 * - Rearrange UsageDeduplicator implementation
 * - Fix smaller mistakes in UsageDeduplicator
 * - Allow continuing Wikibase entity dumps
 * - Deduplicate entity usages when returning from ParserOutputUsageAccumulator
 * - Update license to use "GPL-2.0-or-later"
 * - Fix invalid @covers tag
 * - Issue a warning when entity usage per page passes a limit
 * - Utilize disabled access for entity types as a config variable
 * - Integrate all Client's repository settings into a single setting
 * - Don't use deprecated DatabaseMysql
 * - Replace ArrayIterator with more trivial PageEntityUsages[]
 * - Fix documentation mistakes as reported by Phan
 * - Use IResultWrapper instead of ResultWrapper when applicable
 * - Remove default "return true" from Wikibase Client hook handlers
 * - dispatchChanges allow configuration instead of params
 * - Accept path array to prepend to statement diff
 * - Use 'unwrap' post-cache transform instead of setWrapOutputClass( false )
 * - Escape autocomment message arguments
 * - Remove some of IE8 hacks

WikibaseQuality

 * - Remove redundant @package tags
 * - Use Wikimedia\Assert and type hints

WikibaseQualityConstraints

 * - Replace C#-like "@var …?" docs with "@var …|null"
 * - Simplify ViolationMessageRenderer::renderArgument
 * - Make ViolationMessageRenderer::renderArgument return params
 * - Add support for inline code to ViolationMessage
 * - Simplify private TypeCheckerHelper::getStatementsByPropertyIds
 * - Only compute difference in years on time values
 * - Add @var type hint to CheckingResultsBuilder
 * - Fix mistake in ConstraintParameterParser documentation
 * - Add test for ViolationMessage arguments with unknown type
 * - Add missing test for ViolationMessageRenderer
 * - Use ViolationMessage for range checkers
 * - Add support for data values to ViolationMessage
 * - Inject ValueFormatter into ViolationMessageRenderer
 * - Remove argument to ViolationMessageRenderer::render
 * - Use ViolationMessage for even more checkers
 * - Add support for data value types to ViolationMessage
 * - Remove unused references & returns from hook handler signatures
 * - Use ViolationMessage for more checkers
 * - Add support for ItemIdSnakValue lists to ViolationMessage
 * - Refactor ViolationMessageRenderer
 * - Remove ViolationMessageRenderer::render parameters
 * - Use ViolationMessage for messages with ItemIdSnakValues
 * - Add support for ItemIdSnakValues to ViolationMessage
 * - Split up @covers of ViolationMessageRendererTest
 * - Simplify some ViolationMessageRenderer tests
 * - Add test for (not) rendering a pre-rendered message
 * - Use ViolationMessage for messages with entity ID lists
 * - Add support for entity ID lists to ViolationMessage
 * - Use ViolationMessage for messages with entity IDs
 * - Add support for entity ID arguments to ViolationMessage
 * - Fix hook error when variable is undefined
 * - Use $this->requireExtension in maintenance scripts
 * - Fix ConstraintParameterParser error message params
 * - Fix FormatChecker error message key
 * - Use ViolationMessage for messages with no arguments
 * - Use null instead of '' as message for compliance
 * - Accept ViolationMessage in CheckResult
 * - Add ViolationMessageRenderer
 * - Add ViolationMessage class
 * - Use the more narrow IResultWrapper interface
 * - Include user language in cache key
 * - Add tests for two uncovered CheckResult methods
 * - Declare compatibility with Serialization 4.0.0
 * - Change namespace from …\Test to …\Tests
 * - Add tests for maintenance script
 * - Add tests for ItemIdSnakValue
 * - Make maintenance script testable
 * - Use InMemoryEntityLookup instead of JsonFileEntityLookup
 * - Workaround for coveralls bug #61
 * - Fix coveralls settings
 * - Update Coveralls URLs
 * - Add notification for #wikidata-feed on IRC
 * - Remove not needed Statements from Multi/SingleValueChecker tests
 * - Don’t load gadget when not in edit mode
 * - Don’t use NewStatement to build standalone snaks
 * - Expand ReferenceContextTest::testGetSnakGroup
 * - Remove not needed …->withSomeGuid calls from tests
 * - Support qualifier and reference in value count checkers
 * - Rewrite ValueCountCheckerHelper
 * - Rewrite ValueCountChecker tests
 * - Check “difference within range” on qualifiers and references
 * - Add Context::getSnakGroup method
 * - Rewrite ConstraintParameterRendererTest::assertConstraintReportParameterList
 * - Extract ConstraintParameterRendererTest::assertConstraintReportParameterList
 * - Improve type hints in Checkers and remove redundant PHPDoc
 * - Add tests for ConstraintParameterRenderer
 * - Update php-coveralls
 * - Use list without space before the parenthesis
 * - Rename @dataProvider methods to provide…
 * - Fix test class name
 * - Add support for “instance or subclass of” relation
 * - Add support for parsing “instance or subclass of” relation
 * - Fix message documentation
 * - Remove unused message
 * - Improve TypeCheckerHelperTest function names
 * - Add missing DISTINCT to SPARQL query
 * - Remove useless select from SPARQL query

WikidataPageBanner

 * - Removed deprecated position statements from resource loader module

WikimediaBadges

 * - Removed deprecated position statements from resource loader module

WikimediaEvents

 * - Modify AICaptcha data collection notice
 * - Add @covers tag
 * - Update minus-x from 0.2.1 to 0.3.0
 * - Adding WikimediaEvents module for logging behaviour data
 * - Adding WikimediaEvents module for logging behaviour data
 * - Turn off cirrus AB test on hewiki

WikimediaIncubator

 * - Removed deprecated position statements from resource loader module

WikimediaMaintenance

 * - Error if wiktionary creation attempted without using aawiktionary
 * - Remove 'moodbar' from the createExtensionTables.php

WikimediaMessages

 * - Use ExtensionRegistry to check if extensions are installed
 * - Don't use deprecated SpecialPage::getTitle
 * - Removed deprecated position statements from resource loader module
 * - Add tag-AWB and tag-AWB-description
 * - Default to HTTPS on basically all links
 * - Update access to ORES isModelEnabled

XAnalytics

 * - Improve some parameter docs

ZeroBanner

 * - Fix requires in extension.json for manifest_version 2
 * - Removed deprecated position statements from resource loader module
 * - Require MediaWiki 1.28 in extension.json for manifest_version 2

ZeroPortal

 * - Removed deprecated position statements from resource loader module
 * - Fix requires in extension.json for manifest_version 2
 * - Require MediaWiki 1.28 in extension.json for manifest_version 2
 * - Only return info for enabled carriers from API type=carriers

cldr

 * - build: Update linters

timeline

 * - Require MediaWiki 1.29 in extension.json for manifest_version 2
 * - Removed deprecated position statements from resource loader module

wikihiero

 * - Removed deprecated position statements from resource loader module

CologneBlue

 * - Replace QuickTemplate->translator->translate with wfMessage->text

MinervaNeue

 * - Prepare for breaking change to MobileContext
 * - Hygiene: Replace QuickTemplate test subclass with mock
 * - Disable download button on Chrome like browsers
 * - Console recruit message has been moved to MobileFrontend
 * - Do not add non-existent skins.minerva.special.preferences.scripts
 * - Preferences tabs should be horizontally scrollable
 * - Remove horizontal line from popups preview in MinervaNeue skin
 * - Hygiene: add package-lock file
 * - Fix editing of non-mobile-formatted pages
 * - Fix download icon spinner
 * - Remove use of QuickTemplate::setRef
 * - Update Minus-X utility from 0.2.1 to 0.3.0 in MinervaNeue skin
 * - Prefix icons in Minerva
 * - Fix seen notifications appearing as unseen on mobile
 * - Show Download button only on Android >= 5 & Chrome >= 41
 * - Fix infobox styles to work well with multiple column infobox rows

Nostalgia

 * - Removed deprecated position statements from resource loader module

Timeless

 * - Add messages timeless.css and .js
 * - Make languages portlet visible when empty
 * - OOjs UI: Display windows on top of the fixed header
 * - OOjs UI: Fix z-index and font size for default overlay

Vector

 * - Improve and simplify typehint and type docs in VectorTemplate
 * - Clarify class commment for SkinVector and VectorTemplate
 * - Remove 'SkinVectorStyleModules' hook
 * - Deprecate 'SkinVectorStyleModules' hook
 * - Update Minus-X from 0.2.1 to 0.3.0 in Vector skin
 * - OOUI: Remove confusing 'position' override