MediaWiki 1.41/wmf.20/Changelog

Core changes

 * - Branch commit for wmf/1.41.0-wmf.20 by trainbranchbot
 * - parser: Remove phan-suppression after parsoid 0.18.0-a20 update by Umherirrender
 * - SpecialVersion: Indicate when no skins or extensions are installed by Hannah Okwelum
 * - content,maintenance: Use class-string in doc blocks by thiemowmde
 * - UserGroupManagerTest: clear all hooks before running tests by Daimona Eaytoy
 * - Override inContentLanguage for FakeQqxMessageLocalizer by Michael Große
 * - ResourceLoader: Switch Resources.php to MW_INSTALL_PATH by Timo Tijhof
 * - LocalisationCache: Load only core data if possible by Lucas Werkmeister
 * - LocalisationCache: Reset loaded(Sub)Items when overwriting data by Lucas Werkmeister
 * - Acquire a temporary user username before previewing by Bartosz Dziewo?ski
 * - Make minimumGroupingDigits an integer and add documentation by Tim Starling
 * - phpunit: Throw exception in getDb for non-database tests by Daimona Eaytoy
 * - Use any element in CSS selector of enhanced changes list by Fomafix
 * - EditRecovery: add editRecovery.loadEnd JS hook by Sam Wilson
 * - tests: Require existing page in ExportTest by Umherirrender
 * - phpunit: Avoid TestUser in non-database tests by Daimona Eaytoy
 * - tests: api: Replace some static function with services by Umherirrender
 * - tests: api: Use NS_ constants instead of hard coded values by Umherirrender
 * - doc: Improve description of "type" in extension.schema.v2.json by Philipp Spitzer
 * - ParserOutput: use consistent delimiters in bodyOnly regexps by C. Scott Ananian
 * - Remove ParserOutput::hideNewSection, deprecated since 1.38 by C. Scott Ananian
 * - Rename newly-added ParserOutput::appendOutputString method by C. Scott Ananian
 * - LocalisationCache: Add CORE_ONLY_KEYS, ALL_EXCEPT_CORE_ONLY_KEYS by Lucas Werkmeister
 * - LocalisationCache: Expand tests by Lucas Werkmeister
 * - Fix incomplete/broken ParserFactoryTest & ParserTest by thiemowmde
 * - language: Move tests from /cache to /language by Lucas Werkmeister
 * - LocalisationCache: Make isMergeableKey static by Lucas Werkmeister
 * - Don't defer to CLDR for ru, uk, hy minimumGroupingDigits by Tim Starling
 * - Record Parsoid version in extension data to allow rollback if necessary by C. Scott Ananian
 * - tests: Reset title cache after page creation in ParserTestRunner by Umherirrender
 * - LocalisationCache: Make everything private that can be private by thiemowmde
 * - Add append/getOutputString to ParserOutput by Isabelle Hurbain-Palatin
 * - mailmap: Add urbanecm's WMF address by Martin Urbanec
 * - Make tests override needed configuration by Tim Starling
 * - Normalize the skin name when "skin" is in HiddenPrefs by Tim Starling
 * - language: Add specific type hints to all LocalisationCache properties by thiemowmde
 * - Fix flaky test testSecuritySensitiveOperationStatus by Tim Starling
 * - Fix attribution for "Localisation updates from https://translatewiki.net." by Winston Sung
 * - Use formatversion=2 for “account data from this project” link by Lucas Werkmeister
 * - maintenance: Remove UserRightsProxy from CreateAndPromote::addLogEntry by Umherirrender
 * - BlockManagerTest: Use class @covers instead of per-method annotations by Thalia
 * - Tests: Fix config value override by Ammarpad
 * - Revert "specials: Use cross-wiki aware UserIdentityLookup on Special:UserRights"  by Urbanecm
 * - Regression test for T342733 empty skin name by Tim Starling
 * - Normalize the skin name when it comes from preferences or useskin by Tim Starling
 * - Migrate more calls of Database::select* to SelectQueryBuilder by Amir Sarabadani
 * - api: Minor cleanup of some Api Base classes by Reedy
 * - Edit recovery feature using indexedDB by Sam Wilson
 * - Don't show the inline toggle selector on Special:MobileDiff by Tim Starling
 * - TextboxBuilder: Minor cleanup by Reedy
 * - Add barebones mw.util.addPortlet method by Jon Robson
 * - EditPage: Add #[AllowDynamicProperties]  by Reedy
 * - Schema: Add pl_target_id column to pagelinks by Amir Sarabadani
 * - rdbms: Avoid making wasteful memcached calls in CP by Amir Sarabadani
 * - Replace usages of ApiTestCase::$users by Daimona Eaytoy
 * - ApiTestCase: Clone User object when Authority is used by Daimona Eaytoy
 * - Deprecate MediaWikiIntegrationTestCase::$users by Daimona Eaytoy
 * - phpunit: Make getTestUser and friends non-static by Daimona Eaytoy
 * - ApiComparePages: Add help url by Reedy
 * - phpunit: Do not call addCoreDBData if the test doesn't need the DB by Daimona Eaytoy
 * - Add namespace translations for Mandailing (btm) by Jon Harald Søby
 * - ExternalLinks: Add support for WRITE_NEW only mode by Amir Sarabadani
 * - Update wikimedia/cdb from v2.0.0 to v3.0.0 by Derick Alangi
 * - rdbms: Drop srvCache from Database by Amir Sarabadani
 * - Add an API-only user preference for diff type by Tim Starling
 * - skins: Widen `@covers` annotations in unit tests by Timo Tijhof
 * - changetags: Use LogPage::DELETED_RESTRICTED in ChangeTagsLogItem by Umherirrender
 * - Make "pluralRules" caches static in LocalisationCache by thiemowmde
 * - UserGroupManagerTest: Set wgConf wikis to it's valid by Derick Alangi
 * - UserIdentity: Point to new UserIdentityUtils service in documentation by Thalia
 * - rdbms: Fix postgres db function call by Ammarpad
 * - Improve collapsing on the enhanced changes list by Fomafix
 * - Message: Document better what it means to "use the database" by thiemowmde
 * - Add support for wikidiff2_multi_format_diff by Tim Starling
 * - objectcache: Fix foreach warning in ReplicatedBagOStuff by Timo Tijhof
 * - rdbms: Introduce InsertQueryBuilder by Amir Sarabadani
 * - Warn when firing wikipage.content hook on content which isn't attached by Ed Sanders

