MediaWiki 1.28/wmf.19/Changelog

Core changes

 * - Updated git submodules
 * - Remove jquery.arrowSteps module
 * - ChangeTags: Rename "extension" to "software"
 * - Add a change tag for edits that change the content model of a page
 * - Fix typo in "editpage-invalidcontentmodel-text" message
 * - ChangeTags: Skip caching if some hooks aren't registered
 * - Avoid page_touched update for HTTP GET action=purge requests
 * - SkinTemplate: Improve remote content handling in content navigation URLs
 * - Parser: Allow disabling magic link functionality
 * - Add WikiPage::isLocal
 * - Make DeferredUpdates call setTransactionTicket on all DataUpdate tasks
 * - LocalIdLookup: Use DBAccessObjectUtils
 * - CentralIdLookup: Fix documentation of self::$instances
 * - session: Fix phpdoc in Token::toStringAtTimestamp
 * - WikiPage: Use Title::isKnown in hasViewableContent
 * - Use late static binding in Article::newFromID
 * - MapCacheLRU: Support null values in getWithSetCallback
 * - Make DeferredUpdates::execute protected
 * - Reorganize RefreshLinksJob code slightly and avoid deprecated functions
 * - Simplify LBFactory ticket code in CategoryMembershipChangeJob
 * - Avoid using deprecated methods in JobQueueDB
 * - Remove pointless getTransactionProfiler method
 * - Tweak $wgTrxProfilerLimits to lower noise a bit
 * - Support masking the WRITE_SYNC latency from ChronologyProtector
 * - Make LBFactory::waitForReplication mask wait latency with callbacks
 * - Fix some PhpStorm warnings in AuthManager
 * - EditPage: Don't throw exceptions for invalid content models
 * - Make safeWaitForMasterPos use mWaitTimeout instead of hard-coded value
 * - Follow-up dfd0464: Remove LICENSE.txt for deleted library 'phpjs-sha1'
 * - Sync up with Parsoid parserTests.
 * - Change file namespace name & and specialpages titles in Urdu
 * - Add missing dependency to 'mediawiki.Upload.BookletLayout' module
 * - Avoid creating DB replication lag in clearAllNotifications
 * - Clean up array syntax from docs, part VI
 * - Improve compatibility checks in WaitConditionLoop
 * - Add day to date filter for ReverseChronologicalPager
 * - parserTests.php: Fix exit status
 * - Release notes for parser tests refactor
 * - Refactor parser tests
 * - Renames preparatory to parser tests refactor
 * - Avoid "No transaction is active" saveFileDependencies tests errors
 * - Use memory job queue for unit tests
 * - add IGNORE INDEX option to mysql database handler
 * - Avoid "Column md_module cannot be null" error in unit tests
 * - Make PurgeJobUtils avoid creating DB replication lag
 * - Display an error message when the validataion of a radio input fails because user did not provide any input.
 * - Use ESTIMATE_DB_APPLY for total transaction time estimate
 * - Remove useless LoadBalancer::parentInfo method and calls
 * - Update Bugzilla references to Phabricator references
 * - Add LBFactory::getChronologyProtectorTouched method
 * - mw.special.movePage: Don't fail if no "Move associated talk page" checkbox
 * - Make WikiPage::doPurge clear the file cache too
 * - Use DB_REPLICA in ContribsPager
 * - Simplify some LoadBalancer methods that do iteration
 * - Special:UserRights: Trim value of $mTarget if it's a string
 * - Make JobQueueGroup::push update the queuesHaveJobs cache
 * - Force primary index for RevDelRevisionList query
 * - Use Database::timestamp in LocalFile::loadFieldsWithTimestamp
 * - mw.ForeignApi: Allow anonymous requests
 * - Revert "Clean up user handling in UploadStash"
 * - Add structure test for ContentHandler::makeEmptyContent
 * - Make the page JOIN in RevDelRevisionList actually apply
 * - WebRequest: Use getRawVal instead of getGPCVal where possible
 * - Clean up tests for FauxRequest/WebRequest
 * - Add more version notes to WANObjectCache
 * - objectcache: add "staleTTL" option to WANObjectCache::set
 * - Cleanup and re-indent some WANObjectCache docs
 * - LinkBatch: Set visibility and document constructor
 * - Title: Document that Title::compare can be used for LinkTargets
 * - WebRequest: Add more unit tests
 * - rollback: Log content model changes
 * - API: When undoing an edit, allow overriding content model.
 * - Allow undoing edits that change content model if top
 * - Make $wgRevisionCacheExpiry default to one week
 * - FauxRequest: Add unit tests to expand code coverage
 * - Switch some callers to WaitConditionLoop
 * - InfoAction: Add a link to Special:ChangeContentModel if allowed
 * - Avoid user autocreation race condition caused by repeatable read
 * - Preload ResourceLoaderWikiModule::getTitleInfo in OutputPage
 * - objectcache: expose "minTime" in WAN cache and call it "minAsOf" instead
 * - JsonContentHandler: Make sure makeEmptyContent is valid JSON
 * - objectcache: pass in the $oldValue as-of time in getWithSetCallback
 * - Hide signup/login/logout links when they would not work
 * - Fix doc typo in InterwikiLookup
 * - Fix IDEA warnings in CategoryMembershipChangeJob
 * - database: rename clearSnapshot => flushSnapshot
 * - Make sure the lock in JobRunner::commitMasterChanges releases
 * - ContentHandler: Remove entirely-unused mModelName property
 * - Rollback: Change @since 1.27 to @since 1.28
 * - Don't throw exceptions in ContentHandler::getUndoContent
 * - Only apply DB_MASTER fallback in Revision::fetchText if READ_LATEST
 * - resourceloader: Preload WikiModule::getTitleInfo in batches
 * - resourceloader: Simplify WikiModule::getTitleInfo DB query
 * - Add rate limits for changing a page's content model
 * - objectcache: Avoid doxygen misformatting for pcGroup comments
 * - objectcache: add "pcGroup" option to WANObjectCache::getWithSetCallback
 * - Allow --profile to be used in phpunit.php
 * - Split up testHelpers.inc, break off fuzz testing
 * - resourceloader: Use makeVersionQuery for 'version' query parameter
 * - RollbackAction: Allow 'from' to be an empty string
 * - Revision: Simplify loadText with nested getWithSetCallback
 * - Allow putting the app ID in the password for bot passwords
 * - Revert "Revision: Simplify loadText with nested getWithSetCallback"
 * - Documentation: Replace misuse of 'later' when we meant 'latter'
 * - Trivial: Typo fix in comment
 * - Fix ApiStashEdit IDEA warnings
 * - Revision: Simplify loadText with nested getWithSetCallback
 * - Grant 'editcontentmodel' permission to 'user' group
 * - Avoid redundant COMMIT calls on page views
 * - Run tests from MediaWiki-Vagrant virtual machine headlessly
 * - SpecialDeletedContributions: Don't force a known link in subtitle
 * - Remove ancient DB_READ/DB_WRITE constants
 * - Make adaptiveTTL less strict about $mtime type
 * - Style and IDEA warning cleanups
 * - Run database-using tests in MySQL STRICT mode
 * - Cache NS_TEMPLATE/NS_FILE titles in LinkCache persistently
 * - Clarify and update DeferredUpdates docs
 * - objectcache: add "hotTTR" and "ageNew" options to getWithSetCallback
 * - Replace unused LoadBalancer::waitTimeout method with a config setting
 * - Remove return-by-reference PHP4-ism from getExternalLB
 * - Convert JobRunner to using beginMasterChanges
 * - resourceloader: Use createLoaderURL in getStartupModulesUrl
 * - filecache: Remove unused ObjectFileCache class
 * - Fixup some rc_* fields if empty for STRICT mode in RecentChange
 * - Fix IDEA errors in JobRunner
 * - LinkFilter: Fix return types in phpdoc
 * - Defer publish of recent change for log entries
 * - SpecialUpload: Give a context title to getExistsWarning messages
 * - Turn off "reportDupes" in CachedBagOStuff
 * - API: Fix query+authmanagerinfo example message names
 * - Clarify that $terms get preg_quoted by caller in SearchHighlighter
 * - Add API warnings when upload is same as older versions
 * - Fix spelling
 * - Disallow mismatched beginMasterChanges/commitMasterChanges
 * - Turn off duplicate key gets for ReplicatedBagOStuff
 * - Fix default handling in LoadBalancer::getRandomNonLagged
 * - Chinese Conversion Table Update 2016-6
 * - Rm unused 'remembermypassword' message, doc another

