MediaWiki 1.38/wmf.21/Changelog

Core changes

 * - Branch commit for wmf/1.38.0-wmf.21 by trainbranchbot
 * - mediawiki.page.gallery: Replace use of deprecated $.debounce by Sébastien Beyou
 * - mediawiki.util: Add throttle function, ported from OOUI by Ed Sanders
 * - Fix documentation comment for ParserOutput::addTrackingCategory by C. Scott Ananian
 * - Update category counts on purge by Kunal Mehta
 * - mediawik.util: Use same debounce implementation as OO.ui.debounce by Ed Sanders
 * - ApiPageSet: Add "missing": true to missing revisions by Lucas Werkmeister
 * - ForeignAPIRepo: Convert timestamps to unix before arithmetic operation by Umherirrender
 * - rdbms: Move more internal code from Database to TransactionManager by Amir Sarabadani
 * - rdbms: Replace internal call to deprecated IDatabase::fetchRow by Umherirrender
 * - Enable "ES6" modules in Safari 11+ by Eric Gardner
 * - Correct condition for InstantCommons with 0 dimensions by Derk-Jan Hartman
 * - Remove OutputPage::$mContainsNewMagic by C. Scott Ananian
 * - Add ParserOutput::appendExtensionData by C. Scott Ananian
 * - Add ParserOutput::{set,append}JsConfigVar by C. Scott Ananian
 * - [Optimization] cache result of buildContentNavigationUrls by Jon Robson
 * - ApiQueryAllImages does not enumerate all available pages by Reedy
 * - ApiSandbox: Sort DropdownWidget items by default by Ed Sanders
 * - mw.Uri tests: Add getPropertySummary utility by Ed Sanders
 * - diff: Fix small issues and compact syntax in DifferenceEngine by Thiemo Kreuz
 * - MessageCache: Avoid Undefined offset in normalizeKey by Timo Tijhof
 * - Convert WikiPage callers to LoadBalancer::getConnectionRef by Aaron Schulz
 * - Convert various callers to LoadBalancer::getConnectionRef by Aaron Schulz
 * - Add the W3C Intersection Observer to ResourceLoader by Eric Gardner
 * - Do not rely on $IP in DefaultSettings.php by daniel
 * - Overriding getPortletData is now deprecated by jdlrobson
 * - Skins can define bodyClasses at skin registration by Jon Robson
 * - selenium: Upgrade WebdriverIO to v7 by osamaahmed17
 * - HTMLForm: Hard-deprecate constructor without $context parameter by Bartosz Dziewoński
 * - Don't emit category-normal or category-hidden as skintemplate variables by mainframe98
 * - Add merge strategies to config-schema.yaml by daniel
 * - Add pre-generator for config-schema.php by Petr Pchelko
 * - filerepo: Fix purging of description pages for ForeignAPIFile by Brian Wolff
 * - resourceloader: Optimize hot code in makeQueryString by Timo Tijhof
 * - resourceloader: Inline more variables for code readability by Timo Tijhof
 * - Title: Set context page for `` etc. in getEditNotices by Bartosz Dziewoński
 * - ChangesListSpecialPage: Move useful utility methods to ChangeTags by Bartosz Dziewoński
 * - ChangesListSpecialPage: Check conditions in getChangeTagListSummary outside the loop by Bartosz Dziewoński
 * - docs: Fix TypeError on eg-iframe.html by Timo Tijhof
 * - api-testing: Disable flaky test by Kosta Harlan
 * - api-testing: Add wiki.runAllJobs for two more tests by Kosta Harlan
 * - Try not to discard Excimer timeout exceptions by Tim Starling
 * - Add explanatory comment for .fresnel.yml by Ori Livneh
 * - Add icons to navigation sidebar entries by Jon Robson
 * - resourceloader: Omit ES6-only modules from registry in ES5 context by Timo Tijhof
 * - Upgrading guzzlehttp/guzzle (7.4.0 => 7.4.1) by Reedy
 * - Upgrading wikimedia/ip-utils (3.0.2 => 4.0.0) by Reedy
 * - remove access to config globals from includes/parser by daniel
 * - Implement __serialize/__unserialize for PHP 8.1 support by Reedy
 * - HTMLFormField: Bypass the inverting logic of HTMLCheckField for disable-if and hide-if by Func
 * - ExtensionRegistry: Add process cache for lazy attributes by Tim Starling
 * - HTMLFormFieldTest: Use mFieldData for check of values by Func
 * - LogEventsList: Simplify using the `...` splat operator by Bartosz Dziewoński
 * - Implement __serialize/__unserialize for PHP 8.1 support by Reedy
 * - Add $specialPageAliases for Ingush (inh) by Amir E. Aharoni
 * - Add getMemberCount to Category to supersede getPageCount by Ammarpad
 * - Add hook UserEditCountUpdate by Tim Starling
 * - exception: Simplify MWExceptionRenderer to reduce influence of config by Timo Tijhof
 * - selenium: Refactor WebdriverIO tests from sync to async mode by osamaahmed17
 * - Add tl_target_id to templatelinks by Amir Sarabadani
 * - WikiPage: Move clearTitleUserNotifications call to post-send by Timo Tijhof
 * - objectcache: add more guessSerialValueSize tests by Aaron Schulz
 * - SkinMustache: Allow recursive template parsing by Jon Robson
 * - Add timestamp to thumbnail URLs on file pages by AntiCompositeNumber
 * - rdbms: make DatabaseMysqlBase::setSessionOptions batch the SET assignments by Aaron Schulz
 * - Avoid unneeded category count updates on moves by Umherirrender
 * - Support variants of page content language in live preview by Fomafix
 * - RCDatabaseLogEntry: Stop returning an unknown actor if rc_user is given by lens0021

