MediaWiki 1.41/wmf.12/Changelog

Core changes

 * - Branch commit for wmf/1.41.0-wmf.12 by trainbranchbot
 * - Set a render reason when forcing a reparse by Arlo Breault
 * - mediawiki.jqueryMsg: Add isParseable by Bartosz Dziewoński
 * - mediawiki.jqueryMsg: Add a test case for mw.message.parseDom by Bartosz Dziewoński
 * - rdbms: Remove Database::unionConditionPermutations and callers by Amir Sarabadani
 * - mediawiki.base: tweak mw.notify return value by Siddharth VP
 * - rdbms: Remove SelectQueryBuilder::lockForUpdate by Lucas Werkmeister
 * - rdbms: Use more narrow IReadableDatabase in SelectQueryBuilder by thiemowmde
 * - Check early for a badrevision exception when Parsoid tries to getContent by Arlo Breault
 * - Reorg: Move Pingback to installer/ by Amir Sarabadani
 * - hook: Document null type for pass-by-ref on UploadVerifyUploadHook by Umherirrender
 * - Clean up CommentParserTest by daniel
 * - jquery.textSelection: mediawiki.Uri: Modernize test syntax, adopt test.each by Timo Tijhof
 * - mediawiki.Uri: Modernize test syntax, adopt test.each, propContains by Timo Tijhof
 * - composer.json: Link directly to https://phabricator.wikimedia.org by Derick Alangi
 * - MWTimestamp,Message: Widen `@covers` annotations in unit tests by Timo Tijhof
 * - api: include parameter name in error details for toomanyvalues error by Siddharth VP
 * - mediawiki.messagePoster: Modernize test syntax by Timo Tijhof
 * - moveToExternal: Actually convert encoding of cur_text by Kevin Israel
 * - filebackend: Remove unneeded array_filter by Umherirrender
 * - EditPage: Rewrite some string concats to implode an array instead by Bartosz Dziewoński
 * - EditPage: Use typed properties for services, remove redundant PHPDoc by Bartosz Dziewoński
 * - htmlform: Always return string from HTMLCheckField::getLabel by Umherirrender
 * - site: Deprecate GenericArrayObject by Timo Tijhof
 * - OutputPage,Html,Xml: Widen `@covers` annotations in unit tests by Timo Tijhof
 * - specials: Migrate a couple more Database::select* calls to SelectQueryBuilder by Amir Sarabadani
 * - SpecialRedirect: Avoid using dynamic message keys by Func
 * - mediawiki.less: Remove non-standard value for @max-width-breakpoint-tablet by Volker E
 * - Force a reparse if output from cache is not Parsoid's default by Arlo Breault
 * - user: Clean up most calls to LoadBalancer in user-related services by Amir Sarabadani
 * - rdbms: Move IDBAccessObject from /includes/dao/ to /libs/rdbms by Timo Tijhof
 * - Introduce EmailUserFactory by Daimona Eaytoy
 * - mail: Round 5 of EmailUser refactoring by Daimona Eaytoy
 * - api: Drop ApiQuery::getNamedDB and ApiQueryBase::selectNamedDB by Amir Sarabadani
 * - mediawiki.jqueryMsg: Optimize parseDom by Bartosz Dziewoński
 * - mediawiki.jqueryMsg: Tiny simplification by Bartosz Dziewoński
 * - tests: Assert hook name starts with on* in HookRunnerTestBase by Umherirrender
 * - ExternalLinks: Make IP links work with read new by Amir Sarabadani
 * - ExternalLinks: Fix mailto: handling in read new by Amir Sarabadani
 * - DeleteAction: Replace remaining OOUI fields by Func
 * - user: Add @since to User::isTemp/isNamed by Umherirrender
 * - linker: Check for null parser in Linker::makeThumbLink2 by Umherirrender
 * - Replace some deprecated wfExpandUrl calls with UrlUtils::expand by James D. Forrester
 * - Category: Widen `@covers` annotations in unit tests by Timo Tijhof
 * - AvailableRightsTest::checkMessagesExist: Point to doc, like testAvailableRights by James D. Forrester
 * - Allow setting "notices" for OOUI form fields by Marius Hoch
 * - rdbms: Hard-deprecate SelectQueryBuilder::lockForUpdate by Lucas Werkmeister
 * - renameUsersMatchingPattern.php: canonicalize and check for existence of target by Tim Starling
 * - Throw for mismatched wiki in AbstractBlock::getId by Alexander Vorwerk
 * - api: include details of email and own talk block by Siddharth VP
 * - search: Deprecate the use of `SearchResultThumbnail::getSize` by Derick Alangi
 * - SpecialUndelete: Phase out 'mediawiki.special.undelete' module (again) by Timo Tijhof
 * - Migrate revision_comment_temp to rev_comment_id by Alexander Vorwerk
 * - phpunit: Update `@covers` annotations for namespaced classes by Func
 * - Move "editingold" notice to the top, always add warning frame by Bartosz Dziewoński
 * - changetags: Move a bit more from ChangeTags to ChangeTagsStore by Amir Sarabadani
 * - Make EmailUserPermissionsErrorsHook emit deprecation errors by James D. Forrester
 * - Prompt temporary users without upload permissions to log in by Thalia
 * - uuid: avoid PHP warnings in GlobalIdGenerator::load by Aaron Schulz

