MediaWiki 1.39/wmf.23/Changelog

Core changes

 * - Branch commit for wmf/1.39.0-wmf.23 by trainbranchbot
 * - rdbms: Move Database methods delegated to TransactionManager to its own place by Amir Sarabadani
 * - ChangeTags: Improve database query hygine by Amir Sarabadani
 * - Fix $validateXMLNames flag when parsing HTML by daniel
 * - Migrate usage of `setMwGlobals` to `overrideConfigValue(s)` by Derick Alangi
 * - (import|export)Sites.php: Move parent::__construct call above addDescription by Alexander Vorwerk
 * - rdbms: Bump the minimum required version of PG to 9.5  by Amir Sarabadani
 * - Add release notes for 1636c24306b9fa5c by Kevin Israel
 * - ParsoidHandler: measure input size in characters by daniel
 * - LoginSignupSpecialPage: Fix some indenting by Reedy
 * - SpecialCategories: Null coalescene $par by Reedy
 * - EditPage: Restore stripping '== ... ==' from summary and section title by Bartosz Dziewoński
 * - SpecialImport: Replace custom JS with HTMLForm disable-if by Timo Tijhof
 * - Parsoid Parser Tests: Fix test processing to update knownFailures by Subramanya Sastry
 * - api: Support for links migration in ApiQueryBacklinks  by Amir Sarabadani
 * - rdbms: Migrate delegated protected functions of Database and drop them by Amir Sarabadani
 * - rdbms: Fix capitalization of SQLPlatform references by Lucas Werkmeister
 * - rdbms: Migrate several more Database::do* to SqlPlatform by Amir Sarabadani
 * - User: Allow dynamic properties on PHP 8.2 by Máté Szabó
 * - preprocessor: Add missing field declarations by Máté Szabó
 * - Migrate use of ${var}-style string interpolation by Máté Szabó
 * - phpunit: Fix trivial dynamic property usages in tests by Máté Szabó
 * - Mock User::getTitleKey in SpecialPreferencesTest [php 8.1] by Brian Wolff
 * - Show namespace instead of SpecialAllPages in plaintext block log message by dreamyjazz
 * - Update Codex from v0.1.0-alpha.8 to v0.1.0-alpha.9 by Anne Tomasevich
 * - Add alias for special page "Special:MyContribs" by EpicPupper
 * - Update Vue from 3.2.31 to 3.2.37 by Roan Kattouw
 * - rdbms: Migrate SQL analysis code pieces to SQLPlatform by Amir Sarabadani
 * - Make default value for optional args be '' not null   by Brian Wolff
 * - Check for null return of preg_replace in MediaWikiTitleCodec by Brian Wolff
 * - Parsoid Testing: Use FormatJson to emit / update knownFailures json by Subramanya Sastry
 * - Use default timezone UTC for SpecialWatchlistTest [php 8.1] by Brian Wolff
 * - Move DOM transformations into HTMLTransformInput getters. by daniel
 * - cast db name to string when checking if it is read only [php8.1] by Brian Wolff
 * - Avoid testing strlen on null in ApiQuerySiteinfo [php 8.1 compat] by Brian Wolff
 * - ApiParse: remove deprecated 'hidetoc' property by C. Scott Ananian
 * - Use canonical parser options when rendering JavaScript/CSS for side effects by C. Scott Ananian
 * - Don't show new section tab on redirect pages by Ed Sanders
 * - Don't add $wgExtraNamespaces to $wgCanonicalNamespaceNames by Kevin Israel
 * - Mock UserOptionsManager::getOption for php8.1 by Brian Wolff
 * - tests: Minor follow-up to MySQLPlatformTest/FileBackendTest php8.1 fixes by Timo Tijhof
 * - resourceloader: batchRequest never leaves moduleMap empty by DannyS712
 * - resourceloader: optimize batchRequest even further by DannyS712
 * - ApiParse: transition 'hidetoc' to 'showtoc' by C. Scott Ananian
 * - ParserOutputFlags: change HIDE_TOC to SHOW_TOC by C. Scott Ananian
 * - Sync up with Parsoid parserTests.txt by C. Scott Ananian
 * - Fix some special pages submitting 'title' parameter twice by Bartosz Dziewoński
 * - tests: Remove resetServiceForTesting after overrideConfigValues by Umherirrender
 * - LogFormatter: Cast argument of ctype_digit to string [php8.1] by Brian Wolff
 * - abstract schema: Ignore empty 'pk' keys from json files by Umherirrender
 * - tests: Migrate `setMwGlobals` to `overrideConfigValue(s)` by Derick Alangi
 * - Fix ParsoidHandler html2wt unit tests by Subramanya Sastry
 * - Drop PHP 7.3 documented support from MediaWiki 1.39  by James D. Forrester
 * - Update OOUI to v0.44.2     by James D. Forrester
 * - Move dowgrade logic into HTMLTransformInput by daniel
 * - rdbms: Migrate dropTable sql building to SQLPlatform by Amir Sarabadani
 * - jquery.textSelection: Use non-execCommand when we can't focus the field by Bartosz Dziewoński
 * - Sync up with Parsoid parserTests.txt by Isabelle Hurbain-Palatin
 * - Add namespaces for Mara (mrh) by Amir E. Aharoni
 * - resourceloader: replace `currReqModules` with a boolean by DannyS712
 * - objectcache: Adds support for TLS to RedisConnectionPool by Juan Osorio
 * - Remove $wikitextOverride argument to PageConfigFactory::create by C. Scott Ananian
 * - mediawiki.page.ready: Add bindDismissOnClickLink to checkboxHack.js by bwang
 * - Fix a couple deprecation warnings in the installer under PHP 8.1 by Kevin Israel
 * - abstract schema: Improve validation of json file by Umherirrender
 * - Parser: Make parser use current timestamp if RevisionRecord has null by Brian Wolff
 * - Add explicit null check for $sha in FileBackend [php8.1] by Brian Wolff
 * - mediawiki.checkboxtoggle: Use .trigger instead of event shorthand by Ed Sanders
 * - api-query-search: Request snippets when title variants are requested by Erik Bernhardson
 * - [php8.1] mock User::getTitleKey in DeaultPreferencesFactoryTest by Brian Wolff
 * - Add test for offset type check by daniel
 * - [php8.1] Mock out getLocalDomainID for WatchedItemStore tests by Brian Wolff
 * - Rest: offsetType is not in the options sub-array by Derick Alangi
 * - jquery.textSelection: Support more edge cases of document.execCommand by Nux
 * - api-query-search: Update prop parameter documentation by Erik Bernhardson
 * - [php8.1] Change override of $wgResourceBasePath for CSP tests by Brian Wolff
 * - Add *ContentHandlerIntegrationTest by C. Scott Ananian
 * - Use ParserOptions::setSuppressTOC for Javascript content by C. Scott Ananian
 * - ParserOption/ParserOutput flag to suppress or hide the table of contents  by C. Scott Ananian
 * - Skin: Skip LinkRenderer in footerLink and remove $wgFooterLinkCacheExpiry by Timo Tijhof
 * - Add linktrail for Sotho (st) by Amir E. Aharoni
 * - Add linkTrail for Northern Sotho by Amir E. Aharoni
 * - CalendarWidget: Fix skipping ahead when clicking a date in the next month by Bartosz Dziewoński
 * - migrateLinksTable.php: Remove LIMIT from UPDATE query by Kevin Israel
 * - migrateLinksTable.php: BETWEEN is inclusive by Kevin Israel
 * - Guard CustomConvertCommand against placeholders within values by Derk-Jan Hartman

