MediaWiki 1.39/wmf.7/Changelog

Core changes

 * - Branch commit for wmf/1.39.0-wmf.7 by trainbranchbot
 * - phpunit: Support setting skin context in BundleSizeTest subclasses by lens0021
 * - DeprecationHelper: Fix method name in deprecation message by Umherirrender
 * - rdbms: clear any "ignored error" in Database::rollback by Aaron Schulz
 * - Add mw-history-suppressed for userlink also on enhanced Watchlist by Umherirrender
 * - SpecialDelete: check permissions again when deleting by Dayllan Maza
 * - HistoryPager: Refactor to avoid special handling for the last row by Bartosz Dziewoński
 * - Use MainConfigNames instead of string literals by Aryeh Gregor
 * - Revert "SpecialUndelete: add option to undelete the associated talk page" by Dmaza
 * - Type hints for ArrayAccess and JsonSerializable by Aryeh Gregor
 * - Use new namespace for revision related classes by Alexander Vorwerk
 * - jobs: Add EDIT_MINOR to DoubleRedirectJob by Timo Tijhof
 * - SpecialUndelete: check permissions again when undeleting by Daimona Eaytoy
 * - Trigger an error instead of throwing on unapplied php_ini settings by Isabelle Hurbain-Palatin
 * - Change ParserOutputAccess workers to work with Status objects by Thiemo Kreuz
 * - Move "dirty" logic to PoolWorkArticleView subclass that uses it by Thiemo Kreuz
 * - Use spaces in page names instead of underscores for cross-wiki uploads by Alexander Vorwerk
 * - Fix notice from ParserCacheSerializationTestCases by Tim Starling
 * - Include Special pages in Search Results by Nikki Nikkhoui
 * - Revert "Add temporary ParsoidSiteConfigInit hook" by Isabelle Hurbain-Palatin
 * - linker: Add LinksMigration service for read new by Amir Sarabadani
 * - LogActions is a map, not a list. by daniel
 * - Temporarily undeprecate EditPage::$textbox2 by Daimona Eaytoy
 * - Remove unrecognized frame parameter by Arlo Breault
 * - RefreshExternallinksIndex: Add trailing . to skipped message by Reedy
 * - Use name constants to access config settings. by daniel
 * - Make MainConfigSchema more readable. by daniel
 * - Rearrange code to reduce refs to EditPage::$textbox2 property by Thiemo Kreuz
 * - Emit deprecation warnings for ParserOutput::addOutputHook by C. Scott Ananian
 * - Skin::makeLink: support tooltips on unlinked text by Tim Starling
 * - filerepo: Clean up file and class doc comments by Timo Tijhof
 * - file: Move json metadata storage out of LocalFile  by Amir Sarabadani
 * - logging: Remove user_editcount from DatabaseLogEntry query info by Umherirrender
 * - WebRequest: Micro-optimise getIP by Timo Tijhof
 * - Load defaults from config-schema.php. by daniel
 * - Rearrange PoolWorkArticleViewCurrent::fallback for clarity by Thiemo Kreuz
 * - Don't assume $wgProfiler is set in Profiler by Aryeh Gregor
 * - Test for PoolWorkArticleViewCurrent::fallback by Adam Wight
 * - Remove test-only method by Adam Wight
 * - Update comment to use AtEase by Alexander Vorwerk
 * - database: Report more error codes as DBQueryTimeoutError by Umherirrender
 * - rdbms: add $fname parameter to LBFactory::closeAll for better logging by Aaron Schulz
 * - installer: make 'db-replicated' an alias for CACHE_DB for sqlite by Aaron Schulz
 * - Add wt2wt test mode to ParsoidTestRunner by Subramanya Sastry
 * - Refactor Parsoid test runner to simplify testing non-wt2html modes by Subramanya Sastry
 * - Maintenance: Remove unused MW_CMDLINE_CALLBACK constant by Ammarpad
 * - Make Skin::getPortletData private by Ammarpad
 * - Drop Skin::getSkinStylePath by Ammarpad
 * - Remove some dynamic config from Setup by Aryeh Gregor
 * - Clarify the return type of ContentHandler::getParserOutputForIndexing by David Causse
 * - objectcache: make "multiPrimaryMode" work with LB-based SqlBagOStuff by Aaron Schulz
 * - Re-arrange status/result building logic in ParserOutputAccess by Thiemo Kreuz
 * - Don't cache old revisions in ParserOutputAccess' local cache by Thiemo Kreuz
 * - Update @since tags of config schema code by Alexander Vorwerk
 * - phan: Use @phan-assert on ImageHandler::normaliseParams by Umherirrender
 * - htmlform: List all arguments on HTMLForm::factory instead of varargs by Umherirrender
 * - [Skins] Add test and fix edge cases for Skin methods by Jon Robson
 * - Emit warnings when accessing deprecated public properties of Parser by C. Scott Ananian
 * - phan: Remove PhanCompatibleAccessMethodOnTraitDefinition suppression by Umherirrender
 * - Use uniform representation for ParserOutput "index policy" by C. Scott Ananian
 * - SpecialUndelete: add option to undelete the associated talk page by Daimona Eaytoy
 * - rdbms: make getQueryVerb distinguish SAVEPOINT rollbacks by Aaron Schulz
 * - media: Improve documentation on Handler functions by Umherirrender
 * - Create ParserLogLinterData hook by C. Scott Ananian
 * - Create ParserFetchTemplateData hook by C. Scott Ananian
 * - filerepo: Enable JSON meta-data serialization by default by Amir Sarabadani
 * - maintenance: Move MWTerm classes to /tests/parser/ by Timo Tijhof
 * - Use word-separator for message chaining in watchlist header by xiplus
 * - Reduce delete attempts on redirect table for move and page creation by Umherirrender