Vendor

 * - Bump parsoid to 0.18.0-a13   by sbailey

AbuseFilter

 * - BlockedDomains: Put a cache behind parsing of notes of blocked domains by Amir Sarabadani
 * - BlockedExternalDomains: Make this a special right, prohibit direct editing  by James D. Forrester
 * - Minor improvements to blocked domain filtering by Amir Sarabadani
 * - Introduce Special:BlockedExternalDomains  by Amir Sarabadani
 * - Use new DeferredUpdatesManager service by Daimona Eaytoy

AdvancedSearch

 * - build: Updating npm dependencies by WMDE-Fisch

AntiSpoof

 * - SpoofUser: Update getDBReplica typehint for IReadableDatabase by Taavi Väänänen

ArticlePlaceholder

 * - Change type-hint to IReadableDatabase by Umherirrender

BetaFeatures

 * - Create HookRunner class and the hook handler interfaces by Umherirrender
 * - Prevent BetaFeatures from setting preferences for temporary accounts by tsepothoabala

CampaignEvents

 * - Drop old schema and migration logic for tracking tools by Daimona Eaytoy
 * - Use new DeferredUpdatesManager service by Daimona Eaytoy

CentralAuth

 * - phpunit: Use `overrideConfigValue` instead of `setMwGlobals` by Derick Alangi
 * - tests: Add basic test for HookRunner by Umherirrender
 * - Fix hook runner for CentralAuthSilentLoginRedirect by Umherirrender
 * - Run the GlobalRenameUserValidator when renaming users with the maintenance script by Tim Starling

CheckUser

 * - Hide CheckUser and CheckUserLog CIDR toolinks if missing the right by Dreamy Jazz
 * - Avoid directly instantiating ApiQuery in tests by Amir Sarabadani
 * - Show error message when clicking on an IP reveal button results in an API error by tsepothoabala
 * - Fix IP reveal persit on all pages by AnaïsGueyte

CirrusSearch

 * - Verify elastic version compatibility earlier by David Causse
 * - tests: Add basic test for HookRunner by Umherirrender
 * - Hooks: Create the hook interfaces for use in HookRunner by Umherirrender
 * - Help measure the impact of saneitizer jobs by David Causse
 * - Add WANCache to ParserOutputPageProperties::finalize by Amir Sarabadani

Cite

 * - Remove inline @var type hints that are not needed by thiemowmde
 * - Replace misplaced substr_count by thiemowmde
 * - Tests: Convert more to template literals by Ed Sanders
 * - Converter tests: Use template literals to make HTML more legible by Ed Sanders
 * - Add a test for "extends" round-tripping by Adam Wight
 * - build: Update stylelint config by Ed Sanders
 * - build: Updating npm dependencies by WMDE-Fisch
 * - Adding extendsRef to reference model by Svantje Lilienthal

