MediaWiki 1.27/wmf.22/Changelog

Core changes

 * - $wgVersion = '1.27.0-wmf.22'
 * - [1.27.0-wmf.15] MF cache pollution debug log
 * - Convert array => [] in some comments
 * - Make $wgEventRelayerConfig docs less confusing
 * - Convert EventRelayerGroup to services infrastructure
 * - Make WAN cache config use $wgEventRelayerConfig
 * - Migration of browsertests* Jenkins jobs to selenium* jobs
 * - Add @since docs to SpecialPage::getTitleFor
 * - registration: Allow ActionFilteredLogs to be modified by extensions
 * - Fix escaping for MSSQL LIKE queries.
 * - Bidi-isolate the comment in history pages
 * - Add X-Robots-Tag header to Special:Export dumps
 * - Parser: Don't use deprecated Title::setFragment
 * - chmod 664 SpecialSearch.php
 * - Make HTMLCheckField::loadDataFromRequest always return a boolean
 * - Update hard refresh instructions for Opera
 * - registration: Explain skipFunction more succinctly
 * - Format count of files on Special:ListFiles as number
 * - cleanUp all invalid utf8 in sql for debug toolbar
 * - Fix EventRelayerKafka IDEA errors
 * - Names.php: Replace remaining tabs and double spaces
 * - Fix GENDER support in logentry-rights-rights
 * - HTMLForm: Don't render 'mw-htmlform-submit-buttons' if there aren't any buttons
 * - Set an alias for TrackingCategories page in Czech
 * - Unify the spaces before the comment in Names.php
 * - BagOStuff: Optionally log duplicate key lookups
 * - Namespace LinkTarget under MediaWiki\Linker
 * - Have Linker::linkUrl accept LinkTarget
 * - Add LinkTarget::createFragmentTarget function
 * - Align to CSS coding guidelines and fix CSSLint errors & warnings
 * - OOjs UI: Correct display of MenuToolGroup checkmarks
 * - Remove unused JobQueueRedis vars
 * - mediawiki.api.upload: Unbreak finishing stash uploads
 * - Add missing tests for some edge cases in WatchedItem::getNotificationTimestamp
 * - Make MessageCache handle lock timeouts better
 * - Add LinkTarget::hasFragment helper function
 * - Create Kafka event relayer
 * - Fix ExternalStoreDB IDEA errors
 * - Catch errors in pushLazyJobs and log them
 * - SessionManager: Ignore Session object destruction during global shutdown
 * - Avoid ack race condition in JobQueueRedis
 * - Catch JobQueue errors in SiteStats::jobs
 * - Deprecated 3 methods in DummyLinker
 * - Unroll DummyLinker::__call
 * - Move DummyLinker to own file
 * - RELNOTES for Skin::__call unroll & removal
 * - Remove unused Skin -> Linker deprecated methods
 * - Re add wfDeprecated calls after Skin::__call unroll
 * - Specially handle Title objects in Title::newFromLinkTarget
 * - Add root title class to
 * - Update OOjs UI to v0.16.6
 * - RebuildRecentchanges improvements
 * - rebuildrecentchanges: Allow rebuilding specified time range only
 * - Add missing visualClear on search result page
 * - Remove stray variable in processLogin
 * - Remove unused wfGetDB in SiteStats::jobs
 * - Unroll __call in Skin
 * - Add getStatsdDataFactory to MediawikiServices
 * - Fix wrong @return type hints in Language::tsTo… methods
 * - Convert Special:WithoutInterwiki to HTMLForm
 * - Segment stash edit cache stats by basis for hit/miss
 * - registration: Support skipFunction module definitions
 * - Allow tag names for SqlBagOStuff consistent hashing
 * - Enforce $wgReadOnly for job queues
 * - resourceloader: Use feature test instead of UA sniffing
 * - DateTimeInputWidget: Set type before calling parent constructor
 * - Improve getErrorsByType docs
 * - Reject usernames with namespace or interwiki prefixes
 * - Hide hiddencat catwatch changes in special changelists
 * - Improve HTMLSubmitField return value
 * - Test coverage WatchedItemStore::duplicateAllAssociatedEntries to 100%
 * - Test coverage WatchedItemStore::addWatchBatchForUser to 100%
 * - Fix RecentChange::parseParams @return docs
 * - Modify documentation of select method for Database.
 * - API: Allow subclassing ApiQueryImageInfo
 * - Use new TWN template for log-action-filter-* qqq messages
 * - mediawiki.special.upload: Use formatversion=2 for API requests
 * - Kill obsolete check
 * - HTMLForm code style fixes
 * - Remove dead code from CategoryPager
 * - Reject usernames with # as user-type API parameters
 * - Remove experimental MCRD class
 * - Put a high max limit of 60,000 on Special:LinkSearch
 * - mw.ForeignApi: Percent-encode dots in the 'origin' parameter
 * - mw.Api: Replace deprecated token names by 'csrf'
 * - Check for global blocks
 * - mediawiki.special.upload.js: Remove spinner in .always instead of .done
 * - Avoid DBPerformance log warnings in SpecialPreferences
 * - mediawiki.special.upload: Don't fail when trying to thumbnail invalid file
 * - mediawiki.special.upload: Don't fail when invalid title is given
 * - SpecialRunJobs: delegate error handling to MWExceptionHandler
 * - Adding param documentation for Parser::internalParse
 * - Follow-up Idb1202579: Add special-characters-group-greekextended to RL module
 * - search: getInterwikiResults returns array of SearchResultSets
 * - mediawiki.page.ready: Load 'SearchInputWidget' too
 * - Remove unused import in WatchedItemStoreUnitTest
 * - Use WatchedItemStore for SP:RC watchers count
 * - CatWatch don't show the number of pages transcluded
 * - Allow description text caching for ForeignDBFile
 * - Add a rewind function to SearchResultSet
 * - Revert "Hack IEUrlExtension::haveUndecodedRequestUri to always return true"
 * - Hack IEUrlExtension::haveUndecodedRequestUri to always return true
 * - mediawiki.api: Log warning when requesting legacy token types
 * - Track which web request created a job
 * - resourceloader: Implement modern module loading (2/2)
 * - Switch to external HtmlFormatter
 * - Title: Throw if newFromText is given an invalid value
 * - Convert File::getDescriptionText to getWithSetCallback
 * - OOjs UI: Apply texfield -> textfield typo fix on the library build
 * - filebackend: Make resyncFiles easier to use
 * - More FSFile docs
 * - virtualrest: Small doc fix
 * - Revert "Measure commitMasterChanges run time"
 * - Don't report image cache hits / misses
 * - Use english messages for background use of Status::getWikiText
 * - Do not validate relevant user name
 * - Rephrase watchlistedit-clear-title
 * - Move disable of preference 'enotifminoredits'
 * - parserTests.php: fix three bitrot bugs with --record
 * - Bump grunt to 1.0.1, remove grunt-cli
 * - Fix UID test and make debugging easier