Vendor

 * - Bump parsoid to 0.18.0-a20 by Isabelle Hurbain-Palatin
 * - Bump wikimedia/parsoid to v0.18.0-a19 by C. Scott Ananian
 * - Update wikimedia/cdb from v2.0.0 to v3.0.0 by Derick Alangi

AbuseFilter

 * - Pass ParserFactory to LazyVariableComputer by Umherirrender

BetaFeatures

 * - Hooks: Use UserIdentityUtils for temporary user check by Thalia

CampaignEvents

 * - Drop campaign_events.ce_answers_status by Daimona Eaytoy
 * - Update the affiliate question wording and options by Claudio Melo
 * - Update copy of participant questions subtitles by Daimona Eaytoy
 * - Update participant questions section titles to match prototypes by Daimona Eaytoy

CentralAuth

 * - CentralAuthUser: Don't load user information unless needed by Taavi Väänänen
 * - Raise logging of token-based session failures to info by Gergő Tisza
 * - Add test for SpecialGlobalGroupMembership by Taavi Väänänen

CentralNotice

 * - Replace deprecated MWException by Daimona Eaytoy

CheckUser

 * - clienthints: Allow Client Hints API to accept partial data by Dreamy Jazz
 * - Prevent saving Client Hints using REST API when action is too old by Dreamy Jazz
 * - clienthints REST API: Perform matching user check with RAW audience by Dreamy Jazz
 * - Add CheckUserUnionSelectQueryBuilderTest to the Database group by Daimona Eaytoy
 * - Allow IP addresses as usernames in CheckUserPrivateEventLogFormatter by Dreamy Jazz
 * - Create UserIdentityValue with correct wiki by Alexander Vorwerk

CirrusSearch

 * - Add remove_duplicates to Hebrew and refactor by tjones
 * - Relax prefix_api.feature by David Causse
 * - Load RescoreFunctions from the ExtensionRegistry by David Causse