Citoid

 * - Change the ISBN config to a per-platform config by Ed Sanders
 * - Barcode scanning  by Ed Sanders

cldr

 * - Add missing English language names by Nikki

ConfirmEdit

 * - tests: Add basic test for HookRunner by Umherirrender

ContentTranslation

 * - SX: Wait for edited translation to be applied before closing editor by NikG
 * - SX: Minor fixes for BlockTemplateAdaptationCard SFC by NikG
 * - SX: Support restoration of block templates for draft translations by NikG
 * - CX3 Build 0.2.0+20230529    by Santhosh Thottingal
 * - SX: Handle session expiration by NikG

DiscussionTools

 * - Create HookRunner class and the hook handler interface by Umherirrender
 * - Don't try to set preferences for temporary accounts by Bartosz Dziewoński
 * - UsernameCompletionAction: Tell widget to remove characters when using insertAndOpen by Ed Sanders
 * - phpunit: Use recent `overrideConfigValues` over `setMwGlobals` by Derick Alangi
 * - Remove the new topic tool hint by Bartosz Dziewoński
 * - Prevent squishing headings too much in visual enhancements mode by Bartosz Dziewoński

DonationInterface

 * - Update SmashPig dependency by Elliott Eggleston
 * - Update SmashPig version dependency by Elliott Eggleston

DoubleWiki

 * - Remove broken link processing for the matched text by Bartosz Dziewoński

Echo

 * - tests: Modernize test syntax by Timo Tijhof

EntitySchema

 * - Update EntitySchema data type name by gtzatchkova

EventBus

 * - Remove is_registered from UserEntitySerializer by TChin
 * - JobQueueEventBus: If sending the job fails, add the result for debugging by James D. Forrester

EventLogging

 * - Register Composer autoloader in extension.json by Gergő Tisza

FeaturedFeeds

 * - Add hook handler for BeforePageDisplay hook by Sam Wilson

FileImporter

 * - Don't set preferences for temporary accounts by thiemowmde

FlaggedRevs

 * - tests: Add basic test for HookRunner by Umherirrender
 * - Inline FlaggedRevsHookRunner::getRunner by Umherirrender

Flow

 * - Use ParsoidParser to convert wikitext to HTML. by rrana-wmf
 * - Add testcase for Flow Utils.php by rrana-wmf
 * - Add Mocha test for conversion API, HTML to Wikitext by rrana-wmf
 * - Default to using the parsoid API bundeled with MediaWiki. by daniel
 * - Add testcase for convert method in Utils.php by rrana-wmf
 * - Change replace calls to insert in AbuseFilterTest::createFilter by Aaron Schulz

GlobalBlocking

 * - Add implemented hook interfaces to hook handler by Umherirrender
 * - tests: Add basic test for HookRunner by Umherirrender
 * - Inline GlobalBlockingHookRunner::getRunner by Umherirrender

GrowthExperiments

 * - i18n: Fix the text for section image header by Kosta Harlan
 * - NewImpact: Fix renderMode parsing for Special:Impact by Kosta Harlan
 * - Frontend documentation: Add message key for images alternative text by vyanez
 * - Frontend documentation: Add MW translations to AddLink and AddImage dialogs by Sergio Gimeno
 * - Frontend documentation: pass stepper label text as Onboarding dialog prop by Sergio Gimeno
 * - Frontend documentation: set an initial default locale by Sergio Gimeno
 * - Frontend documentation: avoid calls to banana i18n in the server by Sergio Gimeno
 * - Section images: Expand SectionImageRecommendationTaskTypeHandler  by Gergő Tisza
 * - Frontend documentation: update dialog styles by vyanez
 * - Do not refresh impact data for hidden users by Martin Urbanec
 * - [tests] Add unit test for PersonalizedPraiseNotificationsDispatcher by Martin Urbanec
 * - documentation/frontend: Add npm command to update snapshots by Kosta Harlan
 * - Personalized praise: Fix first-ever notifications by Martin Urbanec
 * - NewImpact: Cache empty user impact on account creation by Kosta Harlan
 * - Frontend documentation: integrate i18n in VitePress project by Sergio Gimeno
 * - Section images: Accept all API response 'kind' fields  by Gergő Tisza
 * - Section images: Exclude articles which have a top-level recommendation by Gergő Tisza
 * - Frontend documentation: remove img tag from AddImageDialog by vyanez