Vendor

 * - Update OOjs UI to v0.16.6

AbuseFilter

 * - Convert Special:AbuseLog to HTMLForm from XML Form
 * - Convert Special:AbuseFilter/import to HTMLForm
 * - Convert Special:AbuseFilter/examine to HTMLForm
 * - Optimize 'count' function
 * - Add some tests for behavior of 'count' function
 * - Convert Special:AbuseFilter/history to HTMLForm
 * - Fixes to filter profiling

BetaFeatures

 * - NewHTMLCheckField fixes
 * - Update Gruntfile.js and package.json and packages
 * - Correction to test

BounceHandler

 * - Use notify-type-availability due to Echo change

Capiunto

 * - Remove unused imports and locals

CentralAuth

 * - Removed unnecessary VERSION from ci.yml file
 * - Migration of browsertests* Jenkins jobs to selenium* jobs
 * - Avoid always using DB_MASTER with ?CentralAuthLatest=1
 * - Avoid incorrectly setting mFromMaster to true
 * - [SECURITY] Use constant time comparison in validateAuthToken
 * - Use GUI read-only errors instead of DB class errors
 * - Avoid DBPerformance log warnings from autoCreateUser
 * - Remove unneeded DB begin/commit calls
 * - Set relevant user on Special:CentralAuth

CheckUser

 * - Change limit of 96 to 32 in CIDR calculator for IPv6
 * - Remove duplicated code related to block flag in Special:CheckUser