Vendor

 * - Bump wikimedia/parsoid to 0.15.0-a19 by Subramanya Sastry
 * - Upgrading guzzlehttp/guzzle (7.4.0 => 7.4.1) by Reedy
 * - Upgrading christian-riesen/base32 (1.4.0 => 1.6.0) by Reedy
 * - Upgrading firebase/php-jwt (v5.2.0 => v5.5.1) by Reedy
 * - Upgrading pimple/pimple (v3.4.0 => v3.5.0) by Reedy
 * - Upgrading fgrosse/phpasn1 (v2.3.0 => v2.4.0) by Reedy
 * - Upgrading beberlei/assert (v3.3.1 => v3.3.2) by Reedy
 * - Upgrading nikic/php-parser (v4.13.0 => v4.13.2) by Reedy
 * - Upgrading maxmind-db/reader (v1.10.1 => v1.11.0) by Reedy
 * - Upgrading wikimedia/ip-utils (3.0.2 => 4.0.0) by Reedy

3D

 * - eslint: Lint Gruntile.js using server rules by Ed Sanders
 * - Merge three.js module into mmv.3d by DannyS712

AbuseFilter

 * - Drop non namespaced back compat aliases by Reedy
 * - Make rmspecials preserve whitespace by Huji
 * - Declare AbuseFilterView::$mParams as protected by Matěj Suchánek

ActiveAbstract

 * - Avoid using WikiPage::factory (part 2) by Alexander Vorwerk

AdvancedSearch

 * - [selenium] Fix broken tests and general improvements by WMDE-Fisch

Babel

 * - Add type declarations including strict_types, nullable types, void return by Ricordisamoa
 * - Add MW_INSTALL_PATH checks for these scripts by Derk-Jan Hartman
 * - Update ISO 639-3 code database from iso639-3.sil.org by Robin van der Vliet

BetaFeatures

 * - eslint: Lint Gruntile.js using server rules by Ed Sanders

Capiunto

 * - Use array style on adding modules to ParserOutput by Umherirrender

CentralAuth

 * - More consistent read-only mode handling by Tim Starling
 * - Drop CentralAuthUser back compat alias by Alexander Vorwerk
 * - Fix slow token session tests by Tim Starling

CirrusSearch

 * - extension.json: Remove leading \\ from class name by Reedy
 * - Remove unnecessary phan suppression by Reedy

Citoid

 * - eslint: Lint Gruntile.js using server rules by Ed Sanders

CodeEditor

 * - eslint: Lint Gruntile.js using server rules by Ed Sanders

CodeMirror

 * - eslint: Lint Gruntile.js using server rules by Ed Sanders

CodeReview

 * - Replace deprecated IDatabase::numRows by Umherirrender

ContactPage

 * - Fix and enable MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment by Reedy
 * - Namespace extension by Reedy

ContentTranslation

 * - styles: Use class 'cx-(source|target)-title' not '(source|target)-title' by James D. Forrester
 * - SX recent translation entrypoint: Fix redirection to SX by NikG
 * - Update skin checks with new vector skin key.  by Clare Ming
 * - SX invitation after publishing: Fix to always appear in sandbox by NikG

