MediaWiki 1.39/wmf.24/Changelog

Core changes

 * - Branch commit for wmf/1.39.0-wmf.24 by trainbranchbot
 * - Update styling of messages that show up above search results by Mark Shenouda
 * - MediaWiki-Docker: Switch PHP images to PHP7.4  by James D. Forrester
 * - MediaWiki-Docker: Upgrade buster-apache2 image to latest by James D. Forrester
 * - ppearance update of "Sister project widgets" on Special:Search by Mark Shenouda
 * - rdbms: Rewrite DBConnRef params condition as early return check by Timo Tijhof
 * - ParsoidHandler: do not emit etag for wt2html by daniel
 * - Update styling of message that show up when no results are found by Mark Shenouda
 * - Support CDN query parameter re-ordering by Ori Livneh
 * - rdbms: Stop accepting live connection in DBConnRef constructor by Amir Sarabadani
 * - Storage: Remove using LoadBalancer::getConnectionRef in NameTableStore by Amir Sarabadani
 * - rdbms: Move several methods from IDatabase to IMaintainableDatabase by Amir Sarabadani
 * - Move the setup of fake revision for preview to ContentHandler by Func
 * - rdbms: Drastically simplify Sqlite db tests by Amir Sarabadani
 * - LoginSignupSpecialPage: Check if $value is a string before length by Reedy
 * - page: Use ContextSource for Config and messages by Umherirrender
 * - user: Move logic for unregistered HTTPS pref to User::requiresHTTPS by Umherirrender
 * - tests: Add missing @group Database by Umherirrender
 * - Search improvements CSS tweaks. by Joseph Seddon
 * - tests: Remove non-existing method arguments from revision-related tests by Thiemo Kreuz
 * - mediawiki.util: Optimize wfUrlencode and make standalone by Timo Tijhof
 * - Replace complicated setup with createNoOpMock in TitleTest by Thiemo Kreuz
 * - Remove not needed inline @var from ChangesListSpecialPage by Thiemo Kreuz
 * - Fix incomplete test case in CorsUtilsTest by Thiemo Kreuz
 * - mediawiki.util: Add parentheses to wfUrlencode test cases by Timo Tijhof
 * - api: Add rel=nofollow to help examples by Bryan Davis
 * - search: Replace deprecated User::getOption by Umherirrender
 * - watcheditem: Replace deprecated User::getOption by Umherirrender
 * - mail: Replace deprecated User::getOption by Umherirrender
 * - SiteStats: Migrate Database::select usages to SelectQueryBuilder by Amir Sarabadani
 * - externalstore: Migrate Database::select usages to SelectQueryBuilder by Amir Sarabadani
 * - PageProps: Migrate Database::select usages to SelectQueryBuilder by Amir Sarabadani
 * - arywiki: change namespace translations, add unchanged namespaces and add old translations as aliases by Ideophagous
 * - Allow DB config to be reloaded on the fly by daniel
 * - Fix broken user name vs. IP import logic in WikiImporter  by Thiemo Kreuz
 * - Update link target of Installation guide by Meno25
 * - tests: Update parser test after i18n change by Umherirrender
 * - Make use of ?? and ?: operators where it makes sense by Thiemo Kreuz
 * - Improve parser tests for and  by C. Scott Ananian
 * - Rename CoreParserFunctions::mwnamespace function to ::namespace by C. Scott Ananian
 * - SiteConfiguration: Document some non-obvious optimizations by Timo Tijhof
 * - SiteConfiguration: Rename and clarify $suffix param in public getters by Timo Tijhof
 * - Update docstring per introduction of maintenance/generateConfigSchema.php by lokal-profil
 * - SpecialMergeHistory: Set timestamp to '' if no mergepoint by Reedy
 * - SpecialMergeHistory: Set defaults for target and dest parameters by Reedy
 * - SiteConfiguration micro-optimisations by Tim Starling
 * - Revert "MessageCache: Avoid 'contributions' replicas" by Lucas Werkmeister
 * - build: Update wikimedia/running-stat to 2.1.0 by Timo Tijhof
 * - Remove deprecated $wgParser by TheSandDoctor
 * - Raise minimum supported postgres version from 9.5 to 10 by James D. Forrester
 * - Fix LoginHelper::showReturnToPage docs by Gergő Tisza
 * - filebackend: Remove LBFactory dep from LockManager service by Timo Tijhof
 * - rdbms: Improve usability of "Sub-optimal transaction" warning by Timo Tijhof
 * - SiteConfiguration: Clean up file doc header by Timo Tijhof
 * - ResourceLoader: Remove redundant getCombinedVersion try-catch by Timo Tijhof
 * - objectcache: Remove unused WRITE_SYNC flag by Timo Tijhof
 * - tests: Remove unneeded set of global $wgSkinLessVariablesImportPaths by Umherirrender
 * - BadFileLookupTest: avoid ' in literals, breaks gitiles highlighting by DannyS712
 * - Fix code doc reference to removed function setOption by Andre Klapper
 * - ParsoidHandler: pass metrics object to HTMLTransformInput by daniel
 * - skin,installer: Trim spaced lines from generated settings file by Timo Tijhof
 * - UploadStash: Check if us_prop is set in the fileMetadata by Reedy
 * - SpecialGoToInterwiki: Null coalescene $par by Reedy
 * - ParsoidHandler: fix page bundle input with no orig HTML. by daniel
 * - SpecialBlock: Better handle null in getTargetUserTitle by Reedy
 * - ParsoidHandler: add test for pagebundle input without original HTML by daniel
 * - Migrate from `setMwGlobals` to `overrideConfigValue(s)` by Derick Alangi
 * - Skin: Remove schema leftover for removed $wgFooterLinkCacheExpiry by Timo Tijhof
 * - rdbms: Migrate locking SQL to SQLPLatform by Amir Sarabadani
 * - rdbms: Migrate SchemaVar and replaceVars from Database to SQLPlatform by Amir Sarabadani
 * - rdbms: Pass DatabaseDomain instead of schema and prefix by Amir Sarabadani
 * - ResourceLoader: Fix confusing DependencyStoreException trace logs by Timo Tijhof
 * - session: Remove unrealized claims about WRITE_SYNC requirements by Timo Tijhof
 * - Use SelectQueryBuilder instead of IDatabase::select by Derick Alangi
 * - Add Kanuri support to RELEASE_NOTES by Amir E. Aharoni
 * - ResourceLoader: Make testRespondInternalFailures more realistic by Timo Tijhof
 * - ResourceLoader: Remove outer TimeoutException try-catch in respond by Timo Tijhof
 * - Remove unneeded use of TitleValue::newFromPage by Umherirrender
 * - rebuildLocalisationCache: Avoid compare with false for bool, use ! by Umherirrender
 * - Cast results of Sqlite test to string [php 8.1] by Brian Wolff
 * - Make ChangesListSpecialPageTest cast to string for php 8.1 by Brian Wolff
 * - Do not test giving a null fragment to Title::makeTitle by Brian Wolff
 * - QueryPage: Improve isExpensive docs and ref UpdateSpecialPages by Timo Tijhof
 * - Use a universal selector (*) to match the media element   by Arlo Breault
 * - objectcache: add BagOStuff::MAX_CONFLICTS_ONE constant by Aaron Schulz
 * - Add revid to category changes by STran
 * - objectcache: avoid php 8.1 argument type warnings in genericKeyFromComponents by Aaron Schulz
 * - build: Run eslint for /docs/ and make pass by Umherirrender
 * - Improve generateSchemaSql.php/generateSchemaChangeSql.php by Umherirrender
 * - Fix typo in extension.schema.json by Umherirrender
 * - Remove line about upgrading extensions from 1.14 by Andre Klapper
 * - Update sr-related language fallback chain by Winston Sung
 * - DerivativeContext: Create WikiPage from derivated title by Umherirrender
 * - ClassCollector: Fix mistake in comment for T_DOUBLE_COLON case by Kevin Israel
 * - GlobalIdGenerator: include user id in file prefix by Thomas Daniels
 * - page: Replace deprecated User::getOption by Umherirrender
 * - htmlform: Replace deprecated User::getOption by Umherirrender
 * - api: Report external titles in more places as apierror-invalidtitle by Umherirrender
 * - Suggest files when searching subpages for Special:FilePath by Umherirrender

