MediaWiki 1.41/wmf.15/Changelog

Core changes

 * - Branch commit for wmf/1.41.0-wmf.15 by trainbranchbot
 * - Remove mediawiki.ui.anchor by Jon Robson
 * - generateLocalAutoload.php: Fix typo by Reedy
 * - Fix backwards compatibility alias for WordAccumulator by thiemowmde
 * - Switch back to oo-ui-element-hidden from mw-diff-element-hidden by Sam Wilson
 * - Revert "Cleanup ParserTestRunner" by Isabelle Hurbain-Palatin
 * - Show the inline legend even if $wgShowDiffToggleSwitch = false by Tim Starling
 * - Update cascading protection when showing a diff page by Tim Starling
 * - diff: Change from WikiPage::getParserOutput to ParserOutputAccess by Umherirrender
 * - diff: Move SlotDiffRenderer::getTablePrefix parts assembly up to DifferenceEngine by Tim Starling
 * - diff: Add inline format switch when Wikidiff2 is installed  by hmonroy
 * - mw.loader: Document getState response values by Gergő Tisza
 * - Fix image size in the last row of packed galleries by Bartosz Dziewoński
 * - page: Remove deprecated WikiPage::factory/newFromID/newFromRow by Umherirrender
 * - api tests: Call editPage with WikiPage when used for same page by Umherirrender
 * - skin: Let Skin::makeSpecialUrlSubpage call correct replacement by Umherirrender
 * - Improve handling of diffs between incompatible content models by Gergő Tisza
 * - core: Replace deprecated calls to wfExpandUrl with UrlUtils::expand by James D. Forrester
 * - Fix selected tab for localized special page names by Jon Robson
 * - tests: Replace deprecated calls to wfExpandUrl with hard-coded url by James D. Forrester
 * - Fix grammar in UserRightsProxy class documentation by Thalia
 * - diff: Add inline styles for changes within moved paragraphs by Sam Wilson
 * - Inline createPageConfig in tryToCreatePageConfig by Arlo Breault
 * - filebackend: improve SwiftFileBackendList field names and nullity checks by Aaron Schulz
 * - Deprecate HookContainer::getHandlerCallbacks by daniel
 * - ResourceLoader: Clarify browser support comment in startup module by Roan Kattouw
 * - API: Replace deprecated calls to wfExpandUrl with UrlUtils::expand by James D. Forrester
 * - Fix magnify position when page content direction differs from site by Arlo Breault
 * - mediawiki.util: Use .indexOf( 'x' ) instead of .search( /x/ ) by Fomafix
 * - Cleanup ParserTestRunner by Func
 * - Fix showing post-edit message on page reload by Bartosz Dziewoński
 * - Clean up dependency injection in RevertedTagUpdate by Amir Sarabadani
 * - ApiEditPage: Return URL to finish creating temp account if enabled by Bartosz Dziewoński
 * - Add maintenance/storage/fixLegacyEncoding.php by Amir Sarabadani
 * - DifferenceEngineTest: improve data providers by Tim Starling
 * - LivePreview: Support live diff for new section creation by Ammarpad
 * - Update @since for MainConfigNames to 1.39 by Sam Wilson
 * - Skin: Avoid use rawElement where not needed, escape text by Jon Robson
 * - Remove deprecated SkinTemplateNavigation hooks by Ammarpad
 * - ExternalLinks: Clean up LinkFilter file header and code comments by Timo Tijhof
 * - Replace IDatabase::delete with DeleteQueryBuilder by Umherirrender
 * - Set default accesskey+tooltip for subject namespace tabs by Jon Harald Søby
 * - Document that saving preferences for temporary users now throws an error by Thalia
 * - HookContainer: deprecate old hook handler formats by daniel
 * - Convert FormlessAction to FormAction in DeleteAction by hueitan
 * - Do not generate diffs for slots with identical content by Tim Starling
 * - Resources: IP masked users cannot watch articles by Jon Robson
 * - installer: Move Pingback->run to Setup, document reason for external check by Timo Tijhof
 * - Convert PageRedirectHandlerTrait to PageRedirectHelper by daniel
 * - Update Codex from v0.12.0 to v0.13.0        by Anne Tomasevich
 * - ParsoidParser: set wrapper div class to ensure wrapper is added by Subramanya Sastry
 * - Add helpers to show post-edit message now and on page reload by Bartosz Dziewoński
 * - tests: Assert hook method in HookRunner tests by Umherirrender
 * - Populate parser cache with parsoid output. by rrana-wmf
 * - UserIdentity: Clarify how to check if a UserIdentity represents a temporary user by Thalia
 * - mail: Final round of EmailUser refactoring by Daimona Eaytoy
 * - mail: Round 6 of EmailUser refactoring by Daimona Eaytoy
 * - Remove RangeDifference by Tim Starling
 * - tests: Check that extension service getter methods exist by Lucas Werkmeister
 * - Diff libraryization followups by Tim Starling
 * - Move DiffEngine and helpers to includes/libs/Diff and put them in a namespace by Tim Starling
 * - Dynamically resize broken media spans in thumbs by Arlo Breault
 * - tests: Use MainConfigNames consts to refer config names by Umherirrender
 * - tests: Use Title::makeTitle instead of Title::newFromText by Umherirrender
 * - RateLimiter: collect statistics by daniel
 * - Conditionally add media module by Arlo Breault
 * - Break up overflowing filename by Arlo Breault
 * - mediawiki.storage: Set expiry before value to better handle failures by Bartosz Dziewoński
 * - SpecialLog: Fix some interface issues (follow-up to commit 2ac0720) by Func
 * - OutputPage: Don't fetch rev ID for wgCurRevisionId if we already know it by Bartosz Dziewoński
 * - Split createTextSlotDiffRenderer out of getSlotDiffRendererWithOptions by Tim Starling
 * - REST tests: don't require the Parsoid extension. by daniel
 * - PageBundleParserOutputConverter: don't mutate original ParserOutput by daniel
 * - SpecialMyLanguage: Cleanup and add more comments by Winston Sung
 * - file: Make pre-gen rendering of multi-page files (pdf, ...) serial by Amir Sarabadani
 * - SpecialMovePage: Minor code clean up by Timo Tijhof
 * - rdbms: Remove return value from Delete/UpdateQueryBuilder::execute by Umherirrender
 * - Deprecate use of targets by Jon Robson
 * - page: Replace deprecated PageArchive::getArchivedRevisionRecord by Umherirrender
 * - Use Codex markup on message box component by Jon Robson
 * - api: Replace deprecated ApiPageSet::getGoodPages in action=query by Umherirrender
 * - api: Replace ApiPageSet::getTitles in setnotificationtimestamp by Umherirrender
 * - api: Replace deprecated ApiPageSet::getMissingTitles in action=watch by Umherirrender
 * - api: Replace deprecated ApiPageSet::getTitles in imagerotate by Umherirrender
 * - api: Replace deprecated User::newFromName in usercontribs by Umherirrender
 * - Make SpecialEditWatchlist do less when there is nothing to do by thiemowmde
 * - Remove copy-paste documentation from NoWriteWatchedItemStore by thiemowmde
 * - Create new TempUserBanner skin component by Jan Drewniak
 * - rdbms: Document that DBError should not be caught by Lucas Werkmeister
 * - mediawiki.loader: fix JSDoc type for mw.loader.addStyleTag by Siddharth VP
 * - Merge sequences of `if` that end doing the same thing anyway by thiemowmde
 * - Update DEVELOPERS.md and UPGRADE with new way to use update.php by Jon Harald Søby
 * - SpecialLogTest: Test getting full suppression log by Marius Hoch
 * - specials: Migrate off some calls to method ChangeTags::modifyDisplayQuery by Amir Sarabadani
 * - Hard deprecate mw.jqueryMsg.parser by Fomafix
 * - SpecialLog: Fix empty offender on suppression log by Func
 * - LinkSearch: Change default protocol to http:// and https:// in READ_NEW by Amir Sarabadani
 * - moveToExternal: First decompress gziped entries before iconv by Amir Sarabadani
 * - LinkBatch: Re-apply makeWhereFrom2d/constructSet exception  by Timo Tijhof
 * - Skin: Move methods to SkinComponentUtils by Jan Drewniak
 * - i18n: Create message group-named-member by Umherirrender
 * - Update personal tools menu for temp users by bwang
 * - specials: Cast user ids to integer in UsersPager::doBatchLookups by Umherirrender
 * - build: Update SVGO to v3.0.2 by Volker E
 * - block: Normalize ip in DatabaseBlock::doAutoblock by Umherirrender
 * - Collapse sequences of `if` into short `return` if possible by thiemowmde
 * - Add tests for Special:Log/suppress, fix for PostgreSQL by Marius Hoch
 * - block: Cast block ids to integer on database queries by Umherirrender
 * - Make some storage scripts use Maintenance class by daniel
 * - LocalisationCache: Preserve fallback source language info by Func
 * - Add basic tests for SpecialConfirmEmail by Thalia
 * - Remove the $replace parameter from HookContainer::scopedRegister. by daniel
 * - Revert "jquery.makeCollapsible: Use `unset: all` on buttons"  by Gergő Tisza
 * - SpecialLog: Enable built-in validation of HTMLForm by Func
 * - Fix thumb styling on file description page by Arlo Breault
 * - DifferenceEngine: Fix "No difference" notice on cached diffs by Bartosz Dziewoński
 * - CommentStore: Drop temp table code by Alexander Vorwerk
 * - Create shared interface for foreign db repos by Ryan Schmidt
 * - HTMLForm: Allow conditional prefilling even without identifier by Func
 * - LanguageFallback: Remove unnecessary check on fallback codes by Func
 * - Remove PageContent::getRedirectTarget by Arlo Breault
 * - Remove error_log by Arlo Breault
 * - Sidebar: fix 'Help about Mediawiki' link icon by Dringsim
 * - Soft deprecate the VirtualRESTService class by rrana-wmf
 * - Revert "Implement Language Converter for yue (Cantonese)" by Winston Sung
 * - Prevent temporary users from accessing APIs for changing passwords by Thalia
 * - Load potential current ip block from correct wiki  by Alexander Vorwerk
 * - docs: Update Hooks.md and remove hooks.txt by Umherirrender
 * - SpecialMovePage: Avoid TransactionProfiler warnings by Máté Szabó
 * - changetags: Move ::modifyDisplayQuery from ChangeTags to ChangeTagsStore by Amir Sarabadani
 * - Drop $wgCommentTempTableSchemaMigrationStage by Alexander Vorwerk
 * - ServiceWiring: Use more specific ConfigException when wgObjectCaches is misconfigured by James D. Forrester
 * - Update email for temporary users by Thalia
 * - Inject DeferredUpdatesManager into DeletePage by Daimona Eaytoy
 * - [wdio-mediawiki] Refactor waitForModuleState to async by WMDE-Fisch
 * - api: On action=undelete check for proper page identity by Umherirrender

