MediaWiki 1.41/wmf.1/Changelog

Core changes

 * - Branch commit for wmf/1.41.0-wmf.1 by trainbranchbot
 * - Add Hindko language (hno) by Amir E. Aharoni
 * - MessageCache: Don't initialize messageKeyOverrides in the constructor by mainframe98
 * - mediawiki.misc-authed-ooui: Merge in mediawiki.special.revisionDelete by Umherirrender
 * - TempFSFile: Keep the WeakMap alive  by Tim Starling
 * - objectcache: improve WANObjectCache::worthRefreshExpiring scalability by Aaron Schulz
 * - phpunit: Reduce some complexity in MediaWikiIntegrationTestCase by Timo Tijhof
 * - Namespace SpecialA* under \MediaWiki\Specials by James D. Forrester
 * - mediawiki.skinning: Apply central Codex tokens by Volker E
 * - languages: Enforce namespace and special page aliases without spaces by Umherirrender
 * - Fix NS_CATEGORY in Gur by Stang
 * - rdbms: Fix line indent in ChronologyProtector by Umherirrender
 * - EditPage: Support blanking of messages by Jon Robson
 * - Change the default of wgParserEnableLegacyMediaDOM to false   by Arlo Breault
 * - Update DummyLinker::userLink to match Linker::userLink by Thalia
 * - Fix total breakage of wgCanonicalServer fallback by Tim Starling
 * - Don't write to the source tree in ForeignResourceManagerTest by Tim Starling
 * - Fix tests that fail when $wgUsePigLatinVariant = false by Tim Starling
 * - rdbms: Add missing QUERY_CHANGE_ flag to internal "USE" query by Timo Tijhof
 * - build: Uprade stylelint-config-wikimedia from 0.13.1 to 0.14.0 by James D. Forrester
 * - SpecialFactoryPage: Don't use direct refs for namespaced classes by James D. Forrester
 * - RELEASE-NOTES-1.40: Note that the rename specials have also been namespaced by James D. Forrester
 * - Namespace SpecialWantedPages under \MediaWiki\Specials by James D. Forrester
 * - Namespace SpecialWantedFiles under \MediaWiki\Specials by James D. Forrester
 * - Namespace SpecialUserRights under \MediaWiki\Specials by James D. Forrester
 * - EditPage: Rename isIntroPlaintext to isMsgSameWhenParsed by Jon Robson
 * - BaseTemplate: Remove ::renderAfterPortlet & getAfterPortlet by rrana-wmf
 * - codex: Update newly added files to 0.7.0 by Roan Kattouw
 * - Make messages about editing site code more prominent by Jon Robson
 * - Namespace SpecialMovePage under \MediaWiki\Specials by James D. Forrester
 * - Namespace SpecialMostImages under \MediaWiki\Specials by James D. Forrester
 * - Api: Fix some very old copyright statements for Roan by James D. Forrester
 * - Rename PHP classes to match filenames by Fomafix
 * - styles: Replace deprecated `transition-ease-medium` variable by Volker E
 * - foreign-resources: Also fetch Less mixin files from Codex by Roan Kattouw
 * - mediawiki.skin: Provide wrapper files for importing Codex design tokens by Roan Kattouw
 * - Add lists of class names for dynamic diff classes by Sam Wilson
 * - mediawiki.skin.defaults.less: Add neutral values for all Codex tokens by Roan Kattouw
 * - Clean up the Article class a bit by Daimona Eaytoy
 * - specials: Style links to revisions in diff on Special:Undelete by Umherirrender
 * - A fake MessageLocalizer for use in unit tests by Michael Große
 * - RELEASE-NOTES: Correctly reflect that Codex 0.7.0 happened in MW 1.41 by Roan Kattouw
 * - Hard-deprecate deprecated pager methods/classes by Bartosz Dziewoński
 * - registration: Add a friendly error message for missing extension by Brian Wolff
 * - Update Codex from v0.6.2 to v0.7.0           by Volker E
 * - MaintenanceRunner: keep track of script class explicitly. by daniel
 * - Fix parameter index the contributions-subtitle message by Daimona Eaytoy
 * - Add namespaces, linktrail and digit transform table for Angika by Jon Harald Søby
 * - title: Simplify Title::newMainPage and improve docs by Timo Tijhof
 * - objectcache: make RedisBagOStuff::incrWithInit atomic via Lua by Aaron Schulz
 * - Skin: Prefer SkinComponentUtils over private function by Jon Robson
 * - action: Restrict action.delete.js to action=delete pages by Umherirrender
 * - MessageCache: Add a new hook for more performant override fetching by mainframe98
 * - OutputPage: Restore view-source access to former wfReportTime data by Timo Tijhof
 * - UploadBase::detectScript: Protect against null inputs to str_starts_with by James D. Forrester
 * - rdbms: Add db_log_category=performance to TransactionProfiler by Timo Tijhof
 * - SiteConfig: Get rid of of Cite-specific method by Subramanya Sastry
 * - Bump wikimedia/parsoid to 0.18.0 for MediaWiki 1.41 by C. Scott Ananian
 * - ParsoidHandlerTest: check no etag is emitted perdefault by daniel
 * - MaintenanceRunner: load script file early if possible by Kevin Israel
 * - On temp user creation, suppress watching of the user page by Tim Starling
 * - Prepare active branch following REL1_40 cut, labelling as 1.41-alpha by James D. Forrester
 * - cache: simplify LinkCache good/bad link handling by Aaron Schulz
 * - mediawiki.router: Add basic existence and instance test by Timo Tijhof
 * - Renameuser: Also rename user talk pages by Tim Starling
 * - Update specialblock target text to use usersmultiselect. by tsepothoabala
 * - Update block error messages by AnaïsGueyte
 * - Translate the `upright` option of images into Polish by Msz2001
 * - mediawiki.router: Remove publicly exposed oojs-router module by Timo Tijhof
 * - phpunit: Check if composer dependencies are up-to-date by Kosta Harlan
 * - specials: Add watch option for userpage to Special:Unblock by Umherirrender
 * - api: Add watch option for userpage to action=unblock by Umherirrender
 * - tests: Allow $subPage to be null by Lucas Werkmeister
 * - Template list in previews: Look up missing restriction level messages by Sam Wilson
 * - specials: Fix links to revisions in diff on Special:Undelete by Umherirrender