Babel

 * - Avoid pointless DB updates in setForUser
 * - Store babel languages in the database
 * - Don't use isset to test for null
 * - Add categories to ParserOutput, don't embed in wikitext
 * - Fix casing of Language::getFallbackFor call
 * - Remove unused mHtmlAttrib function
 * - Fix return documentation of mParseParameter

CentralAuth

 * - provide the equivalent of getSlaveServer.php for centralauth
 * - CentralAuthForeignApi: Allow anonymous requests
 * - Schema change: Add local ID and global ID to localuser table
 * - Make shouldUseMasterDB no longer check isSafeRequest
 * - Fix IDEA warnings in job classes
 * - Pass the job transaction name to MergeUser
 * - Cleanup rename/merge Job transaction ownership

CheckUser

 * - Avoid $wgUser in tagPage
 * - Avoid $wgUser in doMassUserBlockInternal
 * - Cleanup CheckUser setup and remove old files

CirrusSearch

 * - Stricter handling of query_string syntax detection
 * - Support document versioning via super_detect_noop
 * - Rename 'detectors' to 'handlers' in super detect noop
 * - Initial bm25 settings for frwiki
 * - Add relforge settings used to evaluate BM25 A/B buckets
 * - Don't fail the whole reindexer thread when a single doc fails.