DiscussionTools

 * - Don't prompt to reload the page if the reply widget is open by Ed Sanders
 * - ReplyWidget: Factor out #createErrorMessage by Ed Sanders
 * - Move ApiDiscussionTools to ApiDiscussionToolsPageInfo by Ed Sanders
 * - extension.json: Sort ApiModules by Ed Sanders
 * - CommentParser: Cache variables in getUsernameFromLink by Ed Sanders
 * - CommentParser: Name parts of return value from findSignature by Ed Sanders
 * - Remove DiscussionToolsEnableTopicSubscriptionBackend config by Ed Sanders
 * - Improve CommentModifier::addReply API for re-use and testing by Bartosz Dziewoński
 * - ReplyWidget: Introduce a 'refresh' teardown mode that preserves auto-save by Ed Sanders
 * - ReplyWidgetVisual: Fully clear sessionStorage when clearing by Ed Sanders
 * - Update wgCurRevisionId/wgRevisionId when refreshing the page by Ed Sanders
 * - Create MemoryStorage wrapper around mw.SafeStorage by Ed Sanders
 * - controller: Separate updating page contents from saving the page by Bartosz Dziewoński
 * - Cleanup CommentController and document by Ed Sanders
 * - Limit where whitespaceParsoidHack is used by Bartosz Dziewoński
 * - Remove empty lines in visual mode in some more cases by Bartosz Dziewoński
 * - Remove unused code in JS modifier by Bartosz Dziewoński

DonationInterface

 * - Expand list of cards supporting 3ds by Elliott Eggleston
 * - Fix Diners Club code from Adyen checkout by Elliott Eggleston
 * - Move Monthly Convert ask rules to config by Elliott Eggleston
 * - Enable South Africa through Dlocal by Damilare Adedoyin
 * - Add three bank methods for Peru by Elliott Eggleston
 * - Allow Form Chooser to route IT donors to Apple Pay by Elliott Eggleston

DoubleWiki

 * - Namespace extension by Reedy

ElectronPdfService

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

FileImporter

 * - Update reference to WikiEditorHooks by Reedy
 * - Add missing margin between wikitext editor and button by Thiemo Kreuz

FlaggedRevs

 * - Drop orphan PG schema change sql files by Amir Sarabadani
 * - Drop fr_img_* columns by Amir Sarabadani

Flow

 * - Replace deprecated IDatabase::numRows by Umherirrender
 * - Pin psr/container at 1.* by Gergő Tisza
 * - Upgrading pimple/pimple (v3.4.0 => v3.5.0) by Reedy

GlobalBlocking

 * - Namespace special pages by Taavi Väänänen
 * - Write central id to database when global blocks are issued by Alexander Vorwerk
 * - Special:GlobalBlock and API:GlobalBlock: Allow separate anon-only options for global and local by Tks4Fish
 * - GlobalBlocking: consolidate IP validation and introduce CIDR limits by Tks4Fish
 * - Add onContributionsToolLinks hook to add relevant links to the contribs toolbar by Tks4Fish
 * - ApiQueryGlobalBlocks does not enumerate all available pages by Reedy

Graph

 * - Replace use of deprecated ParserOutput::addJsConfigVars by C. Scott Ananian