Vendor

 * - Bump parsoid to 0.18.0-a15 by Arlo Breault

AbuseFilter

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Mark some unused public class features as private by thiemowmde
 * - Various code style clean-ups by thiemowmde
 * - Mark protected stuff in classes with no subclasses as private by thiemowmde
 * - Fix removing a domain when the page doesn't exist by thiemowmde
 * - Fix adding a domain when the page doesn't exist by Amir Sarabadani
 * - BlockedExternalDomains: De-duplicate validateDomain logic by Timo Tijhof
 * - BlockedExternalDomains: Optimize host extraction by using parse_url by Timo Tijhof
 * - BlockedExternalDomains: Minor code clean up and docs improvement by Timo Tijhof
 * - Blocked domains: Fix removing a domain via the special page by Amir Sarabadani
 * - Make some non-static providers static by Matěj Suchánek
 * - blocked domains: Make sure users can't bypass the list by using uppercase by Amir Sarabadani
 * - BlockedDomains: Add logging in case of hit by Amir Sarabadani
 * - Use much more narrow IReadableDatabase and related where possible by thiemowmde
 * - Remove bits of unused code across the codebase by thiemowmde
 * - Add missing AbuseFilterServices::getHookRunner by Lucas Werkmeister
 * - Fix cases of LogicException in $update->getParserOutputForMetaData by Amir Sarabadani
 * - Retrieve external links from PreparedUpdate  by Matěj Suchánek
 * - Make old_links retrieval cleaner by Matěj Suchánek

