MediaWiki 1.39/wmf.19/Changelog

Core changes

 * - Branch commit for wmf/1.39.0-wmf.19 by trainbranchbot
 * - objectcache: Optimise SqlBagOStuff::incrWithInit with WRITE_BACKGROUND  by Tim Starling
 * - Correct doc for isIPv6Address which incorrectly uses "isIPv4Address". by dwalden
 * - ParsoidHandler: fix redirect target URLs. by daniel
 * - Fire a change event on the checkboxes when selecting All/None/Invert by dreamyjazz
 * - SpecialWithoutInterwiki: Don't pass null through to Title::capitalize by Reedy
 * - SpecialLinkSearch: Don't pass null through to the parser  by Reedy
 * - SpecialUserrights: Don't pass null to str_replace by Reedy
 * - SpecialBlockList: Prevent passing null to trim by Reedy
 * - Add return type to jsonSerialize by Reedy
 * - SpecialListFiles: user parameter isn't always present by Reedy
 * - ImageListPager: Don't call htmlspecialchars on null by Reedy
 * - tests: Expand DerivativeContextTest by Umherirrender
 * - UploadBase::setTempFile handle $tempPath being passed as null by Reedy
 * - Add Campidanese Sardinian (sro) to Names.php by Amir E. Aharoni
 * - Watchlist: Migrate calling from $dbr->select to SelectQueryBuilder by Amir Sarabadani
 * - Validate length of user email on Special:ChangeEmail/Special:CreateAccount by diesel kapasule
 * - ResourceLoader: Inject HookContainer & UserOptionsLookup to getUserDefaults by Derick Alangi
 * - RecentChange: Make join to comment table also straight by Amir Sarabadani
 * - Add point releases to HISTORY by Reedy
 * - RecentChange: Straight join to actor table when needed by Amir Sarabadani
 * - rcfilters: parse message "recentchanges-timeout" by Stang
 * - ChangeTags: Remove some excessive indentation by Reedy
 * - Protect against passing unsupported content models to Parsoid. by daniel
 * - Rest: Make transformation endpoints configurable by Derick Alangi
 * - objectcache: Implement asynchronous increment in memcached BagOStuff by Tim Starling
 * - SpecialEditWatchlist: Prevent passing null to strtolower by Reedy
 * - ChangeTags: Return early in formatSummaryRow if $tags === null by Reedy
 * - Fix typos by Tim Starling
 * - Upgrading wikimedia/common-passwords (v0.3.0 => v0.4.0) by Reedy
 * - CreationPermissionConstraintTest: remove unused $title by DannyS712
 * - Call IContextSource::getAuthority instead of IContextSource::getUser by Umherirrender
 * - updateRestrictions.php: Fix literal \n in output by Kevin Israel
 * - Skin.php: Add change and unblock navigation URLs by suecarmol
 * - SpecialPasswordPolicies: Use UserGroupManager to list all user groups by Func
 * - Pass int to ApiUsageException::newWithMessage's $httpCode param by Mark A. Hershberger
 * - Add support for nested property schemas in MainConfigSchema. by daniel
 * - FileBackend::isStoragePath Handle being passed null by Reedy
 * - language: Continue doc Languages subgroup for msg files and subclasses by Timo Tijhof
 * - language: Add missing `@ingroup`, subgroup "Languages" and ungroup files by Timo Tijhof
 * - language: Move l10n-related classes from /cache to /language by Timo Tijhof
 * - Remove poweredbyico SkinTemplate variable AND SkinGetPoweredBy hook by Moh'd Khier Abualruz
 * - ChangesListSpecialPage: Don't pass null to FormatJson::decode by Reedy
 * - ShellboxClientFactory::getUrl: Check if $this->key is null by Reedy
 * - Update symfony/* by Reedy
 * - Upgrading wikimedia/timestamp (v3.0.0 => v4.0.0) by Reedy
 * - Upgrading wikimedia/xmp-reader (0.8.1 => 0.8.2) by Reedy
 * - Hard deprecate wfReadOnly/wfReadOnlyReason by Umherirrender
 * - Move knowledge about HTTP status out of ParsoidOutputAccess by daniel
 * - Move access to the page bundle into ParsoidOutputAccess by daniel
 * - Storage: Warm parsoid parser cache with parsoid outputs by Derick Alangi
 * - rollbackEdits: Pass user identity to RollbackPage by Alexander Vorwerk
 * - ResourceLoader: Simplify Image::rasterize and reduce indentation by DannyS712
 * - ResourceLoader: readability cleanup and simplification in Module class by DannyS712
 * - resourceloader: factor out addToHead in mw.loader by DannyS712
 * - jquery.tablesorter: Optim getElementSortKey with re-order and no jQuery by Timo Tijhof
 * - mediawiki.action.view.redirect: Improve docs and simplify code by Timo Tijhof
 * - Upgrading wikimedia/remex-html (3.0.1 => 3.0.2) by Reedy
 * - Deprecate `jquery.hoverIntent` resourceloader module by DannyS712
 * - Extract RateLimiter from User by daniel
 * - REST: Allow weak ETags to match strong ETags.  by daniel
 * - rdbms: Migrate buildGroupConcatField and buildSelectSubquery to platform by Amir Sarabadani
 * - rdbms: Move methods delegated to platform to one central place by Amir Sarabadani
 * - specialpage: Fix deprecation for QueryPage::getSQL by Umherirrender
 * - Merge `mediawiki.special.import` into `mediawiki.misc-authed-ooui` by DannyS712
 * - build: Exclude `.git/**` in .editorconfig by Timo Tijhof
 * - Support etcd as a source for SettingsLoader by Dan Duvall
 * - Remove index detection 'rev_page_timestamp' by Umherirrender
 * - Respect the wiki when performing autoblocks  by Alexander Vorwerk

Vendor

 * - Bump wikimedia/parsoid to 0.16.0-a15 by Subramanya Sastry
 * - Upgrade wikimedia/common-passwords by Reedy
 * - Upgrading wikimedia/equivset (1.4.2 => 1.4.3) by Reedy
 * - Update symfony/* by Reedy
 * - Upgrading psy/psysh (v0.11.1 => v0.11.5) by Reedy
 * - Upgrading composer/ca-bundle (1.3.1 => 1.3.2) by Reedy
 * - Upgrading wikimedia/timestamp (v3.0.0 => v4.0.0) by Reedy
 * - Upgrading wikimedia/xmp-reader (0.8.1 => 0.8.2) by Reedy
 * - Upgrading wikimedia/remex-html (3.0.1 => 3.0.2) by Reedy
 * - Add missing file from guzzlehttp/psr7 update by Reedy

AbuseFilter

 * - Clean up AbuseFilterViewExamine and AbuseFilterExaminePager by Matěj Suchánek
 * - Replace unnecessary use of User by Matěj Suchánek
 * - Convert remaining permissions checks to use Authority by Matěj Suchánek
 * - Migrate AbuseFilterPermissionManager to authority by DannyS712
 * - Show syntax error message in an error box on Special:AbuseFilter/test by Matěj Suchánek
 * - tests: Improve RCVariableGeneratorTest by Umherirrender
 * - Fix form input normalization by Matěj Suchánek
 * - SpecialAbuseLog: Don't call explode on null by Reedy
 * - Compute user and page age relative to recent change timestamp by Matěj Suchánek
 * - tests: MWTimestamp::setFakeTime is reset by core by Umherirrender
 * - tests: Avoid Title::newFromText/title parsing by Umherirrender
 * - Extend RCVariableGeneratorTest by Matěj Suchánek
 * - Replace deprecated HTMLForm methods by Matěj Suchánek
 * - Avoid array to object cast in filterToDatabaseRow by Matěj Suchánek
 * - pager: Fix LinkBatch for user name by Umherirrender
 * - pager: Declare Title only for local filters by Umherirrender
 * - Use LinkTarget in ConsequencesExecutor by Umherirrender
 * - Use UserIdentity/Authority in SpecialAbuseLog by Umherirrender

CentralAuth

 * - SpecialGlobalRenameQueue: Include primary key for unique pagination by Umherirrender
 * - Add Korean special page alias by na1307

CentralNotice

 * - Only add tabs to special pages by Andrew Green

CheckUser

 * - Move to relying on $this->opts for period and checkuserblock form by dreamyjazz
 * - Use FormOptions over $request->get... for future simplification by dreamyjazz
 * - Start on tests for CheckUser and CheckUserLog API by dreamyjazz
 * - Make checktype options defined as constants for better readability by dreamyjazz
 * - Link users in password reset rows in CheckUser by dreamyjazz
 * - Simplify hooks in Hooks.php by using a common private function by dreamyjazz
 * - Revert "Add link of checkuser actions done by the user in contributions page" by Huji
 * - Add required right tests for SpecialCheckUser and SpecialCheckUserLog by dreamyjazz

CirrusSearch

 * - Search results: add extra fields conf by Anysite
 * - Construct a match query from TermBoostScoreBuilder by David Causse
 * - metastore: Remove versioning from saneitize updates by Erik Bernhardson

Cite

 * - MWReferencesListNode: Support template with TemplateStyles  by Ed Sanders

ConfirmEdit

 * - FancyCaptcha: Deprecate and add alternative for blacklist parameter in generation by Reedy
 * - Add new ConfirmEditTriggersCaptchaHook by Alexander Vorwerk

ContentTranslation

 * - SX: Ensure appendix titles are fetched in "Confirm translation" step by NikG
 * - CX3 Build 0.2.0+20220704 by Santhosh Thottingal
 * - Fix a grammar mistake in a message by Amir E. Aharoni
 * - relevantlanguages entrypoint: Hide if no languages by Santhosh Thottingal
 * - Edit translation: Set the focus on the editor by Santhosh Thottingal
 * - CX3 Build 0.2.0+20220629    by Santhosh Thottingal
 * - Edit translation: keep rel="cx:Section" in the constructed sections by Santhosh Thottingal
 * - visualEditorHelper: Avoid registering cx:Section more than once by Santhosh Thottingal
 * - CX: Refactor ApiSectionTranslationPublish class by NikG
 * - SX publish api action: Restore handling of unset newrevid by NikG
 * - SX publishing: Update translation after HTML publishing by NikG
 * - SX: Add request to "sxsave" api inside publishTranslation action by NikG
 * - Add saveTranslation method inside translatorAPI module by NikG
 * - SX: Add sxsave API action by NikG
 * - CX: Add SectionTranslation model and SectionTranslationStore service by NikG
 * - SX: Add translationUnitPayload DTO and parallelCorporaUnits getter by NikG
 * - SX: Fix MT modification rate calculation by NikG
 * - SX edit before publishing: Nest subsections into elements by NikG
 * - CX MachineTranslationService: Remove unused variable and method by NikG
 * - SX publish api action: Add relevant tags only when newrevid is set by NikG

DiscussionTools

 * - Format number of comments in reply tool new comment warning by Bartosz Dziewoński
 * - Add return type to jsonSerialize by Reedy
 * - Halve the initial height of the reply widget on mobile by Ed Sanders
 * - Reply widget mobile: Reduce space between footer and footer-links by Ed Sanders
 * - Reply widget mobile: Move reply/cancel buttons up into empty space of "advanced" bar by Ed Sanders
 * - Reply widget: Simplify LESS expression by Ed Sanders
 * - Have "Read as wiki page" link remove all DT content changes by Ed Sanders
 * - Hide the lede section on mobile when DiscussionTools is enabled by Ed Sanders
 * - Always hide overflow menu when topic containers disabled by Ed Sanders
 * - Add Korean special page alias by na1307
 * - Use interface language direction for topic metadata wrapper  by Bartosz Dziewoński
 * - New topic hint: Avoid error about section editing when opened from diff by Bartosz Dziewoński
 * - Add some missing typehints by Ed Sanders
 * - Set height of ellipsis button to fix MenuWidget position by Ed Sanders
 * - Mobile topic containers: Fix right alignment of ellipsis button by Ed Sanders
 * - New topic hint: Cleanup CSS by Ed Sanders
 * - New topic hint: Add clear:both by Ed Sanders
 * - ApiDiscussionToolsPageInfo: Fix fake headings with null name/id by Bartosz Dziewoński
 * - Fix hiding of topic container top-border when mw:tocplace present by Ed Sanders

DonationInterface

 * - Tests: Front-end calls to charge one-time donation via Braintree by jgleeson
 * - Test pass-through of additional params for GatewayChoosre by Andrew Green
 * - Add in fallbacks for Braintree result mapping. by jgleeson
 * - Fix GatewayChooser pass-through '0' value params by Andrew Green
 * - Update smashpig to v0.8.0.1 by jgleeson
 * - Front-end calls to charge one-time donation via Braintree by Damilare Adedoyin
 * - Remove removal of "+" symbols in AstroPay signature by Andrew Green

Echo

 * - Add return type to jsonSerialize by Reedy
 * - Add return type to EchoFilteredSequentialIterator::getIterator by Reedy

EventLogging

 * - Add return type to jsonSerialize by Reedy

FlaggedRevs

 * - UnreviewedPages: Stop using messages from elsewhere by Bartosz Dziewoński
 * - UnreviewedPages: Fix "Show redirects" link by Bartosz Dziewoński
 * - PendingChanges: Add missing RL module by Bartosz Dziewoński

Flow

 * - SpecialStructuredDiscussions: Handle no parameters after / by Reedy
 * - MultiDimArray: Add return types for ArrayAccess functions by Reedy

Gadgets

 * - Add Korean special page alias by na1307
 * - SpecialGadgets: Don't call explode on null by Reedy
 * - MediaWikiGadgetsDefinitionRepo::loadGadgets: Cast ttl to int by Reedy

GeoData

 * - Add return type to jsonSerialize by Reedy

GlobalBlocking

 * - Add statsd metric collection on db calls by Amir Sarabadani
 * - SpecialGlobalBlockStatus: Don't pass null to trim by Reedy

Graph

 * - Fix data collection of multiple graphs in Parsoid, take 2 by Isabelle Hurbain-Palatin
 * - Revert "Merge "Fix data collection of multiple graphs in Parsoid"" by Isabelle Hurbain-Palatin
 * - Fix data collection of multiple graphs in Parsoid by Isabelle Hurbain-Palatin

GrowthExperiments

 * - SpecialEnrollAsMentor: Return Status instead of StatusValue by Martin Urbanec
 * - StructuredMentorWriter: Disallow calling addMentor with anonymous user by Martin Urbanec
 * - SpecialEnrollAsMentor: Require login by Martin Urbanec
 * - AddImage: Export missing i18n string in caption onboarding by Kosta Harlan
 * - Add return type to jsonSerialize by Reedy
 * - AddImageArticleTarget: Update to new mediaClass/mediaTag format by Kosta Harlan
 * - Redirect non-mentor MentorDashboard visitors to Special:EnrollAsMentor by Martin Urbanec
 * - Rename SpecialQuitMentorship to SpecialQuitMentorshipWikitext by Martin Urbanec
 * - [tests] Improve organization of test files by Martin Urbanec
 * - Add SpecialEnrollAsMentor by Martin Urbanec
 * - Add an image: sort suggestions by MewOphaswongse
 * - SuggestedEdits: Adjust thumbnailSource logic by Kosta Harlan
 * - Mentorship module: UI/style fixes by Martin Urbanec
 * - Add an image: suppport querying for image suggestions by title by MewOphaswongse
 * - Mentorship: Include opt-in button on mobile summary preview by Kosta Harlan
 * - Vue migration: create mentee overview table with Vue by Sergio Gimeno
 * - Add Korean special page and magic words alias by na1307
 * - Newcomer tasks: avoid showing ellipsis in next arrow by Sergio Gimeno
 * - ClaimMentee: Link Special:MentorDashboard in the success message by Martin Urbanec
 * - Link both effective and primary mentors' userpages in the "Ask your mentor" dialog by Martin Urbanec
 * - Structured task: Add 'cancel' to the list of allowed commands by MewOphaswongse
 * - ProtectionFilter: Only make a query if we have valid tasks by Kosta Harlan
 * - MentorTools: Make it possible to change one's auto-assignment status by Martin Urbanec

ImageSuggestions

 * - Retrieve pages-with-suggestion via Elastic scroll directly by Matthias Mullie
 * - Add 'push' notification option by Matthias Mullie

IPInfo

 * - Add PopupHandlerTest class by Thalia
 * - Ensure author of revision is an IP before lookup by STran
 * - Avoid the #special magic word in messages by Amir E. Aharoni
 * - Remove popup button on using direct unwatch marker in Special:Watchlist by tsepothoabala
 * - Improve test coverage for Logger classes by Thalia

Kartographer

 * - Add return type to jsonSerialize by Reedy
 * - Remove an unnecessary comma from a message by Amir E. Aharoni

Linter

 * - Only call getRequest/getOutput once in same function by Kunal Mehta
 * - Treat empty titlecategorysearch parameter same as not being present by Kunal Mehta
 * - Add namespace column and new index to Linter table - part 2 by sbailey

Math

 * - Add Korean special page alias by na1307

MobileFrontend

 * - MobileCollection: Add return types for inbuild Interfaces  by Reedy
 * - ApiParseExtender: Add 'discussiontoolspreview' as an action which uses 'parse' by Ed Sanders
 * - LanguageSearcher: Add suggested languages header when banner exists by NikG

OATHAuth

 * - TOTPKey: Apply array return type to jsonSerialize by Reedy

OAuth

 * - Add return type to jsonSerialize by Reedy
 * - SpecialPages: Don't pass null to explode by Reedy
 * - Backend: Minor code cleanup by Reedy

ORES

 * - Add Korean special page alias by na1307

PageImages

 * - PageImageCandidate: Apply array return type to jsonSerialize by Reedy

PageTriage

 * - UndeleteHookHandler: Add namespace filter by Taavi Väänänen
 * - Mark undeleted pages as unpatrolled by Taavi Väänänen

PageViewInfo

 * - month.json: Change default of values from false to array by Reedy
 * - Minor code cleanup by Reedy
 * - CachedPageViewService: Ensure $prefix is a string by Timo Tijhof

ProofreadPage

 * - Start converting to hook handlers by Sam Wilson
 * - ProofreadPageTest: Add getPage method for RevisionRecord mock by Abijeet
 * - Switch to foreign-resources for loading OpenSeadragon by Sam Wilson
 * - Replace proofreadpage_source_href with prpSourceIndexPage and build by Sohom

SecurePoll

 * - Fixing Edit poll title when editing a poll on Special page(SecurePoll) by Diesel kapasule

SimilarEditors

 * - Add tests for SpecialSimilarEditors and ResultsFormatter by tsepothoabala

SiteMatrix

 * - SiteMatrix: Don't pass null to file_exist by Reedy

TimedMediaHandler

 * - Remove unused 'play' Kaltura icons by Iniquity

Translate

 * - Bump minimum required version for upgrade to 1.31 by Umherirrender
 * - Allow filtering the translation review log by subtypes of actions by MarcoAurelio
 * - Impossible to mark pages for translation using the mobile site by Yuki Shira
 * - Deprecate SkinTemplateNavigation::SpecialPage and SkinTemplateNavigation hooks in favor of SkinTemplateNavigation::Universal by Moh'd Khier Abualruz
 * - Output the source language titles in CSV export by Abijeet
 * - Add script to import translations from CSV file by Abijeet
 * - Add tests for MessageBundleContent by Abijeet
 * - Change the way we retrieve source language for a MessageBundle by Abijeet
 * - Remove script removeOrphanedActors by Abijeet

UniversalLanguageSelector

 * - Add support for empty states to the current language selector by Santhosh Thottingal

VisualEditor

 * - Update VE core submodule to master (0a909d09a)  by Bartosz Dziewoński
 * - Fix broken scroll on sidebar toggle  by WMDE-Fisch
 * - Prevent highlighting the first parameter when clicking to remove by Adam Wight
 * - Clicking template or parameter name scrolls it to top of dialog by Svantje Lilienthal
 * - Reuse hard and soft action handlers by Adam Wight
 * - Rewrite handlers using canonical setPage by Adam Wight
 * - Two-pane layout setPage has all the desired side-effects by Adam Wight
 * - Replace event wiring for stackLayout.set with explicit call by Adam Wight
 * - Use local state rather than stackLayout.currentItem by Adam Wight
 * - Minor doc updates by Adam Wight
 * - Adding lines in doc comments by WMDE-Fisch
 * - Gallery image: Hide more attributes when diffing by Ed Sanders
 * - Gallery image: Use thumbUrl if src is not set (new images) by Ed Sanders
 * - Rename event to be descriptive, not prescriptive by Adam Wight
 * - Reconnect "soft select" event  by Adam Wight
 * - Use short style to wire event reemission by Adam Wight
 * - Remove `set` event with no listeners by Adam Wight
 * - Fix gray highlighting for parameters by Andrew Kostka
 * - Re-add refreshControls to TwoPaneDialog by Svantje Lilienthal
 * - Select parameters like templates by Adam Wight
 * - Rely on selection changed event for updating controls by Adam Wight
 * - Calculate controls using sidebar selection by Adam Wight
 * - Template dialog controls default to disabled by Adam Wight
 * - Remove all BookletLayout OutlineItem code by Thiemo Kreuz
 * - Remove outlineSelectWidget (old sidebar) by Adam Wight
 * - Move remove button toggle code to more appropriate place by Thiemo Kreuz
 * - Remove unused code and properties from forked ControlsWidget by Thiemo Kreuz
 * - Drop unused chainable signatures by Adam Wight
 * - Move custom buttons into outline controls by Adam Wight
 * - Create new refreshControls function in TwoPane by Svantje Lilienthal
 * - Prevent skinStyles from applying to the Vector 2022 skin. by Jan Drewniak
 * - Remove deprecated CSS from old add parameter search by WMDE-Fisch
 * - Move MWAddParameterPage styles to own file by WMDE-Fisch
 * - Fixes for focusPart by Adam Wight
 * - Hide access to outlineSelectWidget by Adam Wight
 * - Remove CSS rule for hiding fieldset icons and lables by WMDE-Fisch
 * - Move MWTemplatePlaceholderPage styles to own file by WMDE-Fisch
 * - Move template dialog sidebar container into forked BookletLayout by Adam Wight
 * - Move last remaining sidebar event handler into forked class by Adam Wight
 * - Move sidebar-related event handlers down into BookletLayout fork by Thiemo Kreuz
 * - Move CSS in MWTransclusionDialog closer together by WMDE-Fisch
 * - Simplify OutlineControls CSS a little more by Thiemo Kreuz
 * - Adding canGoBack to the properties by WMDE-Fisch
 * - Remove unused parameter to `focus` by Adam Wight
 * - Drop unused "editable" configuration from template dialog by Thiemo Kreuz
 * - Unhoist variables & remove dead code from BookletLayout fork by Thiemo Kreuz
 * - Remove dead code (not) selecting first template parameter by Thiemo Kreuz
 * - Move .addPromptedParameters calls to more canonical places by Thiemo Kreuz
 * - Remove old code to focus first input by Adam Wight
 * - Cleanup CSS for the forked OutlineControls by WMDE-Fisch
 * - Move template dialog sidebar clearing to more appropriate place by Thiemo Kreuz

WebAuthn

 * - Add return type to jsonSerialize by Reedy

Wikibase

 * - Add debug logging for term storage cleanup by Lucas Werkmeister
 * - Don't call deprecated IContextSource::getStats by Matěj Suchánek
 * - Prepare switching to WordLevelDiff in BasicDiffView by Noa wmde
 * - REST: Validate length of user provided comment by sihe
 * - REST: Add ADR about data type lookup in serializer by Jakob Warkotsch
 * - REST: Use PermissionChecker in AddItemStatement by sihe
 * - Allow dealerdirect/phpcodesniffer-composer-installer plugin by Lucas Werkmeister
 * - Remove unused claimDiffer and claimDiffView fields from ItemDiffVisualizer by Michael Große
 * - Remove unused siteLookup and entityIdFormatter fields from BasicEntityDiffVisualizer by Michael Große
 * - Rename item diff related classes for clarity by Lucas Werkmeister
 * - Remove unused ItemDiffView::$siteLinkPath by Lucas Werkmeister
 * - bridge: Vue3: drop @vue/compat from bridge by Michael Große
 * - REST: Use null username instead of anonymous flag by sihe
 * - REST: Use default edit summary if none provided by Jakob Warkotsch
 * - REST: Ensure datatype is present in all responses by Jakob Warkotsch
 * - REST: Add REST API SerializerFactory by Jakob Warkotsch
 * - REST: Don't use defaults in tests if not needed by Jakob Warkotsch
 * - Bump wikimedia/timestamp to 4.0.0 by Jakob Warkotsch
 * - REST: Add AddItemStatement Item redirect spec by Jakob Warkotsch
 * - REST: Error for Item redirect in AddItemStatement by Jakob Warkotsch
 * - REST: Implement REST API PermissionChecker by Jakob Warkotsch
 * - REST: Add Location header to statement response by sihe

WikibaseCirrusSearch

 * - Re-enable EntitySearchElasticFulltextTest by David Causse
 * - Temporarily disable EntitySearchElasticFulltextTest by David Causse

WikibaseLexeme

 * - Drop now unused parameters for BasicEntityDiffVisualizer by Michael Große
 * - Clean up lemma length validation by Lucas Werkmeister

WikibaseMediaInfo

 * - Remove unused siteLookup and entityIdFormatter fields from BasicMediaInfoDiffVisualizer by Michael Große

WikiEditor

 * - Realtime Preview: prevent lose of textarea selection when toggling by Sam Wilson

WikiLambda

 * - WikiLambda: Fix ZObject creation/update with empty summary by Florent
 * - change edit button positon and allow function definition item to be hidden by adesoji
 * - Update function-schemata sub-module to HEAD (d056b60) by gengh
 * - Fix bug in ZTypedList creation for ApiPerformTest by gengh
 * - Fix ZObjectselector component by adesoji
 * - Fix getZkeyLabels so that it always returns a label by gengh
 * - update the table component to include checkbox interactivity by jkieserman
 * - Canonicalize test files. As of this patch, all of the sandbox examples work: by apine
 * - Use PoolCounter to impose a per-user function concurrency limit by Ori Livneh

WikimediaEvents

 * - Track image suggestions notification preference changes by Matthias Mullie
 * - *WebUIActionsTracking: Also log events via Metrics Platform by Sam Smith

WikimediaMessages

 * - IPInfo: Add contrib links to Special:Contributions Infobox by AnaïsGueyte
 * - Fixes in Wikimedia project names by Amir E. Aharoni
 * - Remove IPInfo hook's hack for preloading a translatable template by Thalia

Wikisource

 * - SiteLinks: Limits the number of fetched entities by Tpt

Wikistories

 * - Guard for connection errors when publishing a story by Eduardo
 * - Remove unused wikistories param from link by Stephane Bisson
 * - Fix image attribution updated after image is replaced by Huei Tan
 * - Prevent potential prototype polution by Stephane Bisson
 * - Reword invalid subpage message by Stephane Bisson
 * - Add error toast for unknown errors when publishing by Eduardo
 * - Include the textbox area as clickable for next/prev navigation by Eduardo

MinervaNeue

 * - SkinMinerva: Display generic history link when viewing deleted revision by Func
 * - Refactor MainMenu building by suecarmol

Vector

 * - Remove tablet specific styles for collapsed TOC, and misc CSS clean up by bwang
 * - Layout: Fixes content alignment issues by Jon Robson
 * - Layout: Fixes header margin between search and user links by Jon Robson
 * - Revert "Layout: restore sticky toc behavior by adding additional TOC container" by Jdlrobson
 * - Layout: restore sticky toc behavior by adding additional TOC container by bwang
 * - Layout: Grid columns are restricted to desktop views by Jon Robson
 * - Grid: fix footer styles by bwang
 * - Fixes Content sub unreadable in Vector 22 by Jon Robson
 * - Layout: Use sibling selectors rather than adjacent sibling by Jon Robson
 * - Refactor some max-width media queries to use min width by bwang
 * - Cleanup ArticleToolbar grid styles by bwang
 * - Layout: Fix footer margin by Jon Robson
 * - Grid: Add table of contents to grid by Jon Robson
 * - Introduce media query breakpoint variables and replace all media query usage with new variables by bwang
 * - Refactor SkinVector to use Hooks::updateMenuItems code to process menu data by bwang
 * - Layout: Align content with hamburger icon by Jon Robson

VisualEditor/VisualEditor

 * - Follow-up I61b477d1f: Only remove native ranges if the are inside the document  by Ed Sanders

No changes

 * 3D
 * ActiveAbstract
 * AdvancedSearch
 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * ArticlePlaceholder
 * Babel
 * BetaFeatures
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * CharInsert
 * ChessBrowser
 * CiteThisPage
 * Citoid
 * CodeEditor
 * CodeMirror
 * Cognate
 * Collection
 * CologneBlue
 * CommonsMetadata
 * CongressLookup
 * ContactPage
 * CreditsSource
 * Dashiki
 * Disambiguator
 * DismissableSiteNotice
 * DoubleWiki
 * Elastica
 * ElectronPdfService
 * EntitySchema
 * EventBus
 * EventStreamConfig
 * ExtensionDistributor
 * ExternalGuidance
 * FeaturedFeeds
 * FileExporter
 * FileImporter
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * GWToolset
 * GeoCrumbs
 * GlobalCssJs
 * GlobalPreferences
 * GlobalUsage
 * GlobalUserPage
 * GlobalWatchlist
 * GoogleNewsSitemap
 * GuidedTour
 * ImageMap
 * InputBox
 * Insider
 * Interwiki
 * InterwikiSorting
 * Josa
 * JsonConfig
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * LiquidThreads
 * Listings
 * LoginNotify
 * MachineVision
 * MapSources
 * MassMessage
 * MediaModeration
 * MediaSearch
 * MobileApp
 * Modern
 * MonoBook
 * MultimediaViewer
 * NavigationTiming
 * NearbyPages
 * NewUserMessage
 * Newsletter
 * Nostalgia
 * Nuke
 * OAuthRateLimiter
 * OpenStackManager
 * PageAssessments
 * PageNotice
 * PagedTiffHandler
 * ParserFunctions
 * PdfHandler
 * Poem
 * PoolCounter
 * Popups
 * PropertySuggester
 * QuickSurveys
 * Quiz
 * RSS
 * ReadingLists
 * RelatedArticles
 * Renameuser
 * RevisionSlider
 * SandboxLink
 * Score
 * Scribunto
 * SearchExtraNS
 * SecureLinkFixer
 * ShortUrl
 * SpamBlacklist
 * StopForumSpam
 * SubPageList3
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateData
 * TemplateSandbox
 * TemplateStyles
 * TemplateWizard
 * TextExtracts
 * Thanks
 * TheWikipediaLibrary
 * Timeless
 * TitleBlacklist
 * TocTree
 * TorBlock
 * TranslationNotifications
 * TrustedXFF
 * TwoColConflict
 * UploadWizard
 * UploadsLink
 * UrlShortener
 * VipsScaler
 * WikiLove
 * WikibaseLexemeCirrusSearch
 * WikibaseQualityConstraints
 * Wikidata.org
 * WikidataPageBanner
 * WikimediaApiPortal
 * WikimediaApiPortalOAuth
 * WikimediaBadges
 * WikimediaEditorTasks
 * WikimediaIncubator
 * WikimediaMaintenance
 * XAnalytics
 * cldr
 * intersection
 * timeline
 * wikihiero

Total changes
366 Changes in 55 repos by 80 authors