Vendor

 * - Update wikimedia/running-stat to 2.1.0 by Timo Tijhof
 * - Revert "Bump wikimedia/parsoid to 0.16.0-a18" by Subramanya Sastry

AbuseFilter

 * - Use DISTINCT on LazyVariableComputer::getLinksFromDB by Umherirrender
 * - Treat consequences params less aggressively and consistently by Matěj Suchánek

CampaignEvents

 * - Improve behaviour of registration header and dialog by Daimona Eaytoy
 * - Load the ext.campaignEvents.eventpage module on mobile by Daimona Eaytoy
 * - Introduce CentralUser to replace ICampaignsUser  by Daimona Eaytoy
 * - Split user and authority by Daimona Eaytoy

CentralAuth

 * - Adopt PSR-4 logger, use levels, and unify channels by Timo Tijhof
 * - SpecialWikiSets: cleanup by Taavi Väänänen
 * - SpecialCentralAuth: handle $subpage being null by Taavi Väänänen
 * - Add global_user_autocreate_serial to CentralUser table list by Gergő Tisza
 * - Improve CentralAuthPostLoginRedirectHook docs by Gergő Tisza

CheckUser

 * - Specials: Minor code cleanup by Reedy
 * - SpecialCheckUserLog: Set a default for cuInitiator by Reedy

