MediaWiki 1.41/wmf.29/Changelog

Core changes

 * - Branch commit for wmf/1.41.0-wmf.29 by trainbranchbot
 * - Remove deprecated class alias GetBlockErrorMessageKey by Fomafix
 * - Change error code for rest-media-too-many-links by frankie
 * - cache: Dependency inject more args into BacklinkCache by Derick Alangi
 * - Diff: Add missing .mw-diff-inline-moved selector by Ed Sanders
 * - Language: minor cleanup by Reedy
 * - Languages: minor cleanup by Reedy
 * - LanguageConverter implementation minor cleanup by Reedy
 * - LinkHolderArray: Get link classes only when needed by Func
 * - mail: Encode period (ascii 46) if it appears in encoded email header. by Ammarpad
 * - RELEASE-NOTES-1.41: Minor tweaks by Reedy
 * - Remove MagicWord::addToArray without deprecation by thiemowmde
 * - Use word-separator message for Language::formatTimePeriod by Dringsim
 * - doc: Fix variable name in ContentHandlerForModelIDHook by Umherirrender
 * - Remove ip handling for RecentChange from ManualLogEntry by Umherirrender
 * - Hacks to avoid cold cache misses after ParsoidOutputAccess changes by Subramanya Sastry
 * - LivePreview: See if the page exists before requesting diff by Nardog
 * - LivePreview: Fetch diff even if the text is empty by Nardog
 * - OutputPage: Fix typo in BeforePageRedirectHook docs by Timo Tijhof
 * - DifferenceEngine: Distinguish between table and inline diffs by Jon Robson
 * - GenderCache: Improve docs and fix outdated comments by Timo Tijhof
 * - Allow Bcp47Code as parameter to LanguageCode::bcp47ToInternal by C. Scott Ananian
 * - Update Timestamp to v4.1.1 by Arlo Breault
 * - Revert "Remove unused class_alias deprecated in MW 1.40" by Isabelle Hurbain-Palatin
 * - Clarify in inline docs how redirect URLs are expanded by Gergő Tisza
 * - Revert offsetType disabling from 1aa71cf5: Parsoid's rt-testing needs it by Subramanya Sastry
 * - SECURITY: Add xml mime types to $wgMimeTypeExclusions by Reedy
 * - SECURITY: DifferenceEngine: hide diff-multi-sameuser message for supressed revisions by Maryum Styles
 * - SECURITY: Add xml to $wgProhibitedFileExtensions by Reedy
 * - SECURITY: Add 'youhavenewmessagesmanyusers' and 'youhavenewmessages' to $wgRawHtmlMessages by Maryum Styles
 * - Annotate FormOptions::getValue as returning an unsafe value by Daimona Eaytoy
 * - Message: Time period params can be floats by Bartosz Dziewoński
 * - WatchedItemStore: Avoid table insert with empty rows by Ammarpad
 * - Hard-deprecate Article::getRedirectHeaderHtml by C. Scott Ananian
 * - InsertQueryBuilder: When passed no rows, warn rather than die for now by James D. Forrester
 * - Remove unused class_alias deprecated in MW 1.40 by Fomafix
 * - OutputPage: Refactor outputting of mMetatags for clarity by Bartosz Dziewoński
 * - DefaultOptionsLookup: make NamespaceInfo private by DannyS712
 * - Add some typed properties to User-related services by DannyS712
 * - api: Add rvcontentformat-{slot} to define output format per slot  by Umherirrender
 * - Support message parameters on the uselang=x-xss feature by Fomafix
 * - Hard deprecate unnamespaced UserNamePrefixSearch by DannyS712
 * - User: wfDeprecated should reflect original deprecation version by DannyS712
 * - Enable $wgUseXssLanguage in DevelopmentSettings.php by Lucas Werkmeister
 * - Create 'x-xss' language code feature by Lucas Werkmeister
 * - RELEASE-NOTES: fix section for codesniffer update by DannyS712
 * - profiler: Cleanup base class and remove dead code by Derick Alangi
 * - Add base taint-check annotations to Delete- and UpdateQueryBuilder by Daimona Eaytoy
 * - Add base taint-check annotations to InsertQueryBuilder by Daimona Eaytoy
 * - Remove taint-check annotations from IDatabase::insert by Daimona Eaytoy
 * - Drop SpecialBlock::checkUnblockSelf, deprecated since 1.36 by James D. Forrester
 * - Drop SpecialPage::getLanguageConverter, deprecated since 1.36 by James D. Forrester
 * - Drop RecentChange::getPerformer, deprecated since 1.36 by James D. Forrester
 * - Drop Sanitizer::escapeIdReferenceList, deprecated since 1.36 by James D. Forrester
 * - ApiBase::checkUserRightsAny: Drop second paramter, deprecated since 1.36 by James D. Forrester
 * - ApiBase::checkTitleUserPermissions: Enforce PageIdentity input by James D. Forrester
 * - Update Codex from v0.19.0 to v0.20.0         by Volker E
 * - Disable Parsoid support for non-default output versions and offset types by Subramanya Sastry
 * - Bump codesniffer to 42.0.0 by Amir Sarabadani
 * - Hard deprecate returning a string from SpecialPage::getDescription by C. Scott Ananian
 * - chmod 644 config related files by Reedy
 * - Introduce ChangeTagsStore::modifyDisplayQueryBuilder by Amir Sarabadani
 * - Use Authority to check rate limits in the API. by daniel
 * - MediaWiki: Re-arrange code so $host really only contains the host by thiemowmde
 * - objectcache: Deprecate unused SqlBagOStuff::deleteAll by Derick Alangi
 * - Make EmailUser stable, deprecate old methods by Daimona Eaytoy
 * - MainConfigSchema: Update doc for "ResourceLoader: Default File modules to mobile and desktop targets" by Winston Sung
 * - Fix duplicate word "to" in comment in mediawiki.api/rest.js by Dreamy Jazz
 * - config: replace unused Logger in EtcdConfig with native trigger_error by Timo Tijhof
 * - SpecialMyLanguage: Tweak comments by Reedy
 * - EmailUser: use authorizeAction by daniel
 * - tests: Migrate away from LoadBalancer::getConnection by Amir Sarabadani
 * - Switch to ICP in some easy cases by Amir Sarabadani
 * - MediaWiki: Use UrlUtils service over wfParseUrl by Derick Alangi
 * - MediaWiki: Use `$host` instead of trying to access array (again) by Derick Alangi
 * - generateSitemap: Fix the variant query param by Func
 * - Remove deprecated class Wikimedia\Rdbms\MySQLMasterPos by Fomafix
 * - editRecovery: Delete edit recovery data after 30 days by TheresNoTime
 * - doc: Improve description of type in extension.schema.v1.json by Reedy
 * - api: Make ApiEditPageTest stop using $originalRevId incorrectly by Adam Wight
 * - correcting namespace names in kannada language by Anzx
 * - ResourceLoader: Enable source maps by default by Timo Tijhof
 * - DerivedPageDataUpdater: Do HTMLCacheUpdate on file page redirect changes by Bartosz Dziewoński
 * - DerivedPageDataUpdater: Only do RefreshLinks on file page redirect changes by Bartosz Dziewo?ski
 * - DerivedPageDataUpdater: Fix unset $this->pageState['oldRevision'] by Bartosz Dziewoński
 * - LinksUpdate: Remove deprecated public properties by Bartosz Dziewoński
 * - WikiPage: Remove redundant assertions in updateRevisionOn by Bartosz Dziewoński
 * - WikiPage: Make internal updateRedirectOn private by Bartosz Dziewoński
 * - Deprecate TOC mutation in OutputPageParserOutput hook by C. Scott Ananian
 * - Move getRedirectTargetAndText out of WikitextContent by daniel
 * - Unit test for LinkRenderer::makeRedirectHeader used by WikitextContentHandler by C. Scott Ananian
 * - Move Article::getRedirectHeaderHtml to LinkRenderer::makeRedirectHeader by C. Scott Ananian
 * - Hard deprecate explicit arguments passed to OutputPage::prepareErrorPage by C. Scott Ananian
 * - Hard deprecate returning a string from Action::getPageTitle  by C. Scott Ananian
 * - Diffs: Toogle diff type container after api request is done by Dayllan Maza
 * - EditPage: Remove outdated todo comment by Bartosz Dziewoński
 * - Add language Karekare (kai) by Srishakatux
 * - Show link to view diff of deleted revision also when title not given by Bartosz Dziewoński