CirrusSearch

 * - Update browser testing files to run on searchdemo.wmflabs.org
 * - Removed unnecessary VERSION from ci.yml file
 * - Migration of browsertests* Jenkins jobs to selenium* jobs
 * - Fix missing variable in RescoreBuilder
 * - Static analysis cleanup
 * - Add annotations to Api, Elastica, and Extra sub-namespaces
 * - More PhpDoc cleanups
 * - Apply more annotations/type signature updates
 * - Add script to run etsy/phan from in vagrant
 * - Add/update a variety of annotations to be correct
 * - Add @suppress annotations for unfixable static analysis
 * - Use the correct $exception variable instead of $e
 * - Remove unused variables
 * - Add more type annotations to CirrusSearch\BuildDocument namespace
 * - Standardize namespace/use syntax and spacing
 * - Increase forceSearchIndex.php batch size from 10 to 100
 * - Spelling corrections
 * - Remove some unused `use` statements
 * - Add some missing @return annotations
 * - Remove unused method
 * - Fix a few minor analysis issues in test cases
 * - Drop unused method indexToIndexTypes
 * - Somehow the statement lost the $this-> portion
 * - Standardize on catching/passing Elasticas ExceptionInterface
 * - Only call getData if the right type of Action is used
 * - Mark intermittently failing feature
 * - Add missing properties and methods to maint classes
 * - Add more type annotations to CirrusSearch\Search namespace
 * - Annotate SearchResult and related classes
 * - Don't reuse the $value variable name
 * - Trivial cleanup of function/class case
 * - Expand annotations in Elasticsearch\Maintenance namespace
 * - Very minor cleanups to CirrusSearch\Job namespace
 * - Dont raise warnings on misconfigured morelike settings message
 * - Restore getErrorsArray for now
 * - Trivial whitespace changes to Elastica\LanguageDetector
 * - Make sure the Config instance really has a getElement method
 * - Make static analysis happy by forcing to string
 * - Implement missing setMaxNgramsExtracted method
 * - Cleanup annotations and signatures in CirrusSearch\LanguageDetect
 * - Cleanup annotations and signatures in CirrusSearch\BuildDocument
 * - Cleanup annotations/signatures in CirrusSearch\\Sanity
 * - Minor static analysis cleanups
 * - Fix reference handling
 * - Add temporary code to investigate why we receive unknown titles from SearchEngine
 * - Replace deprecated ConfigFactory::getDefaultInstance
 * - Fix avro serialization, missing profileName property
 * - Switch to librarized HtmlFormatter
 * - Record query string parameters in CirrusSearchRequestSet
 * - Remove b/c code

ContentTranslation

 * - Make cx-first-translation primary link go to Special:Contributions/user
 * - Fix namespaces when moving across wikis
 * - Enable europeana2802016 campaign

Disambiguator

 * - This is not FooBar :)
 * - Hook handlers no longer need to return true
 * - Refactor code in DisambiguatorHooks to avoid redundancy

DonationInterface

 * - Use helper callback to render Mustache errors
 * - Replace alert with red errors for Mustache forms
 * - DRY up validate_personal
 * - Fix 'emailAdd' / 'email' confusion
 * - Use selection weights deterministically
 * - Turn on client-side amount validation for new forms
 * - Account for gateway-specific min/max client-side
 * - Also update commented-out bank code
 * - ISSUERID is alphanumeric due to SEPA
 * - Allow clicking on payment method to submit form.
 * - Script to dump GET_DIRECTORY results

Echo

 * - Migration of browsertests* Jenkins jobs to selenium* jobs
 * - Unlisted special page for displaying notification configuration
 * - BREAKING CHANGE: Change $wgEchoDefaultNotificationTypes to be logical
 * - Change (opt-out) noforn to (opt-in) crosswikisummary
 * - List is no longer an associative array
 * - Switch $wgMemc usage to proper cache/stash usage
 * - Make notifications use getMainStashInstance
 * - Remove param index
 * - Apply momentjs hack for short relative times on mobile too
 * - Update OOUI hacks for I8987dade5ed
 * - Bold 'talk page' in edit-user-talk bundled notification
 * - Display only one foreign bundle on mobile
 * - Use plaintextParams for snippets and sections
 * - Browser tests: fix nojs tests
 * - Increase line-height for survey to 16px
 * - Add tooltips for 'mark as read' and 'more options'