Vendor

 * - Bump parsoid to 0.18.0-a2         by Arlo Breault
 * - Revert "Upgrading lcobucci/jwt (4.1.5 => 4.3.0)" by James D. Forrester
 * - Bump wikimedia/parsoid to 0.18.0-a1 for MediaWiki 1.41 by C. Scott Ananian

AbuseFilter

 * - abusefilter.css: Increase the default abusefilter editor width by TheresNoTime

ApiFeatureUsage

 * - Replace deprecated \Elastica\Search::addIndex by Umherirrender

Babel

 * - Fix handling of babel translations when local messages are overriden by Pppery
 * - Babel: Fix the "findVariantLink behavior" for language variant categories by Winston Sung

Calendar

 * - CalendarTable: Replace strftime usage by TheresNoTime

CampaignEvents

 * - selenium: Edit Event Registration can allow organizer to change the by Vaughn Walters
 * - selenium: Refactor enable event to use API when not testing GUI by Vaughn Walters
 * - selenium: Edit Event registration can allow organizer to update event by Vaughn Walters

CentralAuth

 * - migratePass0.php: Fix DB query by Gergő Tisza
 * - SpecialCentralAuth: add pointer towards lock logs on meta by Taavi Väänänen
 * - SpecialContributionsHookHandler.php: Add ContributionsToolLinksHook by TheresNoTime

CheckUser

 * - SpecialBlock.js: Check for IP addresses if target is pre-filled by Thalia
 * - Add "Show IP" button on the Page information page by csimiyu
 * - Enable checkusers to reveal all IPs used by a temporary user by STran
 * - Show IP addresses for temporary accounts when selected in Special:Block by Thalia