Vendor

 * - Bump wikimedia/parsoid to 0.16.0-a5   by Subramanya Sastry
 * - 2.0.0 of wikimedia/textcat and wikimedia/lucene-explain-parser by Reedy

AbuseFilter

 * - Fix check for null Content in getEditTextForFiltering by Matěj Suchánek

ArticlePlaceholder

 * - Bump grunt-stylelint from 0.16.0 to 0.18.0 by Addbot
 * - Bump stylelint-config-wikimedia from 0.11.1 to 0.12.2 by Addbot

CentralAuth

 * - UnitTestsHookHandler: Stop referencing deleted central-auth.sql by Martin Urbanec
 * - SECURITY: Fix search with target revdel Special:Log/gblrename by Taavi Väänänen
 * - Add GlobalUserSelectQueryBuilder by Martin Urbanec

CheckUser

 * - Add population script for cuc_actor by Alexander Vorwerk
 * - Change actor migration to write both by Alexander Vorwerk

CirrusSearch

 * - Fail cleanly when the the ParserOutput cannot be retrieved by David Causse
 * - composer.json: Allow 2.0.0 of textcat and lucene-explain-parser by Reedy
 * - Use namespaced Elastica classes by Reedy
 * - Replace deprecated ApiBase::PARAM_DFLT with ParamValidator ones by gerritbot
 * - Fix uses of (warning|error)box by tacsipacsi

CodeMirror

 * - Add colorblind-friendly scheme by WMDE-Fisch
 * - Use less for accessible-colors.css by WMDE-Fisch
 * - Use new event handler from WikiEditor for Realtime Preview by Sam Wilson
 * - Reload CodeMirror to fix a caret issue by ElijahPepe
 * - Prepare tests for later change by Thiemo Kreuz

ContentTranslation

 * - CX Dependency Injection: add Wikibase SettingsArray service by NikG
 * - CX Dependency Injection: add Wikibase SiteLinkLookup service by NikG
 * - CX3 Build 0.2.0+20220411 by Santhosh Thottingal
 * - Avoid duplicate Category prefixes in published Translation by Santhosh Thottingal
 * - SX MWDialog: Remove class preventing scroll after close by Santhosh Thottingal
 * - SX: Use .vue extension for Vue imports by Santhosh Thottingal
 * - SX: Enable CX beta feature when landed on Special:CX with valid campaigns by Santhosh Thottingal

Disambiguator

 * - build: Add stylelint to lint less file by Umherirrender

DiscussionTools

 * - Revert "Make comment markers inline-block to fix comment wrapping in Safari"  by Esanders
 * - Empty state: Use self closing Html generators by Ed Sanders
 * - Replace mediawiki.Uri with native URL (or polyfill) by Bartosz Dziewoński
 * - Log saveSuccess more consistently by David Lynch