AdvancedSearch

 * - Compact .less code a little bit by thiemowmde
 * - Remove redundant es6 property by Adam Wight
 * - Wait for applying the new class on pill field tests by WMDE-Fisch
 * - Spell out whole category and template for suggestion box test by WMDE-Fisch
 * - Run all specs for the daily browser tests by WMDE-Fisch
 * - Remove obsolete override by WMDE-Fisch
 * - Basic ES6 conversion by Adam Wight
 * - Run the whole suite for the daily tests by WMDE-Fisch
 * - Minor cleanups in the browser tests by WMDE-Fisch
 * - Merge and reduce selenium tests in namespaces spec by WMDE-Fisch
 * - Remove deprecated "targets" by Adam Wight
 * - Merge and reduce selenium tests in searchpage spec by WMDE-Fisch
 * - Merge and reduce selenium tests in searchsubmit spec by WMDE-Fisch
 * - Merge and reduce selenium tests in defaultNamespaces spec by WMDE-Fisch
 * - Replace some forEach with for-in loops by thiemowmde
 * - Inline trivial 1-use method, extract minor code duplication by thiemowmde
 * - Preview file type selection as extension instead of mime type by thiemowmde
 * - Extract method to get the JsConfigVars by WMDE-Fisch
 * - Merge and reduce selenium tests in advancedsearch spec by WMDE-Fisch
 * - Use isNamed for the user option by WMDE-Fisch

AntiSpoof

 * - api: Remove old apihelp i18n description messages by Umherirrender

ApiFeatureUsage

 * - api: Remove old apihelp i18n description messages by Umherirrender

ArticlePlaceholder

 * - Use more correct ConfigException by thiemowmde
 * - Use HashConfig in tests where possible by thiemowmde

Babel

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Document language sorting and test by Marius Hoch

BetaFeatures

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Clean up hook handler registration by daniel

BounceHandler

 * - api: Remove old apihelp i18n description messages by Umherirrender

CampaignEvents

 * - Send updates to the dashboard when a public participant becomes private by Daimona Eaytoy
 * - Create new DB tables for participant questions by Daimona Eaytoy
 * - Add handling for new `missing_event_id` Dashboard error by Daimona Eaytoy
 * - Provide the correct tracking tools data to the API in Special:MyEvents by Daimona Eaytoy
 * - EditEventRegistration: set min and default end date on page load by Daimona Eaytoy
 * - Add missing CampaignEventsServices::getEventQuestionsRegistry by Daimona Eaytoy
 * - Add support for temporary users by Daimona Eaytoy
 * - build: Make eslint fail on warnings by Daimona Eaytoy
 * - Show tracking tools in Special:EventDetails by Daimona Eaytoy
 * - Show chat group section on EventDetails even if there's no chat link by Daimona Eaytoy
 * - Make Special:EventDetails more similar to the prototypes by Daimona Eaytoy
 * - Add support for tracking tools to all the endpoints by Daimona Eaytoy
 * - Sync participants when linking a WikiEduDashboard to an existing event by Daimona Eaytoy
 * - Fix crash with event ID when syncing a new event with the Dashboard by Daimona Eaytoy
 * - Improve structure of the registration dialog by Daimona Eaytoy
 * - Add "Edit registration" button on event page by Daimona Eaytoy
 * - Rename RegistrationConfirmationDialog and related code by Daimona Eaytoy
 * - Make it possible to change visibility in Special:RegisterForEvent by Daimona Eaytoy
 * - Add missing service accessors in CampaignEventsServices by Lucas Werkmeister
 * - Add participant questions on RegisterForEvent special page by Claudio Melo
 * - Make OrganizerSelectionFieldEnhancer use its own API handle by Daimona Eaytoy
 * - Add label to private participant icons in Special:EventDetails by Daimona Eaytoy
 * - Sync the min end date in the registration form with the start date by Daimona Eaytoy
 * - Improve JS code for date selectors in the registration form by Daimona Eaytoy
 * - Catch the correct exception for getUserName call by Daimona Eaytoy
 * - Fix msg key for private participant label on event page by Daimona Eaytoy
 * - Handle PageDeleteCompleteHook instead of PageDeleteHook by Daimona Eaytoy

CategoryTree

 * - api: Remove old apihelp i18n description messages by Umherirrender

CentralAuth

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Remove $wgOverrideCentralIdLookupProvider by Taavi Väänänen
 * - Remove $wgGlobalRenameDenylistRegex by Taavi Väänänen
 * - Remove $wgCentralAuthPreventUnattached by Taavi Väänänen
 * - Remove $wgCentralAuthCreateOnView by Taavi Väänänen
 * - Remove $wgDisableUnmergedEdits by Taavi Väänänen
 * - SpecialCentralAutoLogin: Shift scope of $user->isNamed check by Kosta Harlan
 * - Prevent CentralAuth from setting preferences for temporary accounts by tsepothoabala
 * - Integrate AntiSpoof more closely by Taavi Väänänen
 * - User: Pass wikiId to UserIdentityValue instance by Umherirrender
 * - Replace mediawiki.Uri with native URL by Bartosz Dziewoński

CheckUser

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Avoid dynamic message keys via FormSpecialPage::getMessagePrefix by Daimona Eaytoy
 * - build: Add quibble.yaml and enable early warning bot feedback by Kosta Harlan
 * - Check temp user exists before adding IP lookup button to Special:Block by Thalia
 * - Define SpecialInvestigateBlock::doesWrites as true for profiler by Dreamy Jazz
 * - clienthints: Check if browser supports client hints by Kosta Harlan
 * - clienthints: Don't ask for client hint data on ?action=edit by Kosta Harlan
 * - clienthints: Send high entropy data on postEdit hook by Kosta Harlan
 * - Move CheckUser services in the root folder to a new sub-folder by Dreamy Jazz
 * - Make many tests for CheckUserUnionSelectQueryBuilder unit tests by Dreamy Jazz
 * - clienthints: Don't request client hints on POST requests by Kosta Harlan
 * - Show IP: Handle API errors on Special:Block by tsepothoabala