Collection

 * - Fix some method calls and phpcs

ContentTranslation

 * - chmod 644 for all files

DonationInterface

 * - Use SmashPig config shortcut, reset Context
 * - Don't use frontend classes from fraud filters
 * - Be less magical about unstaging order status things
 * - Update composer libs
 * - Always call antifraud hooks after get_orderstatus
 * - Add composer.json with phplint, also fix two files with incorrect paths

Echo

 * - Generalize getCappedNotificationCount and move to counter
 * - Make sure to use mw.language.convertNumber on displayed counts
 * - resetNotificationCount from replica with no lag
 * - Actually insert target page entries when creating an Event
 * - Make PresentationModel::getPrimaryLinkWithMarkAsRead final
 * - Always cap notification count based on MWEchoNotifUser::MAX_BADGE_COUNT
 * - Use echo-badge-count message for cross-wiki counts in Special:Notifications
 * - Fix MentionStatusPresentationModel::getSecondaryLinks return value
 * - Remove js-truncation of descriptions in Special:Notifications desktop
 * - Add missing dependency to module 'mediawiki.api.options'
 * - Remove etp_user
 * - Make 'Edit threshhold' notif appear regardless of title existence
 * - Follow-up 00e0b9f45d8: fix typo in method name
 * - ModerationController: Update count from master, not slave
 * - Make seen/unseen badge more consistent across wikis
 * - Use static cache for times so it works across instances of SeenTime
 * - Fix missing doc part for mention status global
 * - Hide separator when bundled item is expanded
 * - Break more rules in break-word so long words can wrap in notifications
 * - Add 'canRender' check to EchoMentionStatusPresentationModel
 * - Add method to get local unread notifications in the manager
 * - SeenTime: Wrap cache with CachedBagOStuff

EventBus

 * - Fix NPE when revision content is hidden.
 * - Remove deprecated events production

Flow

 * - Add support to Flow dynamic action messages
 * - Set rc_new in onAfterInsert to avoid warnings
 * - Only try to enable feature if BetaFeatures is loaded
 * - Fix case of setCookie method in Hooks file
 * - Remove unused dependency on ext.visualEditor.standalone
 * - Match new topic font size to heading
 * - Fix font family and size for wikitext input
 * - Drop and re-create the index
 * - Show board description content only at the end

GeoData

 * - Make doLinksUpdate avoid creating DB replication lag

GettingStarted

 * - Avoid master queries in isAllowedPage
 * - Message tweaks for VE and vector-view-edit

GlobalBlocking

 * - Add composer test entry point
 * - Link to Special:GlobalBlock instead of Special:GlobalBlockList on block success
 * - Cleanup SpecialGlobalBlockList code

GlobalUsage

 * - Avoid making DB replication lag in onLinksUpdateComplete

GlobalUserPage

 * - Implement magic word based opt-out

GuidedTour

 * - Allow passing a jQuery-wrapped node to attachTo

JsonConfig

 * - Check globals in addition to attributes

Kartographer

 * - Revert "Show globe icon next to all links"
 * - Show current zoom in edit preview & VE mode
 * - Show snapshot map image as background for non-js clients
 * - Rename globe icon
 * - Show globe icon next to all links
 * - Wake the map after 500ms instead of 1s
 * - VE: Fix "Done" disabled state when moving the map
 * - Fix mw.Uri crushing bug
 * - Switch to geojson for geoshapes srv
 * - Typo
 * - Fixes call to addDataLayer when using Kartographer API directly
 * - jsduck: Output to just docs/
 * - PHP code cleanup
 * - Add Doxyfile
 * - Parsed message should be given a context title
 * - Set initial zoom to 13 only when it makes sense.
 * - Revert "Import wmui-base.less and override leaflet styling to match wikimedia style."