CirrusSearch

 * - styles: Replace 'mediawiki.ui/variables' call with skin variables  by Volker E
 * - build: Updating composer dependencies by Umherirrender
 * - build: Updating npm dependencies by Umherirrender
 * - Monitor page deletion lag via onArticleDeleteComplete by David Causse
 * - Monitor update lag from onUploadComplete by David Causse
 * - Monitor update lag via LinksUpdateComplete by David Causse
 * - Do not access MediaWikiServices from JobTraits::buildJobDelayOptions by David Causse
 * - Drop unused vars by David Causse
 * - Cleanup return types of some update methods by David Causse
 * - integration tests: log in when testing the new page creation link by David Causse

Cite

 * - selenium: Refactor WebdriverIO tests from sync to async mode by Peter Wangai
 * - Use double-colon for pseudo-elements by Subramanya Sastry
 * - Document Parsoid's differing HTML for follows by Subramanya Sastry
 * - Replace string|false in CiteParserTagHooks with nullable ?string by thiemowmde

cldr

 * - Add LocalNamesNo.php and LocalNamesNn.php by Jon Harald Søby
 * - Add Northern Hindko, not part of CLDR by Raymond

ContentTranslation

 * - Fix navigation from "Pick a sentence" step to dashboard by NikG
 * - CX: Move "getAllTranslations" method to TranslatorService by NikG
 * - CX: Move "isTranslator" static method to TranslatorService by NikG
 * - CX: Create TranslatorService to apply dependency injection by NikG

DiscussionTools

 * - Add new topic subscription button to page actions by Ed Sanders
 * - New topic notifications by Ed Sanders
 * - EventDispatcher: Generate dt-added-topic events by Ed Sanders
 * - Show usernames when display names are matched by Ed Sanders
 * - Allow visualenhancements on pages with __NEWSECTIONLINK__ by Ed Sanders
 * - Revert "Remove dtenable API hack" by Bartosz Dziewoński
 * - ThreadItem: Add display names to getAuthorsBelow by Ed Sanders
 * - CommentParser: Output display name if different to username by Ed Sanders
 * - Use setExtensionData instead of marker comments where possible (2/3) by Bartosz Dziewoński

DonationInterface

 * - Update SmashPig dependency and own version by Elliott Eggleston
 * - build: Updating composer dependencies by Umherirrender
 * - Update SmashPig lib version by Elliott Eggleston
 * - Round maximum USD amount for display by Elliott Eggleston
 * - Add recurring amount validation to DI level for dlocal IN bt recurring by wfan
 * - Lint braintree.js, make it pass by Elliott Eggleston
 * - Start linting dlocal.js by Elliott Eggleston
 * - Add credit card brand as payment_submethod from dlocal smartfield by wfan
 * - Dlocal: ensure new order IDs for each doPayment by Elliott Eggleston
 * - Workaround for UPI recurring return values by Elliott Eggleston
 * - Add monthly convert amounts for CZ by wfan
 * - Move PlaceholderFiscalNumber to gateway_common by Andrew Green
 * - build: Updating npm dependencies by Umherirrender

Echo

 * - Fix logging of cross-wiki API errors by Gergő Tisza

EntitySchema

 * - Replace Grunt with npm scripts by Michael Große
 * - Move elaboratory comment to production code by Michael Große
 * - Require strict types in Domain/Model by Lucas Werkmeister
 * - phpcs: Fix capitalization of MediaWiki by Lucas Werkmeister
 * - Slightly better copy for browser tests by Michael Große
 * - Browser test should not assume E1 exists and is a Schema by Michael Große
 * - Migrate usage of Database::select to SelectQueryBuilder in EntitySchema by Hasan Akgün
 * - Add sniff to ensure single-quoted strings by Michael Große
 * - Add integration test for PageHistoryLineEndingHandler by Lucas Werkmeister
 * - Have phpcs require strict types in new code by Michael Große
 * - Use extracted FakeQqxMessageLocalizer from upstream by Michael Große
 * - Begin to make use of new PHPCS rules in new code by Michael Große
 * - Refactor onPageHistoryLineEnding into dedicated hook class by Michael Große
 * - Enforce trailing commas in multi-line arrays by Lucas Werkmeister