Vendor

 * - Bump wikimedia/parsoid to 0.16.0-a18    by Subramanya Sastry
 * - Update OOUI to v0.44.2 by James D. Forrester

AbuseFilter

 * - Send CheckUser the IP address on account creation by Matěj Suchánek
 * - Clean up line indent with mixed tabs and whitespaces by Umherirrender
 * - Make a separate method for ManualLogEntry construction by Matěj Suchánek
 * - Add regression test for abuse log entries by Matěj Suchánek
 * - Special:AbuseFilter: Include primary key for unique pagination by Umherirrender
 * - Add LinkBatch to Special:AbuseFilter/home and /history by Umherirrender
 * - Use UserIdentity in VariableGenerator::addEditVars by Umherirrender
 * - Remove deprecated static methods by Matěj Suchánek
 * - Add regression test for RunVariableGenerator by Matěj Suchánek
 * - Call IContextSource::getAuthority instead of IContextSource::getUser by Umherirrender

ArticlePlaceholder

 * - Prefetch label and description in AboutTopicRenderer by Lucas Werkmeister
 * - Use FallbackLabelDescriptionLookupFactory in AboutTopicRenderer by Lucas Werkmeister

Babel

 * - Replace usage of User::newFromName with UserIdentityLookup by Abijeet
 * - Drop support for MediaWiki 1.36 by Abijeet