CirrusSearch

 * - Simplify building database conditions by Umherirrender
 * - Add explicit partitioning key to ElasticaWrite by Erik Bernhardson
 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy
 * - Fix appending of join conds  by Alexander Vorwerk
 * - AnalysisFilterTest: correct used analyzers test by Erik Bernhardson

CodeMirror

 * - Minor optimizations to some patterns in mediawiki mode by Thiemo Kreuz

ConfirmEdit

 * - Run ConfirmEditTriggersCaptchaHook under correct name by Alexander Vorwerk
 * - Namespace base classes by Reedy

ContactPage

 * - SpecialContact: Null coalescene $par by Reedy

ContentTranslation

 * - SX: Scroll to the top of suggestion lists on refresh by NikG
 * - Create separate toolbar for publish button by Ed Sanders
 * - VE 'more' dropdown: Use built-in toolbar alignment by Ed Sanders
 * - SX: Move section position before appendix sections to server-side by NikG
 * - SX: Support instrumentation of newbytranslationmobile entrypoint by NikG
 * - Fix campaign URL param for mffrequentlanguages entrypoint by NikG
 * - Update docs for mw.cx.SiteMapper.prototype.getPageUrl by Santhosh Thottingal
 * - Fix position of notifications in header bar by Ed Sanders
 * - Use upstream unLink icon for new links by Ed Sanders
 * - Fix empty rendering of new CXLinkContextItem's by Ed Sanders
 * - Fix selection of new link in TextSelectionContextItem by Ed Sanders
 * - Fix inheritance of CXTextSelectionContextItem by Ed Sanders

Disambiguator

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

DiscussionTools

 * - Implement percentDecode for finding link fragment targets by Ed Sanders
 * - Pass empty string to unused argument of pushState/replaceState by Ed Sanders
 * - Don't display the empty state if the subject page or user doesn't exist  by Bartosz Dziewoński
 * - EventDispatcher: Remove use of UserFactory in logAddedComments by Umherirrender
 * - Topic container latest comment link: Escape fragment for URL by Ed Sanders
 * - Fix ReplyLinksController#teardown by Bartosz Dziewoński
 * - Bring back [reply] links in old revisions without breaking preview by Bartosz Dziewoński
 * - Clear floats above the new topic empty state by Bartosz Dziewoński
 * - CommentFormatter: Add test cases for mobile version by Bartosz Dziewoński
 * - Don't infuse reply buttons if not in use by Ed Sanders
 * - Fix reply buttons not being available on mobile by Bartosz Dziewoński
 * - Disable OOUI reply buttons for real, not with CSS hack by Bartosz Dziewoński
 * - Make "Add topic" button in Vector sticky header disabled after click by Bartosz Dziewoński
 * - Fix focussing the reply button/link after closing the reply widget by Bartosz Dziewoński
 * - CommentFormatter: Avoid serializing and parsing HTML repeatedly by Bartosz Dziewoński
 * - logger: Also log EditAttemptStep events via Metrics Platform by Sam Smith
 * - Make comment markers inline-block to fix comment wrapping in Safari (in headings only) by Bartosz Dziewoński

