MediaWiki 1.31/wmf.21/Changelog

Core changes

 * - Add clearUserWatchedItems methods to WatchedItemStoreInterface
 * - Improve ExtensionRegistry test coverage
 * - Migrage callers away from SiteStatsUpdate::__construct
 * - Various cleanup to SiteStats classes
 * - resourceloader: Removed tests for deprecated 'position' parameter
 * - registration: Remove unused ExtensionRegistry::markLoaded
 * - Move SiteStatsInit to its own file
 * - Make SiteStatsInit::doPlaceholderInit use 1 for ss_row_id
 * - mediawiki.Title: Reorder function declaration
 * - SpecialLog: replace unnecessary strict comparison
 * - ParserOutput: Add 'deduplicateStyles' post-cache transformation
 * - Search for Hooks::runWithoutAbort in maintenance/findHooks.php
 * - Add mediawiki.widgets.visibleByteLimit to JSDuck index
 * - mediawiki.special.upload: Reorder functions
 * - SpecialLog: Fix results when no offender is specified
 * - Update MediaWiki\quietCall -> Wikimedia\quietCall
 * - Update suppressWarning/restoreWarning calls
 * - Add tests for ExtensionJsonValidator
 * - Complete VersionChecker test coverage
 * - registration: Simplify extracting path based globals
 * - Complete ExtensionProcessor test coverage
 * - rdbms: make safeWaitForMasterPos respect "waitTimeout"
 * - Fix ParserOutput::getText 'unwrap' flag for end-of-doc comment
 * - editTests: Use the correct list of parser test files
 * - Use WatchedItemStore clearing in SpecialEditWatchlist
 * - Add clearWatchedItems to WatchedItemStore
 * - Avoid pointless DB_MASTER connections in User::clearSharedCache
 * - Add a few more @covers to ParserIntegrationTest
 * - Catch Error exceptions in MediaWiki::run
 * - Fix CommentStore->createComment call in LocalFile.php
 * - Tag redirects from moves as new redirects
 * - rdbms: make DOMAIN_ANY ignore bogus MySQL DB names in config
 * - Refactor Skin::buildSidebar code style
 * - jquery.textSelection: Add 'replaceSelection' method
 * - Make it possible to not propagate errors to PHP
 * - Fix some broken @var comments and add missing uses
 * - Fix phpdoc description of RevisionStore::insertRevisionOn
 * - DI for CommentStore in RevisionStore
 * - Remove unused code from LegacyHookPreAuthenticationProvider
 * - Add @covers tags for parser tests
 * - objectcache: remove unused constant and expand on a comment
 * - Drop XCache support
 * - ApiFormatBase: Encode filenames in Content-Disposition
 * - jquery.textSelection: Implement 'encapsulateSelection' in terms of the other commands
 * - jquery.textSelection: Remove incorrect browser hack for old Opera
 * - jquery.textSelection: Remove unnecessary checks
 * - Fix for warning in ForeignAPIFile when no thumbnails
 * - Update mediawiki/at-ease
 * - Add support for Kumyk (kum)
 * - Use new TagMultiselectWidget in ApiSandbox
 * - rdbms: remove obsolete getReplicaPos code
 * - Update OOUI to v0.25.2
 * - rdbms: apply minimum sanity timeout for all cases of LoadBalancer::doWait
 * - jquery.textSelection: Rewrite 'scrollToCaretPosition'
 * - Hard deprecate UtfNormalUtil
 * - Revert legend when results are grouped
 * - Add support from Guianan Creole (gcr)
 * - MWHttpRequest: Restore ability to pass null for $options
 * - Fix sessionfailure i18n message during authentication
 * - Add SPARQL client to core
 * - jquery.textSelection: Document methods and parameters
 * - jquery.textSelection: Move copyright comments to the top of the file
 * - Add @covers for BlockLevelPass
 * - Fix localization of time in Turkish

Vendor

 * - Update mediawiki/at-ease and wikimedia/css-sanitizer
 * - Update OOUI to v0.25.2