ImageMap

 * - Fix description link icon positioning by Arlo Breault

ImageSuggestions

 * - Report accurate amount of pages by Matthias Mullie
 * - Fix maxJobs default by Matthias Mullie

Kartographer

 * - Mark more MapLinkAttributeGenerator properties as not nullable by thiemowmde

LiquidThreads

 * - Add truncation for database field thread_signature on insert/update by Umherirrender

MachineVision

 * - Wait for replication after writes in prioritizeFilesWithTemplate.php by Matthias Mullie

MassMessage

 * - Hooks: Adjust interface name for MassMessageJobBeforeMessageSent by Umherirrender

Math

 * - tests: Call TestCase::createMock with $this by Umherirrender
 * - Introduce MathInternalRestbaseURL setting. by daniel

NavigationTiming

 * - ext.navigationTiming: Simplify getNavTimingLevel1 as object literal by Timo Tijhof
 * - build: Update to latest eslint preset by Timo Tijhof
 * - Improve makeEventWithRequestContext docs and make private by Timo Tijhof
 * - Inline variable declarations by Timo Tijhof
 * - Remove oversample functionality. by Peter Hedenskog

Nuke

 * - tests: Add basic test for HookRunner by Umherirrender

OAuth

 * - tests: Add basic test for HookRunner by Umherirrender
 * - Improve documentation of DB fields by Gergő Tisza

PageTriage

 * - NewPagesFeed: Fix bug where username links were always red by MPGuy2824

ParserFunctions

 * - tests: Make PHPUnit data providers static by Umherirrender

ProofreadPage

 * - Fix EIS allowing page statuses which user is not authorized to set by Sohom

ReadingLists

 * - Drop fallback code for SVG handling by Volker E

RealMe

 * - extension.json: Bump required MW version by Reedy
 * - Support non-user pages through MediaWiki:realme-config.json by Kunal Mehta
 * - Allow links to work in the User talk namespace by Kunal Mehta

RevisionSlider

 * - Don't set preferences for temporary accounts by thiemowmde

SearchVue

 * - SearchPreview: Fix edge case of empty description by Matthias Mullie
 * - Search preview vertical alignment for small screens by Simone Cuomo
 * - Search Preview: Arrow placed incorrect on mobile with small snippet by Simone Cuomo
 * - SearchPreview: Migrate Vuex to Pinia by Simone Cuomo

SecureLinkFixer

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

SecurePoll

 * - Fix and update type hints in PHPDoc tags by thiemowmde
 * - tests: Add basic test for HookRunner by Umherirrender
 * - Respond to deprecation of MWException, and fix catch of TimeoutException by Tim Starling
 * - Respond to some deprecations and PHPStorm inspections by Tim Starling
 * - Improve a recently added message by Amir E. Aharoni

SpamBlacklist

 * - Avoid checking for email denylist if user has sboverride right by Amir Sarabadani

Thanks

 * - Hooks: Don't set Echo options for temp users by Kosta Harlan

TimedMediaHandler

 * - Use encodeURIComponent for create captions link by Derk-Jan Hartman
 * - Update video.js to 8.3.0 by Derk-Jan Hartman
 * - Convert OgvJsSupport to es6 class by Derk-Jan Hartman
 * - Convert more anonymous functions to arrow functions by Derk-Jan Hartman
 * - Set linting more strict and add no-jquery plugin by Derk-Jan Hartman

TorBlock

 * - Replace EmailUserPermissionsErrors hook with UserCanSendEmail by James D. Forrester

Translate

 * - Translate and Translations have conflicting aliases by wangombe
 * - Use native str_contains and such instead of strpos by thiemowmde
 * - Make use of jQuery shortcuts in JavaScript code by thiemowmde
 * - Use User::isAllowed when deciding whether to display translate tab by Abijeet
 * - Replace some usages of deprecated MWException by Daimona Eaytoy
 * - tests: Add basic test for HookRunner by Umherirrender
 * - Remove unused return values and collapse duplicate code by thiemowmde
 * - Use more compact ??= and ?: operators when possible by thiemowmde
 * - Translate and Translations have conflicting aliases by wangombe

