MediaWiki 1.38/wmf.19/Changelog

Core changes

 * - Branch commit for wmf/1.38.0-wmf.19 by trainbranchbot
 * - Improve generateSchemaChangeSql.php/generateSchemaSql.php by Umherirrender
 * - Fix maintenance script generateSchemaChangeSql.php on windows by Umherirrender
 * - Category: Return proper int for files, subcats and pages count by Ammarpad
 * - Update johnkary/phpunit-speedtrap to 4.0 by Tim Starling
 * - resetPageRandom.php: Fix --from and --to options by Jayprakash12345
 * - ParserCacheSerializationTestCases: call ::addModule(Style)?s with an array by Alexander Vorwerk
 * - recountCategories.php: Fix varibale shadowing by Ammarpad
 * - HistoryAction: use more specific tooltip for cur and last links by AntiCompositeNumber
 * - Remove passing markTestSkippedIfDbType or add comment by Umherirrender
 * - Explicit order by primary key in DeleteAutoPatrolLogs maintenance script by Umherirrender
 * - Fix signature of DatabasePostgres::buildGroupConcatField  by Umherirrender
 * - Show numbered lists with Burmese numerals in relevant languages by Amir E. Aharoni
 * - Normalize HTML of page titles using Tidy/Remex by Bartosz Dziewoński
 * - Support stale cached settings for failover by Dan Duvall
 * - Pass a service container to ObjectFactory in SessionManager by Alexander Vorwerk
 * - Hard deprecate Skin:setSearchPageTitle (attempt 2) by Jdlrobson
 * - rdbms: Remove LB::safeGetLag by Amir Sarabadani
 * - rdbms: Drop maxLagByIndex property from LB by Amir Sarabadani
 * - ParserOutputTest: Call ParserOutput::addModule(Style)?s with an array by Reedy
 * - update.php: Avoid passing null to substr by Ammarpad
 * - Passing a string to ParserOutput::addModules/addModuleStyles is deprecated by C. Scott Ananian
 * - MapCacheLRU: Restore key type checks by Tim Starling
 * - Fix PHP 8.0 failure of WikiExporterFactoryTest by Tim Starling
 * - Fix PHP 8.0 failure of RefreshSecondaryDataUpdateTest by Tim Starling
 * - Suppress deprecation warnings from libxml_disable_entity_loader by Tim Starling
 * - Update aliases and magic words for Albanian language by KleinMuci
 * - Replace remaining usages of deprecated IDatabase methods by Alexander Vorwerk
 * - [ChangesList] Time element in ChangesList should be consistently named by Jon Robson
 * - rdbms: Start adding db_log_category field to db logs by Amir Sarabadani
 * - Allow ParsoidModules extension schema to register services by mbsantos
 * - DatabaseBlock: fetch a database connection for the correct wiki  by Alexander Vorwerk
 * - SettingsBuilder: expose default config by Petr Pchelko
 * - rdbms: Remove deprecated methods from ILoadBalancer by Amir Sarabadani
 * - Narrow the signature of ParserOutput::addModules and ::addModuleStyles by C. Scott Ananian
 * - Metrics: Minor doc improvements and announce feature in release notes by Timo Tijhof
 * - DateTimeInputWidget: Fix field widths by Bartosz Dziewoński
 * - rdbms: cleanup the use of QUERY_ flags to query in Database by Aaron Schulz
 * - rdbms: deprecate IMaintainableDatabase::(lock|unlock)Tables methods by Aaron Schulz
 * - maintenance: Add table copying feature to updateCollation.php by Tim Starling
 * - rdbms: Drop three unused functions from ILoadBalancer by Amir Sarabadani
 * - rdbms: Remove four hard-deprecated methods that are unused by Amir Sarabadani
 * - resourceloader: Use named constants for groups by Siddharth VP
 * - HistoryAction: Use Config from Context by Umherirrender
 * - First pass on creating config-schema.yaml by Petr Pchelko
 * - rdbms: Remove usage of deprecated function Database::numRows by Amir Sarabadani
 * - Fix deprecation warning from LinksUpdate::getImages by Tim Starling
 * - Replace remaining usages of IDatabase::fetchObject by Alexander Vorwerk
 * - Linker: cleanup and reduce duplication around MediaWikiServices by DannyS712
 * - Upgrade Vuex to 4.0.2 by Roan Kattouw
 * - title: Remove dated comment about inNamespace, overall doc cleanup by Timo Tijhof
 * - Remove prefix search from Special:ListFiles/NewFiles by Umherirrender
 * - Special:Search Refactor powerSearchBox method by joseph emmanuel kayode (iemarjay)
 * - SettingsBuilder: load settings recursively by daniel
 * - Revert "Revert "Categories are modelled as a portlet""   by Jdlrobson
 * - SkinTemplate: Set template context in buildPersonalUrls by Ammarpad
 * - SpecialUserLogin: Use Config from Context by Umherirrender
 * - MovePage: test links table updates by daniel
 * - addChangeTag: Ensure system user can create tag by Lucas Werkmeister
 * - Use mock Guzzle client during tests by Tim Starling
 * - Allow recountCategories.php to do all 3 modes in one run by Kunal Mehta
 * - Add support for namespace notices by Siddharth VP
 * - Increase template depth limit to 100 by Tim Starling
 * - Fallback to generic rollback message when editcount is unclear by Umherirrender
 * - objectcache: avoid use of ctype_digit in WANObjectCache::adaptiveTTL by Aaron Schulz
 * - Avoid revision 0 listed in message difference-missing-revision by Umherirrender
 * - Improve indent of very short lines in FormatMetadata by Umherirrender
 * - parser: Remove redundant string cast after trim by Umherirrender
 * - Fix maintenance script generateSchemaChangeSql.php for sqlite by Umherirrender