Vendor

 * - Bump wikimedia/parsoid to 0.18.0-a26             by C. Scott Ananian
 * - Add endroid/qr-code 4.6.1  by MusikAnimal
 * - Update Timestamp to v4.1.1 by Arlo Breault
 * - Bump metrics-platform by Arlo Breault

AbuseFilter

 * - Remove "Back to" from two messages by Amir E. Aharoni
 * - Use assertStatusGood and such from MediaWiki core by thiemowmde

ArticlePlaceholder

 * - Use HookHandlers for core hooks by Umherirrender
 * - SpecialPage::getDescription should return a Message by Bartosz Dziewoński

Babel

 * - Use HookHandlers for core hooks by Umherirrender
 * - Create BabelAutoCreate::MSG_USERNAME by Umherirrender

CampaignEvents

 * - EventDetails: reset message validity after sending email by Daimona Eaytoy
 * - Capitalize "less than 5" in the stats report by Daimona Eaytoy
 * - Update visibility rules for aggregated data in EventDetails by Daimona Eaytoy
 * - Update help link in the registration form by Daimona Eaytoy
 * - Implement restriction of not being able to change the end date of events backend by Claudio Melo

CentralAuth

 * - SpecialGlobalRenameQueue: Swap 'mw-ui-button-group' nav to tabs/breadcrumbs    by Bartosz Dziewoński
 * - SpecialGlobalRenameQueue: Swap 'mw-ui-flush-right' classes for CSS by Bartosz Dziewoński
 * - RenameQueueTablePager: Remove 'mw-ui-progressive' that does nothing by Bartosz Dziewoński
 * - Fix redirect to main page after top-level autologin by Gergő Tisza
 * - Fix handling of missing returnUrlToken by Gergő Tisza
 * - tests: Skip SecurePoll hook handler when extension is not loaded by Umherirrender
 * - Add missing "skip if AbuseFilter not loaded" to a test by thiemowmde
 * - Replace getMessage(Object) with assertStatusGood/Error etc. by thiemowmde
 * - SpecialPage::getDescription should return a Message by Bartosz Dziewoński