Flow

 * - Fix font size in local overlays (inspectors)
 * - Prevent MentionInspector from resizing on first use
 * - Migration of browsertests* Jenkins jobs to selenium* jobs
 * - Use target factory to create targets
 * - Add namespace translaton for diq
 * - Topmost: Minor follow-up to add fallback for missing topmost post ID
 * - Pre-commit hook fixes
 * - Add namespace translation for Indonesian (id)
 * - Fix an issue where latest post wasn't considered as potentially topmost
 * - Use 'csrf' token instead of deprecated 'edit' token
 * - Use the right message for flow-new-topic on user-talk
 * - Link to topmost unread post, but highlight all the unread posts
 * - Fix quotes for "mark as resolved" on history and IRC
 * - Detect null-edit for a new topic summary
 * - 'flow-topic-resolve' notification secondary link to board
 * - Mark rev_content_model as code per request
 * - Update compiled handlebar templates
 * - Remove revision range
 * - Add a source store that uses import results
 * - Fix sink-handling
 * - Use plaintext for topic titles in resolved notification

Gadgets

 * - Add namespace translation for diq

Gather

 * - Add dependency

GettingStarted

 * - Migration of browsertests* Jenkins jobs to selenium* jobs

GlobalBlocking

 * - Fix a typo in 'globalblocking-ipblocked' message
 * - Do UPDATE instead of DELETE+INSERT when modifying a global block
 * - Add log action filtering for gblblock
 * - Instead of only exposing error details, also return a Block object

JsonConfig

 * - Fix the PLURAL clause in jsonconfig-err-array-count
 * - Fixed incorrect type label
 * - Implement tabular content support
 * - Added abstract JCDataContent
 * - Add params to JCContentView::valueToHtml

Kartographer

 * - Remove title bar from full screen dialog
 * - Use resolve/reject semantics for updateKartographerLayer
 * - Fix documentation and variable names
 * - Validate the editable GeoJSON against the
 * - Use SVG icons for mapbox and leaflet

MapSources

 * - Provide license information per file documentation and other tweaks

MassMessage

 * - Fix typo in comment
 * - Add change tag for delivery to wikitext pages
 * - Convert ext.MassMessage.create.js to formatversion=2
 * - Improve source input checking

Math

 * - Migration of browsertests* Jenkins jobs to selenium* jobs
 * - Remove some obsolete CSS rules that are no longer needed in Firefox ESR 45:
 * - Remove Firefox specific CSS styles
 * - Ensure use of ; to seperate svg styles
 * - Fix: Convert all array syntax to []
 * - Update to mediawiki-codesniffer 0.6.0
 * - Make short mode for the math dialog
 * - Use img element to display SVGs in new IEs
 * - Allow the number of concurrent connections to be configurable
 * - Convert all array syntax to []

MobileFrontend

 * - Use target factory to create target
 * - Correctly render the watchlist icon
 * - M.require should use mw.loader.require
 * - Consolidate and simplify lazy loaded references logic
 * - Beta: fix tagline appearance
 * - Avoid repaints for table of contents
 * - Lazy loaded references should not have side effects
 * - Some design to the patrol link and use ajax to patrol
 * - Allow lazy loading references via mobileview API
 * - Add support for .noprint in Minerva
 * - Update two packages
 * - QA: Updates to history link browser tests
 * - Revert "Avoid repaints for table of contents."
 * - Change the drawer animation type
 * - Restore margin bottom for ToC
 * - Switch to librarized HtmlFormatter
 * - Avoid repaints for table of contents.

MultimediaViewer

 * - Migration of browsertests* Jenkins jobs to selenium* jobs
 * - Update gems to latest

OpenStackManager

 * - OpenStackNovaUser::inRole: Return false if project doesn't exist

PageTriage

 * - Migration of browsertests* Jenkins jobs to selenium* jobs

PdfHandler

 * - Migration of browsertests* Jenkins jobs to selenium* jobs

Popups

 * - QA: Updates to browser tests to avoid flakiness
 * - Add QUnit tests for ext.popups.logger
 * - Add QUnit tests to cover ext.popups.core.js
 * - QA: Enable Hovercards beta feature in browser tests
 * - Add browser test for hovering link
 * - Add X-Analytics request header when fetching popup data

ProofreadPage

 * - Parse 'proofreadpage_page_status' message in PageDifferenceEngine
 * - Preload OOUI icon styles and get rid of one of the FOUC's
 * - Fixes a fatal when user is not set during Page: content JSON serialization
 * - Don't fatal if image handler isn't installed
 * - Use OOUI icons for next/previous/up

QuickSurveys

 * - Migration of browsertests* Jenkins jobs to selenium* jobs

RelatedArticles

 * - Migration of browsertests* Jenkins jobs to selenium* jobs
 * - Add "noprint" class