CampaignEvents

 * - Enable VisualEditor in the Event namespace by Daimona Eaytoy

CentralAuth

 * - Remove redundant use of WRITE_SYNC by Timo Tijhof

CheckUser

 * - Remove the bottom paging links for 'Get users' as forms cannot be nested by dreamyjazz
 * - Further tests for Hooks.php by dreamyjazz
 * - Move the function to log a check into a new CheckUserLogService by dreamyjazz
 * - Add population script for cul_actor by Alexander Vorwerk

CirrusSearch

 * - integration: Always set baseUrl in wdio.conf by Erik Bernhardson
 * - Migrate usage of Database::select to SelectQueryBuilder by joseph emmanuel kayode (iemarjay)
 * - Enable, Unpack, & Customize Bengali Analyzer by tjones
 * - Add logic to validate response data on sendData by joseph emmanuel kayode (iemarjay)
 * - Apply attribute handling to $wgCirrusSearchCompletionProfiles by Gergő Tisza
 * - Allow other extensions to extend profile configuration by Gergő Tisza
 * - Improve error logging for script errors by Gergő Tisza
 * - Fix reindexing indentation by tjones

Collection

 * - Namespace templates by Reedy
 * - tests: Rename to match includes by Reedy
 * - Namespace SpecialCollection by Reedy
 * - Namespace a few more classes by Reedy
 * - Namespace Rendering classes by Reedy

ContentTranslation

 * - CX3 Build 0.2.0+20220801   by Santhosh Thottingal
 * - SX: Add CAPTCHA confirmation dialog before publishing, when needed by NikG
 * - SX new by translation mobile entrypoint: Hide invite when user types by NikG
 * - Make mw.deflate calls async, and load module on demand by Ed Sanders
 * - SX: Fix regression for MT provider labels by NikG
 * - schema: Convert Unique Index to Primary Key on cx_translators by Umherirrender
 * - SX Desktop editor: Adjust the title to show article and section names by Santhosh Thottingal
 * - CX recent edit entrypoint: Add EditedSectionFinder service by NikG

DiscussionTools

 * - Do not duplicate item JSON in page HTML by Bartosz Dziewoński
 * - Make reply links into buttons when visual enhancements enabled  by Ed Sanders
 * - Fix styling of new comment notification on mobile by Ed Sanders
 * - Ignore "tracked" templates at the beginning of comments by Bartosz Dziewoński
 * - Add more tests cases using the "tracked" template by Bartosz Dziewoński
 * - EventDispatcherTest: Use `null` instead of special placeholder file by Bartosz Dziewoński
 * - Re-enable keyboard sequences for template, table etc. in new topic tool by Bartosz Dziewoński
 * - Enable new comment notifications on mobile by Ed Sanders
 * - Hide section collapse button in preview. by Ed Sanders
 * - Don't show empty page state on redirect pages by Ed Sanders
 * - Fire new 'wikipage.tableOfContents' hook to update TOC after save by Bartosz Dziewoński
 * - API ThreadItemsHTML: improve generation of othercontent by David Lynch
 * - More consistently handle new topic tool vs empty state by Bartosz Dziewoński
 * - Don't show new topic tool empty state on existing non-talk pages by Bartosz Dziewoński
 * - Add topic containers HTML to parser cache even when feature is disabled by Ed Sanders
 * - Visual enhancements: Fix loading of icons by Ed Sanders
 * - Simplify CSS selectors for [reply] and [subscribe] links by Ed Sanders
 * - Move subscribe button up on desktop by Ed Sanders
 * - Prepend subscribe links to headings by Ed Sanders
 * - Show empty state on mobile when there is only non-discussion content by Ed Sanders