Cite

 * - Replace extremely slow parser test with fast unit tests  by thiemowmde
 * - Replace all Language and Parser mocks with no-op mocks by thiemowmde
 * - Remove unused "HTML message" cite_references_no_link by thiemowmde
 * - Remove unused private method from CiteDbTest by thiemowmde
 * - Revert "Localisation updates from https://translatewiki.net." by Thiemo Kreuz (WMDE)
 * - Remove (revert) expensive parsing of 1-character message by thiemowmde
 * - Rename ext.cite.style VE dependency to ext.cite.parsoid.styles by Subramanya Sastry

CodeMirror

 * - Use editRecovery.loadEnd JS hook to add change handler by Sam Wilson

ContentTranslation

 * - CX: Use the same format as SX for section ids inside corpora units by NikG
 * - CX ve.dm.CXSectionNode.js: Migrate from ES5 to ES6 by NikG
 * - CX mw.cx.TranslationController.js: Migrate from ES5 to ES6 by NikG
 * - CX mw.cx.TranslationTracker.js: Migrate from ES5 to ES6 by NikG
 * - CX: Add change_tag to Wikidata CX edits by wangombe

DiscussionTools

 * - Always use === in PHP by Ed Sanders
 * - Replace uses of UserNameUtils::isTemp with UserIdentityUtils::isTemp by Thalia
 * - UsernameCompletionAction: Use @inheritdoc by Ed Sanders
 * - Add extra documentation to config for ...reply_icon_languages by Ed Sanders
 * - Use strict comparison with array_search by Ed Sanders

DonationInterface

 * - Update logging by cstone

Echo

 * - Fixes: Echo notification count disappears on load in mobile skin by Jon Robson
 * - Update Echo to use MobileFrontend IconButton.js by bwang

EntitySchema

 * - Fix lost copyright notice on SetEntitySchemaLabelDescriptionAliases by Michael Große
 * - Refactor `onBeforeDisplayNoArticleText` hook handler to use hook interface by Hasan Akgün
 * - Reuse Wikibase's copyright message builder by Andrew Kostka

EventBus

 * - Filter out null edits by Dan Andreescu

FileImporter

 * - Drop unnecessary limitation to int from AbuseFilter integration by thiemowmde
 * - Use cheaper Title::makeTitle in tests by thiemowmde
 * - Pass ParserFactory to CategoryExtractor by Umherirrender
 * - tests: Add mock for IContextSource::getSkin in ChangeFileInfoFormTest by Umherirrender

FlaggedRevs

 * - Remove 'flaggedrevs-diffonly' message and related functionality by Bartosz Dziewoński
 * - db: Fix table comment vocabulary by Gergő Tisza
 * - Hide level zero in the revision review form  by tacsipacsi
 * - RevisionReviewFormUI: Remove some traces of the tiers by tacsipacsi

Gadgets

 * - Avoid loading gadgets if the storage backend is disabled in tests by Daimona Eaytoy

GrowthExperiments

 * - help: Fix navigation in the help panel by Gergő Tisza
 * - Use IconButton instead of Icon by Jon Robson
 * - campaigns: Fix comment by Gergő Tisza
 * - api: Expose disabled task types in AddImageFeedbackHandler by Gergő Tisza
 * - IP Masking: Replace isRegistered/isAnon calls with isNamed by Martin Urbanec
 * - Post edit panel: Do not show pageviews by Kayla Morgan

Kartographer

 * - Align with wtPostprocess signature change by Isabelle Hurbain-Palatin

LiquidThreads

 * - ApiThreadAction: Correct Help URL by Reedy

MachineVision

 * - build: Upgrade vue to 3.2.37 to align with MediaWiki by James D. Forrester

MobileFrontend

 * - Add titles for media viewer's "prev" and "next" buttons by Dringsim
 * - build: Update SVGO to v3.0.2 by Volker E
 * - Migrate mw-ui-button to cdx-button by bwang
 * - Update storybook to reflect change in Minerva by Dringsim
 * - Fixes: CTA drawer down arrow alignment by Jon Robson
 * - Update Icon.js to be IconButton.js and use codex button classes by bwang
 * - SpecialMobileOptions: Remove dependency on UserNameUtils by Thalia
 * - Watch for edit links inside the overflow menu by David Lynch
 * - Hide inline format line markers in Mobile by hmonroy

ORES

 * - add User-agent header in Lift Wing requests by Ilias Sarantopoulos
 * - Fix model row upsert warning by Amir Sarabadani