GrowthExperiments

 * - WikitextMentorProvider: Unbreak weighted list for no mentor list wikis by Martin Urbanec
 * - HomepageHooks: Remove onSpecialPageAfterExecute  by Kosta Harlan
 * - Mentor dashboard: Move icons from the top edge by Martin Urbanec
 * - MentorPageMentorManagerTest: Remove unused private method by Martin Urbanec
 * - MentorProvider: Remove unnecessary sourceId methods by Martin Urbanec
 * - Move datatype validation to a trait by Martin Urbanec
 * - Only show link to disable help panel preference if the preference is enabled by MewOphaswongse
 * - [tests] Make GrowthConfigValidationTest an unit test by Martin Urbanec
 * - Post edit panel: add getCard test by Sergio Gimeno
 * - Fix handling in MentorProvider::getMentorsSafe by Martin Urbanec
 * - Add unit test for NewcomerTaskLogger by Sergio Gimeno
 * - Remove out of date TODO comment by Martin Urbanec
 * - Replace deprecated wfReadOnly by Umherirrender
 * - Post edit panel: remove unnecessary this.newcomerTaskToken property by Sergio Gimeno
 * - Post edit panel: set this.newcomerTaskToken when showing SmallTaskCard by Sergio Gimeno
 * - selenium: Check if Quibble is using Apache before running test by Kosta Harlan
 * - Suggested edits: set this.newcomerTaskToken when showing EditCardWidget by MewOphaswongse
 * - Remove unused logic from StartEditingDialog.setupSuggestedEditsModule by MewOphaswongse
 * - Remove leftover mobile-only comment by Gergő Tisza
 * - StructuredTaskLogger: Don't assume mw.eventLog exists by Kosta Harlan
 * - Mentor resources: avoid using oo-ui-* classes by Sergio Gimeno
 * - Newcomer task analytics: stop returning task.token from loggers by Sergio Gimeno
 * - Suggested edits: generate task token from single place by Sergio Gimeno
 * - Move mentor pool code to MentorProvider by Martin Urbanec
 * - Fix phan CI break by Gergő Tisza
 * - Add an image: use medium dialog size for AddImageCaptionInfoDialog on desktop by MewOphaswongse
 * - Structured tasks: Don't add the article to the user's watchlist when no edits are made by MewOphaswongse
 * - Suggested edits: Always show footer in FiltersDialog by MewOphaswongse
 * - Add an image: Remove mobile-only quality gate by Gergő Tisza

InputBox

 * - De-obfuscate attempts to trick people into editing .js pages by Thiemo Kreuz
 * - Simplify code that generates different error messages by Thiemo Kreuz

IPInfo

 * - Add asn to viewing rights by STran
 * - Update info returned by getProxyType retriever by tsepothoabala

Kartographer

 * - Guard non-critical code agains unexpected user input by Thiemo Kreuz

Linter

 * - Fix typo in patch file by Alexander Vorwerk
 * - First phase of T175177 database alter table adds two fields by sbailey

MassMessage

 * - Special:MassMessage: Fix empty subject validation by Abijeet

Math

 * - eslint: Lint Gruntile.js using server rules by Ed Sanders
 * - selenium: Refactor WebdriverIO tests from sync to async mode by osamaahmed17

MediaSearch

 * - Add the Active State for the "deafult" entry by Simone This Dot
 * - Add a dependency on "intersectionObserver-polyfill" by Eric Gardner
 * - Show Active state on Default item by Simone This Dot

MobileFrontend

 * - Use namespaced CentralAuthUser in doc comment by Taavi Väänänen
 * - Remove unwanted space from language search results by NikG
 * - Always show AMC mode of contributions page to mobile users by Clare Ming

MultimediaViewer

 * - Remove discussion and help links from footer by Iniquity

Newsletter

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

PagedTiffHandler

 * - Use getSizeAndMetadata and general style/maintenance updates by Tim Starling

PageImages

 * - Add more integrated parser test by Tim Starling

SandboxLink

 * - Namespace extension by Reedy

SecurePoll

 * - Skip validation on the value of HTMLFormCloner template by Func

TemplateData

 * - Move last remaining HTML formating code out of blob class by Thiemo Kreuz
 * - Split validation into some smaller steps by Thiemo Kreuz
 * - Use more specific `instanceof stdClass` instead of is_object by Thiemo Kreuz
 * - Inject localizer service into HTML formatter class by Thiemo Kreuz
 * - Rename all $paramObj to $param by Thiemo Kreuz
 * - Split validation and HTML formatting into separate services by Thiemo Kreuz
 * - Replace effectively unused $paramNames array by Thiemo Kreuz
 * - Fix use of formatnum in templatedata-invalid-length by Niklas Laxström

Thanks

 * - build: Add SVGO latest v2.8.0 and re-crush SVGs by Volker E
 * - Correct attribute for flow thanks by David Lynch

TimedMediaHandler

 * - Remove redundant check against the value of beta user option by Func
 * - build: Add SVGO latest v2.8.0 and re-crush SVGs by Volker E
 * - Design fixes for 'play' buttons by Iniquity
 * - Look for interface ForeignRepoWithMWApi instead of ForeignAPIRepo by Brian Wolff
 * - Limit parsercache hash vary to Beta and prepare for default roll-out by Timo Tijhof
 * - Consistently use MainConfig service in hooks  by Timo Tijhof
 * - VideoJS relayout fixes by Derk-Jan Hartman
 * - Cleanup of TimedTextPage by Derk-Jan Hartman