DonationInterface

 * - Update smash-pig dependency and own version number by Elliott Eggleston
 * - Add missing supported countries in Paypal present in Braintree by Damilare Adedoyin
 * - GatewayChooser: don't nullify false-y strings by Elliott Eggleston
 * - Ensure recurring=false passes through chooser by Elliott Eggleston
 * - Add missing supported countries in Paypal present in Braintree by Damilare Adedoyin
 * - Fix Smashpig -> SmashPig casing by Elliott Eggleston

Echo

 * - Run clean ups with removeOrphanedEvents in major batches by Amir Sarabadani

EventLogging

 * - storage: Return value retrieved from cookie jar by Sam Smith
 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy
 * - tests: Remove needless reference to Monolog from integration test by Timo Tijhof
 * - MediaWikiMetricsClientIntegration: Deep clone stream configs by Sam Smith
 * - lib: Update lib/metrics-platform to fcdd0b68dec by Sam Smith

ExtensionDistributor

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

ExternalGuidance

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

FeaturedFeeds

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

FileImporter

 * - Fix various issues related to file extensions and renaming by Thiemo Kreuz
 * - Fix MalformedTitleException on change file name form by Thiemo Kreuz
 * - Defer create of WikiFilePage object to RequestContext by Umherirrender

FlaggedRevs

 * - FlaggedRevsUIHooks: Migrate remaining hooks to newFromTitle by Timo Tijhof
 * - FlaggedRevsUIHooks: Remove all-but-one call to globalArticleInstance  by Timo Tijhof
 * - FlaggablePageView: Deprecate singleton in favour of by-title cache by Timo Tijhof

GlobalPreferences

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

GrowthExperiments

 * - Mentee overview(vue): allow zero as edit count filter value by Sergio Gimeno
 * - Use UserOptionsManager::saveOptions instead of User::saveSettings by Umherirrender
 * - WelcomeSurvey: Deduplicate data read/write code by Gergő Tisza
 * - WelcomeSurvey/VariantHooks: Change hook used for redirection by Kosta Harlan
 * - SpecialEditGrowthConfigLogger: Update schema version  by Martin Urbanec
 * - Show no suggestion dialog when page is protected by Gergő Tisza
 * - Move WEIGHT_* constants to IMentorWeights by Martin Urbanec
 * - Remove ApiSetMentorWeight by Martin Urbanec
 * - MentorTools: Do not use MentorWeightManager by Martin Urbanec
 * - [API help] Fix apihelp-query+growthmenteestatus-summary by Martin Urbanec
 * - Enforce maximum message length in StructuredMentorWriter by Martin Urbanec
 * - StructuredMentorListValidator: Do not abort validation on first invalid mentor by Martin Urbanec
 * - StructuredMentorListValidator: Fix param count for datatype mismatch by Martin Urbanec
 * - Enforce a selector class pattern in vue modules by Sergio Gimeno
 * - Add couple of new special page aliases by Martin Urbanec
 * - MentorTools: Ensure weight setter displays correct weight by Martin Urbanec
 * - Defer create of WikiPage object to RequestContext by Umherirrender

GuidedTour

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

GWToolset

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

IPInfo

 * - Use @covers instead of @coversDefaultClass in logger tests by Thalia
 * - Update Logs Link on Special:Contributions Infobox by AnaïsGueyte
 * - Layout shift when IP Info arrives into expanded state by tsepothoabala
 * - Fix capitalization in messages by tsepothoabala

JsonConfig

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

Kartographer

 * - Remove phpcs rule exception and update PHP code by Fomafix
 * - Fix nearby search failing when nothing can be found by Thiemo Kreuz
 * - Use nearcoord search to get nearby articles by WMDE-Fisch
 * - Use UnlistedSpecialPage instead of SpecialPage by Fomafix

Linter

 * - Disable flaky tests by Arlo Breault
 * - Get config from services, not globals by Arlo Breault
 * - Stop using wfGetDB by Arlo Breault

LiquidThreads

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

MachineVision

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

MassMessage

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

Math

 * - MathRenderer: Check output of parse_url by Reedy
 * - REST API endpoint for popups  by AndreG-P