EventLogging

 * - ext.eventLogging: Remove obsolete visibilitychange prefixes by Timo Tijhof
 * - MetricsClientIntegration: Make performer.registration_dt a string  by Sam Smith

EventStreamConfig

 * - StreamConfig: Soft deprecate parameter by Sam Smith

FileImporter

 * - Make use of named MainConfigNames::… constants by thiemowmde
 * - Add strict types to all PHP test code by thiemowmde

Flow

 * - convertToText.php: Use fresh parser for signature by Gergő Tisza
 * - convertToText.php: Handle API errors by Gergő Tisza

Gadgets

 * - Add namespace translations for Angika by Jon Harald Søby
 * - Add missing targets option by lens0021

GlobalBlocking

 * - Re-use core block messages to save work for translators by Thalia

GrowthExperiments

 * - Frontend documentation: fix stylelint config to lint the demo components by Sergio Gimeno
 * - Use MessageCacheFetchOverrides hook  by mainframe98
 * - Suggested edits: Fix links in change tags by Gergő Tisza
 * - build: Updating composer dependencies by Umherirrender
 * - PostEdit: Increment the edit-count-for-task-type count by Kosta Harlan
 * - LevelingUpManager: Handle links/link-recommendation collision by Kosta Harlan
 * - Frontend docs: allow serving files from outside the project root by vyanez
 * - Rename CdxButton `type` prop to `weight` by Anne Tomasevich
 * - TryNewTask: Set an array fallback if TryNewTaskOptOuts is null by Kosta Harlan
 * - SuggestedEditSession: Fix handling of post-save data refresh by Gergő Tisza
 * - SuggestedEditSession: Fix documentation by Gergő Tisza
 * - Leveling up: always set wgGELevelingUpEnabledForUser by Gergő Tisza
 * - Post-edit panel: fix skeleton behavior when there are no results by Sergio Gimeno
 * - Post edit panel: inject tasks store at instance creation by Sergio Gimeno
 * - Selenium tests: check for the title of the next card by Sergio Gimeno
 * - EchoGetStartedPresentationModel: Adjust secondary link by Kosta Harlan
 * - HelpPanel: Remove duplicate postedit-impression events by Kosta Harlan
 * - TryNewTaskPanel: Log savedTaskType in impression event by Kosta Harlan
 * - Frontend documentation: break vitest suite on console errors and warns by Sergio Gimeno
 * - Frontend documentation: setup vitest by Sergio Gimeno
 * - LevelingUpManager: Simplify shouldSendGetStartedNotification by Kosta Harlan
 * - styles: Replace deprecated WikimediaUI Base aliases with Codex tokens by Volker E
 * - Leveling up: Only show if homepage & suggested edits are enabled by Gergő Tisza
 * - Leveling up: Fix non-suggested postedit dialog image border by Gergő Tisza
 * - Frontend docs: use PostCSS plugin to avoid VitePress styles conflicting with custom styles by vyanez
 * - LevelingUpManager: Ensure that $suggestions is a TaskSet by Kosta Harlan

GWToolset

 * - Avoid code duplication in checkForRequiredFormFields method by Thiemo Kreuz

Kartographer

 * - Fix maplink selector by Isabelle Hurbain-Palatin
 * - Replace data-mw='interface' with usage of data-mw-kartographer by Isabelle Hurbain-Palatin
 * - Adjust autoPanPadding to prevent overlapping with buttons by Svantje Lilienthal
 * - Don't create impossible Special:Map/a/a/a links by thiemowmde
 * - Disable all interaction right before fullscreen map closes by thiemowmde
 * - Final VE fixes for deprecated (but supported) width in percent by thiemowmde

