MediaWiki 1.38/wmf.3/Changelog

Core changes

 * - Branch commit for wmf/1.38.0-wmf.3 by trainbranchbot
 * - Reword responsive skin option help message by Ammarpad
 * - SkinFactory: Allow skins to be registered as "skippable" by jdlrobson
 * - uppercaseTitlesForUnicodeTransition: improve userlist format by Petr Pchelko
 * - Add perm checks to UndeletePage and make it a real service by Daimona Eaytoy
 * - Update release notes for 59b002b8669 and 7e12163708c by Aaron Schulz
 * - objectcache: Remove unused QOS_LOCALITY_* constants by Aaron Schulz
 * - Only allow UserIdentity in DatabaseBlock::setBlocker by Alexander Vorwerk
 * - Fix API warning in live preview  by Daimona Eaytoy
 * - Call getHtml on the content object, not TextContent by Umherirrender
 * - parser: Add @since to Parser::getUserIdentity by Umherirrender
 * - phpunit: Include DevelopmentSettings for `composer phpunit:unit` by Antoine Musso
 * - ApiEditPage: Harden content model mismatch checks by Ammarpad
 * - Remove more defaults for flag UserOptionsManager::EXCLUDE_DEFAULTS by Umherirrender
 * - objectcache: cleanup cache value attribute methods in WANObjectCache by Aaron Schulz
 * - Rename ParserOutput::{allow,prevent}Clickjacking -> ::{get,set}PreventClickjacking by C. Scott Ananian
 * - Use fluent setters instead of optional params in UndeletePage by Daimona Eaytoy
 * - Hard deprecate Collation::singleton and ::factory by Umherirrender
 * - watcheditem: Use lazy push for WatchlistExpiryJob  by Amir Sarabadani
 * - SpecialMovePage: stop falling back to global state  by Alexander Vorwerk
 * - Replace deprecated User function in ChangesListSpecialPage by Umherirrender
 * - objectcache: Cleanup mcrouter config comments for WANObjectCache by Aaron Schulz
 * - IcuCollation: Add some more icu to unicode version mappings by Reedy
 * - Add 1.31.16/1.35.4/1.36.2 to HISTORY by Reedy
 * - Remove UndeleteForm::undelete hook by Daimona Eaytoy
 * - SECURITY: fix PoolCounter protection of Special:Contributions by Chris Danis
 * - SECURITY: Add straight join to ApiQueryBacklinks by Amir Sarabadani
 * - Sync up with Parsoid (legacyMediaP|mediaP|p)arserTests.txt by Subramanya Sastry
 * - SECURITY: Pass escaped HTML to FullSearchResultWidget::buildMeta by Alexander Vorwerk
 * - Rename ParserOutput::hideNewSection -> ::setHideNewSection by C. Scott Ananian
 * - Metrics: Implement statsd-exporter compatible Metrics interface  by Cole White
 * - preferences: Remove unused hack for the Gadgets extension by Bartosz Dziewoński
 * - ParserOutput::isLinkInternal: make @internal by C. Scott Ananian
 * - Update callers of deprecated BacklinkCache methods by TChin
 * - Add 1.36 and 1.37 snapshots to sqlite db tests by Amir Sarabadani
 * - IndexPager: Add @since notation to getDatabase by Reedy
 * - Sync up with Parsoid mediaParserTests.txt by Isabelle Hurbain-Palatin
 * - Remove DatabaseBlock 'byText' and 'by' with user ID by Roman Stolar
 * - Sync up with Parsoid parserTests.txt by Isabelle Hurbain-Palatin
 * - Move Content::getParserOutput & AbstractContent::fillParserOutput to ContentHandler by Roman Stolar
 * - Pass int[] to RevisionStore::getRevisionSizes by Umherirrender
 * - Hard deprecate DatabaseBlock::purgeExpired by Alexander Vorwerk
 * - Set interface flag when parsing 'previewnote' for live preview by Bartosz Dziewoński
 * - Use some variables in content.thumbnails-print.less by Arlo Breault
 * - Introduce CommentFormatter by Tim Starling
 * - Bump minimum required version for upgrade to 1.29 by Amir Sarabadani
 * - Deprecate the UndeleteForm::undelete hook by Daimona Eaytoy
 * - Use @phpcs-require-sorted-array on pre-defined array in Names.php by Umherirrender
 * - Hard deprecate User::blockedby, User::getblockid by vladshapik
 * - Add Xiang Chinese to Names.php by Amir E. Aharoni
 * - Match gallery output with Parsoid by Arlo Breault
 * - Check change tags permissions in DeletePage by Daimona Eaytoy
 * - resourceloader: Avoid repeatly calls to getter functions by Umherirrender
 * - resourceloader: Preserve new 'debug' param in getScriptURLsForDebug by Timo Tijhof
 * - Throw on invalid database connection in DBLockManager::getConnection by Umherirrender
 * - Use 0 instead of "" in phpCharToUpper.json by Fomafix
 * - Change null to [] for html attributes on call of Html functions by Umherirrender
 * - Names.php: Use single quotes instead of double quotes by Fomafix
 * - Parser::preprocess and ::preSaveTransform put one parameter per line by Alexander Vorwerk