CheckUser

 * - Use InsertQueryBuilder::insertInto by Tim Starling
 * - Remove moveLogEntriesFromCuChanges.php from update.php by Dreamy Jazz
 * - Respect log_deleted when reading new in Special:CheckUser 'Get edits' by Dreamy Jazz
 * - Create UserMergeHandler for ::onUserMergeAccountFields handler by Dreamy Jazz
 * - Hide "checks by this user" for temporary accounts by Dreamy Jazz
 * - Use LogPage::extractParams for legacy log parameters by Dreamy Jazz
 * - clienthints: Handle JS API requests with invalid parameter types by Dreamy Jazz
 * - Fixes related to 'checkuser' right being used by IP addresses by Dreamy Jazz

CirrusSearch

 * - Use HookHandlers for core hooks by Umherirrender
 * - Add version suffix to mediawiki.cirrussearch_page_rerender by David Causse

Citoid

 * - SECURITY: Fix messages in CitoidPendingDialog by Lucas Werkmeister

cldr

 * - Load CLDR localisation for 'kok' for MediaWiki code 'gom-deva' by Bartosz Dziewoński
 * - Use HookHandlers for core hooks by Umherirrender
 * - Rename language codes sr-ec and sr-el to sr-cyrl and sr-latn by Fomafix

Cognate

 * - Use HookHandlers for core hooks by Umherirrender

Collection

 * - Fix Session class storing null in the list of 'items' by thiemowmde
 * - SpecialPage::getDescription should return a Message by Bartosz Dziewoński
 * - Add missing safe guard to show/show_soon_timeout by thiemowmde
 * - Fix undefined index in CollectionRenderingAPI by thiemowmde

CommonsMetadata

 * - Use HookHandlers for core hooks by Umherirrender

ContactPage

 * - SpecialPage::getDescription should return a Message by Bartosz Dziewoński