DonationInterface

 * - Uncomment DLocal ZA form with weight 0 by Elliott Eggleston
 * - Update required version of SmashPig by Elliott Eggleston
 * - Add validation pattern for ZA National ID by Elliott Eggleston
 * - Send full_name for Amazon donations by Elliott Eggleston

Echo

 * - Call IDatabase::timestamp before inserting echo_unread_wikis by Umherirrender
 * - Call IDatabase::timestamp before inserting notification_read_timestamp by Umherirrender

EventLogging

 * - Remove unnecessary empty extensions requirement by Alexander Vorwerk

FlaggedRevs

 * - Drop some unused code and overly complicated syntax by Thiemo Kreuz
 * - Inline a lot of single-use code in FlaggedRevs util class by Thiemo Kreuz
 * - Inline trivial FlaggedRevs::binaryFlagging logic by Thiemo Kreuz
 * - Inline trivial code reading from $wgFlaggedRevsTagsRestrictions by Thiemo Kreuz
 * - Inline code reading from $wgFlaggedRevsAutoReview by Thiemo Kreuz
 * - Replace use of Linker::link with LinkRenderer by sahil

Flow

 * - Check if submitted content is set before accessing by Kosta Harlan
 * - Use namespaced Elastica classes by Reedy
 * - Remove some more comments that literally repeat the code by Thiemo Kreuz
 * - Avoid direct use of rollbackPrimaryChanges by Aaron Schulz

Gadgets

 * - GadgetRepo: Fix missing purging on delete and simplify hook handling by Timo Tijhof
 * - Rewrite and simplify MediaWikiGadgetsDefinitionRepo cache by Timo Tijhof
 * - tests: Use setGroupPermissions to fix flaky test by Timo Tijhof
 * - GadgetRepo: Add or improve type hints in various methods by Timo Tijhof

GrowthExperiments

 * - Skip welcome surveys for users in the no-homepage control group by Gergő Tisza
 * - Mentor dashboard: Exclude globally locked users by Martin Urbanec
 * - Pilot: Update export script to add headers and more data by Kosta Harlan
 * - maintenance: Add script to remove growthexperiments-mentor-id properties by Martin Urbanec

IPInfo

 * - Use localStorage instead of user options for infobox state by STran
 * - Record the access level of the user when logging the 'open_popup' event by Thalia
 * - Add EventLogging when user agrees or disagrees with use terms by STran
 * - Log the infobox inline help click event by AnaïsGueyte
 * - Always register handler for analytic events whenever log.js is required by Thalia
 * - Pass timestamp and user's access level into LogIPInfoAccessJob by tsepothoabala

JsonConfig

 * - Add pure unit test to cover basic validation code by Thiemo Kreuz
 * - Page properties should always be strings by C. Scott Ananian

Kartographer

 * - Use new namespace for revision related classes by Alexander Vorwerk
 * - Page properties should always be strings by C. Scott Ananian
 * - Improve test coverage and stability of SimpleStyleParser by Thiemo Kreuz

LiquidThreads

 * - Page properties should always be strings by C. Scott Ananian

MobileFrontend

 * - Only apply MFRemovableClasses in content namespaces by Ed Sanders
 * - LanguageSearcher: Fire a hook when LanguageSearcher view is rendered by NikG
 * - Attach VE overlay to DOM while initializing by Ed Sanders
 * - MobileFrontend: Remove $wgMFDefaultSkinClass by Martin VL

OATHAuth

 * - Rename oauthauth-ui-no-module by Reedy
 * - OATHUser: Annotate that getModule can return null by Reedy

OAuth

 * - OAuthListConsumers: Only show manage link if user has the right by Reedy

PagedTiffHandler

 * - Page properties should always be strings by C. Scott Ananian

PdfHandler

 * - build: Remove unneeded suppression after ImageHandler::normaliseParams by Umherirrender

Popups

 * - PopupsGadgetsIntegrationTest: Use namespaced Gadget class by Reedy
 * - Use null for default user options value of beta features by Func

ProofreadPage

 * - Use new namespace for revision related classes by Alexander Vorwerk
 * - build: Remove unused phan suppression by Umherirrender