TwoColConflict

 * - Don't set preferences for temporary accounts by thiemowmde
 * - Two minor code cleanups by thiemowmde

UniversalLanguageSelector

 * - UniversalLanguageSelector: Fix BCP 47 language code detection by Winston Sung

UploadWizard

 * - Remove use of dummy Database::upsert return value by Aaron Schulz

VisualEditor

 * - Update VE core submodule to master (3e2e25aa6) by Bartosz Dziewoński
 * - Make new wikitext editor available by default for 3rd party installs by Ed Sanders
 * - Convert more test data to template literals by Ed Sanders
 * - Update VE core submodule to master (d463fbd15) by Bartosz Dziewoński
 * - Add i18n for category sort key changes by Ed Sanders
 * - Never compare different categories by Ed Sanders
 * - Converter tests: Use template literals to make HTML more legible by Ed Sanders
 * - MWImage: Update test data by Ed Sanders
 * - DesktopArticleTarget.init: Support '&editintro=…' in edit links by Bartosz Dziewoński
 * - DesktopArticleTarget.init: Simplify parameter types by Bartosz Dziewoński
 * - Hide 'editnotice-notext' message in VE (and mobile apps) by Bartosz Dziewoński
 * - ve.ui.MWGalleryDialog: Fix showing the search panel by Bartosz Dziewoński
 * - Drop incomplete images generated by legacy parser by Ed Sanders

Wikibase

 * - Use SelectQueryBuilder in SQL terms store by Lucas Werkmeister
 * - MediawikiEditEntityTest: Improve data providers by Lucas Werkmeister
 * - REST: Add GET properties to OAS by Muhammad Jaziraly
 * - REST: Add GetProperty use case happy path by Jakob Warkotsch
 * - REST: Add PropertyDataRetriever by Jakob Warkotsch
 * - Reset user state in MediawikiEditEntityTest by daniel
 * - wikibase/data-model: Remove mention of old GenericArrayObject class by Timo Tijhof
 * - REST: Rename "ItemData" to "ItemParts" to avoid naming collision by Ollie Shotton
 * - REST: Fix incorrect return type hint in service wiring by Ollie Shotton
 * - Use SelectQueryBuilder in tests by Lucas Werkmeister
 * - REST: Add PropertyDataSerializer by sihe
 * - REST: Add PropertyData read model by Jakob Warkotsch
 * - REST: Create AssertItemExists for edit use cases by Ollie Shotton
 * - REST: Use revision data step in GetItemDescription by Jakob Warkotsch
 * - test: Insert value for rev_actor and rev_comment_id by Alexander Vorwerk
 * - REST: Make ItemData `type` a constant by Jakob Warkotsch
 * - REST: Add GetLatestItemRevisionMetadata to wiring by Jakob Warkotsch
 * - REST: Add AssertUserIsAuthorized to wiring by Jakob Warkotsch
 * - REST: Use revision data step in ReplaceItemStatement by Jakob Warkotsch
 * - REST: Use revision data step in RemoveItemStatement by Jakob Warkotsch
 * - Remove unused Logger by Lucas Werkmeister
 * - Rename “master” to “primary” in term store class by Lucas Werkmeister
 * - REST: Add missing subject redirect e2e tests by Jakob Warkotsch
 * - REST: Use revision data step in PatchItemStatement by Jakob Warkotsch
 * - RdfVocabulary::getEntityLName: Remove unused local variable by Marius Hoch
 * - RdfVocabulary: Remove unused private constants by Marius Hoch
 * - REST: Use revision data step in GetItemStatements by Muhammad Jaziraly
 * - REST: Use revision data step in GetItemLabels by Muhammad Jaziraly
 * - REST: Use revision data step in GetItemAliasesInLanguage by Muhammad Jaziraly
 * - REST: Use revision data step in GetItemDescriptions by Muhammad Jaziraly
 * - REST: Use revision data step in GetItemLabel by Muhammad Jaziraly
 * - REST: Mark PATCH /labels as production ready by Jakob Warkotsch
 * - REST: Prevent patching a whitespace-only label by Leszek Manicki
 * - client: Make some data providers static (provide*) by Lucas Werkmeister
 * - REST: Extract user authentication assertion step by Muhammad Jaziraly
 * - view: Make test data providers static (*Provider) by Lucas Werkmeister
 * - Create new CurrentSiteModule by gtzatchkova
 * - Use SelectQueryBuilder in EntityUsageTableBuilder by Lucas Werkmeister
 * - Use SelectQueryBuilder in BulkSubscriptionUpdater by Lucas Werkmeister
 * - Use SelectQueryBuilder in SqlSubscriptionManager by Lucas Werkmeister
 * - Use SelectQueryBuilder in UnexpectedUnconnectedPagePrimer by Lucas Werkmeister
 * - Add strict types to files touched in previous commit by Lucas Werkmeister
 * - Make Special:SetLabelDescriptionAliases ready for "mul" by Marius Hoch
 * - Fixes for changed ConnectionManager::getReadConnection return type by Lucas Werkmeister
 * - REST: Use revision data step in GetItemStatement by Jakob Warkotsch
 * - REST: Add subject redirect e2e test for GET statement by Jakob Warkotsch
 * - Remove tmpEnableLabelsInApiSummaries feature flag by Lucas Werkmeister
 * - Remove tmpWbsubscribersSensibleOutput feature flag by Lucas Werkmeister
 * - REST: Use revision data step in SetItemLabel by sihe
 * - REST: Use revision data step in SetItemDescription by sihe
 * - REST: Use revision data step in PatchItemLabels by sihe