MediaSearch

 * - Remove hard dependencies on CirrusSearch and Elasitca by Ed Sanders
 * - Use getThumbLimits instead of UploadThumbnailRenderMap by Ed Sanders
 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy
 * - build: Upgrade eslint-config-wikimedia to 0.22.1 and make pass by Roan Kattouw

MobileApp

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

MobileFrontend

 * - schemaEditAttemptStep: Also log EditAttemptStep events via Metrics Platform by Sam Smith
 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

NearbyPages

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

Newsletter

 * - Always use IDatabase::addQuotes for quoting by Umherirrender

OAuth

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy
 * - Change wikiID to false for local database connection by Umherirrender
 * - Handle non-existent local user in ScopeRepository::finalizeScopes by Gergő Tisza

PageNotice

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

PageTriage

 * - Implement verbose logging by Novem Linguae
 * - Prevent race condition when tagging for deletion by Novem Linguae
 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy
 * - Handle XFD log page not existing by Novem Linguae
 * - Add filter "Articles by autopatrolled users" by Novem Linguae

PdfHandler

 * - Use the PDF cropbox for rendering by Derk-Jan Hartman

Phonos

 * - Prefix redlinks with the File namespace by MusikAnimal
 * - wgPhonosApiProxy: Add proxy support by TheresNoTime
 * - Add EspeakEngine test and ignore all getAudioData methods by MusikAnimal
 * - Use @covers on the class scope, not methods by MusikAnimal
 * - Introduce a 'file' param to play human-recorded audio and remove 'type' by MusikAnimal

ProofreadPage

 * - Specify background-repeat on icons by Jon Robson
 * - TranslusionPagesModifier::getIncludedPagePagesTitles short circuit if $templates is null by Reedy

Quiz

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

ReadingLists

 * - tests: Use IDatabase::insertId only when rows affected on INSERT IGNORE by Umherirrender

Scribunto

 * - Revert "Namespace LuaCommon" by Lucas Werkmeister (WMDE)
 * - Namespace LuaCommon by Reedy
 * - Namespace LuaStandalone engine by Reedy
 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

SecureLinkFixer

 * - Updating domains.php from Mozilla by Reedy

SecurePoll

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

ShortUrl

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy
 * - Utils: Short circuit in decodeURL if $urlFragment is null by Reedy

SimilarEditors

 * - Move @covers annotations to the test class dockblock by Thalia
 * - Display error messages when a bad target user is entered by Thalia
 * - Handle database refresh error by Thalia
 * - Return empty array from client if there are no results by Thalia

SyntaxHighlight_GeSHi

 * - Add Parsoid support for syntaxhighlight by Subramanya Sastry

TemplateData

 * - Make use of LESS features for more structured CSS by Thiemo Kreuz
 * - Turn all TemplateData .css files into .less files by Thiemo Kreuz
 * - Fix CSS styling of the HTML rendering broken since 2016 by Thiemo Kreuz
 * - Fix JSON export to fail on missing "params" key by Thiemo Kreuz

TemplateSandbox

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

TimedMediaHandler

 * - WebVideoTranscode: Do not use LIMIT as option for IDatabase::update by Umherirrender
 * - Stop requiring resources/config.json   by Alexander Vorwerk
 * - Hooks: Don't pass null to stripos by Reedy
 * - Swap the media element with a span  by Arlo Breault

timeline

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

TocTree

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

Translate

 * - Fix grammatical mistake in MediaWiki:Tpt-old-pages/en message by Vogone
 * - Replace usage of RevTag class with add tag constants in RevTagStore by Abijeet
 * - CsvTranslationImporter: Mark translations imported as bot edits by Abijeet
 * - DeleteTranslatableBundle: Fix title not appearing in fieldset legend by Abijeet
 * - Delete TPException and use Status object by Wangombe
 * - Remove workaround for a bug in old phpyaml by Niklas Laxström
 * - MessageBundleStore: Fetch message bundle groupId only when needed by Abijeet
 * - MoveTranslatableBundleSpecialPage: Null coalescene $par by Reedy
 * - Remove remaining references to api directories by Abijeet
 * - Add feature to save description for a message bundle by Abijeet
 * - Remove custom job de-duplication logic on translation unit deletion by Abijeet
 * - schema: Convert Unique Index to Primary Key on revtag by Umherirrender
 * - TranslatableBundleLogFormatter: Move to namespace and add strict types by Abijeet
 * - postgres: Re-generate tables-generated.sql by Umherirrender