3D

 * - Fix thumbnail load detection on Webkit
 * - Fix badge, yet again
 * - Make sure '3D' badge is added on idividual elements
 * - Remove wfProfileIn/wfProfileOut

AbuseFilter

 * - Up at-ease calls in extensions
 * - build: Bump devDependencies to latest
 * - Select only needed columns in queries
 * - Correctly reference the "Abuse Filter" extension in maintenance scripts
 * - Fix wrong name in i18n
 * - API: Fix "Undefined index: wiki" warnings
 * - Add contains_all and ccnorm_contains_all functions
 * - build: Replace jshint with eslint
 * - Log accessing private information in abuse filter logs

AdvancedSearch

 * - Make namespace list stay open after selection
 * - Improve SearchPage toggling
 * - Add first tests to search page
 * - Check search form state after submission

AntiSpoof

 * - Move classes into includes/
 * - Add @covers tags

ApiFeatureUsage

 * - Move classes into includes/ directory
 * - build: Bump devDependencies to latest
 * - build: Replace jshint with eslint

ArticlePlaceholder

 * - eslint: Fix wrap-iife

Babel

 * - Move classes into includes/ directory

BetaFeatures

 * - Move BetaFeaturesHooks into includes/

BounceHandler

 * - Move BounceHandlerHooks into includes/
 * - Remove unnecessary PHPCS override
 * - Remove dead Plancake test
 * - Replace wfGetLBFactory/wfGetLB

Calendar

 * - Removed deprecated position statements from resource loader module
 * - Move classes into includes/

Campaigns

 * - Move classes to includes/
 * - Fix broken returnTo handling

Capiunto

 * - Removed deprecated position statements from resource loader module

CategoryTree

 * - Removed deprecated position statements from resource loader module
 * - Move classes into includes/

CentralAuth

 * - Replace $( document ).ready(...) by $(...)
 * - Update at-ease calls in extensions
 * - Add @covers tag
 * - Move rcfeed classes to includes/

CharInsert

 * - Add very basic parser test
 * - Move CharInsert class into includes/

CheckUser

 * - Update at-ease calls in extensions
 * - Remove unnecessary PHPCS override
 * - Replace deprecated wfSuppressWarnings/wfRestoreWarnings
 * - Move classes into includes/
 * - Fix capitalization of function calls

CirrusSearch

 * - Make prefer-recent a SimpleKeyword
 * - Add hook to override FulltextQueryBuilder
 * - Update at-ease calls in extensions
 * - Move unit tests to standard directory layout
 * - Add special handling for profiles into config dump
 * - Add KeywordRegistry

Cite

 * - Treat template-generated reference lists as real ones
 * - Focus references list dialog group input
 * - Render ref list from CE node when converterting for clipboard

CiteThisPage

 * - Removed deprecated position statements from resource loader module
 * - Move classes into includes/

Citoid

 * - Move classes to includes/

CodeEditor

 * - Move classes into includes/

CodeMirror

 * - Move classes into includes/
 * - textSelection: Replace encapsulateSelection with replaceSelection

CodeReview

 * - Update at-ease calls in extensions
 * - Removed deprecated position statements from resource loader module
 * - Move classes into includes/
 * - Split assignment and return statement

CollaborationKit

 * - Move CollaborationKitHooks into includes/
 * - Remove unneeded variable assignment

ContactPage

 * - Move classes to includes/

ContentTranslation

 * - Add ext.cx.widgets.overlay dependency to template editor
 * - Fix suggestions on IE10
 * - Increase ULS trigger padding on CX header
 * - Remove ULS width calculation
 * - Fix gray interlanguage links for languages with variants
 * - Replace wfGetLBFactory/wfGetLB
 * - Remove dependecies on module 'mediawiki.api.edit'

CreditsSource

 * - Move classes to includes/

DismissableSiteNotice

 * - Removed deprecated position statements from resource loader module

