MediaWiki 1.40/wmf.10/Changelog

Core changes

 * - Branch commit for wmf/1.40.0-wmf.10 by trainbranchbot
 * - Remove deprecated search page title getter/setter methods by Rinish Sam
 * - Remove unnecessary wrappers for generator functions by Bartosz Dziewoński
 * - Add bcp47 as a dev dependency to unbreak API testing in Parsoid by Subramanya Sastry
 * - Fix division by zero in FullSearchResultWidget by Tim Starling
 * - api: Remove compat code for expiry in action=userrights by Umherirrender
 * - article: Replace deprecated User::isBlockedFrom by Umherirrender
 * - tests: Simplify some nested ->will( $this->return assertions by Reedy
 * - api: Do not use rctitle and rcnamespace together by Umherirrender
 * - Api Testing: Enable some variant tests in Transform.js by Abijeet
 * - Remove pre PHP 7.4 serialize/unserialize by Reedy
 * - Update wikimedia/shellbox to 4.0.0. by C. Scott Ananian
 * - Revert "Treat search result suggestions like clicks" by Lucas Werkmeister (WMDE)
 * - Allow users to go to the article by clicking on thumb in special:search by Simone Cuomo
 * - ParsoidHandler: remove subst feature from wt2html  by daniel
 * - SessionConsistentConnectionManager: deprecate *Ref methods by Lucas Werkmeister
 * - site: Hard-deprecate MediaWikiSite::getFileUrl without $path by Lucas Werkmeister
 * - Phan: parse only directly required composer dependencies by Tim Starling
 * - SpecialBotPasswords: Don't pass null to trim by Reedy
 * - objectcache: use WRITE_BACKGROUND in WANObjectCache where applicable by Aaron Schulz
 * - Title: Replace wfGetLangObj and add a new function getDbPageLanguage by Fomafix
 * - Tweak misleading error message about PCRE by Bartosz Dziewoński
 * - Remove DifferenceEngine::textDiff by Matěj Suchánek
 * - Remove separate checks for global blocks from APIUpload and SpecialUpload by csimiyu
 * - Remove some deprecated methods from deferred updates by Matěj Suchánek
 * - Remove separate Global blocks check from PasswordReset::isBlocked by AnaïsGueyte
 * - Parser: Fix quadratic regexp edge case by Bartosz Dziewoński
 * - Treat search result suggestions like clicks by Lucas Werkmeister
 * - Track the reason for rendering. by daniel
 * - Split "main variant language code" from "language code with converter" by Winston Sung
 * - profiler: Inject $wgProfiler from Setup.php to Profiler by Timo Tijhof
 * - Fix the remaining Phan failures on PHP 8.1 by Tim Starling
 * - Improve LocalisationCache post-merge validation check by Tim Starling
 * - title: Move Title.php to includes/title/ where related classes are  by Timo Tijhof
 * - Setup: Promote clearActionName log message to runtime warning (2) by Krinkle
 * - site: Switch new code from MWException to RuntimeException by Timo Tijhof
 * - site: Use common terms in docs for script path and article path by Timo Tijhof
 * - Remove HTMLCacheUpdate by Matěj Suchánek
 * - Message: Annotate ITextFormatter::format as returning an unsafe value by Daimona Eaytoy
 * - Api tests: Simplify variant tests by using pig-latin by Abijeet
 * - HTMLFormField: Treat null as missing value by Lucas Werkmeister
 * - Enable pig-latin variant for testing by daniel
 * - api: Fix minor PHP 8.1 incompatibility in ApiOptions by thiemowmde
 * - ParsoidHandler: test that selser will re-parse by daniel
 * - Include core PSR-4 classes in the generated classmap by Máté Szabó
 * - Reorg: Move ForeignResourceManager to ResourceLoader directory by Amir Sarabadani
 * - Reorg: Move HeaderCallback to Request directory by Amir Sarabadani
 * - Skins: Config flag controls contributions link by Moh'd Khier Abualruz
 * - rdbms: deprecate unnecessary TransactionProfiler::setSilenced by Aaron Schulz
 * - Fix off-by-1 error in Preprocessor_Hash by thiemowmde
 * - OutputPage: Support loading some mw.config vars late, at end of body by Bartosz Dziewoński
 * - Relax ReleaseNotesTest to accept long URLs by thiemowmde
 * - site: Annotate CachingSiteStore as `@internal` and perform minor cleanup by Timo Tijhof
 * - TestFileEditor: Fix string interpolation by Reedy
 * - WANObjectCache: Fix string interpolation by Alexander Vorwerk
 * - Make userOptions.php capable of deleting user options by Martin Urbanec
 * - Storage: Minor docs and file header cleanup by Timo Tijhof
 * - rdbms: Fix test to not rely on deprecated class aliases by Timo Tijhof
 * - api-testing/REST: BCP 47 language tags should be case-insensitive by C. Scott Ananian
 * - Stash original wikitext when rendering unsaved content. by daniel
 * - Remove WikiRevision::downloadSource by Matěj Suchánek
 * - Remove FormatMetadata::flattenArrayContentLang by Matěj Suchánek
 * - filerepo: Partly revert timestamp database incompatibility fix by Thiemo Kreuz (WMDE)
 * - Fix Site::getPath + MediaWikiSite::getFileUrl confusion by Lucas Werkmeister
 * - HtmlInputTransformHelper: Capture metrics for SelSer context by Derick Alangi
 * - content: Throw after onPageContentLanguage hook for invalid $pageLang by Fomafix
 * - objectcache: add "segmentable" option to WANObjectCache by Aaron Schulz
 * - rdbms: remove LoadMonitorMySQL class by Aaron Schulz
 * - Move AlphabeticPager::getOrderTypeMessages release note to 1.39 by Bartosz Dziewoński
 * - Remove deprecated EditPage::getCopyrightWarning parameters by Bartosz Dziewoński
 * - Use buildComparison instead of raw SQL in SpecialWhatLinksHere by Bartosz Dziewoński
 * - WikiExporter: Avoid calling reload in processing every row  by Amir Sarabadani
 * - Various doc fixes about false and null on method arguments/return types by Umherirrender
 * - Remove deprecated MWTimestamp::getHumanTimestamp by Umherirrender
 * - HtmlInputTransformHelper: setters for programmatic use by daniel
 * - Rename HTMLTransform to HtmlToContentTransform by daniel
 * - Produce HTML for invalid JSON by daniel
 * - ApiQueryRevisionsBase: Fix 'rvdiffto' parameter handling on PHP 8.0 by Máté Szabó
 * - PageArchive: Fix weird use of Database::makeList with one-item array by Bartosz Dziewoński
 * - Remove references to Suhosin and its INI settings by Kevin Israel
 * - PHPUnit: introduce clearHooks method. by daniel
 * - Respond to some messages from Phan on PHP 8.1 by Tim Starling
 * - ApiQueryUserContribs: Remove unused continuation modes by Bartosz Dziewoński
 * - PagerNavigationBuilder: Document that nulls in setLinkQuery etc. are allowed by Bartosz Dziewoński
 * - pager: Remove unused PagerNavigationBuilder::setExtra by Bartosz Dziewoński
 * - Better document the type of timestamp accepted/returned by thiemowmde
 * - filerepo: Fix timestamps being incompatible with some databases by thiemowmde
 * - Special:Preferences - Move JS config var to RL packageFiles by suecarmol
 * - Linker: Avoid querying null value if link target is not found by Amir Sarabadani
 * - Don’t track build statistics for unnamed modules by Lucas Werkmeister
 * - mediawiki.api: Remove unnecessary JSON from parse API response by thiemowmde
 * - Fix LanguageConverterTestTrait.php didn't normalize language codes by Winston Sung
 * - variant transform: allow input content-language to be a variant by daniel
 * - rdbms: simplify getLagFromPtHeartbeat in DatabaseMysqlBase by Aaron Schulz
 * - Make RequestContext::sanitizeLangCode accept null by Tim Starling
 * - WordAccumulator: use htmlspecialchars with ENT_NOQUOTES by Tim Starling
 * - objectcache: split out WANObjectCache::setMainValue helper method by Aaron Schulz
 * - Optimise and clean up Language::ucfirst by Tim Starling
 * - api: Validate timestamp in continue parameter by Umherirrender
 * - HISTORY: add 1.35.8/1.37.5/1.37.6/1.38.3/1.38.4 by Alexander Vorwerk
 * - revision/html endpoint: Support variant conversion by Abijeet
 * - HtmlOutputRendererHelper: Make HtmlTransformFactory mandatory by Abijeet
 * - page/html endpoint: Support variant conversion by Abijeet
 * - tests: Replace deprecated WikiPage::factory in RevisionStoreDbTest by Umherirrender
 * - Remove WikiRevision::$fileIsTemp by Matěj Suchánek
 * - Remove Title::getNotificationTimestamp by Matěj Suchánek
 * - Remove Article::viewRedirect by Matěj Suchánek
 * - Improve RestAPIAdditionalRouteFiles path expansion by Tim Starling
 * - Correct flush value for new icon specification by Jon Robson
 * - Modify interface message when an account does not exist by Stang
 * - pager: Remove unused AlphabeticPager::getOrderTypeMessages support by Timo Tijhof
 * - tests: Upgrade giorgiosironi/eris to 0.13.0 by Lucas Werkmeister
 * - rdbms: improve LoadBalancer/DatabaseMysqli connection exceptions by Aaron Schulz
 * - mediawiki.base: Remove empty unreferenced wikibits.js file by Timo Tijhof
 * - Use buildComparison instead of raw SQL in WatchedItemQueryService by Bartosz Dziewoński
 * - api: Do not add extra infos on generator=querypage by Umherirrender
 * - Use buildComparison instead of raw SQL in RevisionStore by Bartosz Dziewoński
 * - Use buildComparison instead of raw SQL in API list=usercontribs by Bartosz Dziewoński
 * - Add namespace translations for Magahi (mag) by Amir E. Aharoni
 * - Style revision deleted content on Special:ProtectedPages as strike-grey by Umherirrender
 * - session: Use wfTimestampNow in PHPSessionHandler::gc for now by Umherirrender
 * - utils: Use str_starts_with/str_ends_with/str_contains by Umherirrender
 * - QueryPage: Improve query logging on recaching special pages by Umherirrender
 * - Fix Special:AutoblockList showing normal blocks after reblocks by Umherirrender

Vendor

 * - Update wikimedia/{shellbox,wikipeg,parsoid} by C. Scott Ananian
 * - Add wikimedia/bcp-47-code library, used by latest version of Parsoid by C. Scott Ananian
 * - Update php-vuejs-templating to 2.0.0 by Lucas Werkmeister
 * - Update wmde/php-vuejs-templating to 1.1.0 by Lucas Werkmeister

AbuseFilter

 * - EchoNotifierTest: Use namespaced Event class by Reedy
 * - Fix missing null check for deprecated configuration by thiemowmde
 * - EchoNotifierTest: Temporarily skip testNotifyForFilter by Reedy

ActiveAbstract

 * - GoogleCoopFilter: Fix string interpolation by Reedy

AdvancedSearch

 * - Replace deprecated MimeAnalyzer::getTypesForExtension by Umherirrender

BetaFeatures

 * - build: Remove syntax option from stylelint by Umherirrender

CampaignEvents

 * - Special-case the current user's row on EventDetails when searching by Daimona Eaytoy
 * - Allow people to leave event after registration closed by Claudio Melo
 * - Change text of select label to read "X of Y participants" by MHorsey
 * - Create 2 tab layout by MHorsey
 * - Remove old comment about checking for blocks when unregistering by Daimona Eaytoy
 * - Show deleted participants on Special:EventDetails by Daimona Eaytoy
 * - Simplify ParticipantsManager.js a bit by Daimona Eaytoy
 * - Refactor ParticipantsModule to handle the current user separately by Daimona Eaytoy
 * - Display timezone on event registration header by Daimona Eaytoy
 * - Display timezone in "more details" modal on event pages by Daimona Eaytoy
 * - Display timezone on Special:EventDetails by Daimona Eaytoy
 * - Choose appropriate timezone in EventTimeFormatter    by Daimona Eaytoy
 * - Introduce EventTimeFormatter by Daimona Eaytoy
 * - Add maintenance script to update UTC timestamps of events by Daimona Eaytoy
 * - Show private participants on EventDetails by Daimona Eaytoy
 * - Make the current user be listed first on EventDetails by Daimona Eaytoy
 * - Add private helpers in EventDetailsParticipantsModule by Daimona Eaytoy
 * - Add support for private registration to ListParticipantsHandler by Daimona Eaytoy
 * - Implement perm check to determine if user can see private participants by Daimona Eaytoy
 * - Document purpose of MWEntity and future plans involving addresses by Daimona Eaytoy

CategoryTree

 * - Remove phpcs exclude rules and update PHP code by Fomafix
 * - Check for null after Title::newFromText by Fomafix

CentralAuth

 * - schema: Convert Unique Index to Primary Key on renameuser_status by Umherirrender

CentralNotice

 * - AllocationCalculatorTest: Fix string interpolation by Reedy
 * - Avoid unsafe wrapping of Message::parse into paragraph by Timo Tijhof
 * - Add PreferencesGetIconHook by suecarmol
 * - Remove usage of deprecated MessageIndexRebuildJob::insertIntoJobQueue by Abijeet
 * - BannerMessageGroup: Ensure proper columns are in the GROUP BY clause by Abijeet
 * - Make use of the ?? syntax where it makes sense by Thiemo Kreuz

CheckUser

 * - Use buildComparison instead of raw SQL by Bartosz Dziewoński
 * - Document some variable types in SpecialInvestigate by Thalia
 * - build: Updating mediawiki/mediawiki-phan-config to 0.12.0 by Thalia

CirrusSearch

 * - Remove SearchResultsType::getStoredFields method by Erik Bernhardson
 * - Replace deprecated BacklinkCache::getLinks by Umherirrender
 * - Do not store token_count and use "fields" to fetch fields by David Causse
 * - Correct CompletionSuggesterTest::provideMinMaxQueries by Erik Bernhardson
 * - More code cleanup after fatal fix for PHP 8.1 by Mark A. Hershberger
 * - Make use of the ?? and ??= operators where it makes sense by thiemowmde
 * - Use existence check in testExportedProfilesWithI18N by Gergő Tisza
 * - Various code cleanups in test setups and providers by thiemowmde
 * - Cannot reference the entire &$GLOBALS any more in PHP 8.1 by thiemowmde
 * - Replace deprecated `@borderRadius` var with successor `@border-radius-base` by gerritbot
 * - Fix string interpolation by Reedy
 * - Fix string interpolation by Reedy
 * - PHPUnit: use clearHooks by daniel
 * - Allow specifying the profile of the doc size limiter from the doc building API by David Causse
 * - Don't force wgHooks to be an array. by daniel
 * - Drop the CirrusSearchBuildDocumentParse hook by David Causse
 * - Update integration tests for new thumbnail rendering by Erik Bernhardson
 * - Adjust highlighting_api test for image captions by Erik Bernhardson

Cite

 * - Parsoid CSS: Fix counters needed for ol.mw-references by Subramanya Sastry
 * - Tweak CSS defaults to handle Cite_references_link_many_sep properly by Subramanya Sastry
 * - Parsoid CSS: Add language specific overrides for es, hu, it, sv by Subramanya Sastry
 * - Parsoid CSS: Migrate to using .reference instead of .mw-ref by Subramanya Sastry

CiteThisPage

 * - SpecialCiteThisPage: Fix string interpolation by Reedy

Citoid

 * - Fix author limit bug by Marielle Volz

CodeMirror

 * - build: Disable rule unit-disallowed-list inline by Umherirrender

Collection

 * - styles: Remove `linear-gradient` vendor properties by Volker E
 * - Avoid unsafe wrapping of Message::parse into paragraph by Timo Tijhof

ConfirmEdit

 * - HCaptchaAuthenticationRequest: Use namespaced CaptchaAuthenticationRequest by Reedy

ContentTranslation

 * - CX View page link: Include hash for section title inside target URL by NikG
 * - Update breakpoints as per codex design tokens by Santhosh Thottingal
 * - Request 120px thumbnail images for all API requests by Santhosh Thottingal
 * - Refactor "getPageUrl" method to use URL constructor and support hash by NikG
 * - Replace deprecated `@borderRadius` var with successor `@border-radius-base` by gerritbot
 * - Translate special pages names into Polish by Msz2001
 * - Do not load "Translate page" action button when page doesn't exist by NikG
 * - Page selector: Use correct domain code for API parameter by Santhosh Thottingal
 * - nowiki: Use the 'no' domain code for getting translation suggestions by Santhosh Thottingal
 * - Use user-facing name for the MT services in translation options by Santhosh Thottingal
 * - contributionsmenu entrypoint: Use unique ids for portlet links in sticky header by Santhosh Thottingal
 * - CX3 Build 0.2.0+20221107   by Santhosh Thottingal
 * - SX block templates: Add template mapping status explanation dialog by NikG
 * - CX: Use suggested title from cxserver as target title when no URL param by NikG
 * - SX Block templates support: Add mapping indicator by NikG

DiscussionTools

 * - Tweak mobile styles for no-JS compatibility by Bartosz Dziewoński
 * - Remove some unused CSS by Bartosz Dziewoński
 * - ThreadItemStore: Handle race conditions when finding/inserting outside of transaction by Bartosz Dziewoński
 * - Move visualenhancements metadata and some buttons outside of ` ` by Bartosz Dziewoński
 * - Make virtual keyboard detection into a body class by Ed Sanders
 * - Move ...-replylink-open class to by Ed Sanders
 * - Add button to reveal lede section on mobile by Ed Sanders
 * - CommentFormatterTest: Fix PHP 8.1 deprecation warning by Bartosz Dziewoński
 * - CommentFormatterTest: Make desktop and mobile separate test cases by Bartosz Dziewoński
 * - persistRevisionThreadItems: Print time taken by Bartosz Dziewoński
 * - Disable "Share feedback..." links by default by Ed Sanders
 * - LanguageDataTest: Set 'UsePigLatinVariant' => false by Bartosz Dziewoński
 * - Embed pageThread JSON in jsConfigVars instead of infusing HTML by Ed Sanders
 * - ThreadItemStore: Fix setting parent IDs when parent already existed by Bartosz Dziewoński
 * - Move username completion tool after special character tool in toolbar by Ed Sanders
 * - Topic subscription feature is unavailable if Echo is not installed by Ed Sanders
 * - .phan/config.php: Fix string interpolation by Reedy
 * - ThreadItemStore: Update existing rows if possible rather than insert+delete by Bartosz Dziewoński
 * - Avoid unsafe wrapping of Message::parse into paragraph by Timo Tijhof
 * - Revert "Add config to separate out visualenhancements on mobile" by Bartosz Dziewoński
 * - Tweak mobile "Read as wiki page" button placement by Bartosz Dziewoński
 * - ABtest for mobile, logged out users by David Lynch
 * - ABtest for mobile, logged in users by David Lynch
 * - Use PHP 7.4 property types by Bartosz Dziewoński

DonationInterface

 * - Turn off fraud checks for GPay by Elliott Eggleston
 * - Update SmashPig to v0.8.3.10 and own version number by cstone

DoubleWiki

 * - Migrate to new hook system and dependency injection by tacsipacsi

Echo

 * - Namespace Model by Reedy
 * - Forward Event namespacing by Reedy
 * - NotificationServiceClient: Don't call Message::serialize directly by Reedy
 * - Make use of the ?? and ??= operators where it makes sense by thiemowmde
 * - Fix PHP 8.1 compatibility issue in ForeignNotifications by thiemowmde
 * - Use short array destructuring instead of list by Fomafix
 * - Use shortcut mw.msg( ... ) instead of mw.message( ... ).text by Fomafix
 * - Namespace Special by Reedy
 * - Update job name to match $wgJobClasses key by Alexander Vorwerk
 * - Fix NotificationDeleteJob class name by Alexander Vorwerk
 * - Namespace Mapper by Reedy
 * - Namespace Iterator by Reedy
 * - Namespace Cache by Reedy
 * - Clean up test case by daniel
 * - Namespace Jobs by Reedy
 * - Namespace Controller by Reedy
 * - Namespace Gateway by Reedy
 * - Namespace Exception by Reedy
 * - Fix incompatible type null vs. string failing in PHP 8.1 by thiemowmde
 * - Namespace Echo Formatters by Reedy
 * - formatters: Minor cleanup by Reedy
 * - Convert 10 hook subscribers to HookHandlers by Reedy
 * - Convert 5 hook subscribers to HookHandlers by Reedy
 * - Convert 9 hooks subscribers to HookHandlers by Reedy
 * - MWEchoEventLogging: Use $revId of -1 for Echo* schemas by Sam Smith

EventBus

 * - Update README by Ottomata
 * - EventBus: Fix string interpolation by Reedy

FileImporter

 * - Fix database compatibility issue in a test by thiemowmde
 * - Drop argument to WikiRevision constructor by Matěj Suchánek
 * - Use clearHooks by daniel
 * - Avoid unsafe wrapping of Message::parse into paragraph by Timo Tijhof
 * - Fix PHP 8.1 test failures by Tim Starling

FlaggedRevs

 * - pruneRevData: Make it reload config by Amir Sarabadani
 * - schema: Convert Unique Index to Primary Key on flaggedrevs_tracking by Umherirrender

Flow

 * - Fix incomplete test mock implementation by thiemowmde
 * - Use namespaced SpamBlacklist classes by Reedy

GeoData

 * - Fix PHP 8.1 PHPUnit test failures by Tim Starling
 * - More narrow interface for GeoData::getPageCoordinates function by Thiemo Kreuz

GlobalBlocking

 * - GlobalBlocking::getUserBlockDetails: Don't run IPUtils::isInRange over null by Reedy
 * - GlobalBlocking::getGlobalBlockingBlock: Short circuit if $ip is null by Reedy
 * - Handle GetUserBlock hook, instead of checking for global blocks separately by Thalia
 * - Override block error message for global blocks by Thalia

GlobalPreferences

 * - build: Remove syntax option from stylelint by Umherirrender

GlobalUsage

 * - Replace deprecated BacklinkCache::getLinks by Umherirrender
 * - Use buildComparison instead of raw SQL by Bartosz Dziewoński
 * - Fix navigating backwards on Special:GlobalUsage by Bartosz Dziewoński

Graph

 * - Move wgGraphSpecs to late JS config vars by Bartosz Dziewoński

GrowthExperiments

 * - MentorStore: Use $wgRCMaxAge instead of INACTIVITY_THRESHOLD by Martin Urbanec
 * - updateIsActiveFlagForMentees: Process all mentees by Martin Urbanec
 * - [i18n] Special:ManageMentors: Do not use the word "Weight" by Martin Urbanec
 * - UserImpactLookup: Instrument getExpensiveUserImpact by Kosta Harlan
 * - UserImpactHandler: Instrument API response time by Kosta Harlan
 * - ImpactHooks: Allow refresh for users who have edited in last 7 days by Kosta Harlan
 * - refreshUserImpactData: Add option to use job queue by Kosta Harlan
 * - refreshUserImpactData: Add feature flag by Kosta Harlan
 * - NewImpact: Use d3 subpackages by Kosta Harlan
 * - User impact: fix article sparkline graph size by Sergio Gimeno
 * - Add rescore method for sorting by underlinkedness by Gergő Tisza
 * - ImpactHooks: Require new impact module to enabled by Kosta Harlan
 * - NewImpact: Switch Thanks scorecard icon to UserTalk by Kosta Harlan
 * - MentorHooks: Add missing check for GEMentorshipUseIsActiveFlag by Martin Urbanec
 * - ImpactHooks: Add helper method to restrict data refresh by Kosta Harlan
 * - ImpactHooks: Refresh user data after thanks received by Kosta Harlan
 * - ImpactHooks: Refresh user impact after article edit by Kosta Harlan
 * - UserImpactHandler: Load database-backed user impact data by Kosta Harlan
 * - UserImpactHandler: Load from ExpensiveUserImpact by default by Kosta Harlan
 * - Add UserRegistrationLookupHelper by Gergő Tisza
 * - User impact: create separate layouts for each view of the module by Sergio Gimeno
 * - ManageMentorsForm: Add backlink to SpecialManageMentors by Martin Urbanec
 * - Replace deprecated `@borderRadius` var with successor `@border-radius-base` by gerritbot
 * - Improve logging for StructuredTaskPreEdit.showErrorDialogOnFailure by Gergő Tisza
 * - updateIsActiveFlagForMentees.php: Wait for replication by Martin Urbanec
 * - i18n: Add missing PLURAL to a message by Martin Urbanec
 * - MentorFilterHooks: Only consider active mentees by Martin Urbanec
 * - Fix string interpolation by Reedy
 * - SpecialEnrollAsMentor: Offer better guidance when an user is not auto-eligible by Martin Urbanec
 * - User impact: add pageviews chart to the mobile summary by Sergio Gimeno
 * - User impact: add sparkline beside article pageviews count by Sergio Gimeno
 * - User impact: add top edited articles section by Sergio Gimeno
 * - User impact: close tooltips when clicking outside on mobile by Sergio Gimeno
 * - Calculate mentorship-related metrics by Martin Urbanec
 * - [tests] Improve SpecialManageMentorsTest by Martin Urbanec
 * - ManageMentorsRemoveMentor: Reassign mentees to a different mentor by Martin Urbanec
 * - ReassignMentees: Pass the actual performer to ChangeMentor by Martin Urbanec
 * - Rename QuitMentorship to ReassignMentees by Martin Urbanec
 * - package.json: Run npm audit fix by Kosta Harlan
 * - package-lock: Align with package.json contents by Kosta Harlan
 * - SpecialManageMentors: Make table sortable by Martin Urbanec
 * - Localize default mentors' introduction correctly by Matěj Suchánek
 * - ApiSetMenteeStatus: Check GEMentorshipEnabled in wiki config by Martin Urbanec
 * - SpecialManageMentors: Do not include explanatory text on transclusion by Martin Urbanec
 * - Add support for gemm_mentee_is_active by Martin Urbanec

ImageSuggestions

 * - Require MediaWiki 1.31 in extension.json for AutoloadNamespaces by Umherirrender

InputBox

 * - Improve Hooks::onMediaWikiPerformAction by Umherirrender
 * - Remove phpcs exclude rules and update PHP code by Fomafix

IPInfo

 * - IP Info: Remove period from possible values of "Active blocks" by csimiyu
 * - Normalise $langCodes format in IPInfo ReaderFactory::getReader by tsepothoabala

JsonConfig

 * - Apply a series of minor code style modernizations/updates by Thiemo Kreuz

Kartographer

 * - Making sure local does not get translated by Svantje Lilienthal
 * - Use short array destructuring instead of list by Fomafix
 * - Fix align="right" causing dirty diffs in VE editor by thiemowmde

LabeledSectionTransclusion

 * - LabeledSectionTransclusion: Fix string interpolation by Reedy

LiquidThreads

 * - Thread: Do not log sortkey adjust also as signature edit by Umherirrender
 * - Allow composer/installers plugin by Gergő Tisza

MachineVision

 * - Use existing var instead of repeating by Matthias Mullie

MassMessage

 * - Use proper namespace for TranslatablePage by Abijeet
 * - Fix namespace for DerivativeRequest by Abijeet
 * - Use HookContainer to register hooks by daniel
 * - Avoid unsafe wrapping of Message::parse into paragraph by Timo Tijhof

Math

 * - Fix calling array function on stdClass by d.savuljesku
 * - DeclhTest: Fix string interpolation by Reedy

MediaSearch

 * - Migrate away from Vue 2 compatibility features by Roan Kattouw

MobileFrontend

 * - Add support for allowSwitchingToVisualMode config variable by daniel
 * - Remove selenium entries from package.json by Jdlrobson
 * - Revert "Remove selenium entries from package.json" by Jdlrobson
 * - Remove selenium entries from package.json by Kosta Harlan
 * - Allow collapsible sections with DiscussionTools wrappers on headings by Bartosz Dziewoński
 * - Remove SubHeadingTransform and the 'in-block' CSS class by Bartosz Dziewoński

NearbyPages

 * - Remove a redundant preposition by Amir E. Aharoni

Nuke

 * - Use WebRequest::getIntOrNull and avoid ctype_digit by Fomafix
 * - Remove phpcs exclude rules and update PHP code by Fomafix
 * - Inject services by Fomafix
 * - Increase requires to "MediaWiki": ">= 1.37" by Fomafix
 * - Use short array destructuring instead of list by Fomafix

ORES

 * - Helpers: Fix string interpolation by Reedy

PageImages

 * - Only provide free images for search purposes by Matthias Mullie
 * - Use preg_replace_callback flag introduced in PHP 7.4 by Tim Starling

PageTriage

 * - CurationToolbar: Adding the AfD/RfD/MfD link to the edit summary while by MPGuy2824
 * - PHP 8.1 compatibility by Kosta Harlan
 * - Code cleanup by Reedy
 * - NewPagesFeed: Showing the trash icon for pages only if enwiki features by MPGuy2824
 * - build: Run stylelint for less files by Umherirrender
 * - NewPagesFeed: Add ability to autorefresh the list every 30 seconds by MPGuy2824
 * - CurationToolbar: In the tags flyout, set the default state of the "mark by MPGuy2824
 * - CurationToolbar: Allow note to be sent even when a page has never been by MPGuy2824
 * - Clicking "Open Page Curation" should hide "Open Page Curation" link by Novem Linguae
 * - CurationToolbar:Add newlines for each maint tag added. by MPGuy2824

PageViewInfo

 * - WikimediaPageViewService::makeRequest: Don't risk passing null to FormatJson by James D. Forrester
 * - Make WikimediaPageViewServiceTest PHP 8.1 compatible by thiemowmde

ParserFunctions

 * - Use HookContainer to register hooks on the fly. by daniel
 * - Remove dead code from #titleparts implementation by thiemowmde
 * - Simplify weirdly complex ParserFunctions::ifexistInternal by thiemowmde
 * - Remove unused default values from method parameters by thiemowmde

Phonos

 * - Only show no-IPA error if a file is not available by Sam Wilson
 * - Clean statsv tracking by hmonroy
 * - Fetch IPA transcription text from Wikibase by Sam Wilson
 * - Engine: cast return value of isPersisted to bool by MusikAnimal
 * - build: Remove customSyntax option from stylelint in Gruntfile.js by Umherirrender

Popups

 * - Replace deprecated `@borderRadius` var with successor `@border-radius-base` by gerritbot
 * - Use $this->getServiceContainer in test cases by Fomafix
 * - Inject service SpecialPageFactory by Fomafix
 * - Use short array destructuring instead of list by Fomafix

ProofreadPage

 * - Rework SpecialPagesWithoutScans query by Amir Sarabadani
 * - Fix PageStatusTools return type by Parthiv
 * - Fix string interpolation by Reedy
 * - Change GetLinkColours to HookHandler system by Parthiv

QuickSurveys

 * - Simplify values in test setups that don't need it by Thiemo Kreuz

ReadingLists

 * - Fix string interpolation by Reedy
 * - Improve handling of imported data by Jon Robson
 * - Fix showing of app download links. by Dmitry Brant
 * - patches: Account for mysql table prefixes by Reedy
 * - Technical: Use data rather than props for changing variables by Jon Robson

RelatedArticles

 * - styles: Remove `linear-gradient` vendor properties by Volker E
 * - Replace deprecated `@borderRadius` var with successor `@border-radius-base` by gerritbot

Scribunto

 * - Partially revert 912324993f, restore old line ending behavior by Kunal Mehta

SearchVue

 * - Implemented basic logic for event logging instrumentation (T321079).   by Vadim Kovalenko
 * - Explicitly request only free pageimages by Matthias Mullie
 * - Old Thumbnail shows in the SearchPreview when moving between results by Simone Cuomo
 * - Add the article title and description to quick view for extra context by Simone Cuomo
 * - SearchPreview - Performance review - Update Thumbnail size requested by Simone Cuomo
 * - QuickView is misplaced: Syntax error, unrecognized expression by Simone Cuomo
 * - Update the position and copy in the desktop tutorial for search previews by Vadim Kovalenko

SecureLinkFixer

 * - Update domains.php from Mozilla by Alexander Vorwerk

SyntaxHighlight_GeSHi

 * - Fix pygments on Windows by Ryan Schmidt
 * - Remove global class alias by Reedy
 * - Count only real highlighting as expensive parser tag hooks by Umherirrender

TemplateData

 * - Add an "Edit template data" button to the TemplateData output by Ed Sanders

TemplateSandbox

 * - build: Remove syntax option from stylelint by Umherirrender

TemplateStyles

 * - Fix remaining phpcs exclusion by Reedy

TextExtracts

 * - ApiQueryExtractsTest: Fix string interpolation by Reedy

Thanks

 * - Remove GlobalBlock calls from Thanks by AnaïsGueyte

TimedMediaHandler

 * - build: Fix stylelint-disable by Umherirrender
 * - styles: Remove `linear-gradient` vendor properties by Volker E
 * - TimedMediaTransformOutput: Fix string interpolation by Reedy
 * - Replace $expected and $actual for assertEquals by Fomafix
 * - build: Remove syntax option from stylelint by Umherirrender

TitleBlacklist

 * - Drop class aliases by Reedy

Translate

 * - Format message bundles when viewing and editing by wangombe
 * - Use LanguageFactory::getLanguage instead of wfGetLangObj by Fomafix
 * - Cleaner CDBMessageIndex::getKeys implementation by thiemowmde
 * - MessageCollection: Cast userId to int before calling filters by Abijeet
 * - Move MessageCollection to MessageLoading namespace by wangombe
 * - Move MessageDefinitions to MessageLoading namespace by wangombe
 * - UpdateMessageBundleJob: Fix non-boolean result returned by job by Abijeet
 * - Various minor code style and comment cleanups by Thiemo Kreuz
 * - Use PHPUnit's createMock shortcut where possible by thiemowmde
 * - TranslateSandbox: Fix phpcs errors by Abijeet
 * - phpunit: Fix "Test case class not matching filename is deprecated" by Abijeet
 * - Indent HEREDOC syntax by Niklas Laxström
 * - TranslateHooks: Fix ${var} string interpolation by Reedy
 * - Add a template+tvar test by Isabelle Hurbain-Palatin
 * - Schedule syncing of translatable bundle status in update.php by Abijeet
 * - Remove overflow fix for Vector 2022 CSS grid by Abijeet

TranslationNotifications

 * - Update namespace for TranslatablePage by Abijeet
 * - Convert SpecialNotifyTranslators to OOUI, use DI by tacsipacsi

TrustedXFF

 * - Switch to HookHandlers by Reedy

TwoColConflict

 * - Handle complexity exception in ResolutionSuggester by Thiemo Kreuz
 * - styles: Remove `linear-gradient` vendor properties by Volker E

UniversalLanguageSelector

 * - Remove phpcs exclude rules and update PHP code by Fomafix
 * - Compact language list preference should be ignored for Vector 2022 skin by NikG
 * - Remove unused code from ext.uls.interface.js by NikG

UploadWizard

 * - build: Update mediawiki/mediawiki-codesniffer by Umherirrender

UrlShortener

 * - Use @coversDefaultClass in test case by Fomafix

VisualEditor

 * - build: Update mediawiki/mediawiki-codesniffer by Umherirrender
 * - build: Update stylelint-config-wikimedia by Umherirrender
 * - Always allow switching to visual when using DirectParsoidClient. by daniel
 * - Platform: Handle invalid JSON in the other path in #getUserConfig by Bartosz Dziewoński
 * - Improve smooth scroll to section with visual section editing on desktop by Bartosz Dziewoński
 * - Use setters to initialize helpers by daniel
 * - Rename HTMLTransform related classes by msantos
 * - Don't log errors due to missing edit buttons by Jon Robson
 * - api-testing: Add test for switching from source to visual mode by daniel
 * - Skip tests while renaming HTMLTransform by msantos
 * - Add HtmlTransformFactory as depdendency for HtmlOutputRendererHelper by Abijeet

Wikibase

 * - Add zh, zh-hans, zh-hant namespace names and aliases for Wikibase Repository by Winston Sung
 * - Add phan-doc to DivergingEntityIdException by Umherirrender
 * - REST: Add new statement format to OpenAPI schema by Ollie Shotton
 * - REST: Remove Statement example in OpenAPI Schema  by Ollie Shotton
 * - REST: Improve phpcs indentation rules by Jakob Warkotsch
 * - Add NewStatement::withReference by Jakob Warkotsch
 * - REST: Add ReferenceSerializer by Jakob Warkotsch
 * - Fix parent constructor calls in maintenance scripts by Lucas Werkmeister
 * - Use SelectQueryBuilder in ChangesSubscriptionTableBuilder by Lucas Werkmeister
 * - Use SelectQueryBuilder in SqlSiteLinkConflictLookup by Lucas Werkmeister
 * - Use SelectQueryBuilder for recentchanges queries by Lucas Werkmeister
 * - Remove vue, @wmde/lib-version-check from root package.json by Lucas Werkmeister
 * - REST: Add StatementSerializer by sihe
 * - tests: Stop calling MediaWikiSite->unserialize by Reedy
 * - Use SelectQueryBuilder in EntityChangeLookup by Lucas Werkmeister
 * - REST: Handle invalid field type via json-diff lib by Ollie Shotton
 * - Make $subPage comparisons less strict by Lucas Werkmeister
 * - REST: Add PropertyValuePairSerializer by Jakob Warkotsch
 * - Handle null/false $value in HTMLAliasesField by Lucas Werkmeister
 * - Assign statement ID in EntityDataSerializationServiceIntegrationTest by Lucas Werkmeister
 * - Remove ChunkAccess, ChunkCache by Lucas Werkmeister
 * - Specify htmlspecialchars flags by Lucas Werkmeister
 * - Don’t mock encodeParamName in ApiPropsEntityUsageTest by Lucas Werkmeister
 * - Fix Titles in HtmlPageLinkRendererEndHookHandlerTest by Lucas Werkmeister
 * - HTMLTrimmedTextField: Don’t trim non-string values by Lucas Werkmeister
 * - REST: Fix argument order in PHPUnit assert* calls by Ollie Shotton
 * - REST: Replace ValidationError "source" with "code" by Jakob Warkotsch
 * - styles: Remove outdated vendor properties by Volker E
 * - REST: Remove unused arg by Jakob Warkotsch
 * - Improve Exception loggability to fight logspam by Michael Große
 * - REST: Remove ValidationError::getValue by Jakob Warkotsch
 * - REST: Make ValidationError::getContext not nullable by Jakob Warkotsch
 * - Clean up a few more getMockBuilder/createMock usages in tests by thiemowmde
 * - Fix bad return type in RunnableJob::run subclass by thiemowmde
 * - Fix string interpolation by Reedy
 * - Use database buildComparison method by Lucas Werkmeister
 * - Use strict types in EntityRevision, RedirectRevision constructors by Lucas Werkmeister
 * - Add space before buildLike result by Lucas Werkmeister
 * - Check language code type in MonolingualTextParser by Lucas Werkmeister
 * - Complete Language mock in DefaultEntityLinkFormatterTest by Lucas Werkmeister
 * - Fix mocked iteration in PageHistoryPagerHookHandlerTest by Lucas Werkmeister
 * - Fix missing language in ItemDiffVisualizerTest by Lucas Werkmeister
 * - REST: Run cheaper middlewares first by Jakob Warkotsch
 * - Use SelectQueryBuilder in ReplicaMasterAwareRecordIdsAcquirer by Lucas Werkmeister
 * - Use SelectQueryBuilder in DatabaseMatchingTermsLookup by Lucas Werkmeister
 * - Add __serialize and __unserialize to EntityId by Lucas Werkmeister
 * - Improve assertions in LanguageFallbackChainFactoryTest by Lucas Werkmeister
 * - Allow tests to pass when piglatin is enabled. by daniel
 * - Add strict types to LanguageNameLookup by Lucas Werkmeister
 * - SitesModule: Handle missing site language by Lucas Werkmeister
 * - REST: patched-statement-value-type-mismatch error by Ollie Shotton
 * - Clean up CacheAwarePropertyInfoStore attempted cache sets by Tim Starling
 * - REST: Handle patched statement value type mismatch by Ollie Shotton
 * - REST: Tidy up some tests by Ollie Shotton
 * - SitesModuleTest: Configure file paths for sites by Lucas Werkmeister
 * - REST: Add BotRightCheckMiddleware by Jakob Warkotsch
 * - Make a few tests more compatible with PHP 8.1 by thiemowmde
 * - REST: Add `context` field and examples to OAS by Jakob Warkotsch
 * - Make FormatEntitiesTest robust against custom config by daniel
 * - Use BooleanValue in CommonsMediaValueNormalizerTest by Lucas Werkmeister
 * - REST: Throw exception for insufficient bot rights by Jakob Warkotsch
 * - REST: Add 'field' to validation error contexts by sihe
 * - REST: Handle invalid field type in JSON Patch by Ollie Shotton
 * - Use namespaced Babel class by Reedy
 * - Drop compatibility with older data-values versions by Lucas Werkmeister

WikibaseCirrusSearch

 * - Remove now unused getStoredFields method by Erik Bernhardson
 * - Replace getStoredFields with getFields by Erik Bernhardson
 * - Remove workaround for PHPUnit 9 migration by Daimona Eaytoy
 * - Allow tests to pass when piglatin is enabled by daniel
 * - Implement CirrusSearch\\ResultsType::getFields by Erik Bernhardson

WikibaseLexeme

 * - Drop compatibility with php-vuejs-templating 1.1.0 by Lucas Werkmeister
 * - Declare compatibility with php-vuejs-templating 2.0.0 by Lucas Werkmeister
 * - Fix string interpolation by Reedy
 * - Make use of native array_column and in_array by Thiemo Kreuz
 * - tests: Upgrade giorgiosironi/eris to 0.13.0 by Lucas Werkmeister
 * - Fix languageAndLexicalCategoryWidget whitespace for Vue 3 by Lucas Werkmeister
 * - Add `compatConfig: { MODE: 3 },` to all components by Michael Große
 * - Fully migrate to Vue 3 by Lucas Werkmeister
 * - Fix non-failing exceptions in Jasmine tests by Michael Große
 * - Dramatically simplify test setups by utilizing PHPUnit shortcuts by thiemowmde
 * - Fix message key by Lucas Werkmeister
 * - Rename destroyed to unmounted for Vue 3 by Michael Große
 * - Replace v-model on custom component with separate directives by Michael Große
 * - Vue 3: Turn filters into methods by Lucas Werkmeister
 * - Require wmde/php-vuejs-templating 1.1.0 by Lucas Werkmeister
 * - Migrate Vue2 xyz.sync syntax to separate directives by Michael Große
 * - Remove trailing whitespace from template by Michael Große
 * - build: Remove duplicate unit-disallowed-list rule by Umherirrender

WikibaseLexemeCirrusSearch

 * - Remove now unused getStoredFields method by Erik Bernhardson
 * - Update fixtures for stored_fields -> fields conversion by Erik Bernhardson

WikibaseMediaInfo

 * - Reduce logspam from "Revision X belongs to Y instead of expected Z" by Michael Große
 * - Skip test to allow changing Wikibase exception interface by Michael Große
 * - Fix mismatching TS_MW timestamp type in a test by thiemowmde
 * - Fix mismatching return type in ValueFormatter mock by thiemowmde

WikibaseQualityConstraints

 * - Assign a statement ID in DelegatingConstraintCheckerTest by Lucas Werkmeister
 * - Bump sinon from 14.0.1 to 14.0.2 by Addbot
 * - Fix string interpolation by Reedy

wikihiero

 * - styles: Remove `linear-gradient` vendor properties by Volker E

WikiLambda

 * - Update function-schemata sub-module to HEAD (671adc7) by James D. Forrester
 * - Swap the wikilambda publish dialog messages for the existing by ddw
 * - Fix the ZLabelsBlock disappearing when creating aliases twice by teleosteen
 * - Add some missing Asserts in integration test. by ddw
 * - Evaluate Function Call on the Special: EvaluateFunction page by ddw
 * - And the "confirm" dialog to the function editor when a user attempts to by ddw
 * - extension: Declare dependency on WikimediaMessages extension by James D. Forrester
 * - ZFunctionCall::getZValue: Cast to string just in case by James D. Forrester
 * - Add warning for when input or output type has changed and function by ddw
 * - Add some pre-requesites in Selenium tests README by Florent
 * - Fix flow where expanded implementation is sent to API for perform_test.   by EWright
 * - Prevent approving/deactivating redirect by temitope adesoji
 * - Swap the "save changes" button in the zobject editor out for the by ddw
 * - Connect the Publish Dialog component to the store, and add it to the by ddw
 * - Update 2 i18n keys for consistency with patch 844511 by dmartin
 * - Summarize any Z5 by traversing and extracting suberrors by dmartin
 * - Hide empty boxes on function viewer about by temitope adesoji
 * - portray: Use relative time offsets when possible by James D. Forrester
 * - Create Publish Dialog, opened when the publish button in ZObjectPublish by ddw
 * - FE error management updates: part 3    by Julia Kieserman
 * - Update function-schemata sub-module to HEAD (35c403f)  by James D. Forrester
 * - Table UI Cleanup mobile by temitope adesoji

WikiLove

 * - Set page title on preview, pass section header as is by tacsipacsi
 * - Fix icon position in vector 2022 by Ed Sanders
 * - Set sectionpreview=true when parsing preview by Ed Sanders

WikimediaEvents

 * - Indicate EventBus dependency by Gergő Tisza

WikimediaIncubator

 * - Avoid User::newFromName in SpecialViewUserLang::prefixSearch by Umherirrender
 * - SpecialViewUserLang: inject UserNamePrefixSearch by Alexander Vorwerk
 * - Handle null testwiki argument on tests by Umherirrender
 * - onSpecialSearchCreateLink: Handle another null from Title::newFromText by Umherirrender
 * - onSpecialSearchCreateLink: Handle null from Title::newFromText by Umherirrender

WikimediaMaintenance

 * - createExtensionTables.php: Remove closeConnection by Gergő Tisza

WikimediaMessages

 * - Fix override messages for GlobalBlocking by Thalia
 * - Add overrides for new messages in the GlobalBlocking extension by Thalia
 * - Remove documentation that literally repeats what the code says by Thiemo Kreuz

Wikistories

 * - Viewer: change text size by Stephane Bisson
 * - Remove link registration from the article title of each image frame by Huei Tan
 * - build: Add composer.lock to .gitignore by Umherirrender

MinervaNeue

 * - Group: Fix string interpolation by Reedy
 * - Disable new flushing rules on mobile by Jon Robson
 * - Media border option applies to the media element, not the wrapper by Arlo Breault
 * - MinervaPagePermissions: Don't assume that indirectly editable contents don't have an edit action by James D. Forrester

Timeless

 * - styles: Replace IE hack `list-style: none none` by gerritbot

Vector

 * - Fix main menu button spacing when the VisualEnhancementNext flag is enabled by bwang
 * - Rename TOC locales to be generic pin/unpin labels, standardize toc label locale name by bwang
 * - Drop unnecessary watchstar icon classes on toggle by Jon Robson
 * - Limited width toggle (0eb8811 follow-up) by Jan Drewniak
 * - Replace aria-labelledby in ToC with aria-label by bwang
 * - Fix ToC dropdown menu spacing when visual next flag is enabled, address icon related feedback by bwang
 * - Replace 'more' menu with page tools pinnable dropdown by bwang
 * - Convert limited width toggle button from a div to a button by Nicholas Ray
 * - Dropdown arrow pixel should only apply to modern Vector by Jon Robson
 * - Echo in Legacy Vector should not be impacted by feature flag  by Jon Robson
 * - [Technical] Fix sticky header search input alignment when VisualEnhancementFlag is enabled by bwang
 * - Hide Echo notification count when zero by Jon Robson
 * - Hide width toggle when performing suggested edit by Jon Robson
 * - Enable VisualEnhancementNext by Jon Robson
 * - Add ColumnEnd.mustache and new grid styles to support third column by bwang
 * - [Technical] Limit dropdown arrow styling to child headings by Jon Robson
 * - Fix TOC misaligned when max width option is disable by Nicholas Ray
 * - [Technical] Remove common Menu styles by Jon Robson
 * - [Technical] Add DropdownContents.mustache by bwang
 * - Allow dropdowns to contain .vector-menu-content elements by Jon Robson
 * - [Template] Move search template code into component by Jon Robson
 * - Update page tools feature flag class by bwang
 * - [Technical] Drop redundant isLegacy logic by Jon Robson
 * - Fix alignment between icons on left and right of screen by Jon Robson
 * - skinStyles: Move mw-parser-output out of more specific selector by TheresNoTime
 * - [Technical] Separate Dropdown template into 3 templates by Jon Robson
 * - Remove CSS classes and selectors from cached HTML by bwang
 * - Disable new flushing rules with feature flag disabled by Jon Robson
 * - [Technical] Split up Menu.template, restrict decoratePortletData to legacy Vector  by Bernard Wang
 * - Finish moving to Page Tools naming convention by bwang
 * - [Components] Introduce VectorComponent and MainMenu components  by Jon Robson
 * - Align text of main menu and ToC to main menu button by Jan Drewniak
 * - Limited width toggle by Jon Robson
 * - Add generic PinnableHeader template, CSS & JS by bwang
 * - [Technical] Prepare for template rename by Jon Robson

VisualEditor/VisualEditor

 * - Make use of native .map in ve.ui.LanguageSearchWidget by thiemowmde

No changes

 * 3D
 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * ArticlePlaceholder
 * Babel
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CharInsert
 * ChessBrowser
 * CodeEditor
 * Cognate
 * CologneBlue
 * CommonsMetadata
 * ContactPage
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * Elastica
 * ElectronPdfService
 * EntitySchema
 * EventLogging
 * EventStreamConfig
 * ExtensionDistributor
 * ExternalGuidance
 * FeaturedFeeds
 * FileExporter
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GWToolset
 * Gadgets
 * GeoCrumbs
 * GlobalCssJs
 * GlobalUserPage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * GuidedTour
 * ImageMap
 * Insider
 * Interwiki
 * InterwikiSorting
 * Josa
 * LandingCheck
 * LdapAuthentication
 * Linter
 * Listings
 * LoginNotify
 * MapSources
 * MediaModeration
 * MobileApp
 * Modern
 * MonoBook
 * MultimediaViewer
 * NavigationTiming
 * NewUserMessage
 * Newsletter
 * Nostalgia
 * OATHAuth
 * OAuth
 * OAuthRateLimiter
 * OpenStackManager
 * PageAssessments
 * PageNotice
 * PagedTiffHandler
 * PdfHandler
 * Poem
 * PoolCounter
 * PropertySuggester
 * Quiz
 * RSS
 * Renameuser
 * RevisionSlider
 * SandboxLink
 * Score
 * SearchExtraNS
 * SecurePoll
 * ShortUrl
 * SimilarEditors
 * SiteMatrix
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * TemplateWizard
 * TheWikipediaLibrary
 * TocTree
 * TorBlock
 * UploadsLink
 * VipsScaler
 * WebAuthn
 * WikiEditor
 * Wikidata.org
 * WikidataPageBanner
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * Wikisource
 * XAnalytics
 * cldr
 * intersection
 * timeline

Total changes
637 Changes in 95 repos by 99 authors