ContentTranslation

 * - CX3 Build 0.2.0+20230929        by NikG
 * - CX PublishedTranslationDTO: Let target url to be nullable by NikG
 * - Use HookHandlers for core hooks by Umherirrender
 * - SX publish translation test: Fix mock translator api to return promises by NikG
 * - SX draft restoration: Check if sentence found before setting its content by NikG
 * - Confirm SX with prefilled section: Redirect to platform-specific editor by NikG
 * - SX: Add user assertion to auto save and publish requests by NikG
 * - SX: Comment formatting fix by Wangombe
 * - SX: Create AssertUserError and use it by NikG
 * - SX: Assert user before each router navigation by NikG
 * - Special*::getDescription: Return a Message, not a string by James D. Forrester
 * - CX UI lib: Add zero col-offset for each breakpoint to grid classes by NikG
 * - SX: Set border-color:transparent in .mw-ui-button in MWButton.vue by wangombe
 * - SX dashboard: Do not store suggestions for published translations by NikG
 * - SX: Move isLoginDialogOn variable to application state by NikG
 * - SX: Check if user is anon, instead of the related config parameter by NikG
 * - SX: Scroll to selected segment on selected translation unit update by NikG

Disambiguator

 * - Use HookHandlers for core hooks by Umherirrender

DiscussionTools

 * - HookUtils: Fix checking page props by Bartosz Dziewoński
 * - Turn comment timestamps into permalinks by Ed Sanders
 * - Show new topics subscription button on history pages by Ed Sanders
 * - topicsubscriptions.js: Factor out initNewTopicsSubscription and expose by Ed Sanders

DismissableSiteNotice

 * - Ignore only site notices  by Umherirrender

DonationInterface

 * - Reset session for new attempt after setting donor backup data. by Damilare Adedoyin
 * - Update required version of SmashPig to 0.8.8.3 by wfan
 * - Update required version of SmashPig by wfan
 * - Add log for createPayment params to see if venmo have all customer info by wfan
 * - Add api for getPaymentMethods by cstone
 * - Drop composer autoloader listing for WmfFramework by Elliott Eggleston
 * - Add fiscal_number to MC message by Elliott Eggleston

EntitySchema

 * - SECURITY: Run EditFilterMergedContent hook on edits by Manfredi Martorana
 * - Special*::getDescription: Return a Message, not a string by James D. Forrester

EventBus

 * - Use HookHandlers for core hooks by Umherirrender

EventLogging

 * - Use HookHandlers for core hooks by Umherirrender
 * - Update testDispatchAddsContextAttributes by Arlo Breault
 * - Update metrics platform references and vendor code to 2.1.0 by Marcel Ruiz Forns

ExternalGuidance

 * - SpecialPage::getDescription should return a Message by Bartosz Dziewoński

FileExporter

 * - Use HookHandlers for core hooks by Umherirrender

FileImporter

 * - Use HookHandlers for core hooks by Umherirrender
 * - Update revision details requests to formatversion=2 by Adam Wight
 * - Stop using core's ILocalizedException interface by thiemowmde

Flow

 * - Remove unnecessary "mw-ui-flush-right" by Bartosz Dziewoński
 * - Use HookHandlers for core hooks by Umherirrender

GeoData

 * - Use HookHandlers for core hooks by Umherirrender
 * - api: Pass IDatabase to ApiPageSet::populateFromQueryResult by Umherirrender

GlobalUsage

 * - Use HookHandlers for core hooks by Umherirrender

GlobalUserPage

 * - Use HookHandlers for core hooks by Umherirrender

GrowthExperiments

 * - Convert ConfirmEmailHooks to HookHandlers by Umherirrender
 * - Personalized praise: avoid extra top gutter in settings form by Sergio Gimeno
 * - Fix phan for GrowthExperiments by Martin Urbanec

GuidedTour

 * - Use HookHandlers for core hooks by Umherirrender

ImageMap

 * - Add NOTES.md with a note about the migration of the Parsoid code. by Subramanya Sastry
 * - Enable Parsoid integrated tests by Subramanya Sastry

Insider

 * - Use HookHandlers for core hooks by Umherirrender

Interwiki

 * - SpecialInterWiki::getDescription: Return a Message, not a string by James D. Forrester

JsonConfig

 * - Use HookHandlers for core hooks by Umherirrender
 * - Move static hook handler from JCSingleton to JCHooks by Umherirrender

Kartographer

 * - Make use of upstream assertStatusGood/Error and such by thiemowmde

LdapAuthentication

 * - Do not set $wgPasswordResetRoutes['domain'] by Taavi Väänänen
 * - Use HookHandlers for core hooks by Umherirrender

LiquidThreads

 * - Use pass-by-ref on InfoAction hook by Umherirrender
 * - Special*::getDescription: Return a Message, not a string by James D. Forrester