DonationInterface

 * - Removed deprecated position statements from resource loader module
 * - Remove stray semicolons from yaml
 * - Use ValidationError from SmashPig
 * - Use PaymentError from SmashPig
 * - Use ValidationAction constants from SmashPig
 * - Update Amazon SDK for selective TCP proxy
 * - Move ensureUniqueOrder id to prevent incrementing of order_id

Echo

 * - Use jQuery 3 .catch( fn ) instead of .then( null, fn )
 * - Split assignment and return statement
 * - Use overrideMwServices in DiscussionParserTest

FlaggedRevs

 * - Set filter for moved configurations

Flow

 * - Unset an invalid submitted topic
 * - Handle $input as array in UUID::create
 * - Update at-ease calls in extensions
 * - Validate that 'newRevision' param is a string
 * - Make sure 'content' isset before trimming it
 * - AbstractRevision: Specify table in USE INDEX to fix DB error
 * - Split assignment and return statement
 * - Use upstream event MultilineTextInputWidget#enter
 * - Handle Ctrl+Enter events

GeoData

 * - Update at-ease calls in extensions

GettingStarted

 * - Change from jshint to eslint
 * - Replace $( document ).ready(...) by $(...)

GlobalBlocking

 * - Split assignment and return statement

GuidedTour

 * - Correct the font size for the 'guider' for MonoBook

InputBox

 * - Removed deprecated position statements from resource loader module

JsonConfig

 * - Removed deprecated position statements from resource loader module

Kartographer

 * - build: Bring SVGO optimization to build step
 * - Add support for zoom level 19 in Kartographer

Linter

 * - Unbreak CategoryMessagesTest

LiquidThreads

 * - Removed deprecated position statements from resource loader module
 * - Split assignment and return statement

MassMessage

 * - Adding Phan to MassMessage extension
 * - Convert some $wgMemc calls to WANObjectCache

Math

 * - Removed deprecated position statements from resource loader module
 * - Remove unneeded variable assignment

MobileFrontend

 * - Use page id when determining isMissing logic
 * - Removed deprecated position statements from resource loader module
 * - Remove "successfully" from messages
 * - ApiMobileView: Disable 'deduplicateStyles' ParserOutput::getText transformation
 * - Remove /* global $ */
 * - Bump cache version due to 'unwrap' ParserOutput option
 * - Use page.isMissing instead of checking the page.id
 * - Hygiene: when building the Page object pass isMissing property
 * - Fix: use recommended SVGO optimization config
 * - Hygiene: move JSDoc and SVGO to devDependencies
 * - When main page special casing disabled treat as normal page
 * - Bump version to 2.1
 * - Deploy the new specialpages branch to master
 * - Fix: svg_check.sh and uncompressed SVGs

MultimediaViewer

 * - MMV: Allow and in captions
 * - Remove special color treatment of close icon on confirmation
 * - Use saveOption from 'mediawiki.api.options'

MwEmbedSupport

 * - Use short array syntax in ResourceLoader module files
 * - build: Migrate from jslint to eslint
 * - Remove unused methods from mw.Api.js
 * - Remove unused JS files

NavigationTiming

 * - ext.NavigationTiming: Add effectiveType from the NetworkInfo API
 * - ext.navigationTiming: Remove asia sampling code

OATHAuth

 * - Update at-ease calls in extensions

ORES

 * - Removed deprecated position statements from resource loader module
 * - build: Update linters
 * - Enable ORES filters on RecentChangesLinked
 * - Add tests for ORES\ORESService::getWikiID
 * - Move Hooks::onRecentChange_save to a dedicated class
 * - Create Selenium UI tests for ORES damaging and good faith filters.

PageAssessments

 * - Fix 500 error with PageAssessments API

PageImages

 * - build: Update linters

PageTriage

 * - Update at-ease calls in extensions

PagedTiffHandler

 * - Update at-ease calls in extensions

ParserFunctions

 * - Enable non-ascii letters in expression error

PoolCounter

 * - Update at-ease calls in extensions