Translate

 * - MoveTranslatablePageSpecialPage: Simplify checks in execute method by Abijeet
 * - ImportTranslationsSpecialPage: Add strict types and type hints by Abijeet
 * - ExportTranslationsSpecialPage: Add strict types and type hints by Abijeet
 * - SpecialExportTranslations: Move to namespace and rename by Abijeet
 * - MoveTranslatablePageSpecialPage: Remove params from comments by Abijeet
 * - MoveTranslatablePageSpecialPage: Fix multiple not found errors by Abijeet
 * - Add UrlInsertableSuggester for Translate by Jon Harald Søby
 * - SpecialImportTranslations: Move to namespace and rename by Abijeet

TwoColConflict

 * - Remove unused user-select CSS property by Thiemo Kreuz

UploadWizard

 * - Fix some ESLint warnings by Thiemo Kreuz
 * - Minor cleanups to JavaScript code by Thiemo Kreuz
 * - Minor cleanups in PHP code by Thiemo Kreuz
 * - Correct schema drift between abstract and old non-abstract by Umherirrender

VisualEditor

 * - Add vector-body class to diff/previews by Ed Sanders
 * - Remove redundant Phan annotations by Bartosz Dziewoński
 * - ApiParsoidTrait: Add "@return never" for Phan by Bartosz Dziewoński
 * - selenium: Refactor WebdriverIO tests from sync to async mode by osamaahmed17
 * - New bucket for abtest data by David Lynch
 * - Re-apply "Re-duplicate deduplicated TemplateStyles"  by Bartosz Dziewoński
 * - Show a keyboard shortcut when hovering over a toolbar button by Andrew Kostka

Wikibase

 * - Don’t style heading elements in Wikibase diffs  by Lucas Werkmeister
 * - Optimize ItemHandler::getIdentifiersCount by Marius Hoch
 * - SpecialUnconnectedPages: Fix when not using pretty paths by Marius Hoch
 * - ServiceWiringTestCase: Clarify message by Marius Hoch
 * - Allow totally missing $wgWBClientSettings by Lucas Werkmeister
 * - rebuildItemsPerSite: Allow paging (by page id) by Marius Hoch
 * - SpecialUnconnectedPages: use less strings for SQL by Lucas Werkmeister
 * - SpecialUnconnectedPages: remove dead code by Lucas Werkmeister
 * - Hook into shell and eval mw maint scripts for convenience snippets by addshore
 * - Add CSS class to mul fallbacks by Lucas Werkmeister
 * - Update Termbox (full Vue 3 migration) by Lucas Werkmeister
 * - Add rudimentary version of mul language code by Lucas Werkmeister
 * - Don’t explicitly check page existence in AffectedPagesFinder by Lucas Werkmeister

WikibaseLexeme

 * - Add submodule for new-lexeme-special-page by Michael Große
 * - Start building documentation with Doxygen by Lucas Werkmeister
 * - Add baserevid to wbladdsense API module by Lucas Werkmeister

WikibaseMediaInfo

 * - Further narrow down which synonyms to use, and cap them by Matthias Mullie

WikibaseQualityConstraints

 * - Bump sinon from 13.0.0 to 13.0.1 by Addbot

WikidataPageBanner

 * - Namespace extension by Reedy
 * - Tests: Minor cleanup by Reedy

WikiEditor

 * - build: Update eslint-config-wikimedia to 0.21.0 by Ed Sanders
 * - Swap to AutoloadNamespaces by Reedy
 * - New bucket for abtest data by David Lynch

WikiLambda

 * - Add test to assert that dependencies.json file is up to date by gengh
 * - Update function-schemata sub-module to HEAD (220f67a)  by James D. Forrester
 * - Allow the UI to support custom made FunctionToType by Simone This Dot
 * - Test a function call taking 2 arguments by dmartin
 * - Remove hardcoded value from ZFunctionCall::getReturnType by gengh
 * - Test Hooks::createInitialContent without inserting all definitions  by gengh
 * - Cover getZValue and getReturnType in ZFunctionCall tests by dmartin
 * - ZMultilingualString: Drop Constants in data, not used by James D. Forrester
 * - eslint: Move vue/no-boolean-default disables inline by James D. Forrester
 * - Update function-schemata sub-module to HEAD (096fd3b) by James D. Forrester
 * - add some coverage for getDefinition tests and ZQuote by jkieserman
 * - Add some tests for coverage of new ZKeyReference class by jkieserman
 * - additional edits to function editor - remove implementation and next steps by jkieserman
 * - Allow UI to READ type with TypedList(keys)  by Simone This Dot
 * - doc: Add some Task references to two TODOs in the Vue code by James D. Forrester
 * - Replace use of deprecated ParserOutput::addJsConfigVars by C. Scott Ananian