MachineVision

 * - Use HookHandlers for core hooks by Umherirrender
 * - SpecialPage::getDescription should return a Message by Bartosz Dziewoński

MassMessage

 * - Use HookHandlers for core hooks by Umherirrender
 * - Remove use of RenameUserPreRename hook by Umherirrender
 * - build: Suppress phan issue in SpecialMassMessage by Umherirrender

Math

 * - Fix tilde spacing by Stegmujo
 * - Fix escape spacing by Stegmujo
 * - Fix alignments by Stegmujo
 * - Make use of upstream assertStatusGood/Error and such by thiemowmde
 * - build: Update linters by Ed Sanders
 * - Fix bigcap and bigcup scripts not placed correctly by Stegmujo
 * - Move error to merror tags by Stegmujo
 * - Fix oint size by Stegmujo
 * - Fix negation (not) for operatorname by Stegmujo
 * - Fix k=1 should appear under sum in displaystyle by Stegmujo
 * - Fix MMLGenerationParserTest creating HTML file  by Stegmujo

MediaSearch

 * - SpecialPage::getDescription should return a Message by Bartosz Dziewoński
 * - Fix duration indicator for media longer than 99 minutes by Derk-Jan Hartman
 * - Only show media details on a plain left, unmodified click by Derk-Jan Hartman

MobileFrontend

 * - Use HookHandlers for core hooks by Umherirrender
 * - Toggler: Fix ignoring clicks on section edit links by Bartosz Dziewoński
 * - Don't error when editing if VE isn't installed by David Lynch
 * - Remove deprecated mediawiki.ui.input from editor overlay by Jon Robson
 * - Cleanup: Storybook and user page no longer use mediawiki ui by Jon Robson

MultimediaViewer

 * - Use Codex styles for buttons in mmv.ui.download.pane by Simon Legner

NearbyPages

 * - Drop unused mediawiki ui button styles by Jon Robson

Newsletter

 * - Use HookHandlers for core hooks by Umherirrender

OpenStackManager

 * - Use HookHandlers for core hooks by Umherirrender
 * - Move static hook handler from OpenStackNovaUser to OpenStackNovaHooks by Umherirrender

ORES

 * - Use HookHandlers for core hooks by Umherirrender

PageAssessments

 * - SpecialPage::getDescription should return a Message by Bartosz Dziewoński
 * - Use HookHandlers for core hooks by Umherirrender

PageTriage

 * - SECURITY: Don't expose usernames if user is hidden by Sohom

ParserFunctions

 * - Rethrow TimeoutException when handling parser function by Umherirrender

Popups

 * - Disable error logging by Jon Robson
 * - [build] Bump wdio-mediawiki to v2.3.0 by WMDE-Fisch
 * - Disable reference previews when the navigation popups gadget is used by WMDE-Fisch

ProofreadPage

 * - Fix CanonicalNamespaces HookHandlers in extension.json by Umherirrender
 * - Use HookHandlers for core hooks by Umherirrender
 * - Remove hook handler for deprecated ParserTestTables hook by Umherirrender
 * - SECURITY: Escape formatNumNoSeperator( $number ) output by Sohom
 * - [build] Bump wdio-mediawiki to v2.3.0 by WMDE-Fisch
 * - Convert quality radio buttons to PageQualityInputWidget by Sam Wilson
 * - Replace deprecated Article::getRedirectHeaderHtml by C. Scott Ananian

PropertySuggester

 * - Use HookHandlers for core hooks by Umherirrender

QuickSurveys

 * - Drop unreachable expression by Adam Wight

Quiz

 * - Use HookHandlers for core hooks by Umherirrender
 * - Use valid parser $outputType in unit tests by tacsipacsi

ReadingLists

 * - Use HookHandlers for core hooks by Umherirrender
 * - tests: Add group Database to UtilsTest by Umherirrender

RelatedArticles

 * - Use HookHandlers for core hooks by Umherirrender

ReportIncident

 * - Remove "Private" from extension description following project rename by MarcoAurelio
 * - package.json: Don't use nyc for coverage report by Kosta Harlan
 * - Follow-up: Disable required field checks again after call to $reset.  by Dreamy Jazz
 * - Perform form validation on step 2 and reset form on successful submit  by Dreamy Jazz
 * - Remove trailing space from step 1 dialog message by Dreamy Jazz

RevisionSlider

 * - Fix bad use of jQuery.append with a text message by thiemowmde