ChessBrowser

 * - build: Update SVGO to v3.0.2 by Volker E

CirrusSearch

 * - Classify more unknown errors by David Causse
 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Enable the token_counter_router from FullyFeaturedConfig.php by David Causse
 * - Replace deprecated PageArchive::getPreviousRevisionRecord/listRevisions by Umherirrender
 * - token_count_router: infer the analyzer from the field by David Causse
 * - Merge Apostrophe-Like Characters for All Languages by tjones
 * - Consider api-purge LinksUpdate non-prioritized by David Causse
 * - Drop CirrusSearch version from extension.json by David Causse

Cite

 * - Display text of parent reference in VE popup by Svantje Lilienthal
 * - Add extends warning to reference dialog by Svantje Lilienthal

Collection

 * - Replace sortable with bare bones up and down arrows by Jon Robson

ConfirmEdit

 * - api: Remove old apihelp i18n description messages by Umherirrender

ContentTranslation

 * - CX3 Build 0.2.0+20230626      by Santhosh Thottingal
 * - SX: Show placeholder text on BlockTemplateAdaptationCard by wangombe
 * - Update license to CC BY-SA 4.0 and clarify GFDL 1.3 license by EpicPupper
 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - SX: Add days passed since translation start inside translation works by NikG
 * - Fix warnings for Vue 3 CX modules by NikG
 * - CX: Use "isForSaving" mode for proper conversion of sentences by NikG
 * - SX: Improve usability on desktop/large windows by wangombe
 * - Do not add "ext.cx.contributions" when Contribute entrypoint enabled by NikG
 * - SX: Remove .col class from icon in publisher review info by wangombe
 * - SX: Ask for confirmation when deleting an in-progress translation by NikG
 * - SX: Fetch translations started on CX and show them in dashboard list too by NikG
 * - SX: Improve dialog when leaving unsaved translation by wangombe
 * - CX3 Build 0.2.0+20230612  by Santhosh Thottingal

DiscussionTools

 * - SpecialFindComment: Allow spaces instead of underscores in the input by Bartosz Dziewoński
 * - Clean up old localStorage entries by Bartosz Dziewoński
 * - Redo wrapper for localStorage integration by Bartosz Dziewoński
 * - Support ISO 8601 timestamps in the parser by Theodore Dubois
 * - Remove broken code by Ed Sanders
 * - Set URL fragment when recovering auto-save on mobile by Ed Sanders
 * - Make topic subscriptions unavailable to temp users by Bartosz Dziewoński
 * - ApiDiscussionToolsEdit: Allow not returning the new revision content by Bartosz Dziewoński
 * - Remove a mobile hack for post-edit messages by Bartosz Dziewoński
 * - Don't try to prefix browser title if a custom message is incompatible by Bartosz Dziewoński

DonationInterface

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Update extension for wikimedia/remex 2.3.2 (included in 1.37.0-wmf18) by C. Scott Ananian
 * - Some cosmetic updates to the RecurUpgrade form by Damilare Adedoyin
 * - Cancel recurring upgrade by wfan
 * - Handle submission of new recurring upgrade form by Damilare Adedoyin
 * - Create recurring upgrade form by Damilare Adedoyin
 * - Remove unnecessary `@throws MWException`  by Daimona Eaytoy

Echo

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - build: Update SVGO to v3.0.2 & re-crush icons by Volker E

ElectronPdfService

 * - Bumping eslint requirements to ES6 by mareikeheuer

EventBus

 * - produce events compliant to /mediawiki/revision/create/2.0.0 by David Causse
 * - Encode redirect targets in page change events. by Peter Fischer

EventLogging

 * - api: Remove old apihelp i18n description messages by Umherirrender

ExtensionDistributor

 * - api: Remove old apihelp i18n description messages by Umherirrender

FeaturedFeeds

 * - api: Remove old apihelp i18n description messages by Umherirrender

FlaggedRevs

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Use more narrow Pageidentity/Title interfaces where possible by thiemowmde
 * - Drop smaller pieces of duplicated code by thiemowmde
 * - Replace review CSS with Codex components   by Amir Sarabadani
 * - Avoid larger bit of code duplication in FlaggablePageView by thiemowmde
 * - Rename wgFlaggedRevsEditLatestRevision to wgEditLatestRevision by Dringsim

Flow

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Remove mediawiki.ui.anchor dependency by Jon Robson

Gadgets

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Avoid caching serialized PHP object by Siddharth VP
 * - Gadgets should default to mobile and desktop targets  by Jon Robson

GeoData

 * - api: Remove old apihelp i18n description messages by Umherirrender

GlobalBlocking

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Vary the instance cache by user name and support non-session IP users by Func

GlobalPreferences

 * - php: Use str_ends_with instead of substr by Func

GlobalUsage

 * - api: Remove old apihelp i18n description messages by Umherirrender

GlobalUserPage

 * - Create HookRunner class and the hook handler interface by Umherirrender

GlobalWatchlist

 * - Prevent Temp Users from saving UserOptions preferences by AnaïsGueyte

Graph

 * - api: Remove old apihelp i18n description messages by Umherirrender