DonationInterface

 * - update smashpig to 8.2.1 for DI by wfan
 * - Update smashpig from v0.8.2 to v0.8.3 by Damilare Adedoyin
 * - 3DS: move card type check to Ingenico subclass by Elliott Eggleston
 * - Horrific shim for MediawikiService::getConfig by Elliott Eggleston

FlaggedRevs

 * - pruneRevData: Make cleaning in larger batches by Amir Sarabadani
 * - FlaggableWikiPage: Replace Title-expando and clone hack with MapCacheLRU by Timo Tijhof
 * - Rearrange and cull review-related JS  by Gergő Tisza
 * - Enable ext.flaggedRevs.advanced and ext.flaggedRevs.review on mobile  by Gergő Tisza

Flow

 * - Update CheckUser hook for pagination  by Alexander Vorwerk
 * - Add CheckUser to phan analysis by Alexander Vorwerk
 * - Replace call to AbuseFilter::filterAction by Matěj Suchánek
 * - Toolbar: Stop using actions toolbar by Ed Sanders
 * - Add nstab-topic message by Amir E. Aharoni

GrowthExperiments

 * - ServiceImageRecommendationProvider: Add extra logging when no JSON response received by Kosta Harlan
 * - Post edit dialog: avoid showing exceeded task daily limit task types by Sergio Gimeno
 * - Move MessageCache::get hook to a separate hook handler by Gergő Tisza
 * - Impact module: adapt background image size for heart graphic by Sergio Gimeno
 * - Limit ask panel textarea resizing to vertical by Gergő Tisza
 * - Add help link to Special:EditGrowthConfig by Gergő Tisza
 * - Reduce size of intro-heart-article.svg by Sergio Gimeno
 * - Add --force option to revalidateLinkRecommendations.php by Gergő Tisza
 * - Community configuration: Indicate when changes are not immediate by Gergő Tisza

InputBox

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

Interwiki

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

IPInfo

 * - Fix capitalization in messages by tsepothoabala
 * - Layout shift when IP Info arrives into expanded state insufficient height reserved by tsepothoabala
 * - Add links to block log - always show blocks even if there are not active blocks by tsepothoabala

Math

 * - Support new properties 'Symbol Represents' and 'In Defining Formula' by AndreG-P

MobileFrontend

 * - Use 'BeforeDisplayNoArticleText' hook for message on missing user pages by Bartosz Dziewoński

Nuke

 * - Use explicit mw.msg instead of implicit mw.message by Fomafix

OATHAuth

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

OAuth

 * - extension.json: Remove TestAutoloadClasses by Reedy
 * - Configure the nonce cache separately from the session cache by Tim Starling

PageTriage

 * - Change redirect delete cron job cutoff to 6 months by Novem Linguae

Scribunto

 * - Namespace LuaSandbox engine by Reedy
 * - composer.json: Bump mediawiki/lua-sandbox to 4.0.2 by Reedy
 * - Fix MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment by Reedy

SimilarEditors

 * - Show a generic error if the Similarusers service doesn't return good results by Thalia

TemplateStyles

 * - Hooks: Remove use of unsafe inDebugMode from handleTag by Timo Tijhof

TemplateWizard

 * - Delay template insertion until after closing the dialog by Bartosz Dziewoński

TimedMediaHandler

 * - Hide cursor within playback area when user inactive by Derk-Jan Hartman