TwoColConflict

 * - Remove expensive logging fields and related instrumentation by Adam Wight

UniversalLanguageSelector

 * - Update jquery.ime and jquery.uls from upstream by Amir E. Aharoni

UrlShortener

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

VisualEditor

 * - Rename value state variable by WMDE-Fisch
 * - Fix typos by WMDE-Fisch
 * - Remove unused config parameter from forked ControlsWidget by Adam Wight
 * - Update call to PageConfigFactory::create to use new signature by Subramanya Sastry
 * - Streamline button margin calculation for outline parts by WMDE-Fisch
 * - Tweak the hard coded top scroll padding for the parameter list by Thiemo Kreuz
 * - Tweaks to focus/scrolling code relative to sticky header by Thiemo Kreuz
 * - Restore scrolling parameters into view with(out) sticky header by Thiemo Kreuz
 * - Show "no parameters" message only when there are no parameters by Thiemo Kreuz
 * - ApiVisualEditorEdit: Re-order FlaggedRevs logic to avoid breakage by Timo Tijhof
 * - Tighten conditions for incompatible skin warnings  by Bartosz Dziewoński
 * - Also log EditAttemptStep events via Metrics Platform by Sam Smith

WebAuthn

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

Wikibase

 * - REST: Improve e2e tests for Remove(Item)Statement by sihe
 * - REST: Reject statements that change Statement ID by Ollie Shotton
 * - lib: Drop mocking calls to ILoadBalancer::getConnectionRef by Amir Sarabadani
 * - REST: Reject Property change when replacing a statement by Jakob Warkotsch
 * - REST: Add missing RemoveItemStatement middleware by Jakob Warkotsch
 * - Give explicit title to testcases from data provider by Michael Große
 * - Use short array destructuring syntax by Michael Große
 * - REST: Use PreconditionMiddlewareFactory by Jakob Warkotsch
 * - REST: Use newStatementWithRandomStringValue by Jakob Warkotsch
 * - REST: Extract authorization tests into a single file by Jakob Warkotsch
 * - REST: Extract authentication tests into a single file by Jakob Warkotsch
 * - REST: Add authorization check to RemoveItemStatement by Ollie Shotton
 * - Allow sitelinks to redirects if redirect badge is present by Michael Große
 * - Introduce SiteLinkPageNormalizer service by Lucas Werkmeister
 * - Set settings properly in SpecialSetSiteLinkTest by Lucas Werkmeister
 * - REST: Add Remove(Item)Statement spec tests by sihe
 * - REST: Add e2e tests for authenticated edits by Jakob Warkotsch
 * - REST: Add and use RequestBuilder.withUser by Jakob Warkotsch
 * - REST: Do not use a placeholder edit summary by sihe
 * - REST: Extract newStatementWithRandomStringValue helper by Jakob Warkotsch
 * - REST: Add Replace(Item)Statement spec tests by Jakob Warkotsch
 * - REST: Extract frameworkish permission error creation by Jakob Warkotsch
 * - REST: Add authorization check to ReplaceItemStatement by Jakob Warkotsch
 * - REST: Add 415 error responses to OpenAPI schema by Jakob Warkotsch
 * - REST: Validate ReplaceItemStatement use case input by Ollie Shotton
 * - REST: Check request content type in middleware by Jakob Warkotsch
 * - REST: Minor middleware improvements by Ollie Shotton
 * - REST: Add XDebug Cookie support to RequestBuilder by Ollie Shotton
 * - REST: Combine precondition middlewares into one by Jakob Warkotsch
 * - api-testing: Fix condition in requireExtensions by Lucas Werkmeister
 * - REST: Extract protectItem test helper by Jakob Warkotsch
 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy
 * - REST: Use getLatestEditMetadata in RemoveItemStatementTest by Jakob Warkotsch
 * - REST: Only use JSON validator for JSON request body by Jakob Warkotsch
 * - REST: Improve RequestPreconditionCheckResult naming by Jakob Warkotsch
 * - Fixed link in the JSON "topic" docs by Leszek Manicki
 * - Improve query info in BulkSubscriptionUpdater::getUpdateBatch by Umherirrender
 * - Call IDatabase::timestamp for timestamp columns to support postgres by Umherirrender
 * - Return Status for editing non-local entity instead of throwing by Lucas Werkmeister