WikibaseMediaInfo

 * - Update tab panel styles to avoid targetting hidden panels by Ed Sanders

WikibaseQualityConstraints

 * - Bump module-alias from 2.2.2 to 2.2.3 by Addbot
 * - ContemporaryCheckerTest: Make data provider static by Lucas Werkmeister
 * - WikibaseQualityConstraintsHooksTest: Make data provider static by Lucas Werkmeister
 * - tests: Make DefaultConfig::getDefaultConfig static by Lucas Werkmeister

WikiLambda

 * - jest: Raise code coverage standards to current level, so we don't regress by James D. Forrester
 * - Remove unused methods II by gengh
 * - Remove unused methods I by gengh
 * - Remove unused components from old UI  by gengh
 * - Add langZid param to the metadata methods by gengh
 * - Fix: Implementation name missing from test results table if untitled by Allan Jeremy
 * - jest: Add specific mixins code coverage standards by James D. Forrester
 * - zobjectTreeUtils: Drop convertZObjectToTree, no callers left by James D. Forrester
 * - Adapt FunctionEvaluator widget to new components by gengh
 * - e2e: Update folder structure for function by nik-55
 * - Disable the parser function for launch  by James D. Forrester
 * - eslint: Disable `es-x/no-array-prototype-includes` and fix uses of indexOf by James D. Forrester
 * - e2e: Add tests for "create a new test" by nik-55
 * - Fix setZFunctionCallArguments to not add duplicated args by gengh
 * - Remove Z13 from Validation code, we've abandoned it by James D. Forrester
 * - Update function-schemata sub-module to HEAD (9abc7c2)   by James D. Forrester
 * - jest: Raise code coverage standards to current level, so we don't regress by James D. Forrester
 * - Feat: Vuex store: Add tests for the new Zobject module methods. by Allan Jeremy
 * - Fixup end-to-end test URLs by Stef Dunlap
 * - ApiPerformTest: Flesh out the example calls for the other fields by James D. Forrester

WikimediaEvents

 * - clientError: Import private file directly instead of repacking another module by Timo Tijhof
 * - networkprobe: Use mw.user.getPageviewToken instead of Math.random by Jameel Kaisar
 * - Add Probenet library and fetch code by Jameel Kaisar
 * - Log additional click events on Special:MobileDiff by jsn