ReadingLists

 * - Replace deprecated ApiBase::PARAM_DFLT with ParamValidator ones by gerritbot
 * - Fix usage of ApiBase::PARAM_* deprecated constants by gerritbot

Score

 * - Transition from a page property to a tracking category to track score use by C. Scott Ananian
 * - Page properties should always be strings by C. Scott Ananian

ShortUrl

 * - Namespace extension by Reedy

SpamBlacklist

 * - Fix and enable 1 PHPCS exclusion by Reedy
 * - EditFilterMergedContent: Remove handling for old MW by Reedy
 * - Namespace extension by Reedy

SubPageList3

 * - .phpcs.xml: Drop excluded error by zoranzoki21
 * - Add option to change limit of descendants to be queried by Jeffrey Wang

TemplateWizard

 * - Fill template search results with prefix matches when Cirrus fails by Thiemo Kreuz

TimedMediaHandler

 * - Load ogvjs, dialog and videojs at the same time by Derk-Jan Hartman
 * - Older browser do not return a promise from .play by Derk-Jan Hartman
 * - Workaround for audio with ringer off on iOS by Brion Vibber
 * - Update ogv.js from 1.8.6 to 1.8.9 by Brion Vibber

Translate

 * - ElasticSearchTTMServer: use _id as a tiebreaker by David Causse
 * - WebService: Further fixes for strict types by Abijeet
 * - TranslationWebService: Actually return the service object in factory by Abijeet
 * - TranslationQueryResponse: Remove factory method and use constructor by Abijeet
 * - Add type hints and strict types for non MT webservice classes by Abijeet
 * - Remove the usage of the onParsoidSiteConfigInitHook by Isabelle Hurbain-Palatin
 * - Add type hints and strict types to MT webservices under namespace by Abijeet
 * - Remove file comments from MediaWiki\Extension\Translate\WebService by Abijeet
 * - TranslationWebService: Use ObjectFactory and inject HttpServiceFactory by Abijeet
 * - Special:ImportTranslations: Avoid early processing of new translation by Gee
 * - Use namespaced Elastica classes by Reedy
 * - Revert "PageTranslationHooks: Don't kick in during interface message parsing" by Abijeet Patro
 * - Simplify code in MessageWebImporter::escapeNameForPHP by Niklas Laxström

UniversalLanguageSelector

 * - Add actions menu inside content language selector by Santhosh Thottingal

UploadWizard

 * - Remove UploadWizard* instruments by Sam Smith

VisualEditor

 * - Update VE core submodule to master (a0bf00838)  by Bartosz Dziewoński
 * - Update VE core submodule to master (0fde38782)  by Bartosz Dziewoński
 * - Store copyright message in auto-save data by Bartosz Dziewoński
 * - Add tests for the expected properties in API result and auto-save by Bartosz Dziewoński
 * - DesktopArticleTarget.init: Wait for deactivating to finish before activating by Bartosz Dziewoński
 * - Update VE core submodule to master (41653c74a) by Ed Sanders
 * - Update VE core submodule to master (ffaefe32c)  by Bartosz Dziewoński
 * - Fill template search results with prefix matches when Cirrus fails by Thiemo Kreuz
 * - Simplify ve-mw/init/styles LESS files by Ed Sanders

Wikibase

 * - REST: Don't require write access for GetItem by Ollie Shotton
 * - Use new namespace for revision related classes by Alexander Vorwerk
 * - doc: Change ApiBase::dieUsage to ApiBase::dieWithError by Umherirrender
 * - EntityRdfBuilderFactory: Remove unused private $labelPredicates by Marius Hoch
 * - Show "entity does not exist" for local entity namespaces by Matěj Suchánek
 * - REST: Split auth tests into OAuth and non-OAuth by Jakob Warkotsch
 * - Sort Special:UnconnectedPages ascending in MIGRATION_NEW by Lucas Werkmeister
 * - REST: Fix e2e test not matching description by Ollie Shotton
 * - REST: 304 Not Modified OpenAPI validation test by Ollie Shotton
 * - REST: Added If-None-Match and If-Modified-Since headers to get item by Leszek Manicki
 * - REST: Make e2e tests pass OpenAPI spec validation by Ollie Shotton
 * - REST: Disable auth api tests by Jakob Warkotsch
 * - REST: Add authentication header by Jakob Warkotsch
 * - Namespace ElasticaConnection in phan stubs by David Causse
 * - Replace deprecated ApiBase::PARAM_DFLT with ParamValidator ones by gerritbot
 * - REST: Reuse assertValid200Response in e2e tests by Ollie Shotton
 * - REST: Handle conditional requests by Jakob Warkotsch
 * - Fix usage of ApiBase::PARAM_* deprecated constants by gerritbot
 * - Bump api-testing from 1.4.2 to 1.5.0 by Addbot
 * - REST: Added Authorization header specification by Leszek Manicki
 * - Ensure page properties are cast to string before comparison by C. Scott Ananian
 * - Bump dawidd6/action-send-mail from 3.6.0 to 3.6.1 by Addbot