PageTriage

 * - clicking "Previously deleted" in Special:NewPagesFeed now opens Special:Log by Novem Linguae
 * - clicking "Previously deleted" in Page Curation now opens Special:Log by Novem Linguae
 * - add ?action=query&prop=isreviewed to API by Novem Linguae
 * - Fix lastAfcActionLabel not showing up correctly by suecarmol
 * - Fix non-database test using the database by Daimona Eaytoy
 * - Remove More button on load by suecarmol

Popups

 * - Scope rule to Popups  by Jon Robson
 * - Model: Make dwell delay part of model and registration by Jon Robson
 * - Remove unnecessary codex button styles by bwang

ProofreadPage

 * - Avoid DB access in non-database tests by Daimona Eaytoy
 * - tests: Simplify provider in WikitextLinksExtractorTest by Umherirrender

SecureLinkFixer

 * - Updating domains.php from Mozilla by SecureLinkFixer updater bot

SecurePoll

 * - Avoid dynamic message keys via FormSpecialPage::getMessagePrefix by Daimona Eaytoy

TemplateData

 * - Hooks: Use UserIdentityUtils for temporary user check by Thalia

Thanks

 * - Update Thanks extension to use IconButton.js from MobileFrontend by bwang

TimedMediaHandler

 * - tests: Add `@group Database` where needed by Daimona Eaytoy

Translate

 * - QueryMessageGroupsActionApi: Remove mgroot=all parameter by Abijeet
 * - Move entity.selector to its own folder by Abijeet
 * - AggregateGroupsSpecialPage: Use entity.selector to select groups by Abijeet
 * - Pass ParserFactory to Special:ExportTranslations by Umherirrender
 * - tests: Add PersistentDatabaseCacheTest to the Database group by Daimona Eaytoy
 * - Mint: Disable translations to Chinese by Abijeet
 * - pagetranslation: Clarify pp-already-prepared-message message and purpose by Reedy
 * - ext.translate.special.pagepreparation.js: Use action=compare by Reedy
 * - ext.translate.special.pagepreparation.js: Code updates by Reedy
 * - ext.translate.special.pagepreparation.js: Better handling of Prepare button click by Reedy
 * - MinT: Pre/post process input/output sent to API by Abijeet
 * - ext.translate.special.pagepreparation.js: Only add trailing if we added a leading by Reedy
 * - ext.translate.special.pagepreparation.js: Check for whitespace in element by Reedy
 * - SearchTranslations: Code improvements by Abijeet

TranslationNotifications

 * - Do not add jobs with empty target wiki id to the job queue by Abijeet

UniversalLanguageSelector

 * - Update jquery.ime and jquery.uls from upstream by Amir E. Aharoni

VisualEditor

 * - Simplify definition of textStyle group in toolbar by Ed Sanders
 * - Update VE core submodule to master (c1420586c)  by Bartosz Dziewoński
 * - Remove `DualParsoidClient::class` and related code from VE (p.2) by Derick Alangi
 * - build: Upgrade grunt-eslint from 24.1.0 to 24.3.0 by James D. Forrester
 * - build: Upgrade stylelint-config-wikimedia from 0.15.0 to 0.16.0 by James D. Forrester
 * - Simplify code for showing "Loading" message in template context by Ed Sanders

Wikibase

 * - REST: Rename ReplaceItemStatement and its related classes by Muhammad Jaziraly
 * - Check for false repoDomain explicitly in RepoDomainDbFactory by Daimona Eaytoy
 * - Show a shorter copyright message when dataRightsUrl is empty by Andrew Kostka
 * - REST: Add PUT property statement route to OAS by Muhammad Jaziraly
 * - client: Pass ParserFactory to ApiFormatReference by Umherirrender
 * - Termbox: Build required config into init module by Jakob Warkotsch
 * - Termbox: Implement and inject EntityRepository service  by Silvan
 * - Only show pulsating dot to logged-in users by Lucas Werkmeister
 * - REST: Remove superfluous instantiation of `UseCaseError`s by Ollie Shotton
 * - REST: Remove unused error codes from lookup table by Ollie Shotton
 * - REST: Modify UseCaseError context logic by Ollie Shotton
 * - REST: Fix incorrect operationId in OpenAPI document by Jakob Warkotsch
 * - REST: Add `operationId`s to OpenAPI schema by Jakob Warkotsch
 * - Make certain PHPUnit test setups more robust by thiemowmde
 * - Simplify WikibasePingbackTest setup by thiemowmde
 * - Avoid calling setMwGlobals multiple times by thiemowmde
 * - Only show “mul” pulsating dot in edit mode by Lucas Werkmeister
 * - Termbox: Inject item/property specific data access services by Jakob Warkotsch