Translate

 * - schema: Convert Unique Index to Primary Key on translate_tmt by Umherirrender
 * - schema: Convert Unique Index to Primary Key on translate_messageindex by Umherirrender
 * - EditSummariesAid: Add MW 1.37 fallback for CommentFormatter by Abijeet
 * - SearchTranslationsApi: Change the way we fetch TTM services by Abijeet
 * - TranslatorSandboxActionApi: Pass user object when sending email by Abijeet
 * - DeleteTranslatableBundleJob: Use FuzzyBot to perform the deletion by Abijeet
 * - DeleteTranslatableBundleJob: Move to namespace by Abijeet
 * - Drop support for MediaWiki 1.36 by Abijeet
 * - CSV Translation Import: Allow upper case language codes by Abijeet
 * - Replace usage of User csrf token methods with CsrfTokenSet class by Abijeet
 * - ImportTranslationsSpecialPage: Add dependency injection by Abijeet
 * - Allow required composer plugins by Abijeet
 * - Rename TranslatableBundleMetadata to MessageBundleMetadata by Abijeet
 * - QueryMessageGroupStatsActionApi: Add strict types and move to namespace by Abijeet
 * - MessageCollection: Add return type hints for inbuilt interfaces   by Reedy
 * - MoveTranslatableBundleJob: Move to namespace by Abijeet
 * - QueryLanguageStatsActionApi: Add strict types and move to namespace by Abijeet
 * - QueryStatsActionApi: Add strict types and move to namespace by Abijeet
 * - TranslationStashActionApi: Fix incorrect constructor dependencies by Abijeet

UniversalLanguageSelector

 * - Limit ULSPosition check to non-Vector 2022 skins by Jon Robson
 * - LanguageNameIndexer: Declare extension dependencies by Niklas Laxström
 * - Drop support for MediaWiki 1.36 by Abijeet
 * - Allow composer/installers plugin by Gergő Tisza

VisualEditor

 * - Scroll below sticky header only if sticky header is present by Thiemo Kreuz
 * - Tweak the hard coded top scroll padding for the parameter list by WMDE-Fisch
 * - Simplify partly redundant findFirstSelectedItem implementation by Thiemo Kreuz
 * - Fix forgotten "setPage" property because of merge conflict by Thiemo Kreuz
 * - Update VE core submodule to master (2a60d67df) by Bartosz Dziewoński
 * - ApiVisualEditorEdit: Transition from 'hidetoc' to 'showtoc' in API result by C. Scott Ananian
 * - Use the same styling for add template and add parameter buttons by Andrew Kostka
 * - Minor code cleanups in forked BookletLayout and related by Thiemo Kreuz
 * - Prefer adding parameter to currently focussed template by Thiemo Kreuz
 * - Remove 5 more very old unused messages by Thiemo Kreuz
 * - Remove unused template dialog title message by Thiemo Kreuz
 * - Log incompatible skin warnings by Gergő Tisza
 * - VisualEditorParsoidClient: use the new PageConfigFactory::create signature by C. Scott Ananian
 * - ve.ui.MWGalleryDialog: Fix "Alternative text" not being readonly sometimes by Bartosz Dziewoński
 * - Update VE core submodule to master (1ab6be70d) by Bartosz Dziewoński
 * - Remove dead code, deleting parameters is not possible by Thiemo Kreuz
 * - Remove unused pieces of code from two-pane layout by Thiemo Kreuz
 * - Start altText as null to avoid empty alt for new gallery images by Arlo Breault
 * - Add a checkbox to use the image caption as the alt text for galleries by Arlo Breault
 * - Fix filtering not clearing "currently selected page" state by Thiemo Kreuz
 * - Move getters for the currently selected part to two-pane layout by Thiemo Kreuz
 * - Fix Ctrl+D and Ctrl+Shift+Y hotkeys to add parts by Thiemo Kreuz
 * - Fix Ctrl+Shift+D hotkey to add undocumented parameters by Thiemo Kreuz
 * - Fix "null is not a string" error in event logging code by Thiemo Kreuz
 * - Tab to first template parameter in list, not to the selection  by Thiemo Kreuz
 * - ve.init.mw.Target: Use mw.libs.ve.targetSaver.getHtml in getWikitextFragment by Ed Sanders