WikibaseLexeme

 * - Add i18n warning message for invalid language code by gtzatchkova
 * - Pass $wgLexemeLanguageCodePropertyId to special-new-lexeme by Noa wmde
 * - Update README.md to point to current docker dev environment by Michael Große
 * - Replace deprecated ApiBase::PARAM_DFLT with ParamValidator ones by gerritbot
 * - Bump Special:NewLexeme repo to include language variant functionality by Michael Große
 * - Add Special:NewLexemeAlpha test by Michael Große
 * - Fix usage of ApiBase::PARAM_* deprecated constants by gerritbot
 * - Bump stylelint-config-wikimedia from 0.11.1 to 0.12.2 by Addbot
 * - Page properties should always be strings by C. Scott Ananian
 * - Add placeholder message for Lemma language (spelling variant) by gtzatchkova

WikibaseMediaInfo

 * - Remove coordinates from edit summaries when deleting location statements by Matthias Mullie
 * - Handle deprecation of Serializable interface in WikibaseMediaInfo by Simone This Dot

WikidataPageBanner

 * - Page properties should always be strings by C. Scott Ananian

WikiEditor

 * - Realtime Preview: add as a Beta Feature by MusikAnimal
 * - Realtime Preview: Refactor event handler for easier re-use by Sam Wilson

WikiLambda

 * - Update function-schemata sub-module to HEAD (4fdbbf4)  by James D. Forrester
 * - ApiFunctionCall: Add curry example by apine
 * - clicking cancel on dialog throws an error by Simone This Dot
 * - ZKey.vue: Assign new "key"s for existing types to its Zid, not Z0 by Simone This Dot
 * - ZObject.test.js: Test all remaining types with components that we can by James D. Forrester
 * - Unable to add multiple entry in TypedMap on FE by Simone This Dot

WikimediaEvents

 * - Fix string values in desktopWebUIActions schema by Jan Drewniak
 * - Update to 78eef14, rename viewportSize to viewportSizeBucket  by Jan Drewniak

Wikistories

 * - Add story frames by Stephane Bisson

MinervaNeue

 * - phpunit: Implement the new BundleSizeTest::getSkinName by lens0021
 * - FIXME cleanup by Jon Robson
 * - Remove browser tests in Ruby by Jon Robson

Timeless

 * - Remove back-compat of deprecated 'content-thumbnails' feature by Func
 * - Remove $stylename indirection by Ammarpad
 * - Timeless should use message box styles from core by Jon Robson

Vector

 * - Fix position of search box in vector-22 by Nicholas Ray
 * - Replace TOC arrow icon by Clare Ming
 * - Prepare for grid layout by Jon Robson
 * - Only consider article ID if A/B test enabled by Jon Robson
 * - Force legacy TOC to render at lower resolutions by Clare Ming
 * - Remove env option from a11y test to enable tests to run in docs env by bwang
 * - Scope ULS styles to when language button is in header by bwang
 * - Remove TOC margin to not always show fade out by Clare Ming
 * - Update puppeteer chrome config for a11y tests by bwang
 * - Clean up unused constants and outdated comments by Func
 * - Drop the Vector.Config service by Func
 * - Fix TOC fadeout proper by Clare Ming
 * - Update sticky header to use ARIA attributes for section collapsing and add accessible label to toggle buttons by bwang
 * - Add automated a11y tests with pa11y by bwang
 * - Update debounce param order by Ed Sanders
 * - Revert unnecessary TOC section id change by bwang
 * - Add fixes for sticky TOC fade out by Clare Ming
 * - Build A/B test bucketing infrastructure for the table of contents. by Nicholas Ray
 * - Prepare Vector for temporary user accounts by Jon Robson
 * - Only track headings that are included in the table of contents by Jon Robson