WikibaseQualityConstraints

 * - Bump unexpected from 13.2.0 to 13.2.1 by Addbot
 * - Remove $parameters constructor parameter from CheckResult by Lucas Werkmeister
 * - Stop passing $parameters into CheckResult by Lucas Werkmeister
 * - Remove parameters from CheckResult by Lucas Werkmeister
 * - Remove remaining references to CheckResult::getParameters by Lucas Werkmeister
 * - Remove check result parameters from log message by Lucas Werkmeister
 * - Remove ConstraintParameterRenderer by Lucas Werkmeister
 * - Remove expandable content scripts+styles by Lucas Werkmeister
 * - Remove constraint parameters from SpecialConstraintReport by Lucas Werkmeister

WikiEditor

 * - Make EventLogging code more robust by thiemowmde
 * - Update reference in WikiEditor by ksarabia

WikiLambda

 * - Function view: Comment out JSON blob view ('expert mode') by James D. Forrester
 * - Fix broken initialization of AboutEditMetadataDialog with blank language by gengh
 * - Fix style separation between language chip and string in localized labels by gengh
 * - ApiPerformTest: Catch invalid-Object errors thrown from user input by James D. Forrester
 * - PageRenderingHandler: Set href always, even when we don't set the label by James D. Forrester
 * - SpecialViewObject: Catch errors from trying to create the language by James D. Forrester
 * - Use mw.config JS variables instead of directly URL for edit/view mode by gengh
 * - Create standalone JS module with language selector for page header by gengh
 * - Function impl marked dirty when labels change by Stef Dunlap
 * - Get current view information from store getter by gengh
 * - SpecialViewObject: Don't load if action=edit etc. by James D. Forrester
 * - Update link to function-evaluator image in docker-compose.sample. by apine
 * - OrchestratorRequest: Memoise Wikifunction functions calls in memcached by James D. Forrester
 * - OrchestratorRequest: Don't use $IP global, use MW_INSTALL_PATH constant by James D. Forrester
 * - SpecialViewObject: Don't inject a second rel='canonical' by James D. Forrester
 * - Initialize blank function when redirecting to FunctionEditor from DefaultView by gengh
 * - reloadBuiltinData: Fix typo by James D. Forrester
 * - Enable FunctionReport tests and fix false positives by gengh
 * - Fix and activate Run Function page integration tests by gengh
 * - e2e: Fix the publish component by nik-55
 * - AUTHORS: Update for July 2023 by James D. Forrester
 * - Handle oldid url param to view a particular revision by gengh
 * - PageRenderingHandler: Don't make 'read' selected if we're on the edit tab by James D. Forrester
 * - ExpandedToggle: Rotate icon the other way on dir=rtl context by gengh
 * - Add exit cancel handling for browser events by gengh
 * - About widget: Tie disabled state of edit pencil button to canEditObject method by James D. Forrester
 * - Update function-schemata sub-module to HEAD (1c01f22) by James D. Forrester
 * - Don't hard-code parantheses, as they differ by language by James D. Forrester
 * - docs: Ensure we have a proper file-level block on every code file by James D. Forrester
 * - Set label changes to true when updating Function Description by gengh
 * - docs: Move Vue top-level comment out of the rendered DOM by James D. Forrester

WikimediaMaintenance

 * - Migrate Commons interwiki code to dumpInterwiki.php  by Alexander Vorwerk
 * - DumpInterwiki: Set Forward=yes to wikifunctions: by James D. Forrester
 * - DumpInterwiki: Add f: as interwiki for wikifunctions by James D. Forrester

Wikistories

 * - Thumbnail icon z-index by Huei Tan

MinervaNeue

 * - Add option for different icon sizes, reduce size of arrow icon in last modified bar by bwang
 * - Hide image overlay slider buttons by Jon Robson
 * - [Icons] Convert history/next status bar icons to Codex by Jan Drewniak
 * - Fixes: Close label showing in reference drawer by Jon Robson
 * - Fixes page issue icon  by Jon Robson
 * - Handle icon only labels with Codex in Minerva by Jon Robson
 * - Ensure space between download icon and text by Jon Robson
 * - DefaultMainMenuBuilder: Use UserIdentityUtils for temporary user check by Thalia
 * - Disable flakey test by Jon Robson
 * - [Icons] Update usage of MobileFrontend Icon code by bwang
 * - Add "edit full page" to the minerva overflow menu by David Lynch