Popups

 * - Updating mw-node-qunit to v3

ProofreadPage

 * - Removed deprecated position statements from resource loader module
 * - Adds rel="(prev|next)" to previous/next page navigation links

PropertySuggester

 * - Inject LBFactory instead of requesting it again via MWServices
 * - Replace wfGetLBFactory/wfGetLB

ReadingLists

 * - Provide timestamp to continue sync from

Renameuser

 * - Use IDatabase::makeList instead of building SQL query manually

Scribunto

 * - Update at-ease calls in extensions
 * - Use PSR-3 logging instead of wfDebug
 * - SECURITY: Reduce precision on os.clock to mitigate timing attacks
 * - Invalidate slow function call cache to avoid warnings
 * - Sanify handling of array keys
 * - LuaStandalone: Improve passing of numeric values
 * - LuaStandalone: Properly handle serialization errors

Sentry

 * Newly deployed extension

TemplateData

 * - Block duplicate parameter names when editing existing parameters

TemplateStyles

 * - Add ENT_NOQUOTES to htmlspecialchars
 * - Set a requirement of MW >= 1.31
 * - Swap MediaWiki\quietCall -> Wikimedia\quietCall
 * - Deduplicate embedded style rules
 * - Update wikimedia/css-sanitizer

TextExtracts

 * - Bump cache version due to 'unwrap' ParserOutput option

Thanks

 * - Remove a coding-standard exclusion
 * - Simplify ext.thanks.mobilediff.js
 * - Simplify by using jQuery

TimedMediaHandler

 * - Remove coded relate to unsupported clients
 * - build: Lint own files in MwEmbedModules
 * - Replace deprecated $j by $
 * - Replace MediaWiki\quietCall
 * - Replace wfGetLBFactory
 * - Order types for optimized video.js playback

TorBlock

 * - Split assignment and return statement

Translate

 * - Remove dependecies on module 'mediawiki.api.edit'
 * - Split assignment and return statement

TwoColConflict

 * - Fix failing browser test
 * - Remove hint and link from twoColConflict-beta-feature-description

UniversalLanguageSelector

 * - Make ULS trigger and settings more keyboard accessible
 * - Reduce the padding for ULS trigger icon in personal toolbar position
 * - Update jquery.uls to 4cb4fe2
 * - Update jquery.uls to 9f9327a
 * - Custom no-results message for compact links search
 * - Don't apply CLL to pages with the noexternallanglinks magic word
 * - Use dash as separator for non-prefix matches in language name search

UploadWizard

 * - Fix eslint syntax

UrlShortener

 * - Replace wfGetLBFactory/wfGetLB

VisualEditor

 * - NWE preview: Avoid skin style clash
 * - Remove IE9 workaround
 * - Follow-up Idbcb76f: Only apply /includes folder fix to local path
 * - Don't try to insertMetas at 0,0, just at 0 now (lest we crash)
 * - Update at-ease calls in extensions
 * - Update VE core submodule to master (bf555de7e)
 * - Remove /* global confirm, alert */
 * - Update VE core submodule to master (c39a4a69b)
 * - ApiVisualEditor: Update getPreloadContent's parseWikitextFragment call
 * - Follow-up fa9438e5f: Fix path to back-up data source for non-ULS installs
 * - ve.ui.MWWikitextSurface: Implement textSelection 'replaceSelection', 'encapsulateSelection'
 * - ve.ui.MWWikitextSurface: Make 'textSelection' API chainable methods really chainable
 * - build: Use SVGO option of 'grunt-image'
 * - Re-crush beta feature SVG screenshots
 * - phpcs: Don't try to be smart about excluding VE, it doesn't work
 * - build: Move PHP files to expected paths
 * - Assume wpTextbox1 has an API registered already
 * - Revert "Use wgEditSubmitButtonLabelPublish from upstream"
 * - Update VE core submodule to master (2ac0e8b0c)
 * - VisualDiffs: Create an optional BetaFeature for historical diffs
 * - Update VE core submodule to master (ef55ee03a)
 * - Add trailing linebreak to NWE's temporary wikitext editor