MachineVision

 * - build: Updating composer dependencies by Umherirrender
 * - build: Updating npm dependencies by Umherirrender

Math

 * - Fix preceding not by Stegmujo
 * - Fix varstigma by Stegmujo
 * - Fix a glitch in rendering style arguments by Stegmujo
 * - Fix gcd, min, max statements by Stegmujo
 * - Modules target desktop and mobile by default now by Moritz Schubotz (physikerwelt)
 * - Remove MathPlayer by Moritz Schubotz (physikerwelt)
 * - Fix for limits by Stegmujo

MediaSearch

 * - build: Updating composer dependencies by Umherirrender
 * - build: Updating npm dependencies by Umherirrender

MobileFrontend

 * - build: Updating composer dependencies by Umherirrender
 * - Remove redundant targets definitions by Jon Robson

NavigationTiming

 * - Navtiming: Collect total longtask and total longtask duration by babiola

OAuth

 * - Update testing requirement wikimedia/testing-access-wrapper to ~2.0 by Brian Wolff
 * - Revert "build: Remove pinning of indirect lcobucci/jwt dependency" by Jforrester
 * - mwoauthmanageconsumers-maintext: Use https by MarcoAurelio

PageTriage

 * - Change format of dates in the pagetriagestats API to ISO-8601 by MPGuy2824
 * - cleanup: ArticleCompile is an abstract class, not an interface by Kosta Harlan

Phonos

 * - Phonos: Add LoggerFactory, and log PhonosIPAFilePersistJob actions by TheresNoTime
 * - Phonos.php: Register file usage by TheresNoTime
 * - Fix inline display of label next to inline-block icon by Sam Wilson

QuickSurveys

 * - build: Updating composer dependencies by Umherirrender

ReadingLists

 * - Use different message when importing list on web vs apps. by Dmitry Brant
 * - Drop temporary feature flag by Jon Robson
 * - Update design of landing page for sharing reading list. by Dmitry Brant

RelatedArticles

 * - build: Updating composer dependencies by Umherirrender

Scribunto

 * - Add namespace translations for Angika by Jon Harald Søby
 * - Add namespace translations for [glk] Gilaki by Jon Harald Søby

SearchVue

 * - build: Updating composer dependencies by Umherirrender
 * - Make quickview height relative to search container by Simone Cuomo

SecureLinkFixer

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

SecurePoll

 * - Sort STVTallier ranking for candidate ids order within same totals by Umherirrender

TemplateData

 * - Fix placeholder size for the "edit template data" button by thiemowmde
 * - Extract serialization methods into TemplateDataStatus class by thiemowmde
 * - Add missing parser tests to cover parser hook and renderer by thiemowmde

TemplateWizard

 * - selenium: Refactor WebdriverIO tests from sync to async mode by Peter Wangai
 * - selenium: Refactor WebdriverIO tests from sync to async mode by Peter Wangai

TextExtracts

 * - Skip in TOC when extracting first section by Thiemo Kreuz

Translate

 * - Use TranslatablePage source language code when fetching fallback by Abijeet
 * - Remove usage of TTMServer::primary by Abijeet
 * - ttmserver/Interfaces: Breakup into separate classes and namespace by Abijeet
 * - MessageWebImporter: Remove makeTextFuzzy by Abijeet
 * - MessageWebImporter: Make certain methods non-static by Abijeet
 * - MessageWebImporter: Improve variable names by Abijeet
 * - MessageWebImporter: Remove $editFlags parameter that is always 0 by Abijeet
 * - MessageWebImporter: Code modernization and cleanup by Abijeet
 * - Add Translate:TranslatorSandbox:UserPromoted hook by Niklas Laxström
 * - ThinMessage.php: Move to MessageLoading namespace by wangombe
 * - FatMessage.php: move to MessageLoading namespace by wangombe
 * - Move TMessage::class to MessageLoading namespace by wangombe
 * - MessageWebImporter: Add fuzzy in diff for old messages with fuzzy tag by Abijeet
 * - LegacyInterfaceHookHandler: Check before adding FUZZY string by Abijeet
 * - MessageWebImporter: Make doAction method private and remove parameter by Abijeet
 * - TtmServerFactory: Use typed properties by Abijeet
 * - Remove usage of deprecated TTMServer::factory by Abijeet
 * - MessageBundleTranslation: Use typed properties introduced in PHP 7.4 by Abijeet
 * - MessageLoading: Use typed properties introduced in PHP 7.4 by Abijeet
 * - ImportTranslations: Do not add FUZZY if message already has fuzzy tag by Abijeet