GrowthExperiments

 * - Help panel: add feature flag for using Vue dialogs by vyanez
 * - Frontend documentation: add border property to filterDialog header and footer by vyanez
 * - NewImpact: make interaction logger reusable by other modules by Sergio Gimeno
 * - Mentor dashboard: migrate to Vue 3 by Sergio Gimeno
 * - Section images: Placeholder should serialize to empty string by Gergő Tisza
 * - MentorDashboard: Fix several Vue warnings by Martin Urbanec
 * - Mentor dashboard: info and gear icon alignment by Sergio Gimeno
 * - Section images: Select placeholder when inserting it by Gergő Tisza
 * - SuggestedEditSession: Log the full error message if REST API call fails by Thalia
 * - i18n: Fix en.json for addimage details dialog by Kosta Harlan
 * - i18n: Onboarding dialog en.json fixes by Kosta Harlan
 * - i18n: Fix en.json for image and section image recommendation task type description by Kosta Harlan
 * - i18n: Fix en.json for time to complete section image recommendation by Kosta Harlan
 * - Section images: Handle text overflow in the review dialog CTA text by Gergő Tisza
 * - Section images: Fix ve.scrollIntoView override  by Gergő Tisza
 * - Frontend documentation: Add a filterDialog low-level component by vyanez
 * - Revert "Structured tasks: Fix toolbar rewriting"  by Kosta Harlan
 * - Frontend documentation: Adapt OnboardingDialog styles to changes in CdxDialog by vyanez
 * - build: Update SVGO to v3.0.2 & re-crush icons by Volker E
 * - Section images: Fix scrolling to placeholder by Gergő Tisza
 * - Section images: use rtl asset in he, yi by Sergio Gimeno
 * - Section images: update rtl asset with flipped question mark by Sergio Gimeno
 * - Update "new missing article" message by Cyndywikime
 * - Section images: Pass section parameters to VE in add image tasks by Gergő Tisza
 * - Structured tasks: Fix toolbar rewriting by Gergő Tisza
 * - Specials: Switch to requireNamedUser by Kosta Harlan
 * - Section images: Fix image placeholder alignment for RTL content by Gergő Tisza
 * - Section images: Map old source values to current ones by Gergő Tisza
 * - WelcomeSurveyHooks: Do not show survey to temp users by Martin Urbanec
 * - Create HookRunner class by Umherirrender
 * - Personalized praise: Do not suggest blocked mentees by Martin Urbanec

GuidedTour

 * - build: Update SVGO to v3.0.2 by Volker E

ImageSuggestions

 * - Remove temporary workarounds for translation by Matthias Mullie
 * - Add section-level image suggestions by Cormac Parle

IPInfo

 * - Prevent deprecation warnings about IPInfo not being available on mobile by Thalia

JsonConfig

 * - api: Remove old apihelp i18n description messages by Umherirrender

Kartographer

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Add a feature flag for Parsoid support deployment by Isabelle Hurbain-Palatin
 * - Extract image URL parameters into its own method by Isabelle Hurbain-Palatin
 * - Rework MapFrameAttributeGenerator test to not test private stuff by thiemowmde
 * - Make constants in MapFrameAttributeGenerator private again by thiemowmde
 * - Remove dead code from MWMapsDialog.js by thiemowmde
 * - Improve test coverage of special page and tag classes by thiemowmde
 * - Fix extTag parser option by Isabelle Hurbain-Palatin
 * - Minor adjustments pre-Parsoid patch by Isabelle Hurbain-Palatin
 * - Use page language rather than user language  by Isabelle Hurbain-Palatin
 * - build: Update SVGO to v3.0.2 by Volker E

Linter

 * - api: Remove old apihelp i18n description messages by Umherirrender

LiquidThreads

 * - api: Remove old apihelp i18n description messages by Umherirrender

MachineVision

 * - Replace deprecated mw.jqueryMsg.parser by mw.jqueryMsg.Parser by Fomafix

MassMessage

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - tests: Add basic test for HookRunner by Umherirrender

Math

 * - Add WAN Cache for native MathML rendering by Moritz Schubotz (physikerwelt)
 * - Add MathML interface to LocalChecker by Moritz Schubotz (physikerwelt)

MobileFrontend

 * - Remove mediawiki.anchor from MobileFrontend, use Codex link by Jon Robson
 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Language overlay uses page HTML by Jon Robson
 * - Add styles for red links in reference popups by Saint Johann
 * - Use new helpers to show the post-edit message by Bartosz Dziewoński
 * - Replace mediawiki.Uri with native URL by Bartosz Dziewoński
 * - Replace deprecated mw.jqueryMsg.parser by mw.jqueryMsg.Parser by Fomafix
 * - Update linters, enable stylelint configs by Ed Sanders
 * - Remove hook handler for "Gadgets::allowLegacy" by Umherirrender

MultimediaViewer

 * - Add shortcuts Home/End to jump to first/last image by Simon Legner
 * - Add mw-parser-output to file captions by Saint Johann
 * - Update `localStorage` mocks for changes in mw.SafeStorage by Bartosz Dziewoński
 * - build: Update SVGO to v3.0.2 by Volker E
 * - Add jsdoc to MMV by Simon Legner

NavigationTiming

 * - Remove oversample config. by Peter Hedenskog

NearbyPages

 * - Drop use of mw.config and use packageFiles instead by Jon Robson
 * - build: Add 'svgo' to the build process by Volker E
 * - Make eslint treat warnings as errors and make it pass by Roan Kattouw
 * - Prepare for Vue 3 migration by Roan Kattouw

Newsletter

 * - Reword duplicate main page error message by Pppery
 * - Fix a bunch of bugs relating to newsletter deletion  by Pppery
 * - Remove database changes from UI layer by Pppery
 * - Fix error handling and abuse filter integration during edit     by Pppery
 * - api: Remove old apihelp i18n description messages by Umherirrender

OATHAuth

 * - api: Remove old apihelp i18n description messages by Umherirrender

ORES

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - feat: use Lift Wing instead of ORES by Ilias Sarantopoulos
 * - feat: hardcode threshold calls to switch to Lift Wing by Ilias Sarantopoulos

PageAssessments

 * - api: Remove old apihelp i18n description messages by Umherirrender

PageImages

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - ParserFileProcessing: Inject TitleFactory by Umherirrender
 * - ParserFileProcessing: Use ConnectionProvider and QueryBuilder by Umherirrender

PageTriage

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - fix mw.pageTriage.contentLanguageMessage is not a function error by jsn
 * - remove grunt; define scripts in package.json by jsn
 * - PackageFiles: ext.pageTriage.util, rewrite qunit as jest   by Jon Robson
 * - Drop mw.pageTriage.action from public API by Jon Robson
 * - PackageFiles: ext.pageTriage.views.list by Jon Robson
 * - Remove unnecessary closures by Jon Robson
 * - Migrate delete query statements to newDeleteQueryBuilder by suecarmol
 * - Change Database::select to new query builder  by suecarmol

PageViewInfo

 * - api: Remove old apihelp i18n description messages by Umherirrender

Popups

 * - Publish coverage file by Jon Robson
 * - build: Update SVGO to v3.0.2 by Volker E
 * - IP masked users use localStorage for settings by Jon Robson
 * - Discourage jQuery usage in Popups extension by Jon Robson