VisualEditor/VisualEditor

 * - Don't attempt to scroll tall selections into view by Ed Sanders
 * - Follow-up I26486e0e79: Fix when first range returns null annotation set by Ed Sanders
 * - Match padding of mobile context header & footer by Ed Sanders
 * - Fix position of close button on wide tablet by Ed Sanders
 * - getAnnotationsFromRange: Distinguish between "no annotations" and "no content" by Ed Sanders
 * - Revert "Fix for showing "invisible icon" when root node is hidden" by Bartosz Dziewoński
 * - Move close button from contextItem to context by Ed Sanders
 * - Context: Move copy/delete buttons to MobileActionsContextItem by Ed Sanders
 * - Fix for showing "invisible icon" when root node is hidden by Ed Sanders
 * - Emit ve.ce.Surface 'position' in some more places by Ed Sanders
 * - Always assert diff sidebar descriptions by Ed Sanders

No changes

 * 3D
 * ActiveAbstract
 * AdvancedSearch
 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * Babel
 * BetaFeatures
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * CentralNotice
 * CharInsert
 * ChessBrowser
 * Cite
 * CiteThisPage
 * Citoid
 * CodeEditor
 * CodeReview
 * Cognate
 * Collection
 * CologneBlue
 * CommonsMetadata
 * ConfirmEdit
 * CongressLookup
 * ContactPage
 * CreditsSource
 * Dashiki
 * DismissableSiteNotice
 * DoubleWiki
 * Elastica
 * ElectronPdfService
 * EntitySchema
 * EventBus
 * EventStreamConfig
 * ExtensionDistributor
 * ExternalGuidance
 * FeaturedFeeds
 * FileExporter
 * FileImporter
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GWToolset
 * GeoCrumbs
 * GeoData
 * GlobalBlocking
 * GlobalCssJs
 * GlobalPreferences
 * GlobalUsage
 * GlobalUserPage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * Graph
 * GuidedTour
 * ImageMap
 * InputBox
 * Insider
 * Interwiki
 * InterwikiSorting
 * Josa
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * Linter
 * Listings
 * LocalisationUpdate
 * LoginNotify
 * MachineVision
 * MapSources
 * MassMessage
 * Math
 * MediaModeration
 * MediaSearch
 * MobileApp
 * Modern
 * MonoBook
 * MultimediaViewer
 * NavigationTiming
 * NearbyPages
 * NewUserMessage
 * Newsletter
 * Nostalgia
 * Nuke
 * OAuthRateLimiter
 * ORES
 * OpenStackManager
 * PageAssessments
 * PageImages
 * PageNotice
 * PageTriage
 * PageViewInfo
 * ParserFunctions
 * Poem
 * PoolCounter
 * PropertySuggester
 * QuickSurveys
 * Quiz
 * RSS
 * RelatedArticles
 * Renameuser
 * RevisionSlider
 * SandboxLink
 * Scribunto
 * SearchExtraNS
 * SecureLinkFixer
 * SecurePoll
 * SiteMatrix
 * StopForumSpam
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateData
 * TemplateSandbox
 * TemplateStyles
 * TextExtracts
 * Thanks
 * TheWikipediaLibrary
 * TitleBlacklist
 * TocTree
 * TorBlock
 * TranslationNotifications
 * TrustedXFF
 * TwoColConflict
 * UploadsLink
 * UrlShortener
 * VipsScaler
 * WebAuthn
 * WikiLove
 * WikibaseCirrusSearch
 * WikibaseLexemeCirrusSearch
 * WikibaseQualityConstraints
 * Wikidata.org
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaIncubator
 * WikimediaMaintenance
 * WikimediaMessages
 * Wikisource
 * XAnalytics
 * cldr
 * intersection
 * timeline
 * wikihiero

Total changes
273 Changes in 52 repos by 77 authors