WikiLove

 * - Correct schema drift between abstract and old non-abstract by Umherirrender

CologneBlue

 * - Namespace skin by Reedy

MinervaNeue

 * - The warningbox class is deprecated by Jon Robson
 * - Add icon to portlet links without IDs by BrandonXLF
 * - Handle unexpected data coming from MediaWiki:Sidebar by Jon Robson
 * - selenium: Ensure .waitForDisplayed before .click by Umherirrender
 * - QUnit: Add dependency on mw.Uri by Kosta Harlan
 * - Main page definition come from MediaWiki:Sidebar by Jon Robson

Timeless

 * - Namespace skin by Reedy
 * - Drop support for MW < 1.36 by Reedy

Vector

 * - Migration mode is now the default by Jon Robson
 * - SkinVector: Minor cleanup by Reedy
 * - Fixes for sticky header:   by Clare Ming
 * - Remove `getElementsByClassName` usage from sectionObserver by Nicholas Ray
 * - Hide sticky header below 1000px port width by Clare Ming
 * - Drop skin override by Jon Robson
 * - Overriding getPortletData will soon be deprecated by Jon Robson
 * - Pass skin name to Hooks::isSkinLegacy by Jon Robson
 * - Fix the opt in URl by Jon Robson
 * - Add recursive template for toc by Jon Robson

WikimediaApiPortal

 * - Namespace Hooks class by Reedy

No changes

 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * ArticlePlaceholder
 * BounceHandler
 * Calendar
 * Campaigns
 * CategoryTree
 * CentralNotice
 * CharInsert
 * CheckUser
 * ChessBrowser
 * Cite
 * CiteThisPage
 * Cognate
 * Collection
 * CommonsMetadata
 * ConfirmEdit
 * CongressLookup
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * DynamicSidebar
 * Echo
 * Elastica
 * EntitySchema
 * EventBus
 * EventLogging
 * EventStreamConfig
 * ExtensionDistributor
 * ExternalGuidance
 * FeaturedFeeds
 * FileExporter
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GWToolset
 * Gadgets
 * GeoCrumbs
 * GeoData
 * GlobalCssJs
 * GlobalPreferences
 * GlobalUsage
 * GlobalUserPage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * GuidedTour
 * ImageMap
 * Insider
 * Interwiki
 * InterwikiSorting
 * Josa
 * JsonConfig
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * LiquidThreads
 * Listings
 * LocalisationUpdate
 * LoginNotify
 * MachineVision
 * MapSources
 * MediaModeration
 * MobileApp
 * Modern
 * MonoBook
 * NavigationTiming
 * NearbyPages
 * NewUserMessage
 * Nostalgia
 * Nuke
 * OATHAuth
 * OAuth
 * OAuthRateLimiter
 * ORES
 * OpenStackManager
 * PageAssessments
 * PageNotice
 * PageTriage
 * PageViewInfo
 * ParserFunctions
 * PdfHandler
 * Poem
 * PoolCounter
 * Popups
 * ProofreadPage
 * PropertySuggester
 * QuickSurveys
 * Quiz
 * RSS
 * ReadingLists
 * RelatedArticles
 * Renameuser
 * RevisionSlider
 * Score
 * Scribunto
 * SearchExtraNS
 * SecureLinkFixer
 * ShortUrl
 * SiteMatrix
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateSandbox
 * TemplateStyles
 * TemplateWizard
 * TextExtracts
 * TheWikipediaLibrary
 * TitleBlacklist
 * TocTree
 * TorBlock
 * TranslationNotifications
 * TrustedXFF
 * UniversalLanguageSelector
 * UploadsLink
 * UrlShortener
 * VipsScaler
 * VisualEditor/VisualEditor
 * WebAuthn
 * WikibaseCirrusSearch
 * WikibaseLexemeCirrusSearch
 * Wikidata.org
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaEvents
 * WikimediaIncubator
 * WikimediaMaintenance
 * WikimediaMessages
 * Wikisource
 * XAnalytics
 * cldr
 * intersection
 * timeline
 * wikihiero

Total changes
293 Changes in 61 repos by 71 authors