ProofreadPage

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Improve unsaved edit management for EditInSequence by Sohom

PropertySuggester

 * - api: Remove old apihelp i18n description messages by Umherirrender

QuickSurveys

 * - Prepare for Vue 3 migration by Roan Kattouw

RevisionSlider

 * - selenium: run tests concurrently by WMDE-Fisch
 * - Migrate JS to ES6 by Adam Wight
 * - Dramatically simplify a forEach loop by thiemowmde
 * - Add `overflow-x: clip` to minimize impact of resize issues by thiemowmde
 * - build: Update SVGO to v3.0.2 by Volker E

Scribunto

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Create HookRunner class and the hook handler interfaces by Umherirrender

SearchVue

 * - Search Preview - "View more" not clickable by Simone Cuomo
 * - SearchPreview: Code improvement - Create a DOM modules to centralise all DOM manipulations by Simone Cuomo
 * - Targets are no longer necessary by Jon Robson
 * - Search Preview: MultiMediaViewer MMV stopped working on Mobile by Simone Cuomo
 * - Search preview keyboard navigation breaks in certain cases by Simone Cuomo
 * - Search Preview: Highlighted search term loses its boldness when snippets expand on mobile with specific languages by Simone Cuomo
 * - Cannot read properties of undefined (reading 'snippetField') by Simone Cuomo

SecureLinkFixer

 * - Updating domains.php from Mozilla by SecureLinkFixer updater bot
 * - Updating domains.php from Mozilla by SecureLinkFixer updater bot
 * - Lazy load large domains.php file only when it's really needed by thiemowmde

SecurePoll

 * - Fix filepath for 1.39 postgres SQL patch by Dreamy Jazz
 * - Cleanup code duplication around Crypt instantiation by thiemowmde

SimilarEditors

 * - Add Norwegian special page aliases by Jon Harald Søby

SiteMatrix

 * - api: Remove old apihelp i18n description messages by Umherirrender

SpamBlacklist

 * - api: Remove old apihelp i18n description messages by Umherirrender

TemplateData

 * - Replace inappropriate use of "word-separator" message by thiemowmde
 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - build: Switch linting to ES6 by Ed Sanders
 * - Temporary disable parser test by Jon Robson

TextExtracts

 * - api: Remove old apihelp i18n description messages by Umherirrender

Thanks

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - build: Update SVGO to v3.0.2 by Volker E

TimedMediaHandler

 * - Re-enable jsdoc pedantic by TheDJ
 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Unbreak TMH video initialization by Derk-Jan Hartman
 * - Unset pedantic JSDoc for now by Derk-Jan Hartman
 * - Fix audio player being too wide when !parserEnableLegacyMediaDOM by Arlo Breault
 * - Build: fix jsdoc warning by Antoine Musso
 * - Use IForeignRepoWithDB instead of ForeignDBViaLBRepo by Ryan Schmidt
 * - JSDoc for TMH modules by Derk-Jan Hartman
 * - build: Update SVGO to v3.0.2 by Volker E
 * - Remove unused data attribs on a/v sources by Derk-Jan Hartman

TitleBlacklist

 * - api: Remove old apihelp i18n description messages by Umherirrender

Translate

 * - MessageBundle: Add feature to specify a label in metadata by Abijeet
 * - Log correct old title in move reason for translation pages and units by Abijeet
 * - GettextPluralException: Move to namespace by Abijeet
 * - GettextParseException: Move to namespace by Abijeet
 * - build: Update SVGO to v3.0.2 & re-crush icons by Volker E
 * - AppleInfoPlistFfs: Remove unused file format by Abijeet
 * - XliffFFS: Remove unused FileFormatSupport class. by wangombe
 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - SupportedLanguagesHook: Create hook handler interface by Umherirrender
 * - Do not add empty tux group warning container on server side by Abijeet
 * - Show Translate tab at the right place on protected pages by tacsipacsi
 * - Check namespace restrictions when displaying the Translate tab by Abijeet
 * - MessageGroupProcessing: Create hook handler interfaces by Umherirrender
 * - TranslatablePage::isTranslationPage: Use Utilities::isTranslationPage by Abijeet
 * - Implement ReplaceTextFilterPageTitlesForRename by Abijeet
 * - Implement ReplaceTextFilterPageTitlesForEdit by Ilmari Lauhakangas
 * - ManageTranslatorSandbox: Check if there are selected requests by Abijeet
 * - ManageTranslatorSandbox: Remove jQuery.ui by Abijeet
 * - ImportTranslations: Remove jQuery.ui dependency by Abijeet
 * - TranslatableBundleMove: Ensure user provided reason is logged by Abijeet
 * - UpdateDefinitionAid: Ensure old revision has the same definition id by Abijeet
 * - YandexWebService: Minor code improvements by Abijeet
 * - GoogleTranslateWebService: Minor code improvements by Abijeet
 * - ApertiumWebService: Minor code improvements by Abijeet
 * - CxserverWebService: Minor code improvements by Abijeet
 * - Replace deprecated mw.RegExp.escape by mw.util.escapeRegExp by Fomafix
 * - Clean up hook handler registration (II) by daniel
 * - TranslatableBundleImporter: Remove root-page option by Abijeet
 * - ModifyMessageGroupStatesHook: Create hook handler interface by Umherirrender
 * - Clean up hook handler registration by daniel
 * - Replace deprecated MWException by Daimona Eaytoy
 * - JavaScriptFFS::class: Remove unused File Format by wangombe
 * - TranslatorInterface: Create hook handler interfaces by Umherirrender

TranslationNotifications

 * - UnsubscribeInactiveUsers: Add more verbose logs by Abijeet

TwoColConflict

 * - Use a better link label instead of "this page" by thiemowmde
 * - build: Update SVGO to v3.0.2 by Volker E

UniversalLanguageSelector

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Correct the logic for the ULS settings cog for Vector 2022 by Jon Robson
 * - build: Update SVGO to v3.0.2 & re-crush icons by Volker E
 * - Remove padding-left from .uls-trigger by bwang
 * - Cleanup lib/jquery.ime by Amir E. Aharoni

UploadWizard

 * - api: Remove old apihelp i18n description messages by Umherirrender