Vendor

 * - Bump Parsoid to 0.15.0-a17   by sbailey
 * - Bump wikimedia/parsoid to 0.15.0-a16 by C. Scott Ananian

AbuseFilter

 * - Use MainStash instead of db-replicated by Amir Sarabadani
 * - Don't use array keys for OOUI in AbuseFilterViewDiff by Alexander Vorwerk
 * - Don't use array keys for OOUI by Alexander Vorwerk

AdvancedSearch

 * - Use new Hook system by Jayprakash12345

BetaFeatures

 * - Remove unnecessary constants defined in HTMLFeatureField by Func

BounceHandler

 * - Use namespaced CentralAuthUser by Alexander Vorwerk

CentralAuth

 * - session providers: inject services by Alexander Vorwerk
 * - Avoid expensive fetching of all language names in CentralAuthUser by Thiemo Kreuz
 * - Operate internally on normalized hidden values by Taavi Väänänen
 * - Setup ConfigRegistry registration by Kosta Harlan
 * - GlobalRenameUser: Use JobQueueGroupFactory by Taavi Väänänen
 * - GlobalRenameRequest: use replica db to validate suggestions by Taavi Väänänen
 * - Use LogEntryBase::extractParams for log_params by Umherirrender

CentralNotice

 * - Use namespaced CentralAuthUser by Alexander Vorwerk
 * - Replace remaining usages of IDatabase::fetchObject/::numRows by Alexander Vorwerk

CharInsert

 * - Allow overriding the link text by tacsipacsi

CheckUser

 * - Add bdi tag to usernames in investigation header by STran

CirrusSearch

 * - Repair browser bot integration by Erik Bernhardson
 * - Fix a couple of Match types missed by f4db37e60bedc5 by Tim Starling
 * - Stop using ReflectionParameter::getClass by Tim Starling
 * - Remove defaultbranch from .gitreview by Erik Bernhardson

Cite

 * - Update tests for the removal of doc-child-change wrappers by Bartosz Dziewoński
 * - ve-cite: Handle ref nodes with mw:Error RDFa  by Ed Sanders
 * - Add parser & unit test cases for different $wgFragmentMode's by Thiemo Kreuz

Cognate

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

ContactPage

 * - Document MustBeLoggedIn by Reedy