TwoColConflict

 * - build: Updating composer dependencies by Umherirrender
 * - Fix instable test for the tour dialog by WMDE-Fisch

UniversalLanguageSelector

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

UploadsLink

 * - Fix spelling errors in Hooks.php documentation by Thalia
 * - Disable uploads link for temp users by default as well by Bartosz Dziewoński

UploadWizard

 * - stylelint: Auto-fix selector-pseudo-element-colon-notation by James D. Forrester

VueTest

 * - Update Codex to 0.7.0 and rename `type` prop to `weight` by Anne Tomasevich
 * - i18n: Replace "Your Name" placeholder with actual author names by Roan Kattouw

VisualEditor

 * - Update VE core submodule to master (b9ccfc346) by Ed Sanders
 * - Show redirect meta items in visual diff by Ed Sanders
 * - Render category diff by Ed Sanders
 * - Follow-up Id21c122d4: Replace MetaItem#remove with SurfaceFragment#removeMeta by Ed Sanders
 * - Update VE core submodule to master (f5142bc0d) by Ed Sanders
 * - DirectParsoidClient: Remove backward-compatibility workaround by C. Scott Ananian
 * - MWPreviewElement: Strip already-present TemplateStyles when building elements by Ed Sanders
 * - MWGalleryImageNode: Handle own children by Ed Sanders
 * - Gallery tests: Remove data-mw.body attribute by Ed Sanders
 * - Update gallery alt with caption when set as same by Arlo Breault
 * - stylelint: Auto-fix selector-pseudo-element-colon-notation by James D. Forrester
 * - Move gray highlight of template items before blue active rect  by Thiemo Kreuz
 * - Avoid/simplify possibly slow regular expressions by Thiemo Kreuz

Wikibase

 * - REST: Add base class for use case exceptions by sihe
 * - REST: Create GetItemLabelValidator by Muhammad Jaziraly
 * - REST: Create GetItemLabelRouteHandler by sihe
 * - REST: Create GetItemDescriptionRouteHandler by Muhammad Jaziraly
 * - build: Updating composer dependencies by Umherirrender
 * - REST: Add "validate fully in deserializers" ADR by Ollie Shotton
 * - REST: Create GetItemDescription use case by Muhammad Jaziraly
 * - REST: Create GetItemAliasesInLanguage use case by Muhammad Jaziraly
 * - Fix PHP 8 warning in Special:EntityData by Lucas Werkmeister
 * - REST: Create ItemAliasesInLanguageRetriever by Muhammad Jaziraly
 * - REST: Create GetItemLabel use case by sihe
 * - REST: Create an ItemLabelRetriever by sihe
 * - REST: Add LanguageCodeValidator by Jakob Warkotsch
 * - REST: Create ItemDescriptionRetriever by Muhammad Jaziraly
 * - InjectRCRecordsJob: Remove transaction by Lucas Werkmeister
 * - REST: Add single description by language route to OAS by Muhammad Jaziraly
 * - REST: Add aliases by language to OAS by sihe
 * - REST: Add single label by language to OAS by sihe
 * - REST: Refactor PatchItemStatement validation by sihe
 * - MwDateFormatParserFactoryTest: Improve assertion message by Lucas Werkmeister
 * - Let DateFormatParser accept and skip redundant day of the week by thiemowmde
 * - Make DateFormatParser accept more Asian/Chinese date formats by thiemowmde
 * - REST: Remove ItemRedirectResponse.php by Ollie Shotton
 * - REST: Remove ErrorJsonPresenter.php by Ollie Shotton
 * - REST: Remove ErrorResponse by sihe
 * - REST: Remove ErrorResponse from ResponseFactory by sihe
 * - Add the new selector for Kartographer maps by Isabelle Hurbain-Palatin