Wikibase

 * - REST: Extract getLatestEditMetadata test helper by Jakob Warkotsch
 * - REST: Fix incorrect @covers annotations by Ollie Shotton
 * - REST: Avoid `PHP Notice: Undefined index` warnings by Ollie Shotton
 * - REST: Create RemoveItemStatementRouteHandler by sihe
 * - REST: Handle not found and redirect in ReplaceItemStatement by Jakob Warkotsch
 * - REST: DRY up using PreconditionMiddlewareFactory by Jakob Warkotsch
 * - REST: Use ModifiedPreconditionMiddleware by Jakob Warkotsch
 * - Introduce 'redirectBadgeItems' default to repo settings by Noa wmde
 * - Improve StatementList::replaceStatement by Jakob Warkotsch
 * - REST: Introduce ModifiedPreconditionMiddleware by Jakob Warkotsch
 * - REST: Improve RemoveStatementRouteHandler by sihe
 * - REST: Specify method with route in RequestBuilder by Jakob Warkotsch
 * - Hard-deprecate LanguageFallbackLabelDescriptionLookupFactory by Lucas Werkmeister
 * - REST: Create RemoveStatementRouteHandler by sihe
 * - REST: Enhance RequestBuilder.js helper by Ollie Shotton
 * - REST: Address code review comments by sihe
 * - Streamline DatabaseEntitySource constructor for performance by Thiemo Kreuz
 * - REST: Create ReplaceItemStatementRouteHandler by Ollie Shotton
 * - Use PHPUnit createMock shortcut wherever possible by Thiemo Kreuz
 * - REST: Set max line length to 120 in js test files by Jakob Warkotsch
 * - Set default WikibaseTermboxInteraction version to Event Platform schema URI by Marcel Ruiz Forns

WikibaseCirrusSearch

 * - Apply minimum_should_match for elastic 7 by Erik Bernhardson

WikibaseLexeme

 * - Stop using LanguageFallbackLabelDescriptionLookupFactory in test by Michael Große

WikibaseLexemeCirrusSearch

 * - Resolve redirects in LexemeDescription for Special:Search by Michael Große
 * - Replace LanguageFallbackLabelDescriptionLookupFactory by Michael Große

WikibaseQualityConstraints

 * - Bump jasmine from 4.2.0 to 4.3.0 by Addbot

WikiEditor

 * - RealtimePreview: Let doRealtimePreview handle manualWidget visibility by Dayllan Maza
 * - RealtimePreview: force update when reloading from error message by Dayllan Maza
 * - Add more conditions for re-showing the manual bar by Sam Wilson
 * - Realtime Preview: add event tracking to triggered events by hmonroy
 * - Realtime Preview: scroll to cursor when opening/closing RTP by MusikAnimal
 * - Invert RealtimePreview.setEnabled parameter meaning by Sam Wilson

WikiLambda

 * - Argument doesn't populate when creating a composition by adesoji
 * - Fix 'evaluate function' on implementation page to show argument inputs. by ddw
 * - Make all Vue file casing consistent. by ddw
 * - Create constants for Z39 and Z39K1 & update schemata.js by dmartin
 * - build: Upgrade stylelint-related items to 14.x by James D. Forrester
 * - zCode cleanup + fill box with language setup by Julia Kieserman
 * - Remove extra quotes in ZTester component. by ddw
 * - ApiPerformTest: Splice out extra '"'s from implementation references by James D. Forrester
 * - ZObjectFactory: Support local keys when provided by James D. Forrester
 * - ZTypedList: Guard against TypedMap key value being null by James D. Forrester
 * - Update tests and resolve warnings by adesoji
 * - Z-reference/Z-object-selector pre-population: by ddw
 * - Update tests and resolve warnings by adesoji
 * - Decode orchestrator response before passing to ZObjectFactory::create by dmartin
 * - Add missing plurality indicator to $i18n call by dmartin
 * - ZObjectContentHandler::getExternalRepresentation: Support revisions by James D. Forrester
 * - ZObjectStore::fetchZObjectByTitle: Allow fetching non-current revisions by James D. Forrester
 * - ZObjectContentHandler: Expand test coverage for some extras by James D. Forrester
 * - schema: Add missing unique key to abstract schema file by Umherirrender
 * - Function viewer: Add padding to the left of tooltip icons on input and output. by ddw
 * - remove function specific text by Julia Kieserman

Wikistories

 * - Fix consumption event stream name by Stephane Bisson
 * - Update Design 28 July by Huei Tan
 * - Preserve articleTitle and originalText in hidden fields by Stephane Bisson
 * - Repopulate the edit form with in-progress story content by Stephane Bisson
 * - Replace usage of deprecated getConnectionRef function by Stephane Bisson
 * - Load only extended metadata when needed by Huei Tan
 * - Prevent reader scroll an article while reading a story by Huei Tan
 * - Type against LoggerInterface by Stephane Bisson
 * - Use store state directly to read frame ids by Eduardo