WikimediaMessages

 * - Link to the translated version of CC BY-SA where available by Roan Kattouw
 * - Always link to CC BY-SA on creativecommons.org not on various Wikipedias by Roan Kattouw
 * - Always link to CC BY-SA on creativecommons.org, not on en.wikipedia.org by Roan Kattouw
 * - Change CC BY-SA 3.0 to 4.0 in all license messages, in all languages by Roan Kattouw
 * - Point wm-codeofconduct-url to foundation governance wiki by Reedy

Wikisource

 * - Modify key that mapped Swedish Wikisource for Transkribus by Parthiv

Wikistories

 * - Handle deletion of article with associated stories by Huei Tan
 * - Store rendered stories individually in cache by Stephane Bisson

MonoBook

 * - Drop fallback code for SVG handling by Volker E
 * - styles: Use mediawiki.mixins screen reader text mixin by Volker E
 * - styles: Remove single-use mixins by Volker E

Nostalgia

 * - Drop fallback code and images for SVG handling by Volker E

Vector

 * - Use jQuery fake events for sticky header edit buttons by Ed Sanders
 * - Remove config and AB test code for edit buttons in sticky header by Ed Sanders
 * - mediawiki.less: Remove non-standard value for @max-width-breakpoint-tablet by Roan Kattouw

VisualEditor/VisualEditor

 * - CompletionAction: Use action.source to calculate if sequence was used by Ed Sanders
 * - Tests: Convert more test data to template literals by Ed Sanders
 * - Use template literals to make HTML more legible by Ed Sanders
 * - Fix diff move labels for changed-and-moved nodes by Bartosz Dziewoński

No changes

 * 3D
 * ActiveAbstract
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * Babel
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * CentralNotice
 * CharInsert
 * ChessBrowser
 * CiteThisPage
 * CodeEditor
 * CodeMirror
 * Cognate
 * Collection
 * CologneBlue
 * CommonsMetadata
 * ContactPage
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * Elastica
 * ElectronPdfService
 * EventStreamConfig
 * ExtensionDistributor
 * ExternalGuidance
 * FileExporter
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * Gadgets
 * GeoCrumbs
 * GeoData
 * GlobalCssJs
 * GlobalPreferences
 * GlobalUsage
 * GlobalUserPage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * Graph
 * GuidedTour
 * IPInfo
 * InputBox
 * Insider
 * Interwiki
 * InterwikiSorting
 * Josa
 * JsonConfig
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * Linter
 * Listings
 * LoginNotify
 * MapSources
 * MediaModeration
 * MediaSearch
 * MinervaNeue
 * MobileApp
 * MobileFrontend
 * Modern
 * MultimediaViewer
 * NearbyPages
 * NewUserMessage
 * Newsletter
 * OATHAuth
 * OAuthRateLimiter
 * ORES
 * OpenStackManager
 * PageAssessments
 * PageImages
 * PageNotice
 * PageViewInfo
 * PagedTiffHandler
 * PdfHandler
 * Phonos
 * Poem
 * Popups
 * PropertySuggester
 * QuickSurveys
 * Quiz
 * RSS
 * RelatedArticles
 * SandboxLink
 * Score
 * Scribunto
 * SearchExtraNS
 * ShortUrl
 * SimilarEditors
 * SiteMatrix
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateData
 * TemplateSandbox
 * TemplateStyles
 * TemplateWizard
 * TextExtracts
 * TheWikipediaLibrary
 * Timeless
 * TitleBlacklist
 * TocTree
 * TranslationNotifications
 * TrustedXFF
 * UploadsLink
 * UrlShortener
 * VipsScaler
 * VueTest
 * WebAuthn
 * WikiEditor
 * WikiLove
 * WikibaseCirrusSearch
 * WikibaseLexeme
 * WikibaseLexemeCirrusSearch
 * Wikidata.org
 * WikidataPageBanner
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaIncubator
 * WikimediaMaintenance
 * XAnalytics
 * intersection
 * timeline
 * wikihiero

Total changes
315 Changes in 69 repos by 73 authors