Timeless

 * - Revert "Restrict the table hack from T269912 to mw-parser-output" by Fomafix
 * - Restrict the table hack from T269912 to mw-parser-output by Fomafix
 * - Avoid multiple spaces by Fomafix

Vector

 * - Revert "Reset line height on tab elements" by Jdlrobson
 * - Separate dropdown/menu references in PHP and templates by bwang
 * - Fix issues with addPortlet handler by Jon Robson
 * - Add hook support for mw.util.addPortlet method by Moh'd Khier Abualruz
 * - Fix text showing on icon only buttons by bwang

VisualEditor/VisualEditor

 * - Make Language and ClearAnnotation tools part of the textStyle group by Ed Sanders
 * - i18n: Add new langauge by Ed Sanders
 * - Handle clicking on a focusable node that is already focused by Ed Sanders
 * - ve.ce.Surface: Move some vars closer to usage by Ed Sanders
 * - Follow-up I8701829: Manually move focus when tab/shift+tab pressed by Ed Sanders
 * - Revert "Patch WindowManager fix for multiple window managers" by Bartosz Dziewoński

No changes

 * 3D
 * ActiveAbstract
 * AdvancedSearch
 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * ArticlePlaceholder
 * Babel
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * CharInsert
 * ChessBrowser
 * CiteThisPage
 * Citoid
 * CodeEditor
 * Cognate
 * Collection
 * CologneBlue
 * CommonsMetadata
 * ConfirmEdit
 * ContactPage
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * DoubleWiki
 * Elastica
 * ElectronPdfService
 * EventLogging
 * EventStreamConfig
 * ExtensionDistributor
 * ExternalGuidance
 * FeaturedFeeds
 * FileExporter
 * Flow
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GeoCrumbs
 * GeoData
 * GlobalBlocking
 * GlobalCssJs
 * GlobalPreferences
 * GlobalUsage
 * GlobalUserPage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * Graph
 * GuidedTour
 * IPInfo
 * ImageMap
 * ImageSuggestions
 * InputBox
 * Insider
 * Interwiki
 * InterwikiSorting
 * Josa
 * JsonConfig
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * Linter
 * Listings
 * LoginNotify
 * MapSources
 * MassMessage
 * Math
 * MediaModeration
 * MediaSearch
 * MobileApp
 * Modern
 * MonoBook
 * MultimediaViewer
 * NavigationTiming
 * NearbyPages
 * NewUserMessage
 * Newsletter
 * Nostalgia
 * Nuke
 * OATHAuth
 * OAuth
 * OAuthRateLimiter
 * OpenStackManager
 * PageAssessments
 * PageImages
 * PageNotice
 * PageViewInfo
 * PagedTiffHandler
 * ParserFunctions
 * PdfHandler
 * Phonos
 * Poem
 * PropertySuggester
 * QuickSurveys
 * Quiz
 * RSS
 * ReadingLists
 * RealMe
 * RelatedArticles
 * RevisionSlider
 * SandboxLink
 * Score
 * Scribunto
 * SearchExtraNS
 * SearchVue
 * ShortUrl
 * SimilarEditors
 * SiteMatrix
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateSandbox
 * TemplateStyles
 * TemplateWizard
 * TextExtracts
 * TheWikipediaLibrary
 * TitleBlacklist
 * TocTree
 * TorBlock
 * TrustedXFF
 * TwoColConflict
 * UploadWizard
 * UploadsLink
 * UrlShortener
 * VipsScaler
 * VueTest
 * WebAuthn
 * WikiLove
 * WikibaseCirrusSearch
 * WikibaseLexeme
 * WikibaseLexemeCirrusSearch
 * WikibaseMediaInfo
 * Wikidata.org
 * WikidataPageBanner
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaEvents
 * WikimediaIncubator
 * WikimediaMessages
 * Wikisource
 * XAnalytics
 * cldr
 * intersection
 * timeline
 * wikihiero

Total changes
280 Changes in 48 repos by 70 authors