Scribunto

 * - Rethrow TimeoutException when using mw.language.formatDate function by Umherirrender

SecureLinkFixer

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

ShortUrl

 * - Add default ShortUrlReadOnly value in extension.json by Ammarpad
 * - Use HookHandlers for core hooks by Umherirrender

SyntaxHighlight_GeSHi

 * - Re-enable Parsoid testing by Subramanya Sastry

TemplateData

 * - Inject MainConfig service to TemplateData hooks by Sam Wilson

TemplateSandbox

 * - Use HookHandlers for core hooks by Umherirrender

Thanks

 * - Use HookHandlers for core hooks by Umherirrender

TimedMediaHandler

 * - Dont use intval in getShortDesc and getLongDesc by Dringsim
 * - Show file size in getLongDesc by Dringsim
 * - build: Bump mediawiki-phan-config to 0.13.0 by Daimona Eaytoy
 * - Sync up TMH repo with Parsoid by Arlo Breault
 * - HTTP Live Streaming (HLS for iOS) and WebM transcode cleanup  by Brion Vibber
 * - Attempting to work around newly trapping SecurityCheck-XSS by Brion Vibber
 * - Reduce TMH html footprint by Derk-Jan Hartman

TitleBlacklist

 * - tests: Add group Database to ApiTitleBlacklistTest by Umherirrender

Translate

 * - Remove hook handler for deprecated ParserTestTables hook by Umherirrender
 * - WebService: add more type declarations by Niklas Laxström
 * - Update PHP linters by Niklas Laxström
 * - Rename MessageGroupReview to MessageGroupReviewStore by Abijeet
 * - MessageGroupReview: Shorten group id when storing in database by Abijeet
 * - *SpecialPage::getDescription: Return a Message, not a string by James D. Forrester
 * - MessageGroupReview: Move group states related methods into class by Abijeet

TwoColConflict

 * - Use HookHandlers for core hooks by Umherirrender

UploadWizard

 * - Use HookHandlers for core hooks by Umherirrender

UrlShortener

 * - Use HookHandlers for core hooks by Umherirrender

VueTest

 * - Update VueTest for Codex 0.20.0 pre-release by Eric Gardner

VisualEditor

 * - Update VE core submodule to master (ca5f6c26d)   by David Lynch
 * - build: Upgrade grunt-banana-checker from 0.11.0 to 0.11.1 by James D. Forrester
 * - Update comment w/ rename of Article::getRedirectHeaderHtml by C. Scott Ananian

Wikibase

 * - In query builders, use insertInto and deleteFrom by Tim Starling
 * - Fix diff title escaping by Lucas Werkmeister
 * - client: Fix path in MaintenanceShellStart hook by Umherirrender
 * - client: Move MaintenanceShellStart hook to TrivialHookHandler by Umherirrender
 * - client: Move LoginFormValidErrorMessagesHandler to HookHandlers by Umherirrender
 * - client: Move GetDoubleUnderscoreIDs hook to HookHandlers by Umherirrender
 * - Streamline over-engineering in SimpleCacheWithBagOStuff by thiemowmde
 * - REST: Add GetPropertyDescription to RouteHandlersTest by Jakob Warkotsch
 * - REST: Remove RestHandlerTestUtilsTrait by Jakob Warkotsch
 * - REST: Centrally test route handlers handling expected exceptions by Jakob Warkotsch
 * - REST: Add spec tests for GetPropertyDescription by Silvan
 * - REST: Validate GetPropertyDescription requests by Silvan
 * - REST: Create generic use case step for Patching by Ollie Shotton
 * - REST: Add OpenAPI validation tests for PatchItemDescriptions by Ollie Shotton
 * - REST: Add metadata to PatchItemDescriptionsResponse by Ollie Shotton
 * - REST: Add middlewares to "Patch Item Descriptions" by Ollie Shotton
 * - REST: Respond 404/409 if item not found/redirected by Ollie Shotton
 * - REST: Add GetPropertyAliasesInLanguage spec tests by muja
 * - Make use of upstream assertStatusGood/Error and such by thiemowmde
 * - REST: Add GetPropertyAliasesInLanguage validation by muja
 * - REST: Validate the patched descriptions by Ollie Shotton
 * - REST: Add GetPropertyAliasesInLanguage middlewares by muja
 * - REST: Move all happy path tests into RouteHandlersTest by Jakob Warkotsch
 * - REST: Centrally test handling unexpected errors by Jakob Warkotsch
 * - REST: Check that all route handlers have r/w access tests by Jakob Warkotsch
 * - REST: Test route read/write access centrally by Jakob Warkotsch
 * - Enable FunctionComment.SpacingAfterParamName sniff by thiemowmde
 * - REST: Handle errors that occur while patching descriptions by Ollie Shotton
 * - REST: Add middlewares to GetPropertyDescription by Silvan
 * - REST: Mark GetPropertyLabel as production-ready by Jakob Warkotsch
 * - REST: Handle property aliases not defined for a specific language by muja
 * - Remove obsolete comments and enable FunctionComment.WrongStyle sniff by thiemowmde
 * - REST: Check existence in GetPropertyAliasesInLanguage by muja
 * - REST: Create GetPropertyAliasesInLanguage happy path by muja
 * - SECURITY: Add rate limits and edit filters to item merging by Lucas Werkmeister
 * - REST: Validate user input for `PatchItemDescriptions` by Ollie Shotton
 * - REST: Handle property description not defined by Silvan
 * - REST: Check existence in GetPropertyDescription by Silvan
 * - REST: Use own bootstrap file for PHPStan by Jakob Warkotsch
 * - REST: Create GetPropertyDescription happy path by Silvan
 * - REST: Fix phpstan by creating LocalSettings.php by Jakob Warkotsch
 * - REST: Create PropertyAliasesInLanguageRetriever by muja
 * - REST: Add GetPropertyAliasesInLanguage route to OAS by muja
 * - REST: Generate edit summary for "Patch Item Descriptions" by Ollie Shotton
 * - REST: Add PropertyDescriptionRetriever by Silvan
 * - Replace deprecated Article::getRedirectHeaderHtml by C. Scott Ananian