Scribunto

 * - Add namespace translation for diq

SemanticForms

 * - Fix for query string preloading of multi-instance templates
 * - Fix for HTML layout for embedded multi-instance templates

SiteMatrix

 * - Provide missing license lable to show on "Special:Version"

TextExtracts

 * - Switch to librarized HtmlFormatter
 * - The last sentence of the paragraph was lost.

Thanks

 * - build: Add doxygen, use composer for phpcs, make pass
 * - build: Provide jsduck to build JS-land documentation
 * - build: Remove all non-mobile jscs over-rides and make pass
 * - build: Bump all devDependencies to latest and make pass

TimedMediaHandler

 * - Update videojs-ogvjs tech plugin to v1.1.1
 * - Prefix transcodekey attribute with data-
 * - Make sure the width/height attribute is a number
 * - Convert to short form array
 * - Don't list transcodes that were never initiated as failures.
 * - Correct typo in variable naming
 * - Api: Cleanup videoinfo implementation
 * - Update videojs to 5.8.8
 * - Add defs for 1440p and clean up transcode format labels
 * - Repair start/end times for videos.
 * - Support low quality videos in webm and mp4
 * - Make controlbar layout depend on the player width
 * - Change videoQuality to videoBitrate

Translate

 * - Add reason to deletion log entries
 * - Avoid more master queries on page views
 * - Fix cxserver support
 * - Centralize post translation save updates
 * - Simplify by using mw.util.getUrl
 * - Clear WikiPageMessageGroup caches when page is marked for translation
 * - Fix return type regression in Ib13b05a2
 * - Move several updates to TranslationsUpdateJob when page is marked for translation

UniversalLanguageSelector

 * - Delay compact language links language selector creation until click
 * - Use mw.msg rather than jquery.i18n
 * - Compact links: The trigger kept pressed while the panel is open
 * - Compact links: Add png background image for trigger
 * - Update compact language links icon

UploadWizard

 * - Use $.makeCollapsible instead of custom stuff
 * - Simplify GlobalBlocking code
 * - Log all failing API responses when uploading
 * - Use 'csrf' token name rather than 'edit'
 * - mw.UploadWizardUploadInterface: Remove unused method
 * - Simplify some error logging code
 * - Remove some more old cruft related to forms and iframes
 * - Use 'disclaimerpage' localisation message rather than literal 'Project:General disclaimer'
 * - Use proper mdash in 'mwe-upwiz-license-none-head' message
 * - add optional config for generic use case
 * - add DS_Store to gitignore

UploadsLink

 * Newly deployed extension

VisualEditor

 * - [BrowserTest] Migration of browsertests* Jenkins jobs to selenium* jobs
 * - Use correct case to access ve.ui.MWCategoryItemWidget.prototype.sortKey property
 * - Simplify GlobalBlocking code
 * - Select the label properly when converting LinkNode to LinkAnnotation
 * - Don't expand link selections when opening with '[[' sequence
 * - Update VE core submodule to master (8b527eb)
 * - Add method that runs after activation, for overriding
 * - Move monobook global overlay styles to generic DesktopTarget
 * - Create MW targets using a factory
 * - Do not call saveSettings on anon users
 * - Use Array.prototype.indexOf in support check
 * - Add a popup after switching into VE from WTE
 * - Update VE core submodule to master (bf91965)
 * - Remove IE9 from blacklist, but don't add to whitelist (yet)
 * - Defer before restoring scroll position, and allow 0
 * - Depend on postEdit code which we use after saving
 * - build: Bump various devDependencies to latest
 * - Update VE core submodule to master (d6c6a85)
 * - Restore original WebRequest after we're finished messing with FlaggedRevs on save
 * - Don't select edit tab when VE is opened while user has prefer-wt pref
 * - Only style originalContent when VE is active
 * - EducationPopup: Give pulsating blue dot an initial opacity of 0
 * - Replace transitionend event with setTimeout
 * - Set mw.libs.ve.EditingTabDialog.static.message instead of passing it to setup data
 * - Close VE SET dialog when we deactivate

WikiEditor

 * - Small side-by-side preview improvements
 * - Add 'Greek extended' to special character list

WikiLove

 * - Migration of browsertests* Jenkins jobs to selenium* jobs

WikimediaMessages

 * - Provide license lable to show on "Special:Version"
 * - Messages for global-flow-create global group
 * - Remove sr.json. Only sr-ec.json and sr-el.json should exist