MediaWiki 1.21/wmf9

The latest version (labeled "1.21wmf9") of MediaWiki, the software that powers Wikipedia and its sister sites, is being deployed to all Wikimedia sites in stages, starting on Monday, 4 February 2013 (see the roadmap).

We will continue to deploy the latest software every two weeks. This is intended to minimize disruption and possible issues, and make it easier to identify the cause of problems, since the possibly problematic code will be much more recent.

Core changes

 * - Update GeoData: https://gerrit.wikimedia.org/r/#/c/50844/
 * - Update E3Experiments, GuidedTour &amp; GettingStarted for split test
 * - Updating MobileFrontend to tip of production branch
 * - Update Scribunto for today's deployment
 * - Update Wikibase with revised lang link sort orders
 * - update Wikibase
 * - Treat a null result of Job::run like &quot;true&quot;.
 * - Start yelling if a job's run does not return bool
 * - Implement mw.message.text:
 * - Update Wikibase with backport
 * - Update Wikibase
 * - [Database] Log transaction mismatch errors to the DB log.
 * - Set timeout for Sites object in memcached.
 * - update the sites cache version
 * - Add debug log points for SiteSQLStore and SiteList
 * - Update Wikibase
 * - Update Scribunto
 * - Weaken the recursion guard on RequestContext::getLanguage
 * - mediawiki.action.view.dblClickEdit: Fix undefined $content.
 * - Load default variant tables before using them
 * - Update Wikibase again
 * - Fix Wikibase reference
 * - Update Wikibase
 * - Add GuidedTour
 * - Add SearchExtraNS
 * - style: normalize end of files
 * - New list and table attr. tests based on recent Parsoid bug fixes.
 * - Include Postgres tables and maintenance scripts for Change I23c47c2c
 * - Add column job_attempts and index job_cmd_token_id to PostgreSQL.
 * - [LockManager] Renamed getBucketFromKey -&gt; getBucketFromPath.
 * - [LockManager] Generallized wiki field to a domain field.
 * - Add return to HttpError::getStatusCode.
 * - Profiling for hook calls.
 * - Log profiling info from maintenance scripts.
 * - [LockManager] Split QuorumLockManager into its own file.
 * - [FileBackend] Added more documentation.
 * - Implement deleteEqualMessages.php
 * - [LockManager] Updated DBLockManager for cross-wiki support.
 * - Made nextJobDB.php respect $wgJobTypesExcludedFromDefaultQueue.
 * - Make cats which are redirects italic in category links.
 * - Fixed use of long memcached keys in AllPages.
 * - fix some spacing
 * - Make Sites::singleton actually return a singleton.
 * - Genderize user namespace for 'be' locale
 * - [JobQueue] Re-try jobs that fail normally.
 * - Respect --quiet in mergeMessageFileList.php
 * - -  The return value of realpath should be tested
 * - Installer: Fix double escaping of config-download-localsettings.
 * - Add getters to HttpError, to use it in tests.
 * - Fix double colons in api help output
 * - Better way for extensions to add to ParserOutput.
 * - Make jquery.client recognize Iceweasel
 * - fix hardcoded quote in Special:DoubleRedirects/BrokenRedirects
 * - Make HttpError set actual HTTP error code.
 * - .gitignore Composer related files
 * - Fix invalid link of `others` during installation
 * - Dump unit tests no longer fail if gzip is not available
 * - Sprinkle &lt;code&gt; over some strings for consistency
 * - test: helper to skip tests depending on 'gzip'
 * - raise PHPUnit default timeouts
 * - api: remove duplicate __contruct calls
 * - [FileRepo] Lazy load large metadata from the DB.
 * - [LockManager] Refactoring to allow proper cross-wiki support.
 * - Rename calls to wfArrayToCGI to wfArrayToCgi
 * - [FileRepo] Use getHandler is some places that should use it.
 * - [FileRepo] Lowered negative caching duration.
 * - Use tabs to indent lines
 * - Whitelisting publicly readable title with regex
 * - raise timeout for CdbTest::testCdb
 * - rename vars in SkinTemplate::outputPage
 * - test: some Revision tests depends on PHP zlib ext
 * - testPngNativetZtxt requires zlib extension
 * - test: helper to skip tests depending on a PHP ext
 * - pass codesniffer on tests/
 * - Implement Language::isKnownLanguageTag
 * - [FileBackend] Added duplicate backend check.
 * - Changed Message::content to pass $this to MessageContent.
 * - Drops possessive from watchlist header
 * - Spell checked docs/hooks.txt
 * - Sprinkle &lt;code&gt; over some strings.
 * - Remove obsolete entries in MessagesBh.php
 * - fix some spacing
 * - Let nextJobDB.php narrow down the type based on a set.
 * - Followup Id9f2fea7: Remove wall time restriction for readline.
 * - The use of function sizeof is forbidden; use count instead
 * - fix some spacing
 * - The static declaration must come after the visibility declaration
 * - The final declaration must precede the visibility declaration
 * - The abstract declaration must precede the visibility declaration
 * - fix some spacing
 * - Fixed the usage message text if parameters are missing.
 * - refactor Database::makeSelectOptions
 * - [ExternalStore] Refactored external store classes to use a base class.
 * - Check for existence of the timeout script in ulimit5.sh
 * - Allow '+' in MySQL database names.
 * - $wgContLang global unused in addNewUserLogEntry since b65893755
 * - More tests for mismatched attr quotes + entities in nowiki &amp; pre.
 * - Added typehint
 * - use strict null check
 * - Simplified code. Removed not needed if-else
 * - Improved BagOStuff docs.
 * - Fixed call signature for PingLimiter hook.
 * - Fixed typo
 * - Added new &quot;byemail&quot; action to the new users log
 * - add profiling points in SiteSQLStore
 * - Change name of section so it does not get confused with Wikidata
 * - set the site internal id when loading sites from the db
 * - Add link to the php manual to the IBM DB2 installer entry.
 * - Implement Language::isWellFormedLanguageTag
 * - Fix self link issues about titles in different or mixed variants
 * - Test improperly quoted attribute values in HTML tags and table cells
 * - Made a message more accourate by changing the word &quot;edit&quot; for &quot;action&quot;.
 * - Add a method to clear the site list programmatically.
 * - Clear caches automatically when changing site list.
 * - Added missing documentation to SiteStore interface
 * - Fix cache key used by SiteSQLStore.
 * - Implemented Serializable interface in Site
 * - Don't return invalid XML from paraminfo when one of parameter values is null
 * -  Enable subpages per default on Project and Help namespaces.
 * - [FileBackend] Fixed bug where &quot;false&quot; could be included in getDirectoryList.
 * - Preserve warnings on API error
 * - Make Job::toString handle non-primitive parameters.
 * - Make TextContentTest and WikitextContentTest work in all cases
 * - Do not flip partial keys in CSSJanus.
 * - Invalid value of &quot;link&quot; parameter in &lt;gallery&gt; no longer produces a fatal error
 * - Added a new &quot;api-error-publishfailed&quot; message.
 * - Improved concurrency of copyFileBackend.php with pipelined downloads.
 * - : Don't rollback after successful commit
 * - Address gender support issues in page enotif subject and intro
 * - API imageinfo correctly handle redirects
 * - Minor tweak to MediaWiki:Readonlywarning
 * - Design improvements to sites code
 * - Avoid raw SQL queries in Maintenance::purgeRedundantText
 * - make purgeRedundantText not fail on pre MW1.5 records
 * - [ExternalStore] Various cleanups to ExternalStore class.
 * - Remove references to non-existent 'execute' right in Title.php
 * - Use better variable name in CoreParserFunctions::pagesize
 * - Update doc comments and code formatting.
 * - [FileRepo] Flipped RENDER_FORCE check order to avoid stat.
 * - Account creation through API no longer leaks IP address of account creator
 * - Change InfoAction cache key to use SHA1.
 * - Add Language::isSupportedLanguage
 * - Use a LinkBatch for the creator/last editor user (talk) pages in InfoAction
 * - Fix changes for Ia1878588 to work with databases that use non-integer timestamps.
 * - Trim spaces on user supplied comments
 * - mediawiki.Uri: Fix parsing of URIs with @ in path.
 * - Use array for join condition
 * - Document that default timestamp is current time.
 * - ObjectCache changes break XCache 3.x support
 * -  use real links for search suggestions
 * - Align comment whitespace a bit.
 * - Mark slow unit test as @group medium
 * - Check for no title and throw an exception
 * -  should be able to return the status for pages besides the one it's on
 * - Http function logic cleanups and comments.
 * - Add ability to reset certain option kinds in API.
 * - Do not send data for 0 increment calls in wfIncrStats.
 * - Remove hardcoded quotes on integer
 * - Fix hardcode database quotes in Special:Watchlist
 * - API debugging flag $wgDebugAPI to disable some security checks
 * - remove api version string and parameter
 * - Use array for database fields
 * - Fix return type doc. On SQLite ResultWrapper is returned
 * - testDecodeTagAttributes now use a data provider
 * - normalize sanitizerTest and add coverage tips
 * - Correct method name in ContentHandler comment
 * - Disable template expansion in message &lt;autoblocker&gt;.
 * - Pass context to UserGetLanguageObject
 * - Fix message movepagetext: Move to a empty page not possible
 * - Made ORMTable and ORMRow non-abstract
 * - Adding SpecialSearchResultsPrepend/Append hooks
 * - Revert &quot;Overriding Vector's footer margin when in print mode&quot;
 * - Add guard to Resources.php
 * - Moved $function definition up to make IDE happy.
 * - [FileBackend] Added work-around for lack of temp url support in rgw.
 * - Added a read-only check to runJobs.php to avoid log spam.
 * - Skip screen sheets with media queries when printing
 * - mcc can now set memcached debug mode and has help
 * - Fix typo in exception message
 * - Make redirect update in refreshLinks.php bypass the redirect table
 * - [JobQueue] Added push convenience wrapper function.
 * - Make protect level messages clear and consistent
 * - We don't use SVN anymore
 * - Follow-up Id75401be (e32c8afe): no more need to prefix debug messages
 * - Minor tweaks to installer text
 * - Additional tests to catch Parsoid regressions.
 * - Pass database connection to SpecialWatchlist::countItems
 * - Fix ApiCreateAccountTest for $wgEnableEmail = false;
 * - More natural flow for the &quot;By e-mail&quot; feature
 * - Followup I888c616e: Keep IRC line format unchanged.
 * - Followup I888c616e: one more string to localize.
 * - Force case-sensitivity on the LIKE operator, to ensure similar behaviour between MySQL and SQLite
 * - Cleanup to ImagePage::openShowImage
 * - Default to the current year in the history page filter form
 * - Further tweaks to pipe trick documentation (follow-up Iaf365e31)
 * - Links created by Linker::makeExternalLink didn't include rel=nofollow
 * - Include original URL params in variant links
 * - Simplify DatabaseBase::tableName