WikibaseCirrusSearch

 * - Use HookHandlers for core hooks by Umherirrender

WikibaseLexeme

 * - Use HookHandlers for core hooks by Umherirrender
 * - Make use of upstream assertStatusError in tests by thiemowmde
 * - Replace getMessageObject calls with assertStatusError by thiemowmde
 * - SpecialPage::getDescription should return a Message by Bartosz Dziewoński
 * - SpecialPage::getDescription should return a Message by C. Scott Ananian
 * - Add paragraph about SNL mirror in phabricator to README-dev by Michael Große

WikibaseLexemeCirrusSearch

 * - Use HookHandlers for core hooks by Umherirrender

WikibaseMediaInfo

 * - Use HookHandlers for core hooks by Umherirrender

WikibaseQualityConstraints

 * - Use HookHandlers for core hooks by Umherirrender
 * - SpecialPage::getDescription should return a Message by Bartosz Dziewoński
 * - Fix Phan SecurityCheck-DoubleEscaped errors by Bartosz Dziewoński

Wikidata.org

 * - Use HookHandlers for core hooks by Umherirrender

WikiLambda

 * - Use TitleArrayFromResult in ZObjectStore by Derick Alangi
 * - ZObjectSecondaryDataUpdate: Delete before adding language cache values by James D. Forrester
 * - Call correct updatedLabels method when updating input label fields by gengh
 * - Apply npm lint:fix by gengh
 * - Remove multiple instances of MetadataDialog component in FunctionReport widget by gengh
 * - Function viewer: Move up 'State' column for testers and implementations by James D. Forrester
 * - Create an Argument Reference component by gengh
 * - Update function-schemata sub-module to HEAD (958de5c)  by James D. Forrester
 * - ZObjectEditAction: Use getTitle not getPageTitle to get the target page by James D. Forrester
 * - Special*::getDescription: Return a Message, not a string by James D. Forrester
 * - WikiLambdaApiBase: Add a catch clause for RequestTimeoutException by dmartin
 * - Update function-schemata sub-module to HEAD (0c37460) by James D. Forrester
 * - ZObjectHistoryAction::getPageTitle: Return a Message, not a string by James D. Forrester
 * - ZObjectSecondaryDataUpdate: Suppress a SQLInjection warning for now by James D. Forrester
 * - Replace methods which return a static i18n string in a content context by James D. Forrester
 * - FunctionEvaluator: No need for a method to get a static i18n string by James D. Forrester

WikiLove

 * - Use HookHandlers for core hooks by Umherirrender