ContentTranslation

 * - SXEditorOriginalContent SFC: Fix UI issues for original panel by NikG
 * - UI lib: Add MWExpandableContent SFC by NikG
 * - SXEditorOriginalContent: Refactor to use composition api by NikG
 * - Use namespaced CentralAuthUser by Alexander Vorwerk
 * - CX3 Build 0.1.0+20220118  by Santhosh Thottingal
 * - SX: Check if target template exists before re-rendering by NikG
 * - SX Pick a sentence: Add BlockTemplateAdaptationCard SFC by NikG

DiscussionTools

 * - One more tweak for comparing comment ranges to transclusion/DOM ranges by Bartosz Dziewoński
 * - Use class list everywhere for adding/checking CSS classes by Bartosz Dziewoński
 * - Restore scrolling to comments when clicking a bundled notification by Bartosz Dziewoński
 * - Don't try to parse section titles as wikitext in subscription notifs by Bartosz Dziewoński
 * - Simplify handling of sections in bundled notification links by Bartosz Dziewoński
 * - Update DiscussionTools phan configuration to match new Parsoid DOM alias config by C. Scott Ananian
 * - Prevent assertion failure caused by empty headings by Bartosz Dziewoński
 * - When using bullet syntax, hide the marker next to the reply tool by Bartosz Dziewoński
 * - Add an optional suffix message to mentions by David Lynch
 * - Add another test case for transclusions overlapping comments by Bartosz Dziewoński
 * - Include namespace when referring to page title in empty state messages by Bartosz Dziewoński

DonationInterface

 * - Add customized translation fields for Adyen credit card forms by wfan

Echo

 * - Avoid double-escaping in notification watch links by Gergő Tisza
 * - Make JsonSerializable PHP 8.1 compatible by Gergő Tisza
 * - Parse section titles in notifs as if they weren't at the start of line by Bartosz Dziewoński
 * - Allow overriding section title presentation in subclasses by Bartosz Dziewoński
 * - Adjust doc for EchoNotification::readTimestamp by Umherirrender

FeaturedFeeds

 * - FeaturedFeedChannel: avoid using ContentHandler::getContentText by Alexander Vorwerk

FlaggedRevs

 * - FlaggedRevision: avoid using ContentHandler::getContentText by Alexander Vorwerk
 * - updateAutoPromote: use correct result  by Alexander Vorwerk
 * - Replace remaining usages of IDatabase::numRows  by Alexander Vorwerk
 * - Avoid using deprecated function IDatabase::numRows by Amir Sarabadani
 * - Fix using deprecated function IDatabase::numRows by Amir Sarabadani
 * - Replace wfQueriesMustScale and generalQueryOK with MiserMode by Timo Tijhof
 * - Avoid double parsing  by Amir Sarabadani

Flow

 * - Avoid double-escaping in notification watch links by Gergő Tisza
 * - Fix TopicMenuSelectWidget after OOUI change by Gergő Tisza

Gadgets

 * - Restrict ?withgadget query parameter to opt-in gadgets. by Ammarpad
 * - Passing a string to ParserOutput::addModules/addModuleStyles is deprecated by C. Scott Ananian
 * - Tighten some type hints by Bartosz Dziewoński
 * - Avoid raising exception while trying to change content model of gadget definition by Siddharth VP

GlobalBlocking

 * - SpecialGlobalBlockList: add filtering options by Tks4Fish
 * - Add column for central blocker ids by Alexander Vorwerk
 * - SpecialGlobalBlock, SpecialGlobalBlockStatus, SpecialRemoveGlobalBlock: add RelevantUser by Tks4Fish
 * - GlobalBlocking: Handle trying to modify a block when no block exists by Tks4Fish
 * - SpecialGlobalBlockStatus: Handle both types of URL parameters (direct and ?address=) by Tks4Fish
 * - abstract schema: Remove unneeded length from integer type by Umherirrender
 * - SpecialGlobalBlock: Rename $user to $performer by Martin Urbanec
 * - Use ApiResult::formatExpiry in api to format expiry by Umherirrender

GlobalCssJs

 * - Use new Hook system by Jayprakash12345

GlobalPreferences

 * - Cleanup GlobalPreferencesFactory by Func

GlobalWatchlist

 * - Use namespaced CentralAuthUser by Alexander Vorwerk