WikibaseLexeme

 * - Show warning for anonymous users by Lucas Werkmeister
 * - Bump Special:NewLexemeAlpha by Lucas Werkmeister
 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy
 * - Add lexeme language codes bzs, hoc, lad-hebr   by Mahir256

WikibaseMediaInfo

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

WikibaseQualityConstraints

 * - Bump stylelint-config-wikimedia from 0.13.0 to 0.13.1 by Addbot

WikidataPageBanner

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

WikiEditor

 * - Realtime Preview: add event tracking to load action by hmonroy

wikihiero

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

WikiLambda

 * - ZObjectUtilsTest: Cover isValidZObjectList exceptions by James D. Forrester
 * - Drop references to Benjamin arrays per-se; they're the only kind we have now by James D. Forrester
 * - ZObjectStoreTest: Add tests for findZObjectLabelConflicts success state by James D. Forrester
 * - Change WikiLambda health check error message getter. by Mary Yang
 * - i18n: Don't use a placeholder value in 'wikilambda-function-about-summary', it's confusing by James D. Forrester
 * - When pre-selecting the type of a key-value in the zobject editor, select the type of a type list  by adesoji
 * - Fix cursor bug. by EWright
 * - ZObjectStoreTest: Add tests for updateZObject failure states by James D. Forrester
 * - ZObjectStoreTest: Mark testUpdateZObject as covering fetchZObjectByTitle by James D. Forrester
 * - Correct capitalization on summary for the WikiLambda health check. by Mary Yang
 * - Add ApiHealthCheck in WikiLambda APIs. by Mary Yang
 * - Update function-schemata sub-module to HEAD (61e1542) by James D. Forrester
 * - Update function-schemata sub-module to HEAD (24a978d) by James D. Forrester
 * - ZObjectUtilsTest: Test extractHumanReadableZObject with invalid input by James D. Forrester
 * - Fix fetchZkeys call payload in ZImplementation component by gengh
 * - Fix fetchZKeys payload in changeType action by gengh
 * - ZObjectStoreTest: Address two TODOs for checking the fetched ZID by James D. Forrester
 * - ZObjectStoreTest: Cover fetchBatchZObjects by James D. Forrester
 * - Fix scoping for, and enable in integration tests, the Map function example. by apine
 * - ApiFunctionCall: Wrap errors in maps, not directly in responses by James D. Forrester
 * - ZTypedMapTest: Fix constructor calls; TypedList of TypedPair, not direct by James D. Forrester
 * - Make ApiPerformTest return test metadata, not validate metadata by dmartin
 * - Create Z-object - Implementation: Pre-populate target function on the by ddw
 * - CreateZObject - Tester: Connect tester to function (pulled from URL) by ddw
 * - Fix ZFunctionTesterReport to handle Benjamin arrays  by dmartin
 * - Make getValueFromCanonicalZMap handle global keys by dmartin
 * - Remove dead code that attempts to do v-bind but does it wrongly by Roan Kattouw
 * - Remove double initialization of ZFunction by gengh
 * - Remove file @ by gengh
 * - Drop one-off maintenance update scripts by James D. Forrester
 * - AUTHORS.txt: Update for May–July 2022 by James D. Forrester

WikiLove

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

WikimediaApiPortalOAuth

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

WikimediaEvents

 * - PrefUpdateInstrumentation: Remove use of UserFactory in onSaveUserOptions by Umherirrender

WikimediaIncubator

 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

WikimediaMessages

 * - Add messages for Igbo Wikiquote (igwikiquote) by gerritbot
 * - Add messages for Igbo Language Wiktionary (igwiktionary) by gerritbot
 * - Update Xtools and contibution Links on Special:Contributions Infobox by AnaïsGueyte
 * - Update mediawiki/mediawiki-phan-config to 0.11.1 by Reedy

