MediaWiki 1.38/wmf.20/Changelog

Core changes

 * - Branch commit for wmf/1.38.0-wmf.20 by trainbranchbot
 * - Skins: Supply is-empty for portlets by mainframe98
 * - objectcache: add "globalKeyLbDomain" option to use with "globalKeyLB" by Aaron Schulz
 * - user: Set a default value for all searchNs* user preferences by Umherirrender
 * - Update symfony/* by Reedy
 * - HTMLFormFieldCloner: Cache form fields for further use by Func
 * - Load fields for validation of user options in one go by Func
 * - SpecialExport: Add hide-if statement conditionally by Func
 * - HTMLFormField: Simplify duplicated codes of checkStateRecurse by Func
 * - Add Nkore (nyn) to Names.php by Amir E. Aharoni
 * - Fix page_props DELETE/INSERT on null edit by Tim Starling
 * - Metrics: Fix typo in wgMetricsPrefix docs by Timo Tijhof
 * - Upgrading psy/psysh (v0.10.12 => v0.11.1) by Reedy
 * - Exceptions should use the message box class by Jon Robson
 * - PageHTMLHandler: Do not de-duplicate styles in Parsoid HTML by Bartosz Dziewoński
 * - HTMLFormField: Split out the validation of cond-state params by Func
 * - remove access to config globals from FauxResponse by daniel
 * - Add tests for HTMLFormField 'hide-if' / 'disable-if' functionality by Bartosz Dziewoński
 * - rdbms: Introduce TransactionManager class to move out the logic by Amir Sarabadani
 * - Move page title to the beginning of page action interface messages by Amir E. Aharoni
 * - HttpRequestFactory: allow 0 to mean no max timeout. by daniel
 * - Use a mutex to prevent settings cache stampedes by Dan Duvall
 * - ChangesListSpecialPage: Replace ResourceLoaderContext with MessageLocalizer/Language by Bartosz Dziewoński
 * - CategoryViewer: Use the same markup whether displaying in columns or not by Bartosz Dziewoński
 * - Update section name in toc data array by Clare Ming
 * - Add a new interface ForeignRepoWithMWApi by Brian Wolff
 * - resourceloader: Speed up mw.loader 404 test by Timo Tijhof
 * - Update Skin::getSectionData method by Clare Ming
 * - Fix pollution of LinkBatch/LinkCache with interwiki link by Tim Starling
 * - phpunit: use ->getServiceContainer in integration tests by Alexander Vorwerk
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender
 * - Parsoid output now respects thumbsize in parserTests by Arlo Breault
 * - Add additional layer of nesting to TOC data to better support rendering of TOC with mustache templates by bwang
 * - schema: Make page_id references unsigned by Umherirrender
 * - Move property initialisation out of the constructor by Thiemo Kreuz
 * - [selenium] Remove leftovers from rollback tests by WMDE-Fisch
 * - PHPUnit: Cover `rewind`, `next`, and `key` test cases by Derick Alangi
 * - Reorder the letters in the Saraiki alphabet linkTrail by Amir Aharoni
 * - Drop rev_page_id index on revision by Amir Sarabadani
 * - ActivityUpdateJob: Use primary key for db update on watchlist table by Umherirrender
 * - Don't consider lock waits to be write queries by Tim Starling
 * - Untie Wikimedia message boxes from on-wiki messageboxes by Jdlrobson
 * - WebInstallerOptions: refactor execute into smaller methods by Gergő Tisza
 * - rdbms: remove deprecated DBAccessBase class by Aaron Schulz
 * - Convert various callers to LoadBalancer::getConnectionRef by Aaron Schulz
 * - Update skin ordering to prioritize skins set through a new config by bwang
 * - MultiHttpClient: Add note about PHP 8.0 support by Tim Starling
 * - resourceloader: Change SkinModule list mode to not add implicit features by Jon Robson
 * - filerepo: Simplify and document 'favicon' FileRepo option by Timo Tijhof
 * - Reapply "SettingsBuilder: allow maintenance scripts to manipulate config" by Ppchelko
 * - Avoid COUNT(*) in assertSelect for WikiPageDbTest  by Umherirrender
 * - Revert "SettingsBuilder: allow maintenance scripts to manipulate config" by Ppchelko
 * - Update configuration for the Prussian language (prg) by Amir E. Aharoni
 * - SettingsBuilder: allow maintenance scripts to manipulate config   by daniel
 * - Fix empty div when there's no sitenotice. by Ammarpad
 * - Support audio on filepage in InstantCommons by Derk-Jan Hartman
 * - DatabaseBlock: assert the blocker to be from the correct wiki by Alexander Vorwerk
 * - Stop using is_resource where possible by Tim Starling
 * - Deprecate passing a db to BlockRestrictionStore::loadByBlockId by Alexander Vorwerk
 * - rdbms: Pass commented SQL to the GeneralizedSql for logging by Amir Sarabadani
 * - recountCategories.php: Automatically run cleanupEmptyCategories.php too by Kunal Mehta
 * - Allow empty revisions to be created with pageUpdater. by daniel
 * - DevelopmentSettings: Move wgPasswordAttemptThrottle to correct section by Kosta Harlan
 * - Add default comment when there's no comment on some changeslist pages by Ammarpad
 * - Apply ReturnTypeWillChange to various implementations of built in interfaces by Reedy
 * - PHP 8.1: add ENT_COMPAT to some htmlspecialchars calls by Tim Starling
 * - In PHP 8.1 don't throw exceptions from mysqli by Tim Starling
 * - Fix deprecation warning from CURLPIPE_HTTP1 by Tim Starling
 * - mediawiki.mixins: Deprecate various mixins by Volker E
 * - EditPage: Allow passing context to getCopyrightWarning  by Bartosz Dziewoński
 * - Exclude node_modules from php lint script by Adam Wight
 * - Watchlist tools should be more flexible for styling by skins by Jon Robson
 * - Introduce a BlockRestrictionStoreFactory by Alexander Vorwerk
 * - SettingsBuilder: fix merging into globals by daniel
 * - Allow parser tests to test the value of extension data and properties by Tim Starling
 * - Linker::getRollbackEditCount confused on revisions with same timestamp  by Umherirrender
 * - Add linktarget table by Amir Sarabadani
 * - Improve the performance of guessSerialValueSize by Tim Starling
 * - tests: Replace usages of deprecated WikiPage::doDeleteArticleReal by Daimona Eaytoy
 * - jquery.tablesorter: Move var declarations inline by Ed Sanders

Vendor

 * - Bump wikimedia/parsoid to 0.15.0-a18   by Subramanya Sastry
 * - Upgrading psy/psysh (v0.10.12 => v0.11.1) by Reedy
 * - Update symfony/* by Reedy

AbuseFilter

 * - Don't implode and explode links by Matěj Suchánek

ApiFeatureUsage

 * - Move apihelp messages to a separate file by Amir E. Aharoni

BetaFeatures

 * - Use temporary hooks for tests by Func
 * - Convert to use MainConfig by Func
 * - Allow other extensions to check if a feature is enabled in a specific state of user options by Func
 * - abstract schema: Remove unneeded length from integer type by Umherirrender

BounceHandler

 * - Switch to using LoadBalancer::getConnectionRef by Aaron Schulz
 * - abstract schema: Use mwtimestamp type for br_timestamp column by Umherirrender

CentralAuth

 * - Remove CentralAuthUtils and all remaining usages by Alexander Vorwerk
 * - CentralAuthUser: use WikiAwareEntity::LOCAL for local wiki suppression  by Alexander Vorwerk
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender
 * - Drop UserMerge hooks by Taavi Väänänen
 * - GlobalGroupPermissions: Do not allow deleting groups with members by Taavi Väänänen
 * - Fetch correct BlockRestrictionStore by Alexander Vorwerk

CirrusSearch

 * - Add oparameter to Maintenance::finalSetup by daniel
 * - quoted intitle search must only query plain by Erik Bernhardson
 * - Increase minimum integration test wait time by Erik Bernhardson
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

Cite

 * - ve-cite: Ensure references are always unique by generating originalDomElementsHash by Ed Sanders
 * - ve-cite: Update diff tests with new ref list HTML by Ed Sanders
 * - Use correct Sanitizer method for id/fragment escaping by Thiemo Kreuz

Citoid

 * - ve.ui.CitoidInspectorTool: Parse "education popup" text as wikitext by Bartosz Dziewoński

cldr

 * - Add S'gaw Karen (ksw), not part of CLDR by Raymond

ContentTranslation

 * - styles: Use class 'cx-translation-filter' not 'translation-filter' by James D. Forrester
 * - styles: Use class 'cx-disabled' not 'disabled' by James D. Forrester
 * - CX3 Build 0.1.0+20220131 by Santhosh Thottingal
 * - Remove unused sticky class styles by James D. Forrester

DiscussionTools

 * - CommentItem: Fix typo in documentation by Ed Sanders
 * - controller: Fix typo in documentation by Ed Sanders
 * - Clear autosave when following links from the legacy hint by David Lynch

DonationInterface

 * - Adyen monthly convert: add yaml files for variants by Elliott Eggleston
 * - Allow rendering MC modal outside of ResultSwitcher  by Damilare Adedoyin
 * - Put E-mail Pref. Ctr. styles in their own module, for early loading by Andrew Green
 * - Update SmashPig to 0.7.9, fix tests by Elliott Eggleston
 * - Add Abitab cash xfer for Uruguay by Elliott Eggleston
 * - Tokenize the adyen monthly convert by wfan
 * - Replace deprecated ApiBase constants by Elliott Eggleston
 * - Dedupe some CSS rules to hide MW interface by Elliott Eggleston
 * - Remove Adyen HPP implementation by Elliott Eggleston
 * - Separate RL style module to hide MW elements, fix loading on Special:EmailPreferences by Andrew Green
 * - Add extra translation for adyen check out form by wfan

Echo

 * - selenium: Delete invisible unicode characters by osamaahmed17
 * - Exclude dynamic namespaces for page-linked-title muted list by Siddharth VP
 * - selenium: Upgrade WebdriverIO to v7  by osamaahmed17
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender
 * - Prevent welcome message partially truncated by Sergio Gimeno

ElectronPdfService

 * - selenium: Refactor WebdriverIO tests from sync to async mode by osamaahmed17

EntitySchema

 * - Name ParserOutput variables to $parserOutput not $output always by James D. Forrester
 * - Use array style on adding modules to ParserOutput by Umherirrender

EventLogging

 * - Replace User::getEditCount with UserEditTracker by Umherirrender
 * - Allow limiting debug mode to console by Gergő Tisza
 * - Passing a string to ParserOutput::addModules/addModuleStyles is deprecated by James D. Forrester

FileExporter

 * - Clean-up beta feature setting by WMDE-Fisch

FileImporter

 * - Replace deprecated token check by WMDE-Fisch
 * - Check edit rights before uploading by WMDE-Fisch
 * - Fix uses of error and warningbox in FileImporter by WMDE-Fisch
 * - [selenium] Remove test for WikiEditor by WMDE-Fisch
 * - Narrow interfaces in SpecialImportFile by Thiemo Kreuz
 * - Minor documentation and test code cleanups by Thiemo Kreuz
 * - Disable VE and 2017 wikitext editor on Edit File Info by WMDE-Fisch
 * - Use Authority permission checks in ImportPlanValidator by WMDE-Fisch
 * - Replace deprecated Title::isProtected by WMDE-Fisch

FlaggedRevs

 * - Fix alter table for sqlite by Amir Sarabadani
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender
 * - ext.flaggedRevs.review: Remove needless use of jQuery by Timo Tijhof
 * - ext.flaggedRevs.review: Update to current coding conventions by Timo Tijhof
 * - Remove "under review" advertisement functionality by Amir Sarabadani

Flow

 * - Use method provided by the BetaFeatures extension to check changes of beta preferences by Func
 * - Avoid exceptions in action=compare API by Gergő Tisza

Gadgets

 * - Avoid validating gadget definition content multiple times on save by Siddharth VP

GlobalUserPage

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

GrowthExperiments

 * - Revert "Structured Task: Set the default state of wpWatchthis checkbox based on watchdefault preference" by MewOphaswongse
 * - MentorHooks::onLocalUserCreated: Use injected copy of MentorManager by Martin Urbanec
 * - MentorStore: Fully disallow no mentor role passed to load/set methods by Martin Urbanec
 * - Mentor dashboard: standarise JSON response in mentees handler by Sergio Gimeno
 * - MentorTools: Change icons under "Mentor status" to play/pause by Martin Urbanec
 * - MentorTools: Use info-unpadded icon by Martin Urbanec
 * - SpecialClaimMentee: Wrap description in a  by Martin Urbanec
 * - Fix api-testing tests in CI by Kosta Harlan
 * - api-testing: Load LocalSettings.php from Selenium tests by Kosta Harlan
 * - Tests: Skip Minerva-dependent tests if Minerva is not present by Kosta Harlan
 * - Suggested edits: Fix tracking by Gergő Tisza
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender
 * - Structured Task: Set the default state of wpWatchthis checkbox based on watchdefault preference by MewOphaswongse
 * - Structured task: Swap the positions of watchlist and copyright footers by MewOphaswongse
 * - Add an image: increase horizontal space to inspector chevron icon by Sergio Gimeno
 * - Mentor settings: Rename "Other actions" section to "Claim mentee" by Martin Urbanec
 * - Mentor settings: Copy changes by Martin Urbanec
 * - Set GEMentorDashboardDeploymentMode to alpha by default by Martin Urbanec
 * - Mentee overview: Update no mentees message by Martin Urbanec
 * - Rename files in utils directory by MewOphaswongse
 * - Suggested Edits: Close the filters dialog after the task feed has been updated by MewOphaswongse
 * - Add an image: update onboarding images for desktop by MewOphaswongse

GWToolset

 * - Remove some unused and redundant local variables by Thiemo Kreuz
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

InterwikiSorting

 * - LanguageLinksHandler: remove unneeded factory method by DannyS712

IPInfo

 * - Refactor the CSS in IPInfo by tsepothoabala
 * - Normalize returned null values by STran
 * - Create ipinfo_ip_changes table by Thalia

JsonConfig

 * - Prefer instanceof instead of is_a by Thiemo Kreuz

Linter

 * - Add namespace column and new index to Linter table - part 1 by sbailey

LiquidThreads

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

MachineVision

 * - Remove unused method by Matthias Mullie
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

MassMessage

 * - SpecialMassMessage: Tweak comment formatting, remove outdated comments by Abijeet
 * - Sanitize page message and custom subject by Abijeet
 * - Introduce MessageBuilder and related tests by Abijeet
 * - Add functionality to send multi-lingual subject by Abijeet
 * - Introduce PageMessageBuilder and related result class by Abijeet

MediaModeration

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

NavigationTiming

 * - Disable flaky test by Timo Tijhof
 * - tests: Pass mocks as parameter instead of stubbing globals by Timo Tijhof
 * - ext.navigationTiming: Remove legacy chrome.loadTimes collection by Timo Tijhof
 * - ext.navigationTiming: Declare inline vars, improve docs by Timo Tijhof

Newsletter

 * - Remove lots of unused code for impossible false returns from IDatabase by Timo Tijhof

OAuthRateLimiter

 * - abstract schema: Generate postgres schema file by Umherirrender

OpenStackManager

 * - Mark code as private and remove unused code by Thiemo Kreuz

ORES

 * - SpecialORESModels: remove unneeded factory method by DannyS712
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

PageAssessments

 * - Convert to abstract schema by Umherirrender

ProofreadPage

 * - VE: Fix handling header/footer when generating HTML to save by Bartosz Dziewoński

Scribunto

 * - Add test for pageLanguage property by Tim Starling

SecurePoll

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

TemplateData

 * - Fix use of errorbox in TemplateData by WMDE-Fisch

Thanks

 * - JS: Update APIs to make more extensible by Ed Sanders
 * - build: Update eslint config by Ed Sanders

TheWikipediaLibrary

 * - Re-order some eligibility checks to calculate the most expensive ones last by Bartosz Dziewoński
 * - Restore DeferredUpdate in maybeSendNotification by jsn

TimedMediaHandler

 * - Handle media that is already playing by Derk-Jan Hartman
 * - Do not clone track and source children for placeholder by Derk-Jan Hartman
 * - Turn inlineplayer and mediadialog into classes by Derk-Jan Hartman
 * - Using a simple css instead of an extra 'audio-play' image by Iniquity
 * - VideoJS embedplayer performance improvements by Derk-Jan Hartman

Translate

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender
 * - PHP preload fixes by Tim Starling
 * - TranslateYamlTest: Fix expected value for yaml 2.2.0+ by Tim Starling

TranslationNotifications

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

TwoColConflict

 * - Fix uses of warningbox in TwoColConflict by WMDE-Fisch

UniversalLanguageSelector

 * - Update grunt-stylelint to 0.17.0 by Amir E. Aharoni
 * - Improve the loading time of ULS language selector by fetching modules early by Santhosh Thottingal

UploadWizard

 * - Rename $output to $parserOutput when it contains a ParserOutput by C. Scott Ananian
 * - Remove checking on return value of db->update by Amir Sarabadani
 * - Use array style on adding modules to ParserOutput/OutputPage by Umherirrender

VisualEditor

 * - Update VE core submodule to master (37ee8ffcd) by Bartosz Dziewoński
 * - Allow disabling VE and 2017 wikitext editor from FileImporter  by WMDE-Fisch
 * - Don't attempt to pin first visible section if firstHeading is visible by Ed Sanders
 * - Use OOUI 'play' icon for audio placeholder by Iniquity
 * - Follow naming convention for static methods by Thiemo Kreuz
 * - Update VE core submodule to master (bbeac08b7)  by Bartosz Dziewoński
 * - Always enable visual diff when diffmode=visual by Ed Sanders
 * - Ignore originalWidth/Height when diffing images by Ed Sanders
 * - Don't wrap unknown actions with confirmation by Adam Wight
 * - VE-MW: Consistently use target/surface $scrollContainer to set/get scrollTop by Ed Sanders
 * - Update VE core submodule to master (c3f56a0b9) by Bartosz Dziewoński
 * - Update VE core submodule to master (7c6e1b91f) by Bartosz Dziewoński
 * - Update VE core submodule to master (bbdba097b)  by Bartosz Dziewoński
 * - Use new *SelectableContentOffset method when setting section selection by Ed Sanders
 * - Tweak vertical alignment of progress bar within toolbar (source mode) by Ed Sanders
 * - Include heading margin when running scrollToHeading by Ed Sanders
 * - Position VE desktop loading bar with position:fixed by Ed Sanders
 * - VisualEditorDataModule: Generate definition summary without parsing wikitext by Bartosz Dziewoński
 * - Move copyright warning message parsing from RL module to API by Bartosz Dziewoński
 * - selenium: Rename load test to content editable by Esther Akinloose
 * - Remove left over from old two column conflict UI trigger by WMDE-Fisch
 * - ve.ui.MWLinkInspectorTool: Parse "education popup" text as wikitext by Bartosz Dziewoński
 * - ve.ui.MWEducationPopupWidget: Allow formatting in the popup text by Bartosz Dziewoński
 * - Remove conflicting section IDs in diff views by Ed Sanders

Wikibase

 * - Enable new / mobile Termbox (v2) by default by Lucas Werkmeister
 * - Allow ssrServerUrl to be null by Lucas Werkmeister
 * - Bump wdio-mediawiki from 1.1.1 to 1.2.0 by Addbot
 * - doc: dist-size: download plotly.js at runtime by Lucas Werkmeister
 * - TR: Migrate to Vue 3 and Vuex 4 by Lucas Werkmeister
 * - Bump mocha from 9.1.3 to 9.2.0 by Addbot
 * - Apply LanguageCode::bcp47 for HTML attribute 'lang' by Fomafix
 * - bridge: remove or fix `await`s on $emit by Lucas Werkmeister
 * - Bump @wdio/local-runner from 7.16.8 to 7.16.13 by Addbot
 * - build(deps-dev): bump @wdio/sync from 7.16.8 to 7.16.13 by Addbot
 * - build(deps-dev): bump @wdio/spec-reporter from 7.16.4 to 7.16.13 by Addbot
 * - build(deps-dev): bump @wdio/cli from 7.16.8 to 7.16.13 by Addbot
 * - Remove HashSiteLinkStore::clear by Lucas Werkmeister
 * - Add strict types to SiteLinkLookup classes by Lucas Werkmeister
 * - Remove no-longer-used Phan suppression by Lucas Werkmeister
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender
 * - Remove explicit graphql dependency from package.json by Lucas Werkmeister
 * - Maintenance::finalSetup - add SettingsBuilder by Petr Pchelko
 * - Remove unused languageCode from SitesModuleTest by Lucas Werkmeister
 * - SitesModule: Replace wfMessage with use of MessageLocalizer by Bartosz Dziewoński
 * - Add explicit and implicit fallbacks to chain separately by Lucas Werkmeister
 * - Simplify LanguageFallbackChainFactory implementation by Lucas Werkmeister
 * - Remove mode arguments from LanguageFallbackChainFactory by Lucas Werkmeister
 * - Don’t use custom fallback mode in TermLanguageFallbackChainTest by Lucas Werkmeister
 * - Fix type comments in LanguageFallbackChainFactory by Lucas Werkmeister
 * - Remove custom mode from EntityAccessorTest by Lucas Werkmeister
 * - Remove LanguageFallbackChainFactory default mode arguments by Lucas Werkmeister
 * - build(deps-dev): bump webdriverio from 7.16.8 to 7.16.13 by Addbot

WikibaseLexeme

 * - Bump @wdio/sync from 7.16.13 to 7.16.14 by Addbot
 * - Bump @wdio/mocha-framework from 7.16.13 to 7.16.14 by Addbot
 * - Bump @wdio/local-runner from 7.16.13 to 7.16.14 by Addbot
 * - Bump @wdio/junit-reporter from 7.16.13 to 7.16.14 by Addbot
 * - Bump @wdio/dot-reporter from 7.16.13 to 7.16.14 by Addbot
 * - Bump @wdio/cli from 7.16.13 to 7.16.14 by Addbot
 * - Bump sinon from 12.0.1 to 13.0.0 by Addbot
 * - Bump webdriverio from 7.16.13 to 7.16.14 by Addbot
 * - Add baserevid to wblremoveform API module by Amir Sarabadani
 * - LexemeIdHtmlFormatter: convert lemma lang attribute to BCP 47 by Jakob Warkotsch
 * - Replace @see with @inheritDoc where possible by Thiemo Kreuz

WikibaseMediaInfo

 * - Escape various messages in WikibaseMediaInfo by dylsss
 * - Add escaped mock to mw helper object for qunit tests by sbassett
 * - Revert "Escape various messages in WikibaseMediaInfo" by SBassett
 * - Escape various messages in WikibaseMediaInfo by dylsss
 * - Delete unneeded MediaSearch template by dylsss

WikibaseQualityConstraints

 * - Bump sinon from 12.0.1 to 13.0.0 by Addbot
 * - Revert "Rename Unit directory to unit" by James D. Forrester
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

WikiLambda

 * - doc: Fix some TODOs to always list Task immediately after by James D. Forrester
 * - Add phab IDs to FIXMEs and TODOs by gengh
 * - Fix composition not working on the FE by Simone This Dot
 * - Enhance the "Object selector" to allow user to type within its first entry instead than the input by adesoji
 * - Enable the FE to read and display Typed List, Map and pair correctly by Simone This Dot
 * - fix parsing of typedList so user defined types load by jkieserman
 * - Update function-schemata sub-module to HEAD (c2667cb)  by James D. Forrester
 * - Allow user to add labels in another language in function definition by adesoji
 * - AUTHORS: Update for January 2022 by James D. Forrester

WikimediaEvents

 * - Use method provided by the BetaFeatures extension to check changes of beta preferences by Func
 * - mobileWebUIActions: Optimise "body" query via document.body reference by Timo Tijhof
 * - Fix tests depending on UserBucketProvider::getUserEditCountBucket by Umherirrender

WikimediaIncubator

 * - build: Drop CentralAuth dependency by Taavi Väänänen
 * - Remove the recommendation to make the account global by Amir E. Aharoni
 * - Remove four unused messages by Amir E. Aharoni
 * - Change "None/All" to "All wikis" by Amir E. Aharoni

WikimediaMaintenance

 * - Adjust path for schema file of extension PageAssessments by Umherirrender
 * - blameStartupRegistry: Escape dots in stats component name by Timo Tijhof

Timeless

 * - Do not duplicate categories in primary action tabs space by Ammarpad

Vector

 * - Drop search related feature flags by jdlrobson
 * - Setup jest unit tests and add basic test cases for AB.js and App.vue by bwang
 * - Don't show language alert on main page if it has no languages by Clare Ming
 * - Tests: Limit testGetTemplateData to current values to allow expansion by Jon Robson
 * - [config] Vector should default to language button by Jon Robson
 * - Fix issues with language alert in sidebar:  by Clare Ming
 * - Enable sticky header by default by Clare Ming
 * - Language alert box should use Html::noticeBox by Jon Robson
 * - Changes the labels of the Vector skins by jdlrobson
 * - Opt out of external link icons by Jon Robson
 * - Rely on core TOC data to show the TOC in Vector by bwang
 * - Add sectionObserver and tableOfContents component JS to respond to intersection changes by Nicholas Ray
 * - Do not load common.js twice by Jon Robson
 * - Opt in link should be different in migration mode by Jon Robson
 * - Update typescript to latest (v4.5.5) by Nicholas Ray

VisualEditor/VisualEditor

 * - DiffElement: Don't show meaningless spaces inside added block nodes by Bartosz Dziewoński
 * - Target: Don't create toolbar in scroll handler by Ed Sanders
 * - Add more complex internal list diff test by Ed Sanders
 * - Fix regex that replaces nothing with nothing by Thiemo Kreuz
 * - DiffElement: Use horizontal scroll when necessary on content area by Ed Sanders
 * - Fix internal list diff when lists are fully inserted/removed by Ed Sanders
 * - Fix list diffs by Ed Sanders
 * - DiffElement: Simplify internal list rendering using list item value attribute by Ed Sanders
 * - DiffElement: Add core test for internal list diff by Ed Sanders
 * - DiffElement/VisualDiff: Use node's root to determine the document model by Ed Sanders
 * - Re-apply "Follow-up I0802440d9: Allow alien / 's to be focused" by Esanders
 * - Follow-up I227a0d70: Remove partially complete mixin of ContentEditableNode from list items by Ed Sanders
 * - Test: Ignore XML parse warnings in other comment escaping test by Ed Sanders
 * - Consistently use $scrollListener when listening to scroll events by Ed Sanders
 * - Consistently use target/surface $scrollContainer to set/get scrollTop by Ed Sanders

No changes

 * 3D
 * ActiveAbstract
 * AdvancedSearch
 * AntiSpoof
 * ArticleCreationWorkflow
 * ArticlePlaceholder
 * Babel
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * CentralNotice
 * CharInsert
 * CheckUser
 * ChessBrowser
 * CiteThisPage
 * CodeEditor
 * CodeMirror
 * CodeReview
 * Cognate
 * Collection
 * CologneBlue
 * CommonsMetadata
 * ConfirmEdit
 * CongressLookup
 * ContactPage
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * DoubleWiki
 * DynamicSidebar
 * Elastica
 * EventBus
 * EventStreamConfig
 * ExtensionDistributor
 * ExternalGuidance
 * FeaturedFeeds
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GeoCrumbs
 * GeoData
 * GlobalBlocking
 * GlobalCssJs
 * GlobalPreferences
 * GlobalUsage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * Graph
 * GuidedTour
 * ImageMap
 * InputBox
 * Insider
 * Interwiki
 * Josa
 * Kartographer
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * Listings
 * LocalisationUpdate
 * LoginNotify
 * MapSources
 * Math
 * MediaSearch
 * MinervaNeue
 * MobileApp
 * MobileFrontend
 * Modern
 * MonoBook
 * MultimediaViewer
 * NearbyPages
 * NewUserMessage
 * Nostalgia
 * Nuke
 * OATHAuth
 * OAuth
 * PageImages
 * PageNotice
 * PageTriage
 * PageViewInfo
 * PagedTiffHandler
 * ParserFunctions
 * PdfHandler
 * Poem
 * PoolCounter
 * Popups
 * PropertySuggester
 * QuickSurveys
 * Quiz
 * RSS
 * ReadingLists
 * RelatedArticles
 * Renameuser
 * RevisionSlider
 * SandboxLink
 * Score
 * SearchExtraNS
 * SecureLinkFixer
 * ShortUrl
 * SiteMatrix
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateSandbox
 * TemplateStyles
 * TemplateWizard
 * TextExtracts
 * TitleBlacklist
 * TocTree
 * TorBlock
 * TrustedXFF
 * UploadsLink
 * UrlShortener
 * VipsScaler
 * WebAuthn
 * WikiEditor
 * WikiLove
 * WikibaseCirrusSearch
 * WikibaseLexemeCirrusSearch
 * Wikidata.org
 * WikidataPageBanner
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaMessages
 * Wikisource
 * XAnalytics
 * intersection
 * timeline
 * wikihiero

Total changes
346 Changes in 64 repos by 77 authors