WikiEditor

 * - Split assignment and return statement

WikiLove

 * - Use formatversion=2 for API requests
 * - Simplify by using jQuery instead of mw.html.escape
 * - $.inArray -> Array.prototype.indexOf
 * - eslint: Remove onevar/vars-on-top exceptions
 * - eslint: Document methods
 * - Use #on for event listening
 * - Use mw.Title for filename normalization
 * - Update documentation
 * - eslint: Remove indent and no-alert exceptions
 * - Fix phpcs exclude rules
 * - Change from jshint to eslint

Wikibase

 * - Use the "old-style" database settings for changesDatabase and repoSiteId
 * - Wait for Cirrus index update in browser tests when needed
 * - Remove lonely @defgroup tag from WikibaseClient.php
 * - Revert "Link entity ids in merge and redirect summaries"
 * - Link entity ids in merge and redirect summaries
 * - Simplify and remove not needed inline @var type hints
 * - Rename prefix query builder type to WIKIBASE_PREFIX_QUERY_BUILDER
 * - Use namespaced ObjectFactory
 * - Replace "setting" with "set" in wbsetaliases-set message
 * - Integrate wikibase custom rescoring with cirrus profile service
 * - Add comment to ChangeOps::apply explaining "…-update" summaries

WikibaseQuality

 * - Update Wikibase CodeSniffer to 0.3.0

WikibaseQualityConstraints

 * - Add support for serializing multilingual text
 * - Add assertion to serializeStringByIdentity
 * - Add support for serializing languages
 * - Add support for serializing constraint scope lists
 * - Add support for serializing constraint scopes
 * - Add support for serializing inline code
 * - Add support for serializing data value types
 * - Add support for serializing DataValues
 * - Restrict default scope of UniqueValueChecker
 * - Update Wikibase CodeSniffer to 0.3.0
 * - Remove alternativeMessageKey from serialization
 * - Use ViolationMessage for FormatChecker
 * - Add support for multilingual text to ViolationMessage
 * - eslint: Fix keyword-spacing and space-before-function-paren
 * - eslint: Fix wrap-iife
 * - Replace wfGetLBFactory/wfGetLB
 * - Add support for serializing ItemIdSnakValue lists
 * - Add support for serializing ItemIdSnakValues
 * - Add support for serializing entity ID lists
 * - Add support for serializing entity IDs
 * - Add ViolationMessageSerializationTest
 * - Add ViolationMessageDeserializer
 * - Add ViolationMessageSerializer
 * - Minor ViolationMessageRenderer improvements
 * - Add support for language to ViolationMessage
 * - Add support for constraint scope lists to ViolationMessage
 * - Add support for constraint scopes to ViolationMessage
 * - Inject Config into ViolationMessageRenderer

WikimediaBadges

 * - Update at-ease calls in extensions

WikimediaMaintenance

 * - Remove Wikidata bundle extension from maintenance scripts

WikimediaMessages

 * - Fix new edit filters beta feature message

cldr

 * - Move TimeUnitsTest to standard location
 * - Add @covers tag

CologneBlue

 * - Removed deprecated position statements from resource loader module

MinervaNeue

 * - Removed deprecated position statements from resource loader module
 * - Pages that do not exist cannot have issues
 * - Remove main page toggle check
 * - Explicitly use LESS variable for breakpoint defined in mediawiki ui
 * - Flag that Minerva now depends on 2.1 of MobileFrontend
 * - Minerva should use FeatureManagers class
 * - Optimise Special:MobileOptions for tablet display
 * - Always render taglines unconditionally and update styles
 * - Fix broken QUnit test
 * - Pages with only forms should take up entire page

MonoBook

 * - Removed deprecated position statements from resource loader module

Timeless

 * - Removed deprecated position statements from resource loader module

Vector

 * - Removed deprecated position statements from resource loader module
 * - Make dropdown menus keyboard-accessible without JavaScript