MassMessage

 * - Add massmessage permission to highvolume grant
 * - Simplify implementation of MassMessageListContent::hasInvalidTargets
 * - Use extension data instead of (un)serialize hack in properties

Math

 * - VE: Make all edits 'quick edit' on mobile

MobileApp

 * - Add special header styles

MobileFrontend

 * - Count local unread notifications when mark-all-read is clicked

ORES

 * - Revert "Revert "Add UNIQUE indexes to ores_classification""
 * - Revert "Add UNIQUE indexes to ores_classification"
 * - Add UNIQUE indexes to ores_classification
 * - Factor out Cache::$classMap into $wgOresModelClasses
 * - Get results when the score is not stored too

OpenStackManager

 * - Delete puppetvar stuff

PageAssessments

 * - Move getEmptyTransactionTicket above insertProject
 * - Make sure doUpdates is run even if there is no assessment data

Popups

 * - Follow-up I6dac2911: ext.popups.core depends on mediawiki.storage

ProofreadPage

 * - Provide message a title context where we know it

RevisionSlider

 * - Manually fix nl revisionslider-tutorial i18n msg
 * - Fix position from top of tuitorial
 * - Add note to revisionslider-tutorial i18nm msg about length
 * - Only show pin button to logged in users
 * - Add missing dependencies to core modules
 * - Revert "Do not nest mw-content-text element when reloading a diff"
 * - Fix position of pointers in RTL mode
 * - Do not nest mw-content-text element when reloading a diff
 * - Temporarily trigger revslider.diffreload to re-add Thanks JS code
 * - Add temporary code to re-add WikEdDiff gadget after reloading a diff
 * - Wait for auto expand button before checking its state in browser tests

SecurePoll

 * - SecurePoll tally should show parsed options correctly

SemanticForms

 * - Version 3.7
 * - Fix for maintaining session in upload window - patch by Peter Grassberger

SpamBlacklist

 * - Actually use STASH_TTL constant and bump it to 3 minutes
 * - Fix links passed to filter for stashing to match edit checks

TimedMediaHandler

 * - Allow parser tests to be run in any order

Translate

 * - Fixing typo in "Tsb-email-promoted-body" and "Apihelp-aggregategroups-description"
 * - Enable Translate extension resource loader modules on mobile
 * - ext.translate.special.searchtranslations: do not depend on ext.uls.geoclient
 * - Remove parameter format: 'json' for mw.Api methods
 * - Stop using jquery.appear which is not enabled for mobile.
 * - Replace jquery.tipsy with OO.ui.PopupWidget
 * - Fix Revision flag check in getMessage

UniversalLanguageSelector

 * - Change "Language search" to "Search for a language"
 * - Localization update of jquery.uls from upstream
 * - Update jquery.uls from upstream
 * - Revert "Update jquery.uls to a9dc11b"

UploadWizard

 * - Add jquery.arrowSteps from mw core
 * - Let empty CampaignContent actually validate
 * - Replace pipes in input before feeding them into a template
 * - Delete 'sourcefiles' directory
 * - Get rid of call to no longer existing method
 * - Further improve handling of silly canvas #drawImage exceptions
 * - uw.EventFlowLogger: Fix 'NS_ERROR_NOT_AVAILABLE' debug logging
 * - Don't display place for tutorial if it is skipped
 * - Allow UploadWizard users to use an alt. default

UserMerge

 * - Pass the job transaction name to MergeUser
 * - Cleanup LBFactory code and use commitAndWaitForReplication

VisualEditor

 * - Avoid DBPerformance log warnings due to isBlockedFrom
 * - ve.init.mw.Target: Drop tags on serialisation
 * - Provide the new wikitext editor as a beta feature
 * - Make ext.visualEditor.mediawiki a dependency of .mwcore
 * - Add show preview to save dialog when in NWE
 * - Update VE core submodule to master (38b5572)
 * - Switch constant from deprecated DB_SLAVE to DB_REPLICA
 * - Cleanup getDocToSave API and use in source mode
 * - Fix parent constructor call
 * - Switch from NWE to VE using 'Edit' tab
 * - Rename mediawiki.action.history.diff to mediawiki.diff.styles
 * - Search all RDFa attributes when looking for type
 * - Move image-paste blocking to transfer handler match function

WikimediaEvents

 * - Revert "Turn on CirrusSearch bm25 A/B test"
 * - Add EventLogging for Special:RecentChanges filter usage

WikimediaMaintenance

 * - Add babel database table
 * - Create cirrus indexes in both search clusters

ZeroBanner

 * - Remove redundant class
 * - Display edit icon and page actions
 * - Remove outdated CSS selectors