Vendor

 * - Bump parsoid to 0.15.0-a2   by sbailey
 * - Updating lcobucci/jwt (3.4.0 => 3.4.6) by Reedy
 * - Order platform requirements in order by Reedy
 * - Allow composer-plugin-api ^2.0 for migration by Reedy

AbuseFilter

 * - ace: Add support for multiline strings by Daimona Eaytoy
 * - Replace custom regex with TextContent::normalizeLineEndings by Thiemo Kreuz
 * - Update incomplete type hints in TablePager subclasses by Thiemo Kreuz

AdvancedSearch

 * - Set DefaultUserOptions by Umherirrender

Babel

 * - Use DB_PRIMARY instead of deprecated DB_MASTER by Alexander Vorwerk

CentralAuth

 * - Cast return of ceil to int for array_slice by Umherirrender
 * - Avoid using MWNamespace by Alexander Vorwerk
 * - SECURITY: Pass escaped HTML to the 'setchange' log by Alexander Vorwerk
 * - Namespace session providers by Taavi Väänänen

ChessBrowser

 * - Get rid of +tidy references from parser tests by Subramanya Sastry
 * - Simplify the distance in SquareRelations by Derk-Jan Hartman
 * - Only deliver CSS module for FEN  by Derk-Jan Hartman
 * - Only transition on the CSS transform by Derk-Jan Hartman
 * - i18n: Improve piece-related messages by wugapodes

CirrusSearch

 * - Stop passing a config into PageArchive by Alexander Vorwerk
 * - Use lazypush for queuing job of onLinksUpdateCompleted hook  by Amir Sarabadani

Cite

 * - Sync up with Parsoid citeParserTests.txt by Subramanya Sastry
 * - Fix class doc block for VE action by WMDE-Fisch
 * - Make citation dialog behave more like VE by Adam Wight

Cognate

 * - Lazy push CacheInvalidator job  by Amir Sarabadani

Collection

 * - build: Include i18n/api in banana run by Umherirrender
 * - Api: Introduce the `collection-removeitem` api module by Derick Alangi
 * - Introduce api action module to replace onAjaxCollectionGetPopupData by TChin
 * - Api: Remove redundant overriding of `ApiBase::__construct` by Derick Alangi
 * - Introduce api action module to replace onAjaxCollectionSortItems by TChin
 * - Introduce api action module to replace onAjaxCollectionSetSorting by TChin
 * - Introduce api action module to replace onAjaxCollectionClear by TChin

ConfirmEdit

 * - Use namespaced MathRenderer in MathCaptcha by Umherirrender