WikibaseCirrusSearch

 * - Do not dispatch to query builders that are for non-local entity types by David Causse

WikibaseLexeme

 * - build: Updating composer dependencies by Umherirrender
 * - AddSense: Reduce cyclomatic complexity by Umherirrender
 * - build: Updating npm dependencies by Umherirrender

WikibaseQualityConstraints

 * - Bump jasmine from 4.5.0 to 4.6.0 by Addbot

WikiEditor

 * - Realtime Preview: remove Beta Feature and onboarding popup by Sam Wilson

WikiLambda

 * - ApiPerformTest: Catch if the Title is null by James D. Forrester
 * - ZMultiLingualString::setMonoLingualString: Cast null to empty string by James D. Forrester
 * - APIs: Move executeFunctionCall up from ApiPerformTest to trait by James D. Forrester
 * - UpdateImplementationsJob: Log the status object returned by the write attempt by James D. Forrester
 * - APIs: Consolidate Orchestrator set-up code by James D. Forrester
 * - ApiPerformTest: Move getZid to ZObjectUtils by James D. Forrester
 * - build: Updating composer dependencies by Umherirrender
 * - ApiPerformTest: Get $previousFirst from $attachedImplementationZids by dmartin
 * - Update references to Title class now it's been namespaced by James D. Forrester
 * - FunctionViewerDetailsTable: Fix use of deprecated token @color-primary by Roan Kattouw
 * - ApiPerformTest: Refactor ::getTester/ImplementationZids to ZFunction by James D. Forrester
 * - tests: Don't try to re-create global window, it breaks on Node 19 by appare45
 * - build: Upgrade Codex from 0.5.0 to 0.6.2 by James D. Forrester
 * - ZMetadataDialog: Tweak the spacing between the Help icon and link by James D. Forrester

WikimediaApiPortalOAuth

 * - keyManagement: Adjust CSS to avoid table overflow in MonoBook skin by MarcoAurelio

WikimediaEvents

 * - ext.wikimediaEvents: Minor clean up and optims by Timo Tijhof

WikimediaIncubator

 * - Make Special:MyWiki not translate namespaces into user language by Jon Harald Søby

WikimediaMessages

 * - Fix duplicate message keys in GlobalBlocking overrides by Thalia
 * - Use MessageCacheFetchOverrides hook by mainframe98
 * - Tweak verbiage for downloading app when sharing reading list. by Dmitry Brant
 * - Add messages for Angika Wikipedia (anpwiki) by gerritbot
 * - Fix whitespace in GlobalBlocking message by Thalia
 * - Add messages for Central Kurdish Wiktionary (ckbwiktionary) by gerritbot
 * - Refactor Global Blocking error messages for clarity by AnaïsGueyte
 * - Add override for centralauth-admin-log-otherwiki by Taavi Väänänen

Wikistories

 * - build: Updating composer dependencies by Umherirrender
 * - Allow adding categories to stories by Stephane Bisson

MinervaNeue

 * - Add languages to Minerva HTML by Jon Robson
 * - Import Codex tokens into mediawiki.skin.variables.less by Roan Kattouw