WikimediaEditorTasks

 * - Use HookHandlers for core hooks by Umherirrender
 * - tests: Add group Database to UtilsTest and fix CounterTest by Umherirrender

WikimediaEvents

 * - Use HookHandlers for core hooks by Umherirrender
 * - EditAttemptStep: let timing values fall back to -1 by David Lynch

WikimediaIncubator

 * - Return Message from SpecialPage::getDescription by Umherirrender
 * - Use HookHandlers for core hooks by Umherirrender

WikimediaMessages

 * - Remove unused CSS selectors by Jon Robson
 * - Add more warnings to WebAuthn 2FA by Derk-Jan Hartman

Wikistories

 * - Use HookHandlers for core hooks by Umherirrender

MinervaNeue

 * - Apply content styles to mw teleport target by Sergio Gimeno

Nostalgia

 * - Handle SpecialPage::getDescription returning a Message by Bartosz Dziewoński
 * - Revert "NostalgiaTemplate.php: Fix array illegal offset error" by Bartosz Dziewoński
 * - NostalgiaTemplate.php: Fix array illegal offset error by Ammarpad

Vector

 * - Codex-search NPM module was deprecated, use codex instead by Jon Robson
 * - Web typography prototype survey by Jan Drewniak
 * - Add new utility function for detecting pinned elements by ksarabia
 * - Add replace .vector-sidebar-container-no-toc with .vector-toc-available and .vector-toc-not-available by bwang
 * - SECURITY: Properly escape vector-toc-toggle-button-label by Lucas Werkmeister
 * - VectorComponentTableOfContentsTest: Add mocks for Message:: escaped and rawParams by James D. Forrester
 * - SECURITY: Catch MalformedTitleException from vector-intro-page by Lucas Werkmeister
 * - Apply body styles to teleported elements in vector legacy by Sergio Gimeno
 * - It should be possible to persist Vector font size for registered users by Jon Robson
 * - Apply body styles to mw teleport target by Sergio Gimeno
 * - build: Update devDependencies by Ed Sanders

VisualEditor/VisualEditor

 * - Provide alternate keyboard shortcut for toolbar search for mac Firefox by David Lynch
 * - ChromeHeadless: Do not pass a spurious empty flag by David Chan

No changes

 * 3D
 * ActiveAbstract
 * AdvancedSearch
 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * BetaFeatures
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * CentralNotice
 * CharInsert
 * ChessBrowser
 * Cite
 * CiteThisPage
 * CodeEditor
 * CodeMirror
 * CologneBlue
 * ConfirmEdit
 * CreditsSource
 * Dashiki
 * DoubleWiki
 * Echo
 * Elastica
 * ElectronPdfService
 * EventStreamConfig
 * ExtensionDistributor
 * FeaturedFeeds
 * FlaggedRevs
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * Gadgets
 * GeoCrumbs
 * GlobalBlocking
 * GlobalCssJs
 * GlobalPreferences
 * GlobalWatchlist
 * GoogleNewsSitemap
 * Graph
 * IPInfo
 * ImageSuggestions
 * InputBox
 * InterwikiSorting
 * Josa
 * LabeledSectionTransclusion
 * LandingCheck
 * Linter
 * Listings
 * LoginNotify
 * MapSources
 * MediaModeration
 * MobileApp
 * Modern
 * MonoBook
 * NavigationTiming
 * NewUserMessage
 * Nuke
 * OATHAuth
 * OAuth
 * OAuthRateLimiter
 * PageImages
 * PageNotice
 * PageViewInfo
 * PagedTiffHandler
 * ParserMigration
 * PdfHandler
 * Phonos
 * Poem
 * RSS
 * RealMe
 * SandboxLink
 * Score
 * SearchExtraNS
 * SearchVue
 * SecurePoll
 * SimilarEditors
 * SiteMatrix
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * TemplateStyles
 * TemplateWizard
 * TextExtracts
 * TheWikipediaLibrary
 * Timeless
 * TocTree
 * TorBlock
 * TranslationNotifications
 * TrustedXFF
 * UniversalLanguageSelector
 * UploadsLink
 * VipsScaler
 * WebAuthn
 * WikiEditor
 * WikidataPageBanner
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaMaintenance
 * Wikisource
 * XAnalytics
 * intersection
 * timeline
 * wikihiero

Total changes
394 Changes in 94 repos by 79 authors