MediaWiki 1.40/wmf.17/Changelog

Core changes

 * - Branch commit for wmf/1.40.0-wmf.17 by trainbranchbot
 * - skins: Set context when using special pages for associated links by Umherirrender
 * - MovePageTest simplifications and cleanup by DannyS712
 * - DummyServicesTrait: add content handler factory by DannyS712
 * - Split a base class out of CommentStore by Alexander Vorwerk
 * - Drop img_description from CommentStore temp table list by Alexander Vorwerk
 * - PostgresUpdater: Move setDefault ahead of changeNullableField  by Func
 * - Add matrix: to $wgUrlProtocols by Gergő Tisza
 * - ResourceLoader: Add type hints within FilePath class by Bartosz Dziewoński
 * - Use LanguageNameUtils::AUTONYMS/SUPPORTED instead of hard coded value by Umherirrender
 * - Replace deprecated Language::getMessagesFileName by Umherirrender
 * - LanguageNameUtils::getLanguageName - remove wrong @since by DannyS712
 * - MWCallbackStream: Add explicit $stream property by Reedy
 * - tests: Replace deprecated User::idFromName by Umherirrender
 * - SECURITY: Make sqlite DB files not world readable by Brian Wolff
 * - DevelopmentSettings: Fix typo by Reedy
 * - ChangeTags: Remove table name from condition by Lucas Werkmeister
 * - Replace some tivial ??= with even more trivial ?? by thiemowmde
 * - Fix history pager tools  by Gergő Tisza
 * - HISTORY: Add 1.35.9, 1.38.5, 1.39.1 by Reedy
 * - user: Hard-deprecate User::$mRights by Umherirrender
 * - tests: Do not set User::mBlock in secondary auth provider test by Umherirrender
 * - specials: Replace deprecated User::idFromName by Umherirrender
 * - maintenance: Replace deprecated User::idFromName by Umherirrender
 * - user: Replace deprecated User::idFromName by Umherirrender
 * - StatusValue: Add type hints for array shapes by Bartosz Dziewoński
 * - Hard-deprecate User/PermissionManager group permissions lookup functions by Umherirrender
 * - maintenance: Replace deprecated User::idFromName by Umherirrender
 * - tests: Replace deprecated User::getAllGroups by Umherirrender
 * - user: Hard-deprecate User::incEditCount by Umherirrender
 * - release notes: Add missing class name by Umherirrender
 * - user: Deprecate UserGroupMembership::getGroupMemberName by Umherirrender
 * - generatePhpCharToUpperMappings: avoid fetching service in loop by DannyS712
 * - MaintenanceRunner: find script by name by daniel
 * - Introduce run.php for running maintenance scripts by daniel
 * - Clarify "editmyprivateinfo" interface message by EpicPupper
 * - rdbms: clarify "waitForPos" logic in LoadBalancer by Aaron Schulz
 * - rdbms: remove IMaintainableDatabase::deadlockLoop by Aaron Schulz
 * - Replace deprecated PermissionManager::getGroupPermissions/WithPermission by Umherirrender
 * - Include revision ID in RevisionAccessException by daniel
 * - user: Replace deprecated UserGroupMembership::getGroupName by Umherirrender
 * - jobqueue: Remove JobRunner::setLogger and make constructor internal by Umherirrender
 * - phpcs: Remove exclusions for files that were deleted or moved by Kevin Israel
 * - LinkBatch: fix comment about deprecation replacement by DannyS712
 * - cache: Migrate queries to SelectQueryBuilder by Amir Sarabadani
 * - Add action=raw&slot= to release notes by Gergő Tisza
 * - phpcs: Remove 3 items from PrefixedGlobalFunctions ignore list by Kevin Israel
 * - make action 'raw' slot-aware by Simon Stier
 * - rdbms: clarify "cluster" and "role" terminology in comments by Aaron Schulz
 * - Update moveToExternal and resolveStubs by Tim Starling
 * - specials: Add dropdown for common move reasons on Special:MovePage by Umherirrender
 * - actions: Use user language for word 'other' in drop down lists by Umherirrender
 * - Hard-deprecate global function wfShowingResults by Umherirrender
 * - specials: Replace deprecated HTMLForm::addPreText/addHeaderText by Umherirrender
 * - diff: Handle timestamp correct for suppressed revisions by Umherirrender
 * - tests: Add tests for DifferenceEngine::getRevisionHeader by Umherirrender
 * - tests: Expand ArticleViewTest for unhide=1 and without unhide param by Umherirrender
 * - Make use of ??= in more places by DannyS712
 * - Upgrading pear/mail (v1.4.1 => v1.5.0) by Reedy
 * - Rewrite parts of importImages maintenance script for readability by Thiemo Kreuz
 * - Hard-deprecate WikiPage::factory/newFromID/newFromRow by Umherirrender
 * - api: Migrate subquery to use SelectQueryBuilder in ApiQueryAllUsers by Amir Sarabadani
 * - Storage: Migrate NameTableStore to SelectQueryBuilder by Amir Sarabadani
 * - api: Convert cl_timestamp format for continue on categorymembers by Umherirrender
 * - SettingsBuilder: introduce a "registration" stage by daniel
 * - Upgrading wikimedia/xmp-reader (0.9.0 => 0.9.1) by Reedy
 * - pager: Remove ProtectedHookAccessorTrait from IndexPager by Umherirrender
 * - tests: Do not hide deprecation in SpecialPageFatalTest by Umherirrender
 * - Reorg: Move ActorMigration and ActorMigrationBase to user/ by Amir Sarabadani
 * - ParsoidOutputAccess should support all models that serialize to wikitext. by daniel
 * - Introduce HtmlMessageOutputHelper for system messages by Derick Alangi
 * - auth: Replace FQNs with imports by Lucas Werkmeister
 * - Reorg: Move RawMessage to under language/ by Amir Sarabadani
 * - "Show thumbnails in Special:Search" option is available on mobile by Vadim Kovalenko
 * - Remove `mediawiki.action.view.categoryPage.styles` module by DannyS712
 * - Hard-deprecate protection related deprecated Title function by Umherirrender
 * - Generalize History pager tools for use in other contexts by Jon Robson
 * - resourceloader: clean up a few comments by DannyS712
 * - HtmlOutputRendererHelper: test that parser cache is used. by daniel
 * - composer.json: Updated composer/spdx-licenses from 1.5.6 to 1.5.7 by Reedy
 * - Parsoid: return 404 when page is deleted. by daniel
 * - Hard-deprecate BacklinkCache::get/getLinks/getCascadeProtectedLinks by Umherirrender
 * - specials: Migrate queries to SelectQueryBuilder in SpecialActiveUsers by Amir Sarabadani
 * - MediaWiki-Docker: Switch PHP images to PHP 8.1 by James D. Forrester
 * - tests: Set serialize_precision=-1 in TestSetup by Kevin Israel
 * - rcfilters: Add ability to negate the change tags filters too by James D. Forrester
 * - Watchlist: Register existing sub menu as associated pages by Jon Robson
 * - rdbms: Moving replication-related code to its own component by Amir Sarabadani
 * - Fix whitespaces after comma by Umherirrender
 * - rcfilters: Prevent tagfilter param from being set to 'all' by Roan Kattouw
 * - remove unused BacklinkCache::$instance by DannyS712
 * - site\MediaWikiPageNameNormalizer: Replace deprecated Http::get by Umherirrender
 * - poolcounter: Merge Client and ConnectionManager from extension repo by Timo Tijhof
 * - Parsoid: don't bypass ParserCache when using Title by daniel
 * - Change IW breakpoint to be enabled on smaller screen by Simone Cuomo
 * - Parsoid: Default parsoid version to "0.0.0" for unsupported models by Derick Alangi
 * - UserEditTracker: Allow querying primary DB for edit timestamp by Kosta Harlan
 * - Update Codex from v0.4.0 to v0.4.2          by Anne Tomasevich
 * - PageEditStash: Serialize ad-hoc to restore WRITE_ALLOW_SEGMENTS  by Aaron Schulz
 * - Special:Log: Let the tag filter be inverted by dvrandecic
 * - HTMLForm: Fix E_NOTICE when hide-if is used with setFormIdentifier by Roan Kattouw
 * - RecentChanges/Watchlist: Expose 'inverttags' param in form and API by James D. Forrester
 * - EditPage: Use more specific error message on undo failure by Tim Starling
 * - Enable several modules on mobile site by Jon Robson
 * - parser: Improve $noMoreClosingTag cache in preprocessor by Umherirrender
 * - ParserCache: fix metrics keys by daniel
 * - resourceloader: simplify how mw.loader loads styles by DannyS712
 * - selenium: Remove webdriverio npm package by Željko Filipin
 * - Parsoid: implicitly enable linting in API endpoints by daniel
 * - Add alt text for thumbnails, aria-hidden for placeholder by Matthias Mullie
 * - upload: Migrate select queries to SelectQueryBuilder by Amir Sarabadani
 * - RangeChronologicalPager: Restore the compatibility with derived classes  by Func
 * - Parse API should not include #mw-content-subtitle element  by Jon Robson
 * - ChangeTags: When showing a tag, also link to a filtered RecentChanges view by James D. Forrester
 * - api: Remove use of undeclared property in action=comparepages by Umherirrender
 * - Use str_starts_with/str_ends_with/str_contains by Umherirrender
 * - RCFilters: Set 'vertical-align' on all cells once, for simplicity by James D. Forrester
 * - Simplify convertPageBundleVariant by daniel
 * - search: Avoid setting height in search thumbnails by Amir Sarabadani
 * - Replace comment about deprecated Http::request by Umherirrender
 * - specials: Replace deprecated Linker::revComment/formatComment/Block by Umherirrender
 * - revisionslists: Replace deprecated Linker::revComment/commentBlock by Umherirrender
 * - Replace deprecated Linker::commentBlock/revComment by Umherirrender
 * - actions: Replace deprecated Linker::commentBlock by Umherirrender
 * - api: Replace deprecated Linker::formatComment by Umherirrender
 * - add redirects to page/history and link endpoints by msantos
 * - pager: Inject HookContainer into HistoryPager by Umherirrender
 * - tests: Set UseInstantCommons config to false in WikiPageDbTest by Umherirrender
 * - Make use of ?:, ?? and ??= operators in mostly trivial cases by thiemowmde
 * - phpunit: improve isolation by calling User::clearInstanceCache by daniel
 * - rdbms: add statsd metrics to TransactionProfiler by Aaron Schulz
 * - Use fake time in UserTimeCorrection in tests by Gergő Tisza
 * - installer: Include "more information" link for extension/skins by Umherirrender
 * - cache: Inject HookContainer into BacklinkCache by Umherirrender
 * - specials: Inject HookContainer into UploadForm by Umherirrender
 * - Remove twn-related comment from languages/messages/* files by Stang
 * - Replace deprecated PermissionManager::getGroupPermissions by Umherirrender
 * - Replace deprecated PermissionManager::groupHasPermission by Umherirrender
 * - Make use of the ?? and ??= operators where it makes sense by thiemowmde
 * - Add Windows-specific instructions in DEVELOPERS.md by Alistair3149
 * - SpecialExpandTemplates: Always use content language when no title is given by Func
 * - commonsInterwikiWidget: Generate URLs with mw.Title by Fomafix
 * - commonsInterwikiWidget: Simplify by using jQuery by Fomafix

Vendor

 * - Update wikimedia/remex-html to 3.0.3 by C. Scott Ananian
 * - Upgrading composer/ca-bundle (1.3.3 => 1.3.4) by Reedy
 * - Upgrading pear/mail (v1.4.1 => v1.5.0) by Reedy
 * - Upgrading wikimedia/xmp-reader (0.9.0 => 0.9.1) by Reedy

AbuseFilter

 * - Set old_content_model & new_content_model for past changes by Matěj Suchánek
 * - Use ActionSpecifier to load the IP address by Matěj Suchánek
 * - Use ActionSpecifier throughout the code by Matěj Suchánek
 * - selenium: Remove webdriverio npm package by Željko Filipin
 * - Create real integration test for variables by Matěj Suchánek

ActiveAbstract

 * - Replace deprecated Language::getConverter by Umherirrender

AdvancedSearch

 * - Replace deprecated Language::fetchLanguageNames by Umherirrender

ApiFeatureUsage

 * - Replace deprecated HTMLForm::addHeaderText by Umherirrender

ArticlePlaceholder

 * - Replace deprecated HTMLForm::setHeaderText by Umherirrender

Babel

 * - Replace deprecated Language::getFallbackFor by Umherirrender
 * - Replace deprecated Language::factory by Umherirrender
 * - Replace deprecated Language::fetchLanguageName(s) by Umherirrender
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender

CampaignEvents

 * - selenium: Enable Event Registration can be enabled by Vaughn Walters
 * - Registration pop-up styling issues by MHorsey
 * - Fix typehint in the timezone script by Daimona Eaytoy

CategoryTree

 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender

CentralAuth

 * - GlobalRename: Convert DB selects to use SelectQueryBuilder by Alexander Vorwerk
 * - Fix authentication provider ID during auto creation by Taavi Väänänen
 * - Special: Convert DB selects to use SelectQueryBuilder by Alexander Vorwerk
 * - Replace deprecated User::idFromName by Umherirrender
 * - Replace deprecated Language::getFallbacksFor by Umherirrender
 * - Replace deprecated HTMLForm::addHeaderText by Umherirrender
 * - Replace deprecated UserGroupMembership::getGroupName by Umherirrender
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender

CheckUser

 * - Add tables cu_log_event and cu_private_event for storing log events by Dreamy Jazz
 * - Update populateCulActor.php update key by Alexander Vorwerk
 * - Add comment migration code for SCHEMA_COMPAT_WRITE_BOTH by Alexander Vorwerk
 * - Introduce CheckUserCommentStore by Alexander Vorwerk
 * - Start writing to the comment table for the cu_log reason by dreamyjazz
 * - Move getClientIPfromXFF to a new CheckUser utility service by Dreamy Jazz
 * - Convert last few CheckUser provided hooks to the HookRunner system by Dreamy Jazz
 * - Test Hooks::onUserToolLinksEdit by Dreamy Jazz
 * - Validate user exists before setting as performer of failed login by Dreamy Jazz
 * - Add check links to user tool links on Get edits by dreamyjazz
 * - Split maybePruneIPData and then test newly created pruneIPData by Dreamy Jazz
 * - Add default values to cul_user(_text) by Alexander Vorwerk
 * - maintenance: Use $this->waitForReplication by Alexander Vorwerk
 * - Enable Investigate by default by Dreamy Jazz
 * - Fix tests for when DB does not support ORDER and LIMIT in a UNION by Dreamy Jazz
 * - Add read new support for cul_actor by Alexander Vorwerk
 * - Enforce the minimum length for the tags as 3 on the client-side by Dreamy Jazz
 * - Query actor table instead of user table by Alexander Vorwerk
 * - Inline trivial mock builders in tests by thiemowmde
 * - Selenium: Allow tests to grant checkuser group and some more tests by dreamyjazz
 * - Replace deprecated User::idFromName by Umherirrender
 * - populateCulActor: fetch user name from user id  by Alexander Vorwerk
 * - Integration test Hooks::onAuthManagerLoginAuthenticateAudit by dreamyjazz
 * - Test HookRunner and provide the UserIdentity for the insert hook by dreamyjazz
 * - If the user does not exist when logging in Investigate use ID 0 by dreamyjazz
 * - Remove unused strings and improve documentation by Dreamy Jazz

CirrusSearch

 * - tests: Replace deprecated Language::factory by Umherirrender
 * - Use WikiPageFactory to create WikiPage object by Umherirrender
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender

Cite

 * - Highlight markup inside in CodeMirror by Bartek Łukawski
 * - Use more realistic fake data in test cases by Bartosz Dziewoński
 * - Add 'ext.cite.ux-enhancements to mobile pages by Jon Robson

Citoid

 * - Don't add ext.citoid.wikibase.init to mobile pages by Jon Robson

cldr

 * - Use LanguageNameUtils::AUTONYMS/SUPPORTED instead of hard coded value by Umherirrender

CodeEditor

 * - Configure JS linter without overriding safe options by Nardog

Collection

 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - Replace deprecated Http::get/MWHttpRequest::factory  by Umherirrender
 * - Remove unnecessary uses of by Bartosz Dziewoński

CommonsMetadata

 * - tests: Replace deprecated Language::factory by Umherirrender
 * - Replace deprecated Language::getFallbacksFor by Umherirrender

ConfirmEdit

 * - Namespace captchas by Reedy
 * - .phan/config.php: Add hCaptcha by Reedy
 * - Fix usage of stringified class name by Reedy
 * - Use ResourceLoader callback to retrieve hCaptcha config by alistair3149

ContentTranslation

 * - Replace deprecated Language::isKnownLanguageTag/isValidBuiltInCode by Umherirrender
 * - Hooks: Use better callable with EchoAttributeManager::ATTR_LOCATORS by Reedy
 * - SX: Use composition API for App.vue by NikG
 * - SX: Fix a vue warning in tests regarding missing props by Santhosh Thottingal
 * - SX: Fix eslint warnings by Santhosh Thottingal
 * - CX3 Build 0.2.0+20221220    by Santhosh Thottingal
 * - SX: Add target pages inside state for translations with existing target by NikG
 * - SX: Use revision when fetching page content inside CXTranslationWork by NikG
 * - SX: Add "getParallelCorporaBaseId" getter and use it in "save" action by NikG
 * - SX: Add "getCurrentRevision" getter and use it in publishing actions by NikG
 * - SX: Add support for page revision in content fetching methods by NikG
 * - SX: Fetch draft translation units inside "Pick a sentence" step by NikG
 * - SX: Add draft restoration logic inside models by NikG
 * - SX: Introduce "fetchTranslationUnits" api method by NikG
 * - CX: Introduce TranslationUnitDTO class and use it where needed by NikG
 * - CX: Create "CorporaLookup" service and inject it where needed by NikG
 * - CX: Move TranslationUnit entity into Entity directory by NikG
 * - SX: Add support for restarting a draft section translation by NikG
 * - SX: Add "currentTranslation" application state variable by NikG
 * - SX: Update translation model and fetchTranslations api method by NikG
 * - SX: Enable dashboard list switcher and draft translation list by NikG
 * - Set QUnit test module to target desktop explicitly by Jon Robson
 * - CX query API module: Add support for section translation fetching by NikG
 * - SX: Add findSectionTranslationsByUser method and SectionTranslationDTO by NikG
 * - SX: Fix CXTranslationWork SFC so that output matches specifications by NikG
 * - SX: Refactor CXTranslationWork SFC to use composition API by NikG
 * - SX: Add auto-save after each segment translation by NikG
 * - SX: Remove extra vertical space in VisualEditor by Santhosh Thottingal
 * - Set targets explicitly by Jon Robson

DiscussionTools

 * - Language code for zh-yue wiki is just yue by David Lynch
 * - Only preload getPageData if there's thread data for the page by David Lynch
 * - Emergency: discussiontoolspageinfo return empty response in non-talk ns by Amir Sarabadani
 * - a/b test anonymous ID was being reset because of cookie prefixes by David Lynch
 * - Log an event when the lede button is clicked by David Lynch
 * - Don't write to parser cache from maintenance script by daniel
 * - VisualEnhancements: in some languages put an arrow by the reply button by David Lynch
 * - Use new stable API for subtitle modification by Jon Robson

DonationInterface

 * - Replace deprecated Language::getMessageFor by Umherirrender
 * - Replace deprecated Language::getFallbacksFor by Umherirrender
 * - Replace deprecated Language::isValidBuiltInCode by Umherirrender
 * - Update SmashPig version and own version number by Elliott Eggleston
 * - Replace deprecated Http::userAgent by Umherirrender

Echo

 * - Replace deprecated Language::factory by Umherirrender
 * - Replace deprecated Language::fetchLanguageName by Umherirrender
 * - patch-echo_push_subscription-add-column-eps_topic.sql: Add table prefix by Reedy
 * - Avoid unnecessary User instantiation by Matěj Suchánek
 * - Replace deprecated Linker::formatComment/formatLinksInComment by Umherirrender
 * - schema: Run cleanup updates for echo_push_subscription separately by Umherirrender

EntitySchema

 * - Replace deprecated Language::factory by Umherirrender
 * - Replace deprecated Language::isSupportedLanguage by Umherirrender
 * - Replace deprecated Language::fetchLanguageName by Umherirrender
 * - tests: Replace deprecated Language::factory by Umherirrender
 * - Fix doc comment syntax by Lucas Werkmeister
 * - Adjust comment about removed Linker::formatAutocomments by Umherirrender

EventBus

 * - tests: Use assertIsArray instead of gettype by Umherirrender
 * - Replace deprecated Linker::formatComment by Umherirrender

EventLogging

 * - Remove compatibility code for 1.35+ by Umherirrender
 * - Hard-deprecate EventLogging::submit parameter by Sam Smith

FileImporter

 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - Replace deprecated MWHttpRequest::factory by Umherirrender

FlaggedRevs

 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - RevisionReviewForm.php: Only check is the revision text is deleted by Caenus
 * - Introduce FlaggedRevision::getDefaultTags as separate concept by thiemowmde

Flow

 * - Replace deprecated User::idFromName by Umherirrender
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - ext.flow.visualEditor targets desktop explicitly by Jon Robson
 * - Replace deprecated Linker::commentBlock/formatLinksInComment by Umherirrender
 * - Make use of the ??= operator where it makes sense by thiemowmde

FundraiserLandingPage

 * - Replace deprecated Language::fetchLanguageNames by Umherirrender

GlobalBlocking

 * - Replace deprecated HTMLForm::addPreText/addHeaderText by Umherirrender
 * - pager: Avoid unneeded database connection by Umherirrender
 * - Replace deprecated Linker::commentBlock by Umherirrender

GlobalCssJs

 * - Replace deprecated ConfigFactory::getDefaultInstance by Umherirrender

GlobalPreferences

 * - Replace deprecated HTMLForm::addHeaderText by Umherirrender

GlobalUserPage

 * - Replace deprecated ConfigFactory::getDefaultInstance by Umherirrender

GoogleNewsSitemap

 * - Replace deprecated Language::fetchLanguageName by Umherirrender

Graph

 * - Remove unused Title argument from ParserTag::buildHtml by Umherirrender
 * - Replace deprecated Parser::getFreshParser by Umherirrender

GrowthExperiments

 * - Replace deprecated HTMLForm::addPreText/addHeaderText by Umherirrender
 * - MentorHooks: Use better callable with EchoAttributeManager::ATTR_LOCATORS by Reedy
 * - NewImpact: add missing dependency mediawiki.user by Sergio Gimeno
 * - Log when PageViewInfo fails to return data about a page by Gergő Tisza
 * - Test NoEditsDisplay component by Sergio Gimeno
 * - Vue components: refactor CText to use standard template by Sergio Gimeno
 * - User impact: simplify logging in articles list by Sergio Gimeno
 * - User impact: instrument info tooltip clicks by Sergio Gimeno
 * - Vue components: react to binding updates of v-click-outside directive by Sergio Gimeno
 * - AskHelpPanel: When mentor is away indefinitely, do not include "back at" day by Martin Urbanec
 * - NewImpact: Use "View all edits" in footer by Kosta Harlan
 * - eslint: Error on warnings by Kosta Harlan
 * - NoEditsDisplay: Fix eslint warnings by Kosta Harlan
 * - User impact: read edit count from primary db in save complete hook by Sergio Gimeno
 * - eslint: Fix JSDoc warnings by Kosta Harlan
 * - eslint: Fix max-len issues in test files by Kosta Harlan
 * - eslint: Silence more compat/compat warnings by Kosta Harlan
 * - NewImpact: Add log event for clicking suggested edits button by Gergő Tisza
 * - MentorStatusManager: Treat locked mentors as away by Martin Urbanec
 * - User impact: avoid parse warnings in unactivated state by Sergio Gimeno
 * - eslint: Fix vue/require-explicit-emits warnings by Kosta Harlan
 * - eslint: Increase max-len to 120 for Vue files by Kosta Harlan
 * - eslint: Silence compat/compat warnings by Kosta Harlan
 * - Use wgTranslateNumerals with Intl by Gergő Tisza
 * - Fix UserDatabaseHelper and add test by Gergő Tisza

GWToolset

 * - Replace deprecated Language::factory by Umherirrender

ImageMap

 * - Replace deprecated ConfigFactory::getDefaultInstance by Umherirrender

ImageSuggestions

 * - Fixes: "Module not loadable on target mobile" warnings by Jon Robson

InputBox

 * - Rename language codes sr-ec and sr-el to sr-Cyrl and sr-Latn in tests by Fomafix
 * - Use single type in @var declaration by Fomafix

Interwiki

 * - Replace deprecated Language::fetchLanguageName by Umherirrender
 * - Replace deprecated HTMLForm::setIntro by Umherirrender

IPInfo

 * - Add permissions check to ArchivedRevisionHandler by Thalia
 * - Show IPInfo info box on Special:DeletedContributions by csimiyu
 * - Remove duplicate message from extension.json by Thalia
 * - Introduce ArchivedRevisionHandler for SpecialDeletedContributions by Thalia

JsonConfig

 * - Replace deprecated Language::isValidCode/isValidBuiltInCode by Umherirrender
 * - Replace deprecated Language::factory by Umherirrender
 * - Replace deprecated Parser::getFreshParser by Umherirrender
 * - Use proper ::class reference instead of string by thiemowmde
 * - Switch to new SimpleStyleParser constructor by thiemowmde

Kartographer

 * - Replace deprecated Parser::getTitle by Umherirrender
 * - Replace deprecated Parser::getFreshParser by Umherirrender
 * - Fix geomask expansion possibly failing when HTTP request fails by thiemowmde
 * - Remove redundant checks from ExternalDataLoader::extend by thiemowmde
 * - Also expand "page" data by Adam Wight
 * - SpecialMap: Avoid use of null when no map server is set by Umherirrender
 * - Remove not needed class properties from MWMapsDialog class by thiemowmde
 * - Use flex layout for VisualEditor maps dialog by thiemowmde
 * - Add tiny SimpleStyleParser::newFromParser constructor by thiemowmde
 * - Handle GeoMasks by Svantje Lilienthal
 * - Do not parse external data from WikiCommons by Svantje Lilienthal
 * - Preserve the focus box state when using the zoom buttons by Andrew Kostka
 * - Add ExternalDataLoaderTest when HTTP request fails by thiemowmde
 * - Reduce code indention in ExternalDataLoader by thiemowmde
 * - Try to make Kartographer vs. FlaggedRev test more stable by Thiemo Kreuz
 * - Add @license tags to all classes by thiemowmde
 * - Add basic integration test for ParserFunctionTracker by thiemowmde
 * - Add strict types to all test function headers by thiemowmde
 * - Remove confusing array flipping from State::getRequestedGroups by thiemowmde
 * - Mark JSON field in sanitize-mapdata API as "text" by thiemowmde

LandingCheck

 * - Replace deprecated Language::getFallbacksFor by Umherirrender
 * - Replace deprecated Language::isValidCode/isSupportedLanguage by Umherirrender

LdapAuthentication

 * - Replace deprecated User::idFromName by Umherirrender

Linter

 * - Replace deprecated HTMLForm::addHeaderText by Umherirrender
 * - maintenance script for linter extension tag and template migration by sbailey
 * - Phase 3 of T175177: Migrate linter_params into new fields by sbailey

LiquidThreads

 * - Remove compatibility code for 1.37 by Umherirrender
 * - Replace deprecated HTMLForm::setIntro by Umherirrender
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - Use HookContainer::register instead of $wgHooks by daniel
 * - Replace deprecated Linker::commentBlock/formatLinksInComment by Umherirrender

LoginNotify

 * - Hooks: Use better callable with EchoAttributeManager::ATTR_LOCATORS by Reedy
 * - Avoid use of deprecated User::idFromName by Umherirrender

MachineVision

 * - Replace deprecated Language::getFallbacksFor by Umherirrender

MassMessage

 * - Add a config that marks targets as pre-validated for message delivery by Dreamy Jazz
 * - Hide submit button if form data has errors by wctaiwan
 * - MessageSender: Use better callback format by Reedy
 * - Drop list=mmsites, no longer needed by Kunal Mehta
 * - content: Port frontend to OOUI, drop jquery.ui  by Kunal Mehta
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - Use scopedRegister to ensure temporary hook is unregistered by Dreamy Jazz
 * - Only assign bot to MassMessage user if creating or stealing the account by Dreamy Jazz
 * - Replace deprecated Linker::formatComment by Umherirrender

Math

 * - Expand texvcjs comparison test by Moritz Schubotz (physikerwelt)
 * - Refactor LocalChecker by Moritz Schubotz (physikerwelt)
 * - Fix HTML testtable generation by Moritz Schubotz (physikerwelt)
 * - Improve test coverage for nodes by Moritz Schubotz (physikerwelt)
 * - Add commandline script for texvc by Moritz Schubotz (physikerwelt)
 * - Improve checking performance by Moritz Schubotz (physikerwelt)
 * - Add tests for more TeX statements by Stegmujo
 * - Use named data sets in AllTest by Moritz Schubotz (physikerwelt)
 * - Fix missing curlies in chem nodes by Moritz Schubotz (physikerwelt)
 * - Add test for basic MML Methods by Stegmujo
 * - Update visitor functions and add parsing methods (MMLGen) by Stegmujo
 * - Add mappings for MMLGen by Stegmujo
 * - Update namespace references in MMLNodes by Stegmujo
 * - Add utility classes for generating MathML by Stegmujo
 * - Add updated TexConstants and Lengths by Stegmujo
 * - Add MML nodes and basic constants for MML generation by Stegmujo
 * - Load Math ResourceLoader modules on mobile by Jon Robson

MobileFrontend

 * - Avoid use of deprecated User::idFromName by Umherirrender
 * - Log bucket/token for the DiscussionTools mobile a/b test by David Lynch
 * - tests: Add unit tests for AMC\Outreach by Derick Alangi
 * - tests: Add test unit test suite for AMC\Manager by Derick Alangi
 * - Replace deprecated Linker::formatComment by Umherirrender
 * - Replace User with narrow UserIdentity/Authority interfaces by thiemowmde

Newsletter

 * - Hooks: Use better callback format by Reedy
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender

OATHAuth

 * - OATHUserRepository: rely less on global state by Taavi Väänänen
 * - Replace deprecated HTMLForm::setPreText by Umherirrender

OAuth

 * - Replace deprecated HTMLForm::addPreText/addHeaderText by Umherirrender
 * - Code cleanup by Reedy
 * - Replace deprecated CommentStore::getStore by Umherirrender
 * - Inject services into hook handlers by DannyS712
 * - Move Updater hooks to HookHandler by Reedy
 * - Move Backend hooks to HookHandler by Reedy
 * - Move Frontend hooks to HookHandler by Reedy
 * - Move Setup hooks to HookHandler by Reedy
 * - Fix and update a bunch of type hints in PHPDoc tags by thiemowmde

OAuthRateLimiter

 * - Namespace tests by Reedy

ORES

 * - Replace deprecated MWHttpRequest::factory by Umherirrender

PageAssessments

 * - Hooks: Use better callback format by Reedy

PageImages

 * - Fix brittle test by Amir Sarabadani
 * - Replace deprecated Http::get by Umherirrender
 * - Temporarily disable failing heading parser test case by Bartosz Dziewoński

PageTriage

 * - QueueLookup: Make newFromRow private by Kosta Harlan
 * - Make "All tags" category the default when opening "maintenance tag" menu by Novem Linguae
 * - Small code style improvements by Gergő Tisza
 * - Extract cron job class into its own file by Novem Linguae
 * - Hooks: Remove unused parameter from addToPageTriageQueue by Kosta Harlan
 * - Hooks::isNewEnoughToNoIndex: Use QueueLookup by Kosta Harlan
 * - PageTriageUtil: Use QueueLookup service by Kosta Harlan
 * - QueueRecord/PageTriage: Make review status an int by Kosta Harlan
 * - Handle empty input in QueueManager::deleteByPageIds by Gergő Tisza
 * - Small code style changes to Queue* classes by Gergő Tisza
 * - Skip notification test when Echo is not installed by Gergő Tisza
 * - Tests: Skip ORES dependent tests when extension not loaded by Kosta Harlan
 * - UpdatePageTriageQueue: Use QueueManager, add deleteByPageIds by Kosta Harlan
 * - ApiPageTriageStats: deprecate topreviewers by Taavi Väänänen
 * - Namespace all tests by Reedy
 * - NewPagesFeed: Fixed bug where the 'created-by' filter wasn't being reset by MPGuy2824
 * - Remove two unused fields from PageTriage by Gergő Tisza
 * - Introduce PageTriageQueueLookup and QueueRecord by Kosta Harlan
 * - Introduce PageTriageQueueManager  by Kosta Harlan
 * - Rename wikilove.js to wikiLove.js and simplify ToolbarView.js by DannyS712
 * - PageSaveComplete: Minor simplifications by Kosta Harlan
 * - Convert ResourceLoaderRegisterModules to HookHandler by Kosta Harlan
 * - Convert LocalUserCreated to HookHandler by Kosta Harlan
 * - Convert ResourceLoaderGetConfigVars to HookHandler by Kosta Harlan
 * - Convert BlockIpCompleteHook to HookHandler by Kosta Harlan
 * - Convert MarkPatrolledComplete to HookHandler by Kosta Harlan
 * - Hooks.php: Use injected TitleFactory instead of static Title methods by Kosta Harlan
 * - Hooks.php: Use PageIdentity for flushUserStatusCache by Kosta Harlan
 * - Convert ArticleDeleteComplete to HookHandler by Kosta Harlan
 * - Convert ArticleViewFooter to HookHandler by Kosta Harlan
 * - Convert LinksUpdateComplete to HookHandler by Kosta Harlan
 * - Convert PageSaveComplete to HookHandler by Kosta Harlan
 * - Convert RevisionFromEditComplete to HookHandler by Kosta Harlan
 * - Convert PageMoveComplete to HookHandler by Kosta Harlan

PageViewInfo

 * - Replace deprecated MWHttpRequest::factory by Umherirrender
 * - Replace comment about deprecated Http::request by Umherirrender

ParserFunctions

 * - Add test cases for {{#if:… and such with no possible output by thiemowmde

Phonos

 * - Review whitespaces around the Phonos element by hmonroy
 * - Move setting of aria-label from JS to PHP by Sam Wilson
 * - PhonosIPARenderingEnabled: Add config variable to enable/disable renders by TheresNoTime
 * - Create countOrphanedFiles.php maintenance script with option to delete by MusikAnimal
 * - Phonos: break out renderPhonos into multiple methods by MusikAnimal
 * - Show error if lang not supported by Sam Wilson
 * - Set expiry header to minimize leakage by Dayllan Maza

Popups

 * - Inject service UserOptionsManager in Hooks by Fomafix
 * - Account for syntax errors in closest selector by Jon Robson

ProofreadPage

 * - Add tag to edits made using EditInSequence by Sohom
 * - Use global variables for TemplateStyles by Sohom
 * - Convert SetupAfterCache hook to HookHandler system by Kolawole
 * - EditInSequence: Add save module by Sohom
 * - Image prefetching: adds imagesrcset attribute by Tpt

PropertySuggester

 * - Fixes "Module not loadable on target mobile" warnings by Jon Robson

QuickSurveys

 * - Remove unused array values from test setup by Thiemo Kreuz

Quiz

 * - Combine property declaration and initialization when possible by Thiemo Kreuz
 * - Fix broken QuestionTest by thiemowmde

ReadingLists

 * - Replace deprecated Language::isValidCode by Umherirrender

RSS

 * - Replace deprecated Parser::getFreshParser by Umherirrender

Score

 * - Clarify missing LocalSettings.php config in README by Jonathan Harker
 * - Replace deprecated Language::fetchLanguageName by Umherirrender
 * - Add a special message for lilypond 2.23.12 safe mode by Tim Starling
 * - Use LilyPond with libcairo to generate SVG and PNG directly, T49578 by Jonathan Harker

Scribunto

 * - Use LanguageNameUtils::AUTONYMS/DEFINED instead of hard coded value by Umherirrender
 * - Replace deprecated Language::isValidCode/isSupportedLanguage by Umherirrender
 * - Replace deprecated Language::getFallbacksFor by Umherirrender
 * - Replace deprecated Language::factory by Umherirrender
 * - Fixes "Module not loadable on target mobile" warnings by Jon Robson
 * - Replace use of deprecated Parser::$mOptions by Umherirrender
 * - Replace deprecated Language::fetchLanguageName(s) by Umherirrender

SearchVue

 * - Mobile: Create a Quick View component by Vadim Kovalenko
 * - Update eventlogging schema version by Matthias Mullie
 * - Make SearchVue work on smaller screen by Simone Cuomo
 * - Fix bug with passing 'result_display_position: -1' when clicking on pagination by Vadim Kovalenko
 * - SearchVue Instrumentation by Simone Cuomo
 * - Immediately add padding-right when searchPreview extension load  by Simone Cuomo
 * - Fix CSS specificity issue on mobile by Simone Cuomo

SecurePoll

 * - Use LanguageNameUtils::AUTONYMS/DEFINED instead of hard coded value by Umherirrender
 * - Replace deprecated HTMLForm::addHeaderText by Umherirrender
 * - Fully test ServiceWiring.php by Dreamy Jazz
 * - BallotStatus: Cleanup by Reedy
 * - .phpcs.xml: Remove some rules and exceptions that are no longer needed by Reedy
 * - Delete some old vote scripts by Reedy
 * - populateEditCount: Count flow revisions if applicable by Reedy
 * - Replace deprecated Http::get by Umherirrender
 * - SecurePoll: Add files for UCoC 2023 vote by Joe Sutherland

SimilarEditors

 * - Avoid passing null to json_decode by Umherirrender

StopForumSpam

 * - Add basic README file for ext:StopForumSpam by sbassett

SyntaxHighlight_GeSHi

 * - fetchLexers: Pass '--json' to Pygmentize by Ori Livneh
 * - Fix lexer list parsing on Windows by Ryan Schmidt

TemplateData

 * - Streamline code duplication in nested `if` in Dialog.js by thiemowmde
 * - Rename message not specific to suggestedvalues by thiemowmde
 * - Unhoist a bunch of variables in Dialog.js by thiemowmde
 * - Create dialog elements from "type", not from element name by thiemowmde
 * - Extract named isValidCustomFormatString method by Thiemo Kreuz
 * - Renaming misleading "type" variable by thiemowmde
 * - Inline some trivial single-use variables by Thiemo Kreuz
 * - Simplify some overly complex comparisons with undefined by Thiemo Kreuz
 * - Fix copy paste mistakes and outdated code documentation by Thiemo Kreuz
 * - Split parameter validation off as separate methods by Thiemo Kreuz

TemplateSandbox

 * - Replace deprecated HTMLForm::addHeaderText by Umherirrender
 * - Don't prevent the VisualEditor plugin from loading on mobile by Jon Robson

Thanks

 * - Hooks: fix spelling mistake by TheresNoTime
 * - Thank: Fix thank action with no revision id by Dayllan Maza
 * - Load Thanks JS on more special pages by Roan Kattouw
 * - Add service container by Gergő Tisza
 * - Adds the ThanksQueryHelper service by Jon Robson
 * - Enable thanks JavaScript on mobile by Jon Robson
 * - Replace deprecated Linker::formatComment by Umherirrender

TheWikipediaLibrary

 * - Hooks: Use better callable with EchoAttributeManager::ATTR_LOCATORS by Reedy

TimedMediaHandler

 * - Load ext.tmh.transcodetable on mobile by Jon Robson

TitleBlacklist

 * - Replace use of deprecated Parser::$mTitle by Umherirrender

TorBlock

 * - Replace deprecated Http::get by Umherirrender

Translate

 * - Services.php: Fix Psr\Container\ContainerInterface implementation by Abijeet
 * - Use LanguageNameUtils::AUTONYMS/ALL instead of hard coded value by Umherirrender
 * - Use injected LanguageNameUtils service in TranslateSpecialPage by Umherirrender
 * - Replace deprecated Language::isKnownLanguageTag by Umherirrender
 * - Replace deprecated Language::getFallbacksFor by Umherirrender
 * - Replace deprecated Language::factory by Umherirrender
 * - Replace deprecated Language::fetchLanguageName by Umherirrender
 * - Fix a spelling mistake in a message by Amir E. Aharoni
 * - Add a filter to hide changes to translation pages by Brian Wolff
 * - Add hidden tag 'translate-translation-pages' to translation page changes by Brian Wolff
 * - Sandbox: Restore replyto param for emails by Niklas Laxström
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - Sandbox: Don't use personal email address of the admin by Niklas Laxström
 * - MessageGroups::normalizeId: Handle nullable string argument by Abijeet
 * - Move MessageGroups.php into MessageGroupProcessing  by wangombe
 * - Remove backwards-compatibility code for MW <1.38 by Bartosz Dziewoński
 * - Simplify language header list design by wangombe

TranslationNotifications

 * - Update reference to MessageGroups::class by wangombe
 * - Replace deprecated Language::factory by Umherirrender
 * - Replace deprecated Language::fetchLanguageName(s) by Umherirrender
 * - Replace deprecated HTMLForm::setHeaderText by Umherirrender
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender

TwoColConflict

 * - Replace deprecated Linker::formatComment by Umherirrender

UniversalLanguageSelector

 * - Drop support for MW < 1.37 by wangombe
 * - Replace deprecated Language::getFallbacksFor by Umherirrender
 * - Use LanguageNameUtils::AUTONYMS/SUPPORTED instead of hard coded value by Umherirrender
 * - Replace deprecated Language::fetchLanguageNames by Umherirrender
 * - Update jquery.ime from upstream by Amir E. Aharoni

UploadWizard

 * - i18n: Update public domain year to 1928 by Alexander Vorwerk
 * - Use LanguageNameUtils::ALL instead of hard coded value by Umherirrender
 * - Replace deprecated Language::fetchLanguageName by Umherirrender
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - Replace deprecated Http::get by Umherirrender

VisualEditor

 * - Update VE core submodule to master (049fb828f) by Bartosz Dziewoński
 * - ve.ui.MWTemplatePage: Use instead of in the description by Bartosz Dziewoński
 * - ve.ui.MWTemplatePlaceholderPage: Remove cleanup for old mw.storage entries by Bartosz Dziewoński
 * - Remove unused message 'visualeditor-dialog-transclusion-placeholder' by Bartosz Dziewoński
 * - ve.ui.MWTemplatePlaceholderPage: Move label to real label for accessibility by Bartosz Dziewoński
 * - tests: Replace deprecated Language::factory by Umherirrender
 * - TemplateDialog: separate “Add template” messages by Pols12
 * - Remove redundant/conflicting ARIA label in template dialog by thiemowmde
 * - Update VE core submodule to master (1a3a68a6b) by Bartosz Dziewoński
 * - selenium: Toolbar should open format paragraph menu by Esther Akinloose
 * - selenium: Toolbar should open style text options by Esther Akinloose
 * - selenium: Toolbar should open structure options menu by Esther Akinloose
 * - Log bucket/token for the DiscussionTools mobile a/b test by David Lynch
 * - ve.dm.MWTemplateSpecModel: Document some large params as private class by Thiemo Kreuz
 * - Catch HttpException early by daniel
 * - ParsoidClient: Improve return type documentation for Phan by Bartosz Dziewoński
 * - Change mw.libs.ve.getTargetDataFromHref to not return bogus data for external links by Bartosz Dziewoński
 * - QUnit test module should explicitly target desktop by Jon Robson
 * - Use new stable API for subtitle modification by Jon Robson
 * - Set targets explicitly on desktop only module by Jon Robson

WebAuthn

 * - Load WebAuthn RL modules on mobile by alistair3149

Wikibase

 * - Replace deprecated Language::isValidCode/isValidBuiltInCode by Umherirrender
 * - tests: Replace deprecated Language::factory by Umherirrender
 * - Replace deprecated ConfigFactory::getDefaultInstance by Umherirrender
 * - Replace deprecated Language::getConverter  by Umherirrender
 * - Replace deprecated HTMLForm::setPreText/setHeaderText by Umherirrender
 * - EchoSetupHookHandler: Use better callable with EchoAttributeManager::ATTR_LOCATORS by Reedy
 * - Add EntityIdLabelFormatterFactory to service container by Lucas Werkmeister
 * - REST: Add middlewares to GetItemLabelsRouteHandler by Muhammad Jaziraly
 * - SpecialNewProperty: Use term language validators by Marius Hoch
 * - SpecialNewItem: Use term language validators by Marius Hoch
 * - Do not allow adding mul descriptions by Marius Hoch
 * - REST: Add GetItemLabelsRouteHandler by Muhammad Jaziraly
 * - REST: Add LabelsSerializer by Jakob Warkotsch
 * - REST: Implement GetItemLabels happy path by Muhammad Jaziraly
 * - REST: Update OAS for improved error reports by sihe
 * - REST: Create ItemLabelsRetriever by Jakob Warkotsch
 * - REST: Remove unused error codes by Jakob Warkotsch
 * - REST: Report missing field errors for patched statements by Muhammad Jaziraly
 * - REST: Refactor ERROR_CONTEXT_* to CONTEXT_* by Ollie Shotton
 * - REST: Remove unused patch classes by Jakob Warkotsch
 * - REST: Add "GET Item's Labels" endpoint to OAS by Ollie Shotton
 * - REST: Report invalid field errors for patched statements by Muhammad Jaziraly
 * - Fix spacing of language fallback indicator by Lucas Werkmeister
 * - REST: Use better default in PatchItemStatementTest by Jakob Warkotsch
 * - REST: Use generic JsonPatcher in PatchItemStatement by Jakob Warkotsch
 * - REST: Improve use case error response unit tests by Ollie Shotton
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - REST: Report statement-data-missing-field errors by sihe
 * - REST: Fix ReferenceDeserializer error handling by Ollie Shotton
 * - REST: Disallow console calls in js tests by Jakob Warkotsch
 * - Update mediawiki/mediawiki-codesniffer to 40.0 by Lucas Werkmeister
 * - REST: Allow use cases to depend on serialization by Jakob Warkotsch
 * - REST: fix @covers in RemoveItemStatementValidatorTest by Ollie Shotton
 * - Using ${var} in strings is deprecated, use {$var} instead by Umherirrender
 * - REST: Add ADR about our new approach to patching by Jakob Warkotsch
 * - REST: Add missing unit tests by sihe
 * - REST: Report statement-data-invalid-field errors by Jakob Warkotsch
 * - tests: Remove mocking of deprecated Title::getRestrictions by Umherirrender
 * - REST: Create a generic JsonPatcher service by Ollie Shotton
 * - REST: Add field data to InvalidFieldException by Jakob Warkotsch
 * - NewStatement: Disallow novalue/somevalue with a value by Jakob Warkotsch
 * - REST: Enforce dependency rules with phpat by Jakob Warkotsch
 * - Use SelectQueryBuilder in SqlSubscriptionLookup by Lucas Werkmeister
 * - Remove unused SubscriptionLookup::getSubscriptions by Lucas Werkmeister
 * - Use SelectQueryBuilder in pruneItemsPerSite.php and test by Lucas Werkmeister
 * - REST: Stop using old statement format in phpunit tests by Jakob Warkotsch
 * - REST: Stop using "somevalue" with a value in tests by Jakob Warkotsch
 * - Replace deprecated Linker::formatComment by Umherirrender
 * - Consolidate the repo wdio config by using mediawiki wdio defaults by Michael Große

WikibaseCirrusSearch

 * - Reenable fallback indicator tests by Lucas Werkmeister
 * - Temporarily skip fallback indicator tests by Lucas Werkmeister

WikibaseLexeme

 * - Replace deprecated Language::factory by Umherirrender
 * - Replace deprecated HTMLForm::setPreText/setHeaderText by Umherirrender
 * - Bump new-lexeme to include new version of wikit by gtzatchkova
 * - Add strict types to SenseIdTextFormatter by Lucas Werkmeister
 * - Add strict types to SenseIdHtmlFormatter by Lucas Werkmeister
 * - Selenium: don't error if there is no chronology protector by Michael Große
 * - Reenable fallback indicator tests by Lucas Werkmeister
 * - Temporarily skip fallback indicator tests by Lucas Werkmeister
 * - Restore a Form Selenium test by Lucas Werkmeister
 * - Inject service container into LexemeHandler::factory by Lucas Werkmeister
 * - Extract LexemeHandler construction into a factory method by Michael Große
 * - Show Lemmas in Lexeme revision history title by Michael Große
 * - Extract LemmaLookup by Michael Große
 * - Add types to LexemeLinkFormatter by Michael Große
 * - Add types to LexemeHandler by Michael Große

WikibaseMediaInfo

 * - tests: Replace deprecated Language::factory by Umherirrender

WikibaseQualityConstraints

 * - tests: Replace deprecated Language::getMessageFor by Umherirrender
 * - tests: Replace deprecated Language::factory by Umherirrender
 * - Get EntityIdLabelFormatterFactory from service container by Lucas Werkmeister
 * - Bump unexpected from 13.0.1 to 13.1.0 by Addbot
 * - Bump sinon from 15.0.0 to 15.0.1 by Addbot
 * - Fixes "Module not loadable on target mobile" warnings by Jon Robson

WikidataPageBanner

 * - tests: Replace deprecated Language::factory by Umherirrender

WikiEditor

 * - Log token for the DiscussionTools mobile a/b test by David Lynch

wikihiero

 * - Hooks: Use better callback format by Reedy

WikiLambda

 * - Removed the message wikilambda-special-function-definition-publish-description by dvrandecic
 * - Remove copy on function viewer details tab. by ddw
 * - Align language for "connecting" an implementation or tester to a ZFunction. by ddw
 * - Fix inappropriate use of normal-form Strings on Z3K2s. by ddw
 * - Avoid race condition by having initializeZObject return promise. by EWright
 * - Fix accidentally removed binding of `this`. by EWright
 * - Default Component POC by gengh
 * - Remove ApiHealthCheckTest from Broken group. by EWright
 * - Change the ZMonolingual input to use @input rather than @onchange to by ddw
 * - TesterTable fixes by ddw
 * - replace custom dialog with codex dialog by Julia Kieserman
 * - Fix wrong usage of forEach where looping over the whole set has no sense by Florent
 * - FunctionDefinitionInputsItem: Remove red 'destructive' color from trash icon by ddw

WikimediaIncubator

 * - Replace deprecated Language::factory by Umherirrender
 * - Replace deprecated Language::fetchLanguageName(s) by Umherirrender
 * - Avoid passing null to strtolower by Umherirrender

WikimediaMaintenance

 * - Replace deprecated Language::fetchLanguageNames by Umherirrender
 * - Use LinkBatchFactory to create LinkBatch objects by Umherirrender
 * - Drop two old scripts by Alexander Vorwerk
 * - Replace deprecated Http::get by Umherirrender
 * - Rename WikimediaCommandLine.inc to WikimediaCommandLineInc.php by Alexander Vorwerk

WikimediaMessages

 * - Add IPInfo links via SpecialPageBeforeExecute hook by Thalia

Wikisource

 * - [Wikimedia OCR] Fix insufficient validation of image existence by Sohom

Wikistories

 * - selenium: Create a wikistory by Ezekiel Udoh
 * - selenium: Clean up duplicate test steps by Ezekiel Udoh
 * - selenium: Wikistories can be enabled for a new user and the create story CTA can be seen by Ezekiel Udoh
 * - selenium: Wikistories is enabled in Beta features by Ezekiel Udoh

MinervaNeue

 * - Avoid use of deprecated User::idFromName by Umherirrender
 * - Show the thanks button on mobile special pages by Jon Robson
 * - Always show search results at full width by Matthias Mullie
 * - Tweak margins/paddings of Echo icons by Bartosz Dziewoński
 * - Show both Echo icons in desktop Minerva by Jon Robson
 * - Echo icon should reflect seen status by Jon Robson
 * - Use standard subtitle markup by Jon Robson

Nostalgia

 * - Set the author name shown on Special:Version to "Various authors" by Jack Phoenix
 * - Replace deprecated Language::fetchLanguageName by Umherirrender
 * - Replace deprecated User::idFromName by Umherirrender

Vector

 * - Update header spacing to match spec by bwang
 * - Add generic classes to pinnable container by bwang
 * - Clean up cached HTML code by bwang
 * - Fix page title from overflowing by Lectrician1
 * - Fix missing TOC scrollable indicator by bwang
 * - Use features.js for main menu pinning functionality by bwang
 * - Update main menu templates and classes to be consistent with other pinnable elements by bwang
 * - Remove extraneous $isRegistered variable and VectorServices::getFeatureManager call by Nicholas Ray
 * - Remove -pinnable-element postfix from PinnableElement.mustache by bwang
 * - Rename VectorComponentPinnedContainer to VectorComponentPinnableContainer to match template files by bwang
 * - Refactor page tools, main menu, and TOC components by bwang
 * - Clean up cached .vector-menu-portal code by bwang
 * - Add comment to pinnableElement isPinned method by Nicholas Ray
 * - Move toolbox and menus that follow into page tools by Nicholas Ray
 * - Mark active sections even when their headings are in wrapper elements  by Bartosz Dziewoński
 * - Don't add empty table of contents to page by Jon Robson
 * - Components: MainMenu and Pagetools use VectorComponentMenu by Jon Robson
 * - Refactor: PageTools composes several different components by Jon Robson
 * - Make h2 use explicit font for ckb on Linux to avoid broken ligatures by Andre Klapper

VisualEditor/VisualEditor

 * - Remove obsolete browser support checks for HTML5 History API by Bartosz Dziewoński
 * - ve.dm.SurfaceSynchronizer: Abstract out communication slightly by David Chan

No changes

 * 3D
 * AntiSpoof
 * ArticleCreationWorkflow
 * BetaFeatures
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CentralNotice
 * CharInsert
 * ChessBrowser
 * CiteThisPage
 * CodeMirror
 * Cognate
 * CologneBlue
 * ContactPage
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * DoubleWiki
 * Elastica
 * ElectronPdfService
 * EventStreamConfig
 * ExtensionDistributor
 * ExternalGuidance
 * FeaturedFeeds
 * FileExporter
 * FundraisingTranslateWorkflow
 * Gadgets
 * GeoCrumbs
 * GeoData
 * GlobalUsage
 * GlobalWatchlist
 * GuidedTour
 * Insider
 * InterwikiSorting
 * Josa
 * LabeledSectionTransclusion
 * Listings
 * MapSources
 * MediaModeration
 * MediaSearch
 * MobileApp
 * Modern
 * MonoBook
 * MultimediaViewer
 * NavigationTiming
 * NearbyPages
 * NewUserMessage
 * Nuke
 * OpenStackManager
 * PageNotice
 * PagedTiffHandler
 * PdfHandler
 * Poem
 * PoolCounter
 * RelatedArticles
 * Renameuser
 * RevisionSlider
 * SandboxLink
 * SearchExtraNS
 * SecureLinkFixer
 * ShortUrl
 * SiteMatrix
 * SpamBlacklist
 * SubPageList3
 * SubpageSortkey
 * TemplateStyles
 * TemplateWizard
 * TextExtracts
 * Timeless
 * TocTree
 * TrustedXFF
 * UploadsLink
 * UrlShortener
 * VipsScaler
 * WikiLove
 * WikibaseLexemeCirrusSearch
 * Wikidata.org
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaEvents
 * XAnalytics
 * intersection
 * timeline

Total changes
720 Changes in 112 repos by 105 authors