Graph

 * - Replace jquery.debounce with OO.ui.debounce by Derk-Jan Hartman
 * - Drop ability to attempt server-side rendering with Graphoid by James D. Forrester
 * - Hardening changes. Cors use * by Brian Wolff
 * - Remove embed and add spinner delay by seddon
 * - Fix loading spinner when overflowing on mobile by Derk-Jan Hartman

GrowthExperiments

 * - Homepage: prevent scroll below the welcome drawer by Sergio Gimeno
 * - Consolidate ext.growthExperiments.Homepage.ConfirmEmail.styles into ext.growthExperiments.Homepage.styles by MewOphaswongse
 * - Suggested edits: allow to navigate to module full screen when zero tasks are available in filters by Sergio Gimeno
 * - Move guided tours and tour utils into tours directory by MewOphaswongse
 * - JsonSerializable PHP 8.1 compatibility by Gergő Tisza
 * - Consolidate account-related modules into a single module by MewOphaswongse
 * - Consolidate ext.growthExperiments.Homepage.contribs.styles into ext.growthExperiments.Homepage.styles  by MewOphaswongse
 * - Add an image: always generate thumbnail URL when mustRender=true by MewOphaswongse
 * - QualityGates: Enforce daily limit on server-side by Kosta Harlan
 * - Combine ext.growthExperiments.Homepage.StartEditing & ext.growthExperiments.Homepage.SuggestedEdits  by MewOphaswongse
 * - GrowthTasksApi: Set error message for HTTP errors by MewOphaswongse
 * - Monitoring: Add '.Save' to distinguish from '.Click' events by Kosta Harlan
 * - Add swipe to start editing onboarding dialog by Sergio Gimeno
 * - Home page: fix empty space in notifications drawer by Sergio Gimeno
 * - Suggested edits: open the first article from mobile task preview by Sergio Gimeno
 * - Help panel: prevent guidance button floating over notifications mobile by Sergio Gimeno
 * - Post-edit dialog: update title line height for mobile by MewOphaswongse

GuidedTour

 * - Do not load help/guider URL when the accompanying tour is not used by Gergő Tisza

IPInfo

 * - Unset IPInfo as Global Preference by tsepothoabala
 * - Pass 'undefined' when blocks and contribs are undefined by wikitrent
 * - Rename instances of 'accordion' to 'infobox' in Logger by Thalia
 * - Fix clipping of icon for IPInfo popups when language is set to ar by tsepothoabala
 * - Add documentation for IPInfo rights by wikitrent
 * - Disallow API access when feature is not beta enabled by STran
 * - Allow ipinfo-view-full to see ASN by STran

Linter

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

LiquidThreads

 * - Avoid using ContentHandler::getContentText by Alexander Vorwerk

LoginNotify

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

MapSources

 * - MapSourcesPage: avoid using ContentHandler::getContentText by Alexander Vorwerk

MediaSearch

 * - Unit test all components within the resources/components folder by adesoji
 * - MediaSearch dropdowns not accessible in VoiceOver by adesoji
 * - Update logging. New schema. Page id to title by seddon
 * - Unit test all files within the resources/components/base folder by adesoji

MobileFrontend

 * - Add 'mw-mf-amc-enabled' class when AMC is enabled by bwang

NavigationTiming

 * - ext.navigationTiming: Don't call main in test context by Timo Tijhof

NearbyPages

 * - Remove parent call to SpecialPage::execute by Umherirrender

Newsletter

 * - Rename variables containing ParserOutput to $parserOutput by C. Scott Ananian
 * - NewsletterDb: Replace manual connection management with DBConnRef by Timo Tijhof
 * - NewsletterContentHandler: Change addModuleStyles call to array by Timo Tijhof

NewUserMessage

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender

OAuth

 * - Use LogEntryBase::extractParams for log_params by Umherirrender

PageAssessments

 * - Module mediawiki.pager.tablePager was renamed to mediawiki.pager.styles by jdlrobson

PageImages

 * - Fix the case where there are no section headers by Tim Starling
 * - Replace deprecated JobQueueGroup::singleton by Umherirrender
 * - Convert timestamps for database in InitImageData maintenance script by Umherirrender

PageTriage

 * - Replace remaining usages of IDatabase::numRows  by Alexander Vorwerk