CologneBlue

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

MinervaNeue

 * - Fix CSS selectors for Parsoid images by Ed Sanders

Modern

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

Nostalgia

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

Timeless

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

Vector

 * - Add feature to hide/show collapsible TOC above desktop by Clare Ming
 * - phpunit: Fix context leak in SkinVectorTest by Timo Tijhof
 * - Unify dropdown styles  by Jan Drewniak
 * - Revert "styles: Unify on standard external link icon" by Jdrewniak
 * - Page toolbar visual tweaks and code clean up by bwang
 * - Hide TOC button on print by Clare Ming
 * - Make site banner full width in grid layout by bwang
 * - Add "Add topic" button to sticky header by Ed Sanders
 * - styles: Replace LanguageButton variable nomenclature by Volker E
 * - Sticky header: Add a link to the 'subject' page when on talk pages by Ed Sanders
 * - Show ULS button when article exist only in single language  by Santhosh Thottingal
 * - Define non-standard colors for legacy Vector by Jon Robson

WikimediaApiPortal

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

VisualEditor/VisualEditor

 * - Update OOUI to v0.44.2 by James D. Forrester
 * - sa.Target: Move pageMenu to main toolbar by Ed Sanders
 * - ve.init.Target: Don't generate actions toolbar when empty by Ed Sanders

No changes

 * 3D
 * ActiveAbstract
 * AdvancedSearch
 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * BetaFeatures
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * CentralNotice
 * CharInsert
 * ChessBrowser
 * Cite
 * CiteThisPage
 * Citoid
 * CodeEditor
 * CodeMirror
 * Cognate
 * CommonsMetadata
 * ConfirmEdit
 * ContactPage
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * DoubleWiki
 * Echo
 * Elastica
 * ElectronPdfService
 * EntitySchema
 * EventBus
 * EventLogging
 * EventStreamConfig
 * ExtensionDistributor
 * ExternalGuidance
 * FeaturedFeeds
 * FileExporter
 * FileImporter
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GWToolset
 * Gadgets
 * GeoCrumbs
 * GeoData
 * GlobalBlocking
 * GlobalCssJs
 * GlobalPreferences
 * GlobalUsage
 * GlobalUserPage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * Graph
 * GuidedTour
 * ImageMap
 * ImageSuggestions
 * Insider
 * InterwikiSorting
 * Josa
 * JsonConfig
 * Kartographer
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * Linter
 * LiquidThreads
 * Listings
 * LoginNotify
 * MachineVision
 * MapSources
 * MassMessage
 * MediaModeration
 * MediaSearch
 * MobileApp
 * MonoBook
 * MultimediaViewer
 * NavigationTiming
 * NearbyPages
 * NewUserMessage
 * Newsletter
 * OAuthRateLimiter
 * ORES
 * OpenStackManager
 * PageAssessments
 * PageImages
 * PageNotice
 * PageViewInfo
 * PagedTiffHandler
 * ParserFunctions
 * PdfHandler
 * Phonos
 * Poem
 * PoolCounter
 * Popups
 * ProofreadPage
 * PropertySuggester
 * QuickSurveys
 * Quiz
 * RSS
 * ReadingLists
 * RelatedArticles
 * Renameuser
 * RevisionSlider
 * SandboxLink
 * Score
 * SearchExtraNS
 * SecureLinkFixer
 * SecurePoll
 * ShortUrl
 * SiteMatrix
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateData
 * TemplateSandbox
 * TextExtracts
 * Thanks
 * TheWikipediaLibrary
 * TitleBlacklist
 * TocTree
 * TorBlock
 * TranslationNotifications
 * TrustedXFF
 * TwoColConflict
 * UploadWizard
 * UploadsLink
 * UrlShortener
 * VipsScaler
 * WebAuthn
 * WikiLove
 * WikibaseMediaInfo
 * Wikidata.org
 * WikidataPageBanner
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaEvents
 * WikimediaIncubator
 * WikimediaMaintenance
 * WikimediaMessages
 * Wikisource
 * XAnalytics
 * cldr
 * intersection
 * timeline
 * wikihiero

Total changes
322 Changes in 49 repos by 77 authors