UrlShortener

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Fix typo in CSS classes in ext.urlShortener.special by 沈澄心

VisualEditor

 * - Switch back to oo-ui-element-hidden from mw-diff-element-hidden by Sam Wilson
 * - React to hooks that are fired when inline switch is present by hmonroy
 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - ApiVisualEditorEdit: Allow not returning the new revision content by Bartosz Dziewoński
 * - Use new helpers to show the post-edit message by Bartosz Dziewoński
 * - Don't show edit notices popup after switching VE/NWE by Bartosz Dziewoński
 * - selenium: Disable flaky test by Kosta Harlan
 * - Fix '&editintro=…' not working on Vector with some settings by Bartosz Dziewoński
 * - ArticleTarget: Simplify switching to NWE with no changes by Bartosz Dziewoński
 * - DesktopArticleTarget.init: Remove error logging for URL errors by Bartosz Dziewoński
 * - DesktopArticleTarget.init: Fix bad parameter to activateTarget by Bartosz Dziewoński
 * - Stop collecting stats per wiki by daniel
 * - Revert "Targets: Use align:'after' instead of actionGroups" by Bartosz Dziewoński
 * - HelpCompletionTool wasn't added to extension.json by David Lynch
 * - Update VE core submodule to master (e2cf1e114) by Bartosz Dziewoński
 * - Exclude after-aligned tools when creating target widgets by Ed Sanders
 * - ApiVisualEditorEdit: Remove unnecessary check by Bartosz Dziewoński
 * - Don't offer visual diffs for page creation by Bartosz Dziewoński
 * - Set a JS config var to force VisualEditor to edit the current version by Dringsim
 * - Make "add undocumented parameter" hotkey ctrl+shift+d work much better by thiemowmde
 * - Don't try to prefix browser title if a custom message is incompatible by Bartosz Dziewoński

Wikibase

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - REST: Mark GET statement on a property as WIP by Muhammad Jaziraly
 * - Escape messages in TermsListView by Lucas Werkmeister
 * - REST: Fix wrong error messages in getting statement by Muhammad Jaziraly
 * - Rename Mediawiki* classes to MediaWiki* by Lucas Werkmeister
 * - Fix wikibase-descriptionview-mul template for editing  by Michael Große
 * - REST: Handle conditional requests for GET property by sihe
 * - client: Reduce injecting RC records batch size in CI by Amir Sarabadani
 * - REST: remove $itemId from GetStatement by Muhammad Jaziraly
 * - REST: Rename GetItemStatement use case by Muhammad Jaziraly
 * - REST: Add GetLatestStatementSubjectRevisionMetadata by Muhammad Jaziraly
 * - SetClaimValueTest: Use string properties by Marius Hoch
 * - REST: Add new property statement route to OAS doc by Norman Schwirz
 * - Replace usages of deprecated MWException, part 4 by Daimona Eaytoy
 * - Replace usages of deprecated MWException, part 3 by Daimona Eaytoy
 * - Show dash instead of usual description placeholder in legacy termbox by Michael Große
 * - SqlIdGenerator: Remove use of return value from UpdateQueryBuilder by Umherirrender
 * - Replace some usages of deprecated MWException, part 2 by Daimona Eaytoy
 * - Replace some usages of deprecated MWException by Daimona Eaytoy
 * - Use ::class syntax in expectException by Lucas Werkmeister
 * - Add strict types to TermsListView by Michael Große
 * - Clean up hook handler registration by daniel
 * - REST: Make `ItemStatementRetriever` subject agnostic by Ollie Shotton
 * - REST: Add _fields to GET properties in OAS by Muhammad Jaziraly
 * - REST: Rename `PropertyData` to `PropertyParts` by Muhammad Jaziraly
 * - Split up TermsListView::getTermsView private method by Michael Große
 * - Inject Wikibase.MobileSite service where it is used by Michael Große
 * - Add strict types to client's MovePageNotice by Michael Große
 * - REST: Fetching properties with `_fields` filter by Muhammad Jaziraly
 * - Remove tests relying on entity ID prefixes  by Jakob Warkotsch
 * - Remove tests relying on foreign entity IDs by Jakob Warkotsch
 * - Add field types to EditActionHookHandler by Michael Große
 * - Introduce static service accessor for WikibaseRepo.MobileSite by Michael Große
 * - Add to entityViewInit messages by Lucas Werkmeister
 * - In EntityContentDiffView don't call ParserOptions::addExtraKey by Tim Starling
 * - Account for HTML encoding  by Jon Robson
 * - build: Add ServiceWiring files to phan and suppress issues by Umherirrender

WikibaseCirrusSearch

 * - Replace deprecated MWException by Daimona Eaytoy
 * - token_count_router: infer the analyzer from the field by David Causse

WikibaseLexeme

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Change Mediawiki* class references to MediaWiki* by Lucas Werkmeister
 * - Replace deprecated MWException by Daimona Eaytoy

WikibaseLexemeCirrusSearch

 * - Remove `@throws MWException` for unchecked exceptions  by Daimona Eaytoy

WikibaseMediaInfo

 * - Replace deprecated MWException by Daimona Eaytoy
 * - Remove SerializableEntityId::splitSerialization usage by Jakob Warkotsch

WikibaseQualityConstraints

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Bump grunt-eslint from 24.1.0 to 24.2.0 by Addbot
 * - Bump sinon from 15.1.2 to 15.2.0 by Addbot
 * - Bump sinon from 15.1.0 to 15.1.2 by Addbot

WikiLambda

 * - Add backend rate-limit errors to ZErrorTypeRegistry. by apine
 * - Add custom data "isnewzobject" to "wf.ui.newView.mounted" event by dmartin
 * - Drop old mw.track call by James D. Forrester
 * - e2e: Add tests for "Create a type" by nik-55
 * - e2e: Fix implementation tests failure by nik-55
 * - Update function-schemata sub-module to HEAD (19f2a6d)  by James D. Forrester
 * - ApiFunctionCall::run: Tweak variable writing process for DRY by James D. Forrester
 * - Fix initialization and control fetchZKeys when new zids appear by gengh
 * - Fix About widget label to show "Untitled" when initialized with empty string by gengh
 * - PageRenderingHandler: Let /wiki/fr/Z901 transparently give the user the content in fr by James D. Forrester
 * - ZObjectContentHandler: Provide a raw JSON diff as needed by James D. Forrester
 * - e2e: Add tests for "Create a implementation" by nik-55
 * - e2e: Add tests for "connect" by nik-55
 * - Reduce UpdateImplementationsJob logging now we've debugged by James D. Forrester
 * - portray: Don't show loadedFromMediaWikiCache in meta-data results by James D. Forrester