AbuseFilter

 * - Add trailing newlines to wikitext before sending for diff
 * - Avoid fatal error for non-text content.
 * - Allow special pages as context for abuse filter.
 * - Added Older and Newer change link to Abusefilter diff
 * - Use Status object to report filter results.
 * - AbuseFilter + EditFilterMergedContent
 * - Fix the abusefilter array parser test

ApiSandbox

 * - use .hasOwnProperty when checking for presence of object keys
 * - Change description for grammar and clarity

ArticleFeedback

 * - replace call to MAX with GREATEST
 * - Drop ClickTracking integration from mw.user.bucket
 * - - mysql 5.5 / ansi sql incompatibility

ArticleFeedbackv5

 * - Add composer.json
 * - Fix i18n issues.
 * - Added new translation message 'articlefeedbackv5-timestamp-days'
 * - Use Status object to report filter results.
 * - Drop ClickTracking integration from mw.user.bucket
 * - cleanup i18n messages
 * - AFTv5 controls not selectable with tab
 * - remove ClickTracking dependency

Babel

 * - Update code formatting

CategoryTree

 * - Do not re-implement http_build_query :-)

CentralAuth

 * - Fixup some old badly built SQL queries

CentralNotice

 * - Next Attempt at CN Namespace Foo

Cite

 * - Adapt the &lt;gallery&gt; parser test for $wgResponsiveImages