Renameuser

 * - Replace remaining usage of IDatabase::fetchObject by Alexander Vorwerk

Scribunto

 * - Remove comments that literally repeat the code by Thiemo Kreuz

SecurePoll

 * - SECURITY: Disallow sorting by timestamp by Huji Lee

TextExtracts

 * - Use ParserOptions::newFromAnon instead of constructor by Umherirrender

TheWikipediaLibrary

 * - Use namespaced CentralAuthUser by Alexander Vorwerk

TimedMediaHandler

 * - Don't validate shell commands on startup by Tim Starling
 * - Improve keyboard accessibility of click to play by Derk-Jan Hartman
 * - Do not set height:auto on audio elements by Derk-Jan Hartman
 * - Animate size of playbutton on hover by Derk-Jan Hartman
 * - TimedText: Use canonical names for remote subtitle track discovery by Derk-Jan Hartman
 * - Return promise to public context by Derk-Jan Hartman
 * - Cleanup player loader class by Derk-Jan Hartman
 * - Style cleanup based on phpcs linting and phpstorm inspections by Derk-Jan Hartman

Translate

 * - Fix broken test MediaWikiExtensionsTest by Tim Starling
 * - Fix PHP 8.0 failure of ParserOutputTest by Tim Starling
 * - Suppress error for ILoadBalancer::hasOrMadeRecentMasterChanges by Abijeet
 * - Allow exporting AggregateMessageGroups in offline format via CLI  by Niklas Laxström
 * - Update version for MLEB 2022.01 by Abijeet
 * - Add reason dropdown on PageTranslationDeletePage by Taavi Väänänen

TwoColConflict

 * - Skip falky test when run on beta cluster by WMDE-Fisch
 * - Prepare code for eslint 0.21.0 config update by WMDE-Fisch
 * - [selenium] Merge some talk page browser tests by WMDE-Fisch
 * - [selenium] Rename save and preview spec by WMDE-Fisch
 * - [selenium] Merge some save and preview browser tests by WMDE-Fisch
 * - [selenium] Merge some editmerge tests by WMDE-Fisch

UniversalLanguageSelector

 * - Move version check inside PersonalUrls hook by Abijeet
 * - Update jquery.ime from upstream by Kartik Mistry
 * - Update version for MLEB 2022.01 by Abijeet
 * - Remove backward compatibility for MW <= 1.35 by Abijeet

VisualEditor

 * - Update VE core submodule to master (6282889f4)  by Bartosz Dziewoński
 * - Update VE core submodule to f5c7f0f204 by Bartosz Dziewoński
 * - Add basic test for ApiVisualEditor::execute by Thalia
 * - Confirm before close when all parameter values are deleted by WMDE-Fisch
 * - Refactor confirmation logic by Adam Wight
 * - Minor code cleanup in MWTransclusionOutlineTemplateWidget by Thiemo Kreuz
 * - Fix showing caption and alt text fields in media and gallery dialogs by Bartosz Dziewoński
 * - Revert "Re-duplicate deduplicated TemplateStyles"   by Bartosz Dziewoński
 * - Link to a list of keyboard shortcuts from the template help dialog by Andrew Kostka
 * - Update accept button in confirmation dialog by WMDE-Fisch
 * - Update the context menu title for multipart templates by Andrew Kostka
 * - Hide parameter search when there are only 3 params by WMDE-Fisch
 * - Add a title to the templates help button by Andrew Kostka
 * - Update VE core submodule to master (1cf051b44) by Bartosz Dziewoński
 * - Convert ve.init.mw.DesktopArticleTarget.init.css to less by Ed Sanders
 * - Restore a way to delete transclusions on mobile by Bartosz Dziewoński
 * - Fix transclusion node double clicks being tracked differently by Thiemo Kreuz
 * - Disable edit button when double clicking transclusion node by Thiemo Kreuz
 * - Defer creating template parameter widget for 0 parameters by Thiemo Kreuz
 * - Removed left padding in parameter description by Svantje Lilienthal
 * - Fix left margin of hide unused and checkboxes by WMDE-Fisch
 * - Defer creating template parameter search when it's not needed by Thiemo Kreuz
 * - Update VE core submodule to master (20902e538)   by Bartosz Dziewoński
 * - MWImage: Cache dataElement.attributes by Ed Sanders
 * - Broken image: Fix DM HTML for preview to include redlink text by Ed Sanders
 * - MWImage: Fix handling of error-image dimensions by Ed Sanders
 * - Disable edit button while loading template dialog by Thiemo Kreuz
 * - Image model: Clear originalWidth/originalHeight attributes when changing source by Ed Sanders
 * - Make sidebar header and search field sticky during scroll by Adam Wight