Vector

 * - build: Updating composer dependencies by Umherirrender
 * - Enable page tools for anonymous users by Nicholas Ray
 * - Bump styles sizes for content-media feature by Arlo Breault
 * - Rename CdxButton `type` prop to `weight` by Anne Tomasevich
 * - Import Codex tokens into mediawiki.skin.variables.less by Roan Kattouw
 * - Update how pinnable elements are handled with no-js and gradeC cases  by bwang
 * - Use clearer folder structure for Vector and Vector 2022 skin variables by Jon Robson
 * - Enable pinning for anon main menu when page tools is enabled by Nicholas Ray
 * - Reduce height of the article toolbar by sushrith
 * - styles: Don't include the "jump to" links when copy-pasting article text by Volker E
 * - styles: Remove outdated fallback `width` by Volker E
 * - styles: Remove obsolete `@z-index-sidebar-button` variable by Volker E
 * - Ensure the TOC works across all pinned/unpinned cases when JS is disabled by bwang
 * - Change margin-top element from .mw-body-content to #mw-content-text by David Lynch

VisualEditor/VisualEditor

 * - ve.ui.DiffElement: Respect line breaks in attribute changes by Bartosz Dziewoński
 * - Force-show invisible template markers by Ed Sanders
 * - Update language lists by Ed Sanders
 * - ve.dm.VisualDiff: Include metadata in diff by Ed Sanders
 * - [BREAKING CHANGE] Move ve.dm.MetaList to ve.dm.Document by Ed Sanders

No changes

 * 3D
 * ActiveAbstract
 * AdvancedSearch
 * AntiSpoof
 * ArticleCreationWorkflow
 * ArticlePlaceholder
 * BetaFeatures
 * BounceHandler
 * Campaigns
 * Capiunto
 * CategoryTree
 * CentralNotice
 * CharInsert
 * ChessBrowser
 * CiteThisPage
 * Citoid
 * CodeEditor
 * CodeMirror
 * Cognate
 * Collection
 * CologneBlue
 * CommonsMetadata
 * ConfirmEdit
 * ContactPage
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * DoubleWiki
 * Elastica
 * ElectronPdfService
 * EventBus
 * ExtensionDistributor
 * ExternalGuidance
 * FeaturedFeeds
 * FileExporter
 * FlaggedRevs
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GeoCrumbs
 * GeoData
 * GlobalCssJs
 * GlobalPreferences
 * GlobalUsage
 * GlobalUserPage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * Graph
 * GuidedTour
 * IPInfo
 * ImageMap
 * ImageSuggestions
 * InputBox
 * Insider
 * Interwiki
 * InterwikiSorting
 * Josa
 * JsonConfig
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * Linter
 * LiquidThreads
 * Listings
 * LoginNotify
 * MapSources
 * MassMessage
 * MediaModeration
 * MobileApp
 * Modern
 * MonoBook
 * MultimediaViewer
 * NearbyPages
 * NewUserMessage
 * Newsletter
 * Nostalgia
 * Nuke
 * OATHAuth
 * OAuthRateLimiter
 * ORES
 * OpenStackManager
 * PageAssessments
 * PageImages
 * PageNotice
 * PageViewInfo
 * PagedTiffHandler
 * ParserFunctions
 * PdfHandler
 * Poem
 * Popups
 * ProofreadPage
 * PropertySuggester
 * Quiz
 * RSS
 * RevisionSlider
 * SandboxLink
 * Score
 * SearchExtraNS
 * ShortUrl
 * SimilarEditors
 * SiteMatrix
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateSandbox
 * TemplateStyles
 * Thanks
 * TheWikipediaLibrary
 * TimedMediaHandler
 * Timeless
 * TitleBlacklist
 * TocTree
 * TorBlock
 * TranslationNotifications
 * TrustedXFF
 * UrlShortener
 * VipsScaler
 * WebAuthn
 * WikiLove
 * WikibaseLexemeCirrusSearch
 * WikibaseMediaInfo
 * Wikidata.org
 * WikidataPageBanner
 * WikimediaApiPortal
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaMaintenance
 * Wikisource
 * XAnalytics
 * intersection
 * timeline
 * wikihiero

Total changes
355 Changes in 65 repos by 84 authors