CodeEditor

 * - Disable background linting using WebWorkers

DataValues

 * - _getRawValue implementation in commonsMedia widget
 * - &quot;parse&quot; and &quot;afterparse&quot; events for valueview widget
 * - (minor) improved handling of invalid values in valueview Widget
 * - Added missing dependency
 * - Makes eachchange tests fully independent from Wikibase
 * - Moved jquery.eachchange from Wikibase since its needed here
 * - Added TimeValue
 * - Fix extension path
 * - Added test helper method to facilitate valueparsers that have required options
 * - Added extra tests
 * - Killed class I forgot to remove a few weeks ago
 * - Added ValueFormatterOptionsTest
 * - Added tests for set and get option in ValueParserOptions
 * - Added tests for Error objects
 * - ignore covreage of test registration
 * - &quot;change&quot; event for valueview widget
 * - Disable/enable methods for valueview widgets
 * - (minor) more flexible handling of valueview's value updating
 * - (minor) improve destruction of PersistentDomWidget valueviews
 * - (minor) focus/blur on some valueview widgets no longer fails in non-edit mode
 * - Adding eachchange dependency to dataTypes valueview module
 * - Fix test

Diff

 * - Object conversion for diff arrayalisation.
 * - Removed obsolete code
 * - Added tests that check for exceptions being thrown on invalid data
 * - bump version nr
 * - Improve documentation
 * - Don't use strict comparison for objects.
 * - Retain keys in Diff::toArray
 * - Added DiffOpFactory
 * - Added toArray method to DiffOp interface
 * - Added missing @throws tag
 * - Removed obsolete example code
 * - Fixed a bunch of incorrect @since tags
 * - Removed already done todo
 * - Removed deprecated Removed Diff::getApplicableDiff
 * - Use DiffOp rather then IDiffOp
 * - Add deprecation doc
 * - fix doc