Wikibase

 * - Rename variables of type ParserOutput to disambiguate from OutputPage by C. Scott Ananian
 * - Remove custom mode from LanguageFallbackLabelDescriptionLookupFactory by Lucas Werkmeister
 * - Expand HistoryEntityActionTest for changes of parent class by Umherirrender
 * - Inject terms languages into LanguageFallbackChainFactory by Lucas Werkmeister
 * - Get terms languages from services in entitytypes.php by Lucas Werkmeister
 * - bridge: update dependencies by Michael Große
 * - bridge: update some mediawiki dependencies by Michael Große
 * - bridge: switch from node-sass to sass and update sass-loader by Michael Große
 * - bridge: update storybook to the most recent version by Michael Große
 * - Support idGenerator=auto and use it in CI by Lucas Werkmeister

WikibaseCirrusSearch

 * - Fix parse error on PHP 8.0+: Match -> MatchQuery by Tim Starling
 * - Fix PHP 8.0 failure of OpenSearchLabelsTest by Tim Starling
 * - Get WikibaseRepo term languages from services by Lucas Werkmeister

WikibaseLexeme

 * - Get Vuex from require instead of as global by Lucas Werkmeister
 * - Update dependencies by Michael Große
 * - build: Drop support for wikimedia/assert to just ^0.5.0 by James D. Forrester
 * - eslint: Autofix wrap-iife rule by Ed Sanders

WikibaseMediaInfo

 * - Remove references feature flag by Matthias Mullie
 * - Prepend captions before prepending the captions h2 tag by dylsss

WikibaseQualityConstraints

 * - Bump jasmine from 4.0.1 to 4.0.2 by Addbot

wikihiero

 * - Add explicit Parsoid support by Isabelle Hurbain-Palatin

WikiLambda

 * - Vue: Tell MW only to run us on ES6 clients by James D. Forrester
 * - Fix after upstream breaking-change to ParserOutput module methods by James D. Forrester
 * - Vue: Implement Map type by Simone This Dot
 * - Add toast and apply it to function definition tab for able to publish and confirmed publish by jkieserman
 * - ZTypedPair: Improve layout, labelling the Key and Value separately by Simone This Dot
 * - Vue: Rename ZPair to ZResponseEnvelope by James D. Forrester
 * - Vuex: Have getZTesterFailReason read the error code is a secondary error isn't thrown by James D. Forrester
 * - Update function-schemata sub-module to HEAD (2e6d63c) by James D. Forrester
 * - ZObjectContent: Provide a fall-back to CONTENT_MODEL_ZOBJECT for unit tests by James D. Forrester
 * - Autosearch for Function when defining function name by adesoji

WikiLove

 * - abstract schema: Remove unneeded length from integer type by Umherirrender

WikimediaMaintenance

 * - Replace deprecated JobQueueGroup::singleton by Umherirrender
 * - renameInvalidUsernames: Use JobQueueGroupFactory by Taavi Väänänen

WikimediaMessages

 * - wikitech: Drop names for removed groups by Taavi Väänänen

MinervaNeue

 * - [Refactor] Use core definitions for personal menu icons by Jon Robson

Vector

 * - Fix bug in SkinVersionLookup by Jon Robson
 * - Avoid escaping TOC section titles by bwang
 * - Do not try to make watchlist collapsible on wikis where watchlist is disabled by Jon Robson
 * - Respect useskin when operating in MigrationMode by Jon Robson
 * - Use 'toc' skin option and render with new TableOfContents mustache template by bwang
 * - Ensure sticky header ULS menu appears in default location right underneath the button by bwang
 * - Drop watchlist in user menu feature flag by Jon Robson
 * - Restore icons to user links dropdown by Jon Robson
 * - Don't run Vector hook when menu absent from page  by Jon Robson