Wikistories

 * - Add image attribution to no-js renderer by Eduardo
 * - Handle missing imageinfo in API response by Stephane Bisson
 * - Keep rendering despite missing file by Stephane Bisson
 * - White image background once the image is loaded by Stephane Bisson

MinervaNeue

 * - Update link target of the team page by Meno25
 * - Add metric platfrom event tracking on mobile desktop toggle by essexigyan
 * - pagelist headers: Increase contrast ratio by Volker E

Timeless

 * - Port changes to 'content-media' feature in core by Arlo Breault
 * - Yoink 'content-media' feature from core by Arlo Breault

Vector

 * - Refactor TOC A/B test to bucket users on backend by Clare Ming
 * - Sticky header AB test bucketing for 2 treatment buckets by Jan Drewniak
 * - Allow preview on certain article titles by Jon Robson
 * - Fix grid blowout bug by bwang
 * - Express sidebar width in pixel for font size by Jon Robson
 * - Remove vector-layout-legacy styles and grid feature flag by bwang
 * - Fix collapsible user links issue on tablet breakpoint by bwang
 * - Update link target of the team page by Meno25
 * - Minor fixes to TOC hide/show buttons by Clare Ming
 * - UserLinksLegacy: Move layout rule into UserLinks rule by Jon Robson
 * - Followup contentSub contentSub2 styling by bwang
 * - styles: Set `background-repeat: no-repeat` for menu tabs by Andre Klapper
 * - Update #siteSub, #contentSub and #contentSub2 to fix spacing, conditionally render #contentSub and #contentSub2 by bwang
 * - Followup to ce007e0 - Unify dropdown styles by Jan Drewniak
 * - Remove custom rendering of the user links overflow menu in favor of using 'vector-user-menu-overflow', a vector specific menu bucket in Hooks.php by bwang
 * - Ensure collapsible TOC is closed when links are clicked by bwang
 * - Only apply sticky header offset if it is showing sticky  by Derk-Jan Hartman

VisualEditor/VisualEditor

 * - build: Update language lists to add 'tk' by WMDE-Fisch

No changes

 * 3D
 * ActiveAbstract
 * AdvancedSearch
 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * ArticlePlaceholder
 * Babel
 * BetaFeatures
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * CentralNotice
 * CharInsert
 * ChessBrowser
 * Cite
 * CiteThisPage
 * Citoid
 * CodeEditor
 * Cognate
 * Collection
 * CologneBlue
 * CommonsMetadata
 * CreditsSource
 * Dashiki
 * DismissableSiteNotice
 * DoubleWiki
 * Elastica
 * ElectronPdfService
 * EntitySchema
 * EventBus
 * EventStreamConfig
 * FileExporter
 * Flow
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * Gadgets
 * GeoCrumbs
 * GeoData
 * GlobalBlocking
 * GlobalCssJs
 * GlobalUsage
 * GlobalUserPage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * Graph
 * ImageMap
 * ImageSuggestions
 * InputBox
 * Insider
 * Interwiki
 * InterwikiSorting
 * Josa
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * Listings
 * LoginNotify
 * MapSources
 * MediaModeration
 * Modern
 * MonoBook
 * MultimediaViewer
 * NavigationTiming
 * NewUserMessage
 * Nostalgia
 * Nuke
 * OATHAuth
 * OAuthRateLimiter
 * ORES
 * OpenStackManager
 * PageAssessments
 * PageImages
 * PageViewInfo
 * PagedTiffHandler
 * ParserFunctions
 * Poem
 * PoolCounter
 * Popups
 * PropertySuggester
 * QuickSurveys
 * RSS
 * RelatedArticles
 * Renameuser
 * RevisionSlider
 * SandboxLink
 * Score
 * SearchExtraNS
 * SiteMatrix
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * TemplateStyles
 * TemplateWizard
 * TextExtracts
 * Thanks
 * TheWikipediaLibrary
 * TitleBlacklist
 * TorBlock
 * TranslationNotifications
 * TrustedXFF
 * UploadWizard
 * UploadsLink
 * VipsScaler
 * WikibaseCirrusSearch
 * WikibaseLexemeCirrusSearch
 * Wikidata.org
 * WikimediaApiPortal
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaMaintenance
 * Wikisource
 * XAnalytics
 * cldr
 * intersection

Total changes
407 Changes in 81 repos by 89 authors