DonationInterface

 * - Shunting the final status log line off to a gateway-indifferent syslog bucket of its very own, so we can tail everything at once.
 * - Logging Cleanup: Searched for log lines that deserved to be qualified as LOG_ERR or something more severe, and added what I feel is a vaguely appropriate log level. Added a setting that will, when unset, suppress the avalanche of LOG_DEBUG level statements that we usually don't want. Also some documentation. Gasp.
 * - Let's make Amazon work with the form chooser
 * - Making GatewayFormChooser work
 * - (FR #595) Adyen payment gateway
 * - Readding Exception Details
 * - Abstract out redirect method

E3Experiments

 * - Revert &quot;Update logging for end of split test.&quot;
 * - Update logging for end of split test.
 * - Bump schema and change GettingStarted experimentId to ob3-split.

Echo

 * - Fixing notification type to be 'web' in controller
 * - Excludes user-dismissed events from count
 * - Adding dismiss functionality to flyout overlay.
 * - Don't double-escape the date header on Special:Notifications
 * - Update comment and db selection
 * - Some consistency tweaks for I484a24b424e69be3640e63b76f82735edae6f13a
 * - Adding dismiss functionality to special page
 * - Fixing unread state for flyout - CSS tweak
 * - Abstracting MySQL in Echo so storage type can be swapped easily
 * - Add special page to the &quot;users&quot; section on Special:SpecialPages
 * - Allow events to specify that they should notify the agent.
 * - Using human-friendly relative timestamps rather than absolute timestamps
 * - Update 'cross referenced' to 'linked' for consistency
 * - Putting all the default user options together in the config

EducationProgram

 * - Creating or editing an ambassador profile prompts &quot;leave page&quot; warning
 * - Move description field below title and name fields.
 * - admins who are not campus/online volunteers should not be able to create Ambassador profiles
 * - Fix query error when there no orgs to select on
 * - Prevent fatal error when making a redirect to an education page
 * - experimental composer.json
 * - Add a few profiling calls to SpecialEducationProgram
 * - Remove broken test
 * - rem roadmap
 * - Students table should be included in the Table of Contents on course pages
 * - Fixed var that accidentally got renamed
 * - Fix notice when sysop key does not exist yet
 * - Fixed loading of default course description
 * - added &quot;current and planned&quot; option to the courses pager
 * - Added alias for Special:EducationProgram
 * - : remove the entry field for &quot;real name&quot; when students enroll in a course
 * - : default language for new courses should be the wikis content language
 * - : prevent people from acidentally running testing scripts and thus causing security issues and other badness
 * - Also list planned courses on Special:MyCourses
 * - : show mycourses link for enrollment of any role (not just students)
 * - : Only log edits by students enrolled in a course
 * - : always load needed resources
 * - Move description field to the top of course pages and remove header
 * - * Moved classes into EducationProgram namespace

EventLogging

 * - Capsule: 'isValid' =&gt; 'clientValidated'
 * - Default schema value: 'UKNOWN' =&gt; -1
 * - Drop unicode shenanigans from DevServer
 * - Python 3 support for dev server.
 * - Remove deprecated DevServer.php
 * - Add requirements.txt, improve test coverage.
 * - Add a Python dev server for debugging purposes.
 * - Tidy up some rough edges.
 * - fix message for &quot;Invalid JSON&quot;
 * - Key formatter interpolates $wgEventLoggingDBname
 * - Generate &amp; show sample PHP / JavaScript in Schema NS
 * - Remove unnecessary type-coercion from account creation event
 * - Tolerate string revIds.
 * - Declare $wgEventLoggingLogSHA1 as global in efLogServerSideEvent.
 * - Use SIGALRM to fail tests that exceed a timeout.
 * - Add raw JSON to alert e-mails
 * - Various fixes to alerter module
 * - Use a generic map of attribute values to SQL
 * - Use 'format' to detect and typecast timestamps
 * - Sort column names lexicographically
 * - Allow exceptions from efSchemaValidate
 * - enable EventLogging on alpha, beta and stable of mobile site

FeaturedFeeds

 * - Rename calls to wfArrayToCGI to wfArrayToCgi

FlaggedRevs

 * - Removed references to bogus functions.
 * - Rename calls to wfArrayToCGI to wfArrayToCgi
 * - Avoid showing a page itself in the &quot;changed inclusion&quot; lists.

GeoData

 * - Decrease update batch size, but remove the delay
 * - Clear killlist on resets
 * - Don't use a closure for wgExtensionFunctions
 * - php_sapi_name =&gt; PHP_SAPI

GettingStarted

 * - Revert &quot;Remove implementation of split test:&quot;
 * - Remove implementation of split test:
 * - Don't send users on GuidedTour when they loaded Special:GettingStarted manually (isNew false).
 * - Put link description back.

GuidedTour

 * - Fix encoding mismatch for titles containing special characters or non-ASCII.
 * - Fix monobook issue and allow customization by skin.
 * - Implement link actions using actual links:
 * - Implement isSinglePage, removing end tour and no cookies:
 * - Don't validate next in gt.initGuider:
 * - Embed arrows using ResourceLoader
 * - Fix tests broken by gt.currentTour validation in gt.initGuider.
 * - Use community portal message, remove obsolete comment.
 * - Improve way gt.currentTour is handled and deprecate gt.initGuider
 * - Add unused to jshint, and various refactoring:
 * - Remove duplicate Arabic messages.
 * - Remove it messages deleted on wiki: move to ar
 * - Don't show X button.

LiquidThreads

 * - Fix JSHint quotmark
 * - JSHint: Write some things in dot notation instead
 * - Rename calls to wfArrayToCGI to wfArrayToCgi
 * - Remove unclear unicode art from LQT new message bar
 * - remove unused lqt-quote and lqt-quote-intro messages
 * - JSHint: strict equalities for strings
 * - JSHint: missing curly braces
 * - JSHint: disable 'quotmark' check
 * - JSHint: ignore jquery/jquery.autogrow.js 3rd party
 * - JSHint: .jshintrc from MediaWiki core
 * - - WikiEditor Search and Replace dialog uses a nonexistent message key for &quot;replace next&quot;

Listings

 * - : use mediawiki:listings-template to override formatting

MWSearch

 * - Rename calls to wfArrayToCGI to wfArrayToCgi

Math

 * - Only update the cache on cache miss
 * - Add unit tests, demonstrating how to stub out deps.
 * - Add and register PHP unit tests for MathSource class
 * - Fix MathRenderer::renderMath.
 * - Change default LockManager back to nullLockManager.
 * - Restructuring Math classes
 * - JSHint: Equality, unused arguments and other minor remnants.
 * - JSHint: Fix var statement and global scope issues.
 * - JSHint: Fix curly braces.
 * - JSHint: Fix quotmark and semicolon warnings.
 * - JSHint: Add .jshintrc
 * - JSHint: ignore modules/MathJax

MobileFrontend

 * - : Fix photo uploads not being marked as mobile edits
 * - : Fix no edit comment after adding image to article
 * - Watchlist with PageImages fixes
 * - Disable photo upload button on main and protected pages
 * - fix typo breaking languages
 * - Move lead photo upload to stable
 * - Fix margin for thumbnails in watchlist (alpha)
 * - Updated Ruby version to 2.0
 * - Detect disabled file upload controls on Firefox OS 1.0
 * - Show upload button again if user cancels upload
 * - Revert &quot;Move lead photo upload to stable&quot;
 * - Updated Ruby gems
 * - Fix left and right margin in uploads dashboard
 * - Move lead photo upload to stable
 * - Workaround for missing #content_0
 * - (mingle #405) Add dynamic head msg on login/acct create form
 * - Use autoless to compile LESS files
 * - (mingle 397) Append configurable string to photo upload description
 * - Don't show or log an error when user cancels photo upload
 * - Add photo upload support for Firefox
 * - Send all upload request parameters inside FormData
 * - Updated Ruby gems
 * - Fix dependencies support in MFResourceLoaderModule
 * - Specify test group explicitly
 * - Fix photo upload button not working after error
 * - Add event logging to photo uploads
 * - Add M#getSessionId
 * - Updated Ruby gems
 * - Increase geosearch radius to 10km
 * - Updated Ruby gems
 * - Updated multi_json Ruby gem
 * - Display thumbnails in watchlist using PHP
 * - Minor wording improvement for readme file
 * - : Mobile device detection for third parties
 * - Fix margins in uploads dashboard
 * - Fix photo upload bug when the same image selected twice
 * - (mingle 330) Displays number of user uploads on upload dashboard
 * - Make sure API wrapper doesn't process FormData objects
 * - Add template support to ResourceLoader
 * - : return more than 10 languages
 * - : correct padding of watchlist icon on watchlist page
 * - Disable forwarding of progress events
 * - Now fix for realz
 * - Prevent fatals in dumps
 * - Remove a lot of b/c cruft
 * - Upgrade Ruby to version 1.9.3-p385

OAI

 * - Rename calls to wfArrayToCGI to wfArrayToCgi

OpenStackManager

 * - Combine netadmin and sysadmin
 * - Set domain explicitly when getting config options
 * - Create default sudo policy for new projects.
 * - Add a checkbox to require sudo passwords.
 * - Use project groups rather than ALL for sudoers.
 * - Slight refactor of projectName handling.
 * - Fix typo

PageTriage

 * - Fix message key and default user option for Echo
 * - rebuild the cache rather than flushing it.
 * - Workaround for Change Ifbeae7e9
 * - Missing a comma
 * - Another userjs- API fix
 * - Fixing PageTriage option setting for list view.
 * - Don't add rationale into the mfd tag
 * - Kill double spaces
 * - unbind click when disabled.
 * - Disable reviewing buttons for page creators.
 * - Improve localization in flyout of curation tool.
 * - make 'Pagetriage-tags-tooltip' less negative.
 * - Change the desc message of

ProofreadPage

 * - Add namespaces for is

Renameuser

 * - Add flag to RenameuserSQL to skip username check

Scribunto

 * - Explicitly destroy the loadedLibraries array
 * - Scribunto language library
 * - Document Scribunto_LuaEngine
 * - Hide mw.makeProtectedEnvFuncs from modules
 * - Fix mw.ustring.gmatch and patterns with '^'
 * - Allow extensions to add libraries
 * - Test for leaked global variables
 * - Fix further non-local effects of library registration
 * - Remove global side-effects from mw.ustring library registration
 * - Lua ustring implementation
 * - Make pairs and ipairs work with frame.args
 * - Handle session loss in the console
 * - Make our loader work like Lua's built-in loaders
 * - Fix unit tests after I62259b76
 * - Clean up title handling for defaultUrl
 * - Add mw.uri library
 * - Fix title passed to API scribunto-console
 * - $wgServerName doesn't exist anymore
 * - Add mw.site library
 * - Make Lua engine tests modular
 * - php_sapi_name =&gt; PHP_SAPI
 * - Add incrementExpensiveFunctionCount methods
 * - Lua library support functions
 * - Fix package.loaded and other cleanups
 * - Fix LuaStandalone nil handling
 * - Fix unit test parameter order
 * - Support __pairs and __ipairs
 * - Fix reference handling in LuaEnvironmentComparisonTest
 * - Fix string extending
 * - Refactor unit tests

SecurePoll

 * - Hide private data after election
 * - Rename calls to wfArrayToCGI to wfArrayToCgi

SyntaxHighlight_GeSHi

 * - Disable some highlighting for MOUSs

TimedMediaHandler

 * - - File: pages for images broken on wmf9 (www.mediawiki.org) by TimedMediaHandler
 * - - File: pages for images broken on wmf9 (www.mediawiki.org) by TimedMediaHandler
 * - Fix undefined $wgTmhFileExtensions
 * - Add support for audio derivatives
 * - Add special page to the &quot;media&quot; section on Special:SpecialPages
 * - Typos: fix browser support punctuation

TorBlock

 * - More annoying debugging
 * - Comment out annoying useless log entries
 * - Swap wfDebug for wfDebugLog so output can be grouped
 * - Added SSL verification when retrieving node list.
 * - Added Onionoo list loader and reorganized functions.
 * - Sanitized coding style and improved documentation.
 * - Put loadExitNodes.php into a Maintenance class.

Translate

 * - Expose mw.translate.getGroup
 * - Show unset as workflow status if no workflow set
 * - Search integration in message table
 * - Ajaxify message filters
 * - We have messages where whitespace is significant
 * - Fetch the workflow states for the group
 * - Get workflow state related information from APIs
 * - Make the inline editor functional
 * - Remove an outdated FIXME
 * - Correct event binding and update api.parse call
 * - Make translatewiki.net's work
 * - Update the group description upon a group change
 * - Show that Special:AggregateGroups is restricted
 * - Create /source-language unit pages for translatable pages
 * - Cleanup Special:PageTranslation more
 * - Use machine translation as translation suggestions
 * - Simplify Special:PageTranslation a bit
 * - experimental composer.json
 * - Make messageListScrollHandler less repetitive and more readable
 * - More space for edit link to take care of languages with long translations
 * - Add ext.translate.messagetable as dependency
 * - Workflow state selector
 * - Remove unneeded text-left classes and RTL hacks
 * - Cleanup
 * - Styling for paste from source actions
 * - Add a class to the paste button and hide it per the spec
 * - Update code formatting
 * - Refactor Translate editor
 * - Add a &quot;Paste original&quot; button
 * - Cleanup whitespace and reduce jQuery calls
 * - Fetch description of message group
 * - Return TUX warnings only on TUX pages
 * - Replace ok and err with .done and .fail in AJAX
 * - Clean up the use of isBeta
 * - Stale state displayed in Special:PageTranslation after (dis|en)couraging
 * - Use mw.Api more consistently and a bit of error handling
 * - Fix the preloading of message details
 * - Collapse same-value translation memory suggestions
 * - A little cleanup
 * - Avoid PHP warning when CDBMessageIndex has only one key
 * - Preload next message while opening a message editor
 * - WIP - Inline message editor on Search page
 * - Whitespace
 * - Change the save button label as per nature of translation
 * - Fix a js error, follow up Ie7aeab2b
 * - Use correct classes for optional, fuzzy, translated messages
 * - Change the URLs as per the group and language change
 * - Ajaxify the group selection and language selection
 * - Pass the current state of message to update the statsbar correctly
 * - Use a single data attribute message for the message items
 * - Link to full-page doc editing
 * - Instantly parse edited documentation
 * - Message documentation language name was always in English
 * - Remove deprecated TMessage::author
 * - Add hook for TranslationAids and small doc tweak
 * - Query recent groups only once per page load
 * - Load all messages from client side on page load
 * - Refactor messagetable
 * - Replace .hide and .show with class 'hide'
 * - Add placeholder message
 * - Disable translation text area when user has no translation rights
 * - Test fixes
 * - Default protwords.txt is useless
 * - Expose all properties via ApiQueryMessageCollection
 * - Remove setInFile calls that should not be used.
 * - Project selector tabs toggle when clicking twice
 * - Fix statsbar update trigger- typo fix
 * - Remove the default filter
 * - Set the direction of source and translation
 * - Cleanup whitespace and remove repeated jQuery calls
 * - Set correct title in the loaded translation editor

TranslationNotifications

 * - Really return success value for run
 * - experimental composer.json

UniversalLanguageSelector

 * - Incorrect vertical alignment for Telugu web font
 * - Update code formatting
 * - Update to match core changes in Idc11b547
 * - Make disabling input methods work
 * - Update jquery.ime and jquery.webfonts from upstream

UploadWizard

 * - Remove redundant &quot;address&quot;
 * - Remove superfluous space
 * - never transcode images into videos with Firefogg
 * - Workaround for Change Ifbeae7e9
 * - Only enable async if file is larger 10Mb
 * - Cleanup Firefogg integration
 * - Don't show invalid license wrongly
 * - Followup I883f6f44: Use XHTML compliant line break
 * -  Errant line break in &quot;Use a different license option&quot;
 * - Revert &quot;Disabled async publish per logging bug.&quot;
 * - Disabled async publish per logging bug.

UserMerge

 * - Add action-usermerge message

VisualEditor

 * - Fix bug where inline nodes didn't trigger wrapping
 * - Node cleanup
 * - i18n icons
 * - Remove trailing commas
 * - Make JSHint ignore the docs/ directory
 * - Introduce context object in getDataFromDom
 * - Use AnnotationSet rather than array in getDataFromDom
 * - Hybrid-ify MetaBlock/MetaInline
 * - Hybrid-ify AlienBlock/AlienInline
 * - Specify (but do not implement) the context parameter to toDataElement
 * - Fixed documentation warning
 * - Add Iceweasel to supported browsers list
 * - Added tests and fixed inconsistencies for empty text node handling
 * - Automatically prune empty text nodes
 * - Trigger refactor
 * - Added support for passing data into annotation constructors
 * - Add extension-specific types functionality to ModelRegistry
 * - Allow matchTagNames = null in ve.dm.Converter
 * - Added @source links to externals
 * - Add wrapper for Array.prototype.filter
 * - Actually use this.nodeFactory and this.annotationFactory in ve.dm.Converter
 * - Drop name parameter from ModelRegistry.register, use .static.name
 * - Move matching code from AnnotationFactory to ModelRegistry
 * - Fixed documentation errors
 * - Enable VisualEditor in MediaWiki integration for IE 9 and up.
 * - Make defaultAttributes a static property as well
 * - Convert node rules to static properties
 * - Add annotation-like static properties to nodes
 * - Replace nodeFactory invocations with direct static access
 * - Fix naming of phantoms
 * - Add TriggerRegistry to tests
 * - Introduced method replacePhantoms in ve.ce.Surface in order to avoid accessing ve.ce.Surface local variable ($phantoms) from ve.ce.AlienNode
 * - Convert &quot;var\t&quot; to &quot;var &quot;
 * - Fixes for typos and some missing documentation
 * - ImageNode Todos
 * - Add interplatform, i18n shortcuts to ui buttons.
 * - Double spaces optimization
 * - Reorganization of ve.ce.Surface methods
 * - Cleaned up paste target and surface styles
 * - Slug Todos
 * - Fix minor bug (typo - was: ve.ve, is: ve.ce)
 * - Minor cleanup.
 * - Inline ve.dm.Document.offsetContainsAnnotation
 * - Removing alienblock tag
 * - Remove range.normalize (not needed), use range.isCollapsed more often
 * - Major Documentation Cleanup

WikiEditor

 * - experimental composer.json
 * - fix ext.wikiEditor.publish so that it actually works

WikiLove

 * - Fixing WikiLove error handling for post-preview errors

Wikibase

 * - Fix sort order for minwiki for alphabetic and revised
 * - Omit external wikibase changes from watchlist query w/ enhanced changes
 * - Add minwiki to the sort order
 * - check for enhanced changes preference in more places
 * - Make client robust against unknown sites.
 * - mark wikibase edits as autopatrolled in client
 * - Omit wikidata changes from enhanced changes
 * - (minor) fix show-wikidata-rc preferences message
 * - remove todo from the code
 * - Fixed test failing after change to reference serialization
 * - (/hot fix) added EntitySerializer option setIncludeValuesWithMissingReferences
 * - Limit labels etc to 250 characters.
 * - Statements are no longer an experimental feature
 * - Fix JS error if repoScriptPath or repoUrl settings not defined
 * - Make it optional to include claims in diff, saved to changes table
 * - added HashArray indicesAreUpToDate and rebuildIndices
 * - Changed ClaimAggregate::getClaims to return Claim[] rather then Claims
 * - fixed assertion violation caused by inconsistent state of Claims object
 * - use map diffing rather then list diffing for claim lists
 * - fix edit links link to include namespace
 * - (minor) change message for statementview 'sources' label
 * - removing references is working now
 * - moved claimview claim remove related API interaction in its own fn
 * - JS wb.RepoApi removeReferences
 * - Using trigger to trigger tooltip's afterhide event
 * - editing of existing reference
 * - Cleanup for listview.ListItemAdapter, constructor now expects options
 * - slightly adjustment to tests
 * - css: Correct claim container / statement view bottom padding
 * - Entity selector widget: Set entity when focusing suggestion
 * - Remove unused (and defunc) module ApiSearchByName
 * - Handle invalid values in statements ui
 * - Basic css for statement references
 * - statementview can display and add references now
 * - statementview: counter for number of references
 * - introduction of jQuery.wikibase.statementview
 * - fix refs to Settings class
 * - Entity selector: Option to trigger &quot;select&quot; event
 * - claimlistview can now serve a list of other widgets than claimview
 * - Changed Reference interface and ReferenceObject to just a Reference class
 * - Modified reference serialization to accomodate non-snaks elements such as the reference hash
 * - Minor updates to help URLS to make them correct and consistent
 * - Add needsToken, mustBePosted and isWriteMode
 * - reference related bugfix in wb.Claim.newFromJSON
 * - ReferencedEntitiesFinder::findClaimLinks aware about Statements now
 * - extend repoApi to support editing existing references
 * - repo API module for adding a reference
 * - introduction of wb.SnakList, a list containing a set of Snaks
 * - Add new _postAndPromiseWithAbstraction to repo API
 * - minor cleanup and optimization in repo API
 * - Change comments to avoid failures during test
 * - fixed SnakListTest::testToArrayRoundtrip
 * - up rel notes
 * - Added links to referenced entities in pagelinks table
 * - Fix exists check, array elements can be null
 * - fix type hint
 * - (testing) added selenium test for setAliases special page
 * - add bunch of profiling points for LangLinkHandler
 * - Fix name of dataproviders
 * - (testing) added Selenium tests for setDescription special page
 * - (hotfix) fixing SetLabel Selenium tests after refactoring
 * - Move jquery.eachchange to DataTypes since code there needs it
 * - minor fix at checkKey function
 * - Added special pages to special page group
 * - ( - ) New Special Pages to edit entities without javascript
 * - (minor) some documentation updates in old JS UI components
 * - (minor) added some documentation for SiteLinkEditTool + minor cleanup
 * - (minor) fix against crashes during certain console/debugging operations
 * - Add a plural message to avoid confusion
 * - Display error when site API not accessible
 * - Option to lock snakview elements
 * - (hotfix) fixing calls of Sites::singleton in ClientChangeHandler
 * - Fix populateSitesTable, use new SiteSQLStore class.
 * - Use wikibase- as prefix for all messages
 * - Updated entity id parser implementation
 * - Add some tests for ChangeNotificationJob.
 * - Correct SiteLinksEditTool table fixation
 * - Mark ChangesTable testSaveSelectCountAndDelete as skipped on Wikibase Client
 * - Make use of new sites code in core
 * - (minor) adjusting client selenium tests for dispatcher script
 * - wikibase.RepoApiError QUnit tests
 * - Making wb.Tooltip use wb.RepoApiError instead of custom object
 * - Using RepoApiError in EditableValue
 * - New RepoApiError constructor handling wikibase API errors
 * - add $wgContentHandlerUseDB = true; to example settings
 * - terms search key schema update for sqlite
 * - Updated site link table fixation for IE
 * - (hotfix) fixing entitieswithoutlabel-test in chrome
 * - (testing) selenium tests for label/description/aliases length constraints
 * - (hotfix) wrong order of parameters in messages
 * - (minor) selenium: only run client qunit tests on client
 * - (hotfix) fix to selenium protected page object
 * - Specify options for entityidparser that have all required fields set
 * - Added doc to apisetreference
 * - Provide text for filtering to AbuseFilter.
 * - (minor) moved jQuery.TemplatedWidget template related fields into options
 * - Introduce wb.RepoApi which queries the repo independent from the current wiki
 * - Moving baseclasses and preparing for reuse
 * - (minor) Add group medium to a test that otherwise complains
 * - merge runs of changes for RC.
 * - Replace toolbar with message while saving/removing
 * - display labels and descriptions in user languages
 * - (minor) optimization of claimview error handling
 * - Checking on initial snak when drawing property
 * - Trigger claimview widget's error handling out of claimlistview
 * - display labels and descriptions in user languages
 * - (hot fix) fixes broken 'add' button introduced in I14e89ecc
 * - (minor) stick closer to jQuery.Widget implementation of snakview disable/enable
 * - Simpler implementation of disable for SnakTypeSelector
 * - Honor $wgSend404Code for missing entities.
 * - docs++
 * - fix error in test (not spotted so far because test is not run on mysql installs)
 * - fix test failing on sqlite
 * - Added asserts in methods otherwise not performing any tests
 * - Rem test that fails on some setups
 * - Remove Statement interface and rename StatementObject to Statement
 * - (minor) fix for calling options in Widgets based on TemplatedWidget
 * - Disable input element and toolbar on saving/removing
 * - Define EntityChange::__toString
 * - (testing) snaktype selector seleneium tests
 * - (testing) method to exclude certain browsers in selenium tests
 * - Remove Claim interface and rename ClaimObject to Claim
 * - added selenium tests for localizing numbers
 * - claimview widget: Attach to valueview widget's change event
 * - Added Claims::getDiff tests
 * - Improved snakview error handling
 * - (minor) remove check for user.isAnon. Should always be set now
 * - Localized numbers in WikiBase js
 * - (testing) removing workarounds for in selenium tests
 * - (minor) cleanup of lib resources
 * - Added TODO in diff visualizer to prevent notices when visualizing diffs containing claims
 * - fix error detection in createclaim api
 * - Added claims to entity patching
 * - 'wikibase-item' data type now uses 'wikibase-entityid' data value
 * - Fix ExternalRecentChange::getParam
 * - add --max-time param to dispatchChanges
 * - Added claims diffing and added this to entitydiff
 * - Re-apply &quot;Added EntityId and EntityIdParser in JS&quot;
 * - (hotfix) selenium sitelinks tests fix
 * - selenium tests for statements UI errorhandling
 * - Corrected checks of emptiness of labels and descriptions
 * - (minor) snakview value didn't update view in all cases
 * - Claimview/Claimlistview: Set tooltip before setting error class
 * - Entity selector: Show id when focusing an entity without a label
 * - Entity selector: Check for entity id when validating input
 * - Making remove button state changeable
 * - rem unused use statements
 * - Adding mediawiki.user dependency to entityViewInit
 * - Special page group for Wikibase repo
 * - (minor) remember each variation's value when switching variation + re-use it
 * - (minor) in snakview, only show snak type selector if property is chosen
 * - Handling of changed data types
 * - Moving snak type selector to left of the value input
 * - Custom object constructor for templates
 * - A small addition about the database user login
 * - testing 0 as value for label/description/aliases
 * - ResourceLoader modules dependency clean-up
 * - use prefixed text for title when adding edit link
 * - check rc_params is array in client
 * - Entity selector: Setting entity on mousedown event
 * - suggester widget: Replace input value with suggestion list item
 * - (minor) workaround for failing qunit tests in firefox
 * - Show Git hash in Special:Version
 * - Prevent entity selector widget from resetting entity
 * - Only adapt first letter in AutocompleteInterface
 * - suggester jQuery widget: Option to adapt letter case
 * - (minor) proper destruction of certain snakview variations
 * - Revert &quot;Added EntityId and EntityIdParser in JS&quot;
 * - adjust watchlist query to use rc_this_oldid=page_latest
 * - make changes line hook more backwards compatible
 * - Added EntityId and EntityIdParser in JS
 * - (minor) re-organized 'jquery.wikibase.snakview' resource loader module

WikimediaMaintenance

 * - Make getJobQueueLengths only count jobs with no token
 * - Fix paths back to /h/w/c based
 * - Remove /dblist from path (no git deploy yet)
 * - Change script for creating translate tables to more generic

WikimediaMessages

 * - Followup I6cddbdc6: Use protocol relative for creativecommons.org
 * - Add Wikidata license terms

cldr

 * - experimental composer.json
 * - Add English local name for nds-nl

timeline

 * - fixes for install-ploticus.sh
 * - consistently use &lt;div class=&quot;error&quot;&gt; for user-visible errors