VisualEditor/VisualEditor

 * - Revert "Follow-up I0802440d9: Allow alien / 's to be focused"  by Bartosz Dziewoński
 * - DiffElement: Remove doc-child-change wrappers by Ed Sanders
 * - Follow-up Ia593dad8: Use modifyData when sanitizing by Ed Sanders
 * - VisualDiff: Remove documentation of non-existent params by Ed Sanders
 * - DiffElement: Handle diffs where ref list groups are inserted/removed by Ed Sanders
 * - DiffElement: Fix rendering of internal list items with multiple child nodes by Ed Sanders
 * - DiffElement: Handle AlienBlockNode in list by Ed Sanders
 * - Alienate when trying to -wrap an annotation where isn't allowed by Ed Sanders
 * - Improve AlienNode matching by Ed Sanders
 * - Follow-up I9a67730: Pass current list node to appendListItem by Ed Sanders
 * - Follow-up Ib79a964c: Fix test HTML by Ed Sanders
 * - DiffElement: Collapse tree diff with no described changes by Ed Sanders
 * - Follow-up I1bd7171: Test colspan/rowspan values of 1 being the same as undefined by Ed Sanders
 * - DiffElement: Show whole node when DocList has attribute change by Ed Sanders
 * - DiffElement: Handle a node index of 0 by Ed Sanders
 * - DiffElement: Move some more var declarations inline by Ed Sanders
 * - DiffElement: Add more table tests by Ed Sanders
 * - DiffElement: Improve description of colspan/rowspan changes by Ed Sanders
 * - DiffElement: Add test cases for table merges by Ed Sanders

No changes

 * 3D
 * ActiveAbstract
 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * ArticlePlaceholder
 * Babel
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * ChessBrowser
 * CiteThisPage
 * Citoid
 * CodeEditor
 * CodeMirror
 * CodeReview
 * Collection
 * CologneBlue
 * CommonsMetadata
 * ConfirmEdit
 * CongressLookup
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * DoubleWiki
 * DynamicSidebar
 * Elastica
 * ElectronPdfService
 * EntitySchema
 * EventBus
 * EventLogging
 * EventStreamConfig
 * ExtensionDistributor
 * ExternalGuidance
 * FileExporter
 * FileImporter
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GWToolset
 * GeoCrumbs
 * GeoData
 * GlobalUsage
 * GlobalUserPage
 * GoogleNewsSitemap
 * ImageMap
 * InputBox
 * Insider
 * Interwiki
 * InterwikiSorting
 * Josa
 * JsonConfig
 * Kartographer
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * Listings
 * LocalisationUpdate
 * MachineVision
 * MassMessage
 * Math
 * MediaModeration
 * MobileApp
 * Modern
 * MonoBook
 * MultimediaViewer
 * Nostalgia
 * Nuke
 * OATHAuth
 * OAuthRateLimiter
 * ORES
 * OpenStackManager
 * PageNotice
 * PageViewInfo
 * PagedTiffHandler
 * ParserFunctions
 * PdfHandler
 * Poem
 * PoolCounter
 * Popups
 * ProofreadPage
 * PropertySuggester
 * QuickSurveys
 * Quiz
 * RSS
 * ReadingLists
 * RelatedArticles
 * RevisionSlider
 * SandboxLink
 * Score
 * SearchExtraNS
 * SecureLinkFixer
 * ShortUrl
 * SiteMatrix
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateData
 * TemplateSandbox
 * TemplateStyles
 * TemplateWizard
 * Thanks
 * Timeless
 * TitleBlacklist
 * TocTree
 * TorBlock
 * TranslationNotifications
 * TrustedXFF
 * UploadWizard
 * UploadsLink
 * UrlShortener
 * UserMerge
 * VipsScaler
 * WebAuthn
 * WikiEditor
 * WikibaseLexemeCirrusSearch
 * Wikidata.org
 * WikidataPageBanner
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaEvents
 * WikimediaIncubator
 * Wikisource
 * XAnalytics
 * cldr
 * intersection
 * timeline

Total changes
319 Changes in 67 repos by 70 authors