WikiLove

 * - api: Remove old apihelp i18n description messages by Umherirrender
 * - Fixes link to "What is this" by Jon Robson
 * - Run eslint on .vue files and make pass by Roan Kattouw
 * - Prepare for Vue 3 migration by Roan Kattouw

WikimediaEvents

 * - improve diff logging instrument  by jsn
 * - probenet: Fix validation errors for status_code in Probenet reports by Jameel Kaisar

WikimediaIncubator

 * - Treat Temp Users as Anon Users by AnaïsGueyte
 * - Add more on-wiki messages by Jon Harald Søby

WikimediaMaintenance

 * - Remove the unused sanityCheck script. by daniel

WikimediaMessages

 * - Update messages for the research incentive survey by Daniel Souza

Wikistories

 * - Do not send focalRect key if no repositioning is performed by Huei Tan
 * - add checkbox “Delete associated stories?” on article deletion form by Huei Tan
 * - Tap to select/deselect sentence by Stephane Bisson
 * - getImagePosition: prevent going out of bound by Stephane Bisson
 * - StoryImage component by Stephane Bisson
 * - Fix error when getting next random 3 stories by Huei Tan
 * - Sync cache when purge on story page by Huei Tan
 * - Add README file step by step to undeploy Wikistories Extension by Huei Tan
 * - Share story by Stephane Bisson

MinervaNeue

 * - Remove mediawiki.ui.anchor dependency by Jon Robson
 * - Update personal tools for temp users, add icon for temp users by bwang
 * - Update ambox styles so that they also work on divs by Daimona Eaytoy
 * - Enable interface-temp-user-banner styles on Minerva skin by Jon Robson
 * - Prompt IP masked users to login/create account when watchstar clicked by Jon Robson
 * - Style thumbs in places that don't set a content language by Arlo Breault
 * - build: Update linters by Ed Sanders

MonoBook

 * - build: Update SVGO to v3.0.2 by Volker E

Timeless

 * - Correct two z-indexes by Jon Robson
 * - Copy upstream change to break up overflowing filename by Arlo Breault
 * - Copy upstream change to fix magnify position by Arlo Breault
 * - build: Update SVGO to v3.0.2 by Volker E
 * - Copy upstream change to suppress line-height in thumbs by Arlo Breault
 * - Copy upstream changes for thumb styling on file desc page by Arlo Breault
 * - styles: Apply MediaWiki skin variables `z-index` by Volker E

Vector

 * - Add new classes for dropdown component by Jon Robson
 * - Remove references to heading in dropdown PHP by bwang
 * - VectorComponentUserLinks: Fix typo in comment by Reedy
 * - Update Vector localization message language redirect to top by Moh'd Khier Abualruz
 * - Ensure language button works for no js users, by bwang
 * - Replace search loader indicator with Codex pending search message by bwang
 * - Hide "Toggle the table of contents" and "Toggle limited content width" on print by Msz2001
 * - Hide language alert if there are none and JS is disabled by jaydenb
 * - Enable interface-temp-user-banner on Vector 2022 by Jan Drewniak
 * - Clean up hook handler registration by daniel
 * - Prevent Skins Vector from setting preferences for temporary accounts by tsepothoabala
 * - Drop styles for cached HTML by Jon Robson
 * - Use the standardized Codex design tokens by Jon Robson
 * - Forbid jQuery in new code by Jon Robson
 * - styles: Replace local var with Codex design token by Volker E

VisualEditor/VisualEditor

 * - Update language lists by David Chan
 * - build: Update devDependencies by Ed Sanders
 * - Fix build path of wikimedia theme demo by Ed Sanders
 * - Delete empty paragraphs when next to block nodes by Ed Sanders
 * - LinearDeleteKeyDownHandler: Merge loops for table/focusable-adjacent delete behaviour by Ed Sanders
 * - LinearDelete: Add some test cases for deleting next to block elements by Ed Sanders

No changes

 * 3D
 * ActiveAbstract
 * ArticleCreationWorkflow
 * Calendar
 * Campaigns
 * Capiunto
 * CentralNotice
 * CharInsert
 * CiteThisPage
 * Citoid
 * CodeEditor
 * CodeMirror
 * Cognate
 * CologneBlue
 * CommonsMetadata
 * ContactPage
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * DoubleWiki
 * Elastica
 * EntitySchema
 * EventStreamConfig
 * ExternalGuidance
 * FileExporter
 * FileImporter
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GeoCrumbs
 * GlobalCssJs
 * GoogleNewsSitemap
 * ImageMap
 * InputBox
 * Insider
 * Interwiki
 * InterwikiSorting
 * Josa
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * Listings
 * LoginNotify
 * MapSources
 * MediaModeration
 * MediaSearch
 * MobileApp
 * Modern
 * NewUserMessage
 * Nostalgia
 * Nuke
 * OAuth
 * OAuthRateLimiter
 * OpenStackManager
 * PageNotice
 * PagedTiffHandler
 * ParserFunctions
 * PdfHandler
 * Phonos
 * Poem
 * Quiz
 * RSS
 * ReadingLists
 * RealMe
 * RelatedArticles
 * SandboxLink
 * Score
 * SearchExtraNS
 * ShortUrl
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateSandbox
 * TemplateStyles
 * TemplateWizard
 * TheWikipediaLibrary
 * TocTree
 * TorBlock
 * TrustedXFF
 * UploadsLink
 * VipsScaler
 * VueTest
 * WebAuthn
 * WikiEditor
 * Wikidata.org
 * WikidataPageBanner
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * Wikisource
 * XAnalytics
 * cldr
 * intersection
 * timeline
 * wikihiero

Total changes
635 Changes in 102 repos by 107 authors