ContentTranslation

 * - CX3 Build 0.1.0+20211004 by Santhosh Thottingal
 * - SX: Add initializeLanguages vuex action by NikG
 * - SX Publishing: Fix issues for published target section title by NikG
 * - SX: Fix tests with composition api by NikG
 * - SXContentComparatorContentHeader: Set z-index to fix stack order by NikG
 * - Swap AbuseFilterVariableHolder for namespaced VariableHolder by Reedy
 * - Use namespaced AbuseFilter class by Reedy
 * - Use namespaced BetaFeatures class by Reedy
 * - Merge 4 dependencies into ext.cx.dashboard by DannyS712
 * - Drop mw.cx.tools and mw.cx.tools.TemplateTool modules by DannyS712
 * - build: Disable phan option scalar_implicit_cast and make pass by Umherirrender
 * - Merge some dependencies into mw.cx.SourcePageSelector by DannyS712
 * - SXContentComparator: Move targetTitle watcher from composable to SFC by NikG
 * - Merge two more dependencies into mw.cx.init.Translation by DannyS712

DiscussionTools

 * - Compress emptystate.svg with svgo by Ed Sanders
 * - Fix almost all errors codes being logged as `http-0` by Bartosz Dziewoński
 * - Clarify the references to talk pages in notification preferences (#2) by Bartosz Dziewoński
 * - Add a link to preferences within the Reply and New Discussion Tools by Bartosz Dziewoński

DonationInterface

 * - Allow to turn off monthly convert with variant parameter by pcoombe
 * - Add payment_method to authorize request by cstone

Echo

 * - Replace deprecated Title::newFromIDs by TChin
 * - Use namespaced CentralAuthSessionProvider by Alexander Vorwerk

EventBus

 * - Guard against undefined index notice when setting x-client-ip by Ottomata

EventLogging

 * - Update wgEventStreams test fixture format by Michael Holloway

EventStreamConfig

 * - Expect wgEventStreams to be an associative array by Michael Holloway
 * - Convert wgEventStreams test fixtures to be associative arrays by Michael Holloway

FileExporter

 * - Use namespaced BetaFeatures class by Reedy

FlaggedRevs

 * - Add flaggedrevswatch to DefaultUserOptions by Umherirrender

Flow

 * - Remove reference to deleted mediawiki.ui.text RL module by Gergő Tisza
 * - Swap AbuseFilterVariableHolder for namespaced VariableHolder by Reedy
 * - Use namespaced AbuseFilter class by Reedy

Gadgets

 * - Make each gadget a separate preference, instead of one huge multiselect by Bartosz Dziewoński

GlobalPreferences

 * - Check element structure when handling htmlform.enhance hook by Sam Wilson

GrowthExperiments

 * - Help panel: Don't auto-advance guidance when the panel is closed by MewOphaswongse
 * - Mentee overview: Apply cursor: pointer to table header by Martin Urbanec
 * - Mentee overview: Truncate long usernames by Martin Urbanec
 * - Mentee overview: Clicking user avatar should sort by last_active by Martin Urbanec
 * - Suggested Edits: Update placeholder image by MewOphaswongse
 * - Post-edit dialog: Explicitly set icon size & show button border on both platforms by MewOphaswongse
 * - SuggestedEdits: Set max-width for filters by Kosta Harlan
 * - ImageRecommendations: Set placeholder CSS class on small task card by default by Kosta Harlan
 * - Add Image: Don't show thumbnails on task cards  by Gergő Tisza
 * - SECURITY: Fix XSS in SpecialEditGrowthConfig by Martin Urbanec
 * - Add an image: image viewer updates by MewOphaswongse
 * - Set growthtasks API parameter limits by Gergő Tisza
 * - build: Disable phan option scalar_implicit_cast and make pass by Umherirrender
 * - updateMenteeData: Only consider primary mentees by Martin Urbanec
 * - Add an image: Image viewer by MewOphaswongse
 * - Add image recommendations to task type A/B filter by Gergő Tisza

InputBox

 * - Get rid of +tidy references from parser tests by Subramanya Sastry

Interwiki

 * - Add a field to Special:Interwiki to add/edit the API URL of interwiki by Sophivorus
 * - Retain the Forward and Transclude flag status options when editing an existing interwiki prefix by Sophivorus
 * - Fix two Explicitly typos by Reedy

IPInfo

 * - Implement use agreement checkbox for IPInfo in Special:Preferences by STran
 * - Make IPInfo tool available on Special:RecentChanges by tsepothoabala
 * - Implement enterprise db info retriver by STran

LabeledSectionTransclusion

 * - build: Suppress phan failure by Umherirrender

Math

 * - Remove empty string workaround by physikerwelt (Moritz Schubotz)
 * - Remove global namespace class aliases by Reedy
 * - Register 'math' parser option by Petr Pchelko
 * - Move rendering modes name resolution to MathConfig by Petr Pchelko
 * - Clean up handling of user preferences by Petr Pchelko
 * - Move math configuration methods into a service by Petr Pchelko

MediaSearch

 * - Ensure that filter state is stashed in mw.storage by Eric Gardner

MobileFrontend

 * - Fix search within pages alignment by jdlrobson
 * - selenium: Upgrade @wdio/cucumber-framework to v7 by Željko Filipin
 * - Add test for invalid IP address error by Lucas Werkmeister
 * - selenium: Upgrade WebdriverIO to v7 by Željko Filipin
 * - build: Disable phan option scalar_implicit_cast and make pass by Umherirrender
 * - build: Disable phan option null_casts_as_any_type and make pass by Umherirrender
 * - Take the number of licenses from the hook instead of guessing by Bartosz Dziewoński

Newsletter

 * - Switch to new PageUndelete hook by Daimona Eaytoy

PagedTiffHandler

 * - Record retrieveMetaData shellouts in statsd by Kunal Mehta

Popups

 * - Use namespaced BetaFeatures class by Reedy

ProofreadPage

 * - Harden page number calculation to not run into PHP_INT_MAX by Thiemo Kreuz
 * - Harden page number calculation to not run into PHP_INT_MAX by Thiemo Kreuz
 * - Fix/improve type hints and related PHPDoc tags by Thiemo Kreuz
 * - Streamline/simplify code dealing with User objects by Thiemo Kreuz
 * - Change 'fromdbmaster' to WikiPage::READ_LATEST by Umherirrender
 * - build: Suppress phan failure by Umherirrender

RevisionSlider

 * - Add revisionslider-disable to DefaultUserOptions by Umherirrender

SecurePoll

 * - SECURITY: Fix XSS via User-agent or XFF header on voter list by Kunal Mehta
 * - Update @since docs for the SecurePoll HookRunner by Alexander Vorwerk
 * - Implement archiving functionality by STran

SyntaxHighlight_GeSHi

 * - Get rid of +tidy, +untidy references from parser tests by Subramanya Sastry

TemplateData

 * - Replace deprecated onPageContentSave hook by TChin
 * - Use more generic @covers tags in Serialization test by Thiemo Kreuz

TemplateStyles

 * - build: Suppress phan failure by Umherirrender

TimedMediaHandler

 * - Use namespaced BetaFeatures class by Reedy
 * - Use UserGetDefaultOptions hook to provide defaults by Umherirrender

timeline

 * - Catch TimelineException from fixMap by Kunal Mehta
 * - Bump CACHE_VERSION for ffa2ac0be55 by Kunal Mehta
 * - Fix passing temp directory to EasyTimeline.pl by Kunal Mehta

Translate

 * - Optimize metadata query in Recent(Additions)MessageGroup  by Niklas Laxström
 * - ApiTranslationAids: Move to namespace by Abijeet
 * - TranslationAid: Move into namespace by Abijeet
 * - SECURITY: Allow revdel-related actions in translatable pages by Martin Urbanec
 * - MessageGroupBase: Remove typehint from getMessageGroupStates by Abijeet
 * - AggregateGroupsSpecialPage: Clean up by Niklas Laxström
 * - Move SpecialAggregateGroups to namespace and rename by Niklas Laxström
 * - Optimize metadata query on Special:AggregateGroups by Niklas Laxström
 * - Add %MESSAGE_URL% placehodler for support params by Niklas Laxström
 * - Remove deprecated getWorkflowConfiguration by Niklas Laxström
 * - QueryMessageCollection: Warn if source language is disabled by Abijeet

TwoColConflict

 * - Enable optional PHPCS sniffs by Thiemo Kreuz
 * - Use namespaced BetaFeatures class by Reedy

UniversalLanguageSelector

 * - Use namespaced BetaFeatures class by Reedy
 * - Update jquery.uls from upstream by Abijeet

UploadWizard

 * - Drop Python API tests, not run for years by James D. Forrester

VisualEditor

 * - Reduce duplicate/dead code when checking for single templates by Thiemo Kreuz
 * - Keyboard shortcut to add a new template by Adam Wight
 * - Don't get stuck on a narrow mode sidebar by WMDE-Fisch
 * - Better name for .selectPartByPageName method by Thiemo Kreuz
 * - Add missing @fires documentation tags by Thiemo Kreuz
 * - Update VE core submodule to master (14151330e) by Bartosz Dziewoński
 * - Filter JavaScript namespacesWithSubpages to only existing namespaces by DannyS712
 * - Don't include `null` in the namespaces where VE can be enabled by DannyS712
 * - Hack out forced scroll to first BookletLayout element by Thiemo Kreuz
 * - Fix more/less button placement for different feature flag combinations by Andrew Kostka
 * - First QUnit test for dialog classes by Adam Wight
 * - Add unit tests for static ApiVisualEditor methods by Thiemo Kreuz
 * - Remove obsolete …OutlineWikitextWidget test by Thiemo Kreuz
 * - Refine wording of "template name with subst/syntax" message by Thiemo Kreuz
 * - Add/remove some TODO comments by Thiemo Kreuz
 * - Better method name for the parameter name validation update by Thiemo Kreuz
 * - Cover suggestedvalues feature in MWParameterPage class by Thiemo Kreuz
 * - Make function overridable by subclasses by Adam Wight

Wikibase

 * - Lua: Don't allow bypassing usage tracking by tzhelyazkova
 * - Use namespaced MathDataUpdater by Reedy
 * - Fix message using a jQuery object by DannyS712
 * - Make PropertyId an interface by Jakob Warkotsch
 * - LabelUniquenessValidatorTest: use NumericPropertyId by Jakob Warkotsch
 * - Add missing packages to unit tests list by Lucas Werkmeister
 * - Use lazypush for pushing the DispatchChanges job by Amir Sarabadani
 * - Fix deprecated Hooks::run call in ChangeHandler by Dat
 * - Add types per ADR-11 by Michael Große
 * - Track time until dispatched recent changes are inserted by Michael Große
 * - Set DefaultUserOptions for rcshowwikidata and wlshowwikibase option by Umherirrender
 * - Prevent creation of true duplicates by Lucas Werkmeister
 * - FP: Change PropertyId to NumericPropertyId by Jakob Warkotsch
 * - Add LabelUniquenessValidator to check properties by toan
 * - Add TermsCollisionDetector::detectLabelsCollision by toan
 * - Make EntityId an interface by Jakob Warkotsch
 * - Allow unknown item ID in SiteLinkConflictLookup by Lucas Werkmeister
 * - Use CONN_TRX_AUTOCOMMIT in SqlSiteLinkConflictLookup by Lucas Werkmeister
 * - Fix wording for wikibase-replicationnote English by rishabhbhat

WikibaseMediaInfo

 * - Remove unused mediainfo_fulltext profile by Matthias Mullie

WikiEditor

 * - Remove out-of-date version requirement from README by Sam Wilson

WikimediaBadges

 * - Handle missing items in WikibaseClientSiteLinksForItemHandler by Lucas Werkmeister

WikimediaMaintenance

 * - maintenance: Add email search script by Jcrespo

WikimediaMessages

 * - Add messages for Amis Wikipedia (amiwiki) by gerritbot
 * - Remove pointless @return annotations by Reedy
 * - Simplify checks related to $wgRightsUrl by Bartosz Dziewoński
 * - Remove property namespace from Commons copyright  by Lucas Werkmeister
 * - Add messages for Lombard Wiktionary (lmowiktionary) by gerritbot
 * - Provide plural count in MobileLicenseLink hook by Bartosz Dziewoński

CologneBlue

 * - Merge skins.cologneblue.i18n module into skins.cologneblue by DannyS712

MinervaNeue

 * - Search header should be vertically centered, not top aligned(take 2) by Jdlrobson
 * - Revert "Search header should be vertically centered, not top aligned." by Kosta Harlan
 * - Inline single use module skins.minerva.icons.images.scripts by DannyS712
 * - DownloadAsPdf follow ups by jdlrobson
 * - Change footer logo from a heading element to a div by Nicholas Ray

Timeless

 * - TimelessVariablesModule: clean up constructor indentation by DannyS712

Vector

 * - Replace getVectorMenu function with jQuery equivalent by bwang
 * - Accommodate other sticky elements with sticky header by Clare Ming
 * - Update sticky header to be hidden to screen readers and not tabbable by bwang
 * - Restore original more menu padding in legacy Vector by jdlrobson
 * - Add scroll padding to the root element when the sticky header is enabled by Nicholas Ray
 * - templates: Move spaces into conditions for cleaner html by Umherirrender

VisualEditor/VisualEditor

 * - Add precision on matching order in ve.dm.ModelRegistry doc comments by Isabelle Hurbain-Palatin

No changes

 * 3D
 * ActiveAbstract
 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * ArticlePlaceholder
 * BetaFeatures
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * CentralNotice
 * CharInsert
 * CheckUser
 * CiteThisPage
 * Citoid
 * CodeEditor
 * CodeMirror
 * CodeReview
 * CommonsMetadata
 * CongressLookup
 * ContactPage
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * DoubleWiki
 * DynamicSidebar
 * Elastica
 * ElectronPdfService
 * EntitySchema
 * ExtensionDistributor
 * ExternalGuidance
 * FeaturedFeeds
 * FileImporter
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GWToolset
 * GeoCrumbs
 * GeoData
 * GettingStarted
 * GlobalBlocking
 * GlobalCssJs
 * GlobalUsage
 * GlobalUserPage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * Graph
 * GuidedTour
 * ImageMap
 * Insider
 * InterwikiSorting
 * Josa
 * JsonConfig
 * Kartographer
 * LandingCheck
 * LdapAuthentication
 * Linter
 * LiquidThreads
 * Listings
 * LocalisationUpdate
 * LoginNotify
 * MachineVision
 * MapSources
 * MassMessage
 * MediaModeration
 * MobileApp
 * Modern
 * MonoBook
 * MultimediaViewer
 * NavigationTiming
 * NearbyPages
 * NewUserMessage
 * Nostalgia
 * Nuke
 * OATHAuth
 * OAuth
 * OAuthRateLimiter
 * ORES
 * OpenStackManager
 * PageAssessments
 * PageImages
 * PageNotice
 * PageTriage
 * PageViewInfo
 * ParserFunctions
 * PdfHandler
 * Poem
 * PoolCounter
 * PropertySuggester
 * QuickSurveys
 * Quiz
 * RSS
 * ReadingLists
 * RelatedArticles
 * Renameuser
 * SandboxLink
 * Score
 * Scribunto
 * SearchExtraNS
 * SecureLinkFixer
 * ShortUrl
 * SiteMatrix
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * TemplateSandbox
 * TemplateWizard
 * TextExtracts
 * Thanks
 * TheWikipediaLibrary
 * TitleBlacklist
 * TocTree
 * TorBlock
 * TranslationNotifications
 * TrustedXFF
 * UploadsLink
 * UrlShortener
 * UserMerge
 * VipsScaler
 * WebAuthn
 * WikiLove
 * WikibaseCirrusSearch
 * WikibaseLexeme
 * WikibaseLexemeCirrusSearch
 * WikibaseQualityConstraints
 * Wikidata.org
 * WikidataPageBanner
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaEditorTasks
 * WikimediaEvents
 * WikimediaIncubator
 * Wikisource
 * XAnalytics
 * cldr
 * intersection
 * wikihiero

Total changes
261 Changes in 59 repos by 71 authors