1 Change notes from older releases. For current info, see RELEASE-NOTES-1.44.
5 PHP 8.1 workboard: https://phabricator.wikimedia.org/tag/php_8.1_support/
6 PHP 8.2 workboard: https://phabricator.wikimedia.org/tag/php_8.2_support/
7 PHP 8.3 workboard: https://phabricator.wikimedia.org/tag/php_8.3_support/
8 PHP 8.4 workboard: https://phabricator.wikimedia.org/tag/php_8.4_support/
10 === Changes since MediaWiki 1.43.1 ===
12 * Localisation updates.
13 * (T382987) $wgDnsBlacklistUrls now defaults to an empty array. See the comment
14 in the "Configuration changes for system administrators" section.
16 == MediaWiki 1.43.0 ==
18 === Changes since MediaWiki 1.43.0-rc.0 ===
19 * (T381728) Use PHP 8.3 in MediaWiki-Docker
20 * (T382375) Misaligned label margins on Special:MathStatus
21 * (T382196) \overbrace rendered below (not above) in MathML and client-side
23 * (T381310) Math Popup not working in newer version of Popup-Extension
24 * (T380079) This page is using the deprecated ResourceLoader module
25 "mediawiki.Uri" on page load
26 * (T381311) Preview has wrong location in MathML mode
27 * (T381046) Preview not working with MathML rendering
28 * (T381102) <math>\left(a\right)'</math> in MathML and MathJax renders
29 with one prime symbol too much
30 * (T380184) <math>\operatorname{vec}</math> crashes with native MathML
31 * (T380654) vertical space between multline equations is ignored
32 * (T375274) mediawiki_function_names math functions eat the following paren in
34 * (T373732) Audit SUL3 shared-domain i18n messages for XSS
35 * (T381068) PHP Deprecated: Creation of dynamic property
36 MediaWiki\\Auth\\ButtonAuthenticationRequest::$skipReset is deprecated
37 at AuthenticationRequest.php:182
38 * (T20110) Define AbuseFilter consequence to display a CAPTCHA
39 * (T332743) On private wikis the ellipsis should not appear above 720px
40 (wikitech, office, translate wiki)
42 == Upgrading notes for 1.43 ==
43 Don't forget to always back up your database before upgrading!
45 See the file UPGRADE for more detailed per-version upgrade instructions from the
46 oldest supported upgrading version, MediaWiki 1.35.
48 Some specific notes for MediaWiki 1.43 upgrades are below:
50 * It is now necessary that the OpenSSL PHP extension is installed.
51 * update.php updates the Linter database table with two migration scripts that
52 can take a long time to run: with the provided settings, each migration
53 script update roughly 500 rows per second. If at all possible, it is
54 highly recommended to let update.php run these migration scripts.
56 If this is deemed too long a maintenance operation (depending on the number
57 of rows in the Linter database table), it is possible, for a upgrade from
58 1.40 onwards, to run the migration scripts before updating the MediaWiki
59 and extensions files to 1.43. Set $wgLinterWriteNamespaceColumnStage and
60 $wgLinterWriteTagAndTemplateColumnsStage to true, and run the
61 extensions/Linter/maintenance/migrateNamespace.php and
62 extensions/Linter/maintenance/migrateTagTemplate.php migration scripts
63 before proceeding with any other code update.
64 When upgrading from a version <= 1.39, a multi-step update is necessary to
65 be able to run the migration scripts independently from update.php: first
66 update to 1.42, then proceed as indicated.
68 For notes on 1.42.x and older releases, see HISTORY.
70 === Configuration changes for system administrators in 1.43 ===
72 * $wgBlockTargetMigrationStage, which was introduced in 1.42, is now deprecated
74 * (T382987) The default value of 'http.dnsbl.sorbs.net.' in $wgDnsBlacklistUrls
75 has been removed. This is because sorbs.net have stopped providing their
76 services. This means that if you have $wgEnableDnsBlacklist set to true, it
77 will no longer provide any value unless you add other servers to
80 ==== New configuration ====
82 * (T13555) $wgParserEnableLegacyHeadingDOM - Defaults to `true`, can be set to
83 `false` to enable new, more accessible HTML markup for wikitext headings.
84 Note that each skin must also use the 'supportsMwHeading' option to allow it.
85 More information: https://www.mediawiki.org/wiki/Heading_HTML_changes
86 In a future release the new markup will become the default,
87 and later this option will be removed.
88 * (T12347) $wgEnableProtectionIndicators - Defaults to false, setting it to true
89 shows a lock icon indicator on protected pages.
90 * (T373480) $wgSortedCategories - Defaults to false, setting it to true will
91 sort the categories shown on article pages. This is an experimental setting;
92 its future will depend on community adoption and feedback on the phab task
94 * (T45646) $wgAllowRawHtmlCopyrightMessages - Defaults to true, can be set to
95 false to disable the use of the localisation messages 'copyright' and
96 'history_copyright' and the hook 'SkinCopyrightFooter', which have been
97 deprecated in this release. This helps protect your wiki against attacks by
98 a rogue administrator account and will become the default in the future.
99 * (T4085) $wgParserEnableUserLanguage - Defaults to false, can be set to
100 true to let {{USERLANGUAGE}} magic word return the user's language,
101 instead of the page language. Beware that accessing the user language may
102 reduce the efficiency of the parser cache.
104 ==== Changed configuration ====
106 * wgPageLinksSchemaMigrationStage – (T299947) This temporary setting, which
107 controls the database schema migration for the page links table, is now set
108 by default to write to both old and new data and read from the new data.
109 * wgFooterIcons – (T256190) The default "Powered by MediaWiki" button icon has
110 been updated to an SVG icon, and the footer icons are now wrapped as buttons
111 in HTML, rather than faking it within the icons themselves. You should adjust
112 any footer icons you provide or over-ride to match.
113 * The "error-json" channel, configurable via $wgDebugLogGroups, has been
114 removed. For structured logging, use the "error" channel directly instead.
115 Since MediaWiki 1.25, structured logging is supported via Monolog for all
116 channels, including the "error" channel. For silenced errors, you use the
117 "silenced-error" channel added in MediaWiki 1.42. (T193472)
118 * wgResourceLoaderUseObjectCacheForDeps - (T343492) This is now enabled by
119 default. This means ResourceLoader writes information to the MainStash
120 instead of a core database table, which can be set to a separate database
121 via wgMainStash. If you find issues, please drop a comment on T343492.
122 It is now deprecated and will be removed in MediaWiki 1.44.
124 ==== Removed configuration ====
126 * wgSessionInsecureSecrets has been removed since OpenSSL is now a required
128 * $wgTemplateLinksSchemaMigrationStage has been removed.
129 * $wgSamplingStatsdClient has been removed. It was introduced in MW 1.28 for
130 use in the Wikibase extension, but never used. The new StatsFactory service
131 should be used for new instrumentations, which already supports sampling.
132 Beware that sampling is generally not needed even at scale, and that sampling
133 does not significantly reduce runtime overhead, thus making it slow to
134 instrument very hot code even with built-in sampling.
135 * (T294397) The 'writeapi' userright, which controlled access to some API
136 modules, has been removed.
137 * (T331883) The variables $wgLinterWriteTagAndTemplateColumnsStage,
138 $wgLinterUserInterfaceTagAndTemplateStage, $wgLinterWriteNamespaceColumnStage,
139 and $wgLinterUseNamespaceColumnStage have been removed. The namespace,
140 tag and template column of the Linter database table are now written and used.
141 The existing data from the Linter database is migrated to the new columns
142 by extensions/Linter/maintenance/migrateNamespace.php and
143 extensions/Linter/maintenance/migrateTagTemplate.php, which are both called
144 by the update script (T367207).
146 === New user-facing features in 1.43 ===
148 * (T338341) Support reading XMP and EXIF from WebP files
149 * (T365636) Wiki's with wgAllowExternalImages enabled now detect urls
150 with AVIF, SVG and WebP images.
151 * (T242346) Special:TalkPage is a new special page that will redirect to the
152 associated talk namespace page, e.g. [[Special:TalkPage/Foo]] redirects to
153 [[Talk:Foo]]; [[Special:TalkPage/Project:Foo]] goes to [[Project talk:Foo]].
154 This allows for links by templates and tools without having to parse what
155 namespaces are valid and have associated talk pages.
156 * New preference: "Send password reset emails only when both email address
157 and username are provided."
158 * (T4085) Added new magic word {{USERLANGUAGE}} which returns the language code
159 of the interface set by the user.
160 * (T263513) Special:NamespaceInfo is a new special page that displays a list
161 of namespaces available on the wiki, their descriptions and configuration.
163 === New developer features in 1.43 ===
165 * StatusValue class gained new method getMessages(): MessageSpecifier[],
166 allowing the errors to be inspected and displayed more easily, for example:
167 foreach ( $status->getMessages() as $msg ) {
168 if ( $msg->getKey() !== 'ignored-message' ) {
169 $this->getOutput()->addWikiMsg( $msg );
172 * (T358779) The MessageValue class can now be used instead of Message in most
173 places (in methods that accept the MessageSpecifier interface). This allows
174 using localisation messages in code that doesn't know the user's language,
175 such as many hooks, without relying on global state. To convert between them,
176 use MessageValue::newFromSpecifier() and Message::newFromSpecifier().
177 * The REST API framework now supports defining redirects in route definition
178 files. See MediaWiki\Rest\Handler\RedirectHandler for details.
179 * (T13555) Skins can enable the 'supportsMwHeading' option for new, more
180 accessible HTML markup for wikitext headings. MediaWiki's own styles and
181 scripts have been updated to support it, but your skin may also need updates.
182 More information: https://www.mediawiki.org/wiki/Heading_HTML_changes
183 A future release will emit deprecation warnings for skins with
184 'supportsMwHeading' set to false.
185 * The AuthPreserveQueryParams hook was added.
186 * (T219397) New `Language::formatDurationBetweenTimestamps()` function added
187 which takes two timestamps and a precision in order to calculate a more
188 accurate text representation of duration.
189 * Added an interactive mode to the install.php maintenance script.
190 * The ResourceLoaderModifyEmbeddedSourceUrls hook was added.
191 * The AuthManagerFilterProviders hook was added.
192 * The AuthManagerVerifyAuthentication hook was added.
193 * The OutputPageRenderCategoryLink hook was added, as a replacement for the
194 deprecated OutputPageMakeCategoryLinks hook.
195 * PreAuthenticationProvider, PrimaryAuthenticationProvider, and
196 SecondaryAuthenticationProvider now receive a `canAlwaysAutocreate` flag in
197 the options of the `testUserForCreation` invocation. This flag is true when
198 the session provider is exempt from autocreate user permissions checks.
199 * The CentralIdLookup service gained the isOwned() method, which can be used
200 to check if a local username is reserved for a central user, even if a local
201 user account does not exist yet. This can be used by extensions to look
202 up information about the central user.
203 * (T251790) A Jest-based test suite has been introduced for testing front-end
204 code such as Vue components. Tests can be run via `npm run jest`, and test
205 files live in `tests/jest/`. See https://www.mediawiki.org/wiki/Jest
206 for more information.
207 * The SpreadAnyEditBlock hook was added.
208 * The ConditionalDefaultOptionsAddCondition hook was added.
210 === External library changes in 1.43 ===
212 * The OOjs Router library has been merged into core and will be archived
215 ===== New development-only external libraries =====
217 * (T251790) Some development-only external libraries have been added for the new
218 testing tools for front-end Vue components:
219 * Added jest and jest-environment-jsdom at v29.7.0.
220 * Added @vue/test-utils v2.4.6.
221 * Added @vue/vue3-jest v29.2.6.
222 * Added @babel/preset-env v7.25.4.
223 * Added pinia v2.0.16 (already available via ResourceLoader).
224 * Added @pinia/testing v0.0.12.
225 * Codex, already available via ResourceLoader, now has the npm versions, i.e.
226 @wikimedia/codex and @wikimedia/codex-icons, also installed for testing.
228 ==== Changed external libraries ====
230 * Updated codex, codex-design-tokens and codex-icons
231 from v1.3.6 to v1.14.0.
232 * Updated composer/semver from 3.4.0 to 3.4.3.
233 * Updated guzzlehttp/guzzle from 7.7.1 to 7.9.2.
234 * Updated jquery.i18n from 1.0.7 to 1.0.10.
235 * Updated justinrainbow/json-schema from 5.2.13 to 5.3.0.
236 * Updated pear/mail from 1.6.0 to 2.0.0.
237 * Updated pear/net_smtp from 1.11.1 to 1.12.1.
238 * Updated mck89/peast from v1.16.2 to 1.16.3.
239 * Updated monolog/monolog from 2.9.2 to 2.9.3.
240 * Updated symfony/yaml from 5.4.35 to 5.4.45.
241 * Updated OOUI from v0.49.1 to v0.51.2.
242 * Updated wikimedia/at-ease from 2.1.0 to 3.0.0.
243 * Updated wikimedia/json-codec from 3.0.1 to 3.0.3.
244 * Updated wikimedia/less.php from 4.2.1 to 5.1.2.
245 * Updated wikimedia/minify from 2.7.0 to 2.8.0.
246 * Updated wikimedia/normalized-exception from 1.0.1 to 2.0.0.
247 * Updated wikimedia/php-session-serializer from 2.0.1 to 3.0.0.
248 * Updated wikimedia/purtle from 1.0.8 to 2.0.0.
249 * Updated wikimedia/relpath from 4.0.0 to 4.0.1.
250 * Updated wikimedia/remex-html from 4.1.0 to 4.1.1.
251 * Updated wikimedia/request-timeout from 1.2.0 to 2.0.0.
252 * Updated wikimedia/scoped-callback from 4.0.0 to 5.0.0.
253 * Updated wikimedia/services from 3.0.0 to 4.0.0.
254 * Updated wikimedia/shellbox from 4.0.2 to 4.1.1.
255 * Updated wikimedia/xmp-reader from 0.9.1 to 0.9.4.
256 * Updated vue from 3.3.9 to 3.4.27.
257 * Updated symfony/polyfill-php80 from 1.29.0 to 1.31.0.
258 * Updated symfony/polyfill-php81 from 1.29.0 to 1.31.0.
259 * Updated symfony/polyfill-php82 from 1.29.0 to 1.31.0.
260 * Updated symfony/polyfill-php83 from 1.29.0 to 1.31.0.
262 ===== Changed development-only external libraries =====
264 * Updated doctrine/dbal from 3.7.2 to 3.8.4.
265 * Updated eslint-config-wikimedia from 0.26.0 to 0.27.0.
266 * Updated mediawiki/mediawiki-codesniffer from 43.0.0 to 45.0.0.
267 * Updated phpunit/phpunit from 9.6.16 to 9.6.19.
268 * Updated seld/jsonlint from 1.10.1 to 1.10.2.
270 === Bug fixes in 1.43 ===
272 * When using the 'runMaintenance' method in a LoadExtensionSchemaUpdates hook
273 handler, only the script's class name is required, not its path. (T367918)
274 * QueryPage::recache() (used by the updateSpecialPages.php maintenance script)
275 no longer attempts to ignore database errors. (T278543)
277 === Action API changes in 1.43 ===
279 * APIQueryUserInfo now returns null in the field registrationdate for users
280 created before December 2005 (their registration date was not recorded).
282 === Languages updated in 1.43 ===
283 MediaWiki supports over 350 languages. Many localisations are updated regularly.
284 Below only new and removed languages are listed, as well as changes to languages
285 because of Phabricator reports.
287 * (T375891) Updated the autonym for Kadazan Dusun (dtp)
288 * (T357853) Added unidirectional script conversion for Meitei to Bengali script.
289 * (T367377) Updated the autonym for Tai Nuea (tdd)
290 * (T375947) Updated the autonym for Komering (kge)
291 * (T354937, T362041) Added language support for Minnan (Traditional Han script)
293 * (T290657) Added language support for Levantine Arabic (apc).
294 * (T364291) Added language support for Musi, also known as Palembang (mui).
295 * (T364737) Added language support for Haryanvi (bgc).
296 * (T365365) Added language support for Chakma (ccp).
297 * (T367991) Added language support for Iban (iba).
298 * (T367688) Added language support for Interslavic (Latin) (isv-latn).
299 * (T375360) Added language support for Interslavic (Cyrillic) (isv-cyrl).
300 * (T370123) Added language support for Nupe (nup).
301 * (T371051) Added language support for Saint Lucian Creole (acf).
302 * (T354937, T370987) Added language support for Minnan (Pe̍h-ōe-jī)
304 * (T354937, T369899) Added language support for Minnan (Tâi-lô)
306 * (T375052) Added language support for Tigre (tig).
307 * (T375999) Added language support for Luba-Lulua (lua).
308 * (T376248) Added language support for Duala (dua).
309 * (T375377) Added language support for Southern Ndebele (nr).
310 This is done experimentally, with only a Names.php entry and
311 namespace translations, before we have actual localized strings.
312 For details, see https://www.mediawiki.org/wiki/Future_of_Language_Incubation.
313 * (T356144) Deprecated the Kanuri language (kr) and replaced it
314 with Central Kanuri (knc). The language code kr is kept for
315 backwards compatibility and falls back to knc.
317 === Breaking changes in 1.43 ===
319 * (T358779) The format of parameters used by the Message class has changed.
320 Instead of arrays in a special format, they are now MessageParam objects.
321 Code that simply called methods like Message::numParam() and didn't look
322 inside the values they return should be unaffected. Code that depended on
323 the formatted params being arrays or accessed their keys will need updates.
324 Example patches: https://gerrit.wikimedia.org/r/q/topic:message-param
325 * ErrorPageError public properties 'msg' and 'title' may now contain
326 any MessageSpecifier object, not just Message.
327 * Reset button functionality suppressReset() and $mShowReset from HTMLForm
328 was removed without replacement.
329 * UserGroupMembership::getGroupName(), deprecated in 1.38, and
330 UserGroupMembership::getGroupMemberName(), deprecated in 1.40, have
332 * SerializedValueContainer::isUnified(), deprecated in 1.42, has been
334 * Parser::getFreshParser(), deprecated in 1.39, has been removed.
335 * ParserOutput::getLanguageLinks() no longer returns a reference to the
337 * ConfigFactory::getDefaultInstance(), deprecated since 1.27, has been
339 * wfGetLangObj(), deprecated since 1.41, has been removed in favor of
340 LanguageFactory::getLanguage().
341 * wfRemoveDotSegments(), deprecated in 1.39, has been removed.
342 * IReadableDatabase::getReplicaPos() has been removed without deprecation
343 as it's not used anywhere.
344 * CommentFormatter::formatStringsAsBlock() has been removed without deprecation
345 as it's not used anywhere.
346 * ILoadBalancer::laggedReplicaUsed() has been moved to ILoadBalancerForOwner::
347 effectively making it internal.
348 * Define DB_MASTER, deprecated since 1.36, has been removed.
349 * ILoadBalancer::DB_MASTER, deprecated since 1.36, has been removed.
350 * Overriding MWException::getHTML(), ::getText(), ::getPageTitle(), and
351 ::reportHTML() in order to display custom exception messages is no
353 * In PageHandlerTestTrait, the newRouter() method was renamed to
354 newRouterForPageHandler() to avoid a conflict with a method of the same
355 name in RestTestTrait. Also, PageHandlerTestTrait is no longer marked as
356 "stable to use". It was marked this way by accident, the functionality it
357 provides is specific to certain handlers implemented in MediaWiki core.
358 * MediaWikiIntegrationTestCase::addCoreDBData(), deprecated since 1.41, has
360 * wfUnpack(), deprecated since 1.42, has been removed in favor of
361 StringUtils::unpack().
362 * UIDGenerator, deprecated since 1.35, has been removed.
363 * TablePager::getBody(), final and deprecated since 1.24, has been removed.
364 Use ::getBodyOutput() or ::getFullOutput() instead.
365 * ImportableUploadRevisionImporter::downloadSource(), deprecated in 1.31, is now
366 private. Its only known external caller was removed in 1.40.
367 * The following methods in the User class have been removed:
368 * Deprecated in 1.33:
369 * User::isBlockedFrom()
370 * Deprecated in 1.34:
372 * Deprecated in 1.35:
374 * User::getAllGroups()
376 * User::getGroupMemberships()
377 * User::getImplicitGroups()
379 * User::removeGroup()
380 * Deprecated in 1.37:
381 * User::isBlockedFromCreateAccount()
382 * BotPassword::invalidateAllPasswordsForCentralId() and
383 BotPassword::removeAllPasswordsForCentralId(), deprecated in 1.37,
385 * Title::getBrokenLinksFrom(), deprecated in 1.42, has been removed.
386 * The $type parameter to Skin::getCopyright(), deprecated in 1.40, has been
388 * The module `mediawiki.icon`, deprecated in 1.42, has been removed.
389 * The `@vue/composition-api` module, a deprecated alias for `vue` since 1.41,
390 has been removed. Use `vue` directly.
391 * SiteConfiguration::extractVar() and ::extractGlobal(), deprecated in 1.41,
393 * Skin::footerLink(), deprecated in 1.40, has been removed.
394 * Skin::getAction(), deprecated in 1.39, has been removed.
395 * Skin::makeSearchInput(), deprecated in 1.35, has been removed.
396 * Skin::makeSearchButton(), deprecated in 1.39, has been removed.
397 * SkinTemplate::buildContentNavigationUrls(), deprecated in 1.38,
399 * Title::getCdnUrls() and Title::purgeSquid(), deprecated in 1.35, have been
401 * The `mediawiki.pager.tablePager` module, deprecated in 1.38, has been
402 removed in favor of the more generic `mediawiki.pager.styles`.
403 * BagOStuff::setNewPreparedValues(), deprecated in 1.40, has been removed.
404 * Constructing MWHttpRequest objects now requires timeout and connectTimeout to
405 be set; this was deprecated in 1.35.
406 * Hooks that were run from SpecialContributions are now run from the parent,
407 ContributionsSpecialPage. The page passed in is a ContributionsSpecialPage
408 type, and documentation and type comparisons may need to be updated. Affected
409 hooks are: ContributionsBeforeMainOutputHook, ContributionsToolLinksHook,
410 SpecialContributions__getForm__filtersHook.
411 * Hooks that were run from ContribsPager are now run from the parent,
412 ContributionsPager. If a pager is passed in, it is a ContributionsPager type,
413 and documentation and type comparisons may need to be updated. Affected
414 hooks are: ContribsPager__reallyDoQueryHook, ContribsPager__getQueryInfoHook,
415 ContributionsLineEndingHook, SpecialContributions__formatRow__flagsHook.
416 * Hooks that were run from DeletedContribsPager are now run from the parent,
417 ContributionsPager. If a pager is passed in, it is a ContributionsPager type,
418 and documentation and type comparisons may need to be updated. Affected
419 hooks are: DeletedContribsPager__reallyDoQueryHook and
420 DeletedContributionsLineEndingHook.
421 * The public method ContributionsSpecialPage::getUserLinks has been made
422 protected. Although not marked @internal, the method was public to be called
423 from SpecialDeletedContributions (call now removed), and was not called from
425 * DatabaseBlock::purgeExpired, deprecated since 1.38, has been removed.
426 * AbstractBlock::getPermissionsError, deprecated since 1.35, has been removed.
427 * IDatabase::namedLocksEnqueue() has been removed without deprecation.
428 * IDatabase::getTopologyRole() has been removed without deprecation.
429 * IDatabase::getTopologyBasedServerId() has been removed without deprecation.
430 Use IDatabase::getServerName() instead.
431 * IReadableDatabase::wasReadOnlyError() has been removed without deprecation.
432 Use IDatabase::isReadOnly() instead.
433 * IReadableDatabase::wasDeadlock() has been removed without deprecation.
434 * ILoadBalancer::getWriterIndex() has been removed without deprecation.
435 Use ServerInfo::WRITER_INDEX constant instead.
436 * MaintainableDBConnRef, deprecated since 1.39, has been removed.
437 * ILoadBalancer::reuseConnection(), deprecated since 1.39, has been removed.
438 * The $domain parameter to ILoadBalancer::getReadOnlyReason(), deprecated in
439 1.40, has been removed.
440 * WikiPage::doDeleteArticleBatched, hard deprecated since 1.37, has been
442 * SpecialEmailUser::submit, deprecated since 1.41, has been removed.
443 * SpecialEmailUser::validateTarget, deprecated since 1.41, has been removed.
444 * SpecialEmailUser::getPermissionsError, deprecated since 1.41 has been
446 * SpecialBlock::getTargetAndType, deprecated since 1.36, has been removed.
447 * ApiQueryBlockInfoTrait::addBlockInfoToQuery(), deprecated since 1.42, has been
449 * Linker::makeExternalLink() has been deprecated in favor of
450 LinkRenderer::makeExternalLink(), which has a improved API to help phan's
451 SecurityCheckPlugin provide more accurate checks for escaping issues.
452 * Linker::makeHeadline(), Linker::generateTOC(), Linker::tocIndent(),
453 Linker::tocUnindent(), Linker::tocLine(), Linker::tocLineEnd(), and
454 Linker::tocList(), deprecated in 1.42, have been removed.
455 * Linker::formatComment(), Linker::formatLinksInComment(),
456 Linker::commentBlock(), and Linker::revComment(), deprecated in 1.38,
458 * UserCache::singleton(), deprecated in 1.43, now emits deprecation warnings.
459 Use MediaWikiServices::getInstance()->getUserCache() instead.
460 * DummyLinker has been removed. The former DummyLinker parameter
461 to the 'ImageBeforeProduceHTML' hook is now null.
462 * The following methods of IDatabase have been moved to internal interface
463 IDatabaseForOwner without deprecation. These methods are internal and
464 shouldn't be used outside of rdbms library:
465 - ::pendingWriteCallers()
468 - ::setTransactionListener()
469 - ::serverIsReadOnly()
471 - ::pendingWriteQueryDuration()
472 - ::writesOrCallbacksPending()
475 * IMaintainableDatabase::listViews(), deprecated since 1.42, has been removed.
476 * IMaintainableDatabase::truncate(), deprecated since 1.42, has been removed.
477 * IMaintainableDatabase::textFieldSize() was removed without deprecation.
478 * ReplicatedBagOStuff, deprecated since 1.42, has been removed.
479 * The 'replicaOnly' option to SqlBagOStuff has been removed without deprecation.
480 It existed for internal use by SqlBagOStuff only.
481 * Support for WinCache as local server cache has been removed, because WinCache
482 is not available for supported versions of PHP. The WinCacheBagOStuff class
483 has been removed. Use MediaWikiServices::getLocalServerObjectCache() instead,
484 or the CACHE_ACCEL type instead, which automatically selects APCu when
486 The "wincache" cache type (e.g. to ObjectCache::getInstance, and in
487 "wg*CacheType" configuration) remains supported as an alias for CACHE_ACCEL.
488 * LockManager::sha1Base16Absolute(), has been removed without deprecation.
489 * The "options" parameter to User::createNew() and the $data parameter to
490 UserOptionsManager::loadUserOptions() were removed.
491 * `.list-style-image()` mixin from mediawiki.mixins.less, deprecated since 1.38,
493 * `.background-image()` mixin from mediawiki.mixins.less, deprecated since 1.38,
495 * IDatabase::nextSequenceValue(), deprecated since 1.30, was removed.
496 * $wgAPIRequestLog was removed without deprecation. Use "api" and "api-request"
497 wgDebugLogGroups channels or SPI instead.
498 * The setStats() method in MediaWiki\Rest\Router now expects a StatsFactory
499 rather than a StatsdDataFactoryInterface. The method has been marked @internal
500 and should not be called by extensions.
501 * All `@width-breakpoint-*` Less variables have been removed. Use
502 `@min-width-breakpoint-*`/`@max-width-breakpoint-*` instead.
503 * The MessageContent class, deprecated since 1.38, is now removed. This also
504 means that the Message::content() method is also removed.
505 * The following ParserOption methods, deprecated since 1.35, were removed:
506 - ::setAllowExternalImages()
507 - ::setAllowExternalImagesFrom()
508 - ::setEnableImageWhitelist()
509 * Sanitizer::removeHTMLtags(), deprecated since 1.38, has been removed.
510 * OutputPage::getCSPNonce(), deprecated since 1.35, has been removed.
511 * UserMailer::rfc822Phrase(), deprecated since 1.38, has been removed.
512 * QueryPage::getSQL(), deprecated since 1.39, has been removed. The replacement
513 QueryPage::getQueryInfo() is now abstract.
514 * update-keys.sql was removed. It is not recommended to install MediaWiki by
515 manually sourcing SQL files, but if you are doing this, run
516 `update.php --initial` instead of sourcing update-keys.sql.
517 * MediaWikiVersionFetcher, deprecated since 1.42 has been removed.
518 * Support for using Skin::addToBodyAttributes() method, which was deprecated
519 in 1.35, has been removed. Use OutputPageBodyAttributesHook instead.
520 * Skins since 1.39 have not supported rendering content outside the body tag.
521 The bodyOnly=false option has now been removed, meaning this is no longer
523 * CentralIdLookup::factoryNonLocal(), deprecated since 1.37, has been removed.
524 * CryptHKDF and MWCryptHKDF were removed without deprecation, in part because no
525 past or present use could be found. hash_hkdf() can be used instead of HKDF().
526 While generate() and generateHex() have no direct replacement, random_bytes()
527 and MWCryptRand::generateHex() can be used instead.
529 === Deprecations in 1.43 ===
531 * The methods StatusValue::getErrors() and StatusValue::getErrorsByType(),
532 as well as Status::getErrorsArray() and Status::getWarningsArray(), have
533 been deprecated in favor of new method StatusValue::getMessages().
534 * PermissionManager::getPermissionErrors() has been deprecated in favor
535 of getPermissionStatus().
536 * PermissionStatus::toLegacyErrorArray() is deprecated with no replacement.
537 * PermissionsError properties $errors and $permission are deprecated.
538 To display the error, throw it or use ->report().
539 * (T166010) All PHP code in MediaWiki is slowly being moved to be in a class
540 namespace as appropriate, so that we can use PSR-4 auto-loading, which will
541 speed up general code loading of MediaWiki. The old global namespace class
542 names are being left behind as deprecated aliases.
544 In this release of MediaWiki, 2236 classes now have a namespace and 509 do
545 not yet (81% done, up from 69% in MediaWiki 1.42.0). The following have newly
549 - ApiAcquireTempUserName
550 - ApiAuthManagerHelper
555 - ApiChangeAuthenticationData
556 - ApiChangeContentModel
561 - ApiContinuationManager
562 - ApiCreateTempUserTrait
568 - ApiErrorFormatter_BackCompat
570 - ApiFeedContributions
571 - ApiFeedRecentChanges
575 - ApiFormatFeedWrapper
583 - ApiHelpParamValueMessage
598 - ApiOpenSearchFormatJson
608 - ApiQueryAllCategories
609 - ApiQueryAllDeletedRevisions
612 - ApiQueryAllMessages
614 - ApiQueryAllRevisions
616 - ApiQueryAuthManagerInfo
618 - ApiQueryBacklinksprop
620 - ApiQueryBlockInfoTrait
623 - ApiQueryCategoryInfo
624 - ApiQueryCategoryMembers
625 - ApiQueryContributors
626 - ApiQueryDeletedRevisions
627 - ApiQueryDeletedrevs
629 - ApiQueryDuplicateFiles
630 - ApiQueryExtLinksUsage
631 - ApiQueryExternalLinks
632 - ApiQueryFileRepoInfo
633 - ApiQueryFilearchive
634 - ApiQueryGeneratorBase
635 - ApiQueryIWBacklinks
640 - ApiQueryLangBacklinks
642 - ApiQueryLanguageinfo
645 - ApiQueryMyStashedFiles
646 - ApiQueryPagePropNames
648 - ApiQueryPagesWithProp
649 - ApiQueryPrefixSearch
650 - ApiQueryProtectedTitles
653 - ApiQueryRecentChanges
655 - ApiQueryRevisionsBase
658 - ApiQueryStashImageInfo
661 - ApiQueryUserContribs
665 - ApiQueryWatchlistRaw
667 - ApiRemoveAuthenticationData
674 - ApiSetNotificationTimestamp
683 - ApiValidatePassword
697 - FallbackContentHandler
700 - JavaScriptContentHandler
706 - WikitextContentHandler
711 - MediaWiki\Deferred:
712 - RefreshSecondaryDataUpdate
713 - MediaWiki\FileBackend:
714 - FileBackendGroup – FIXME: Should this be in Wikimedia\FileBackend instead?
717 - MediaWiki\Language:
724 - MediaWiki\Maintenance:
727 - DeleteLocalPasswords
729 - LoggedUpdateMaintenance
739 - CoreParserFunctions
742 - DateFormatterFactory
747 - PPDStackElement_Hash
756 - PPTemplateFrame_Hash
765 - IRCColourfulRCFeedFormatter
766 - JSONRCFeedFormatter
767 - MachineReadableRCFeedFormatter
770 - RedisPubSubFeedEngine
773 - MediaWiki\RenameUser:
775 - MediaWiki\Registration:
776 - ExtensionDependencyError
777 - ExtensionJsonValidationError
778 - ExtensionJsonValidator
781 - MissingExtensionException
784 - MediaWiki\RevisionList:
789 - MediaWiki\Watchlist:
791 - ClearUserWatchlistJob
792 - ClearWatchlistNotificationsJob
793 - NoWriteWatchedItemStore
795 - WatchedItemQueryService
796 - WatchedItemQueryServiceExtension
798 - WatchedItemStoreInterface
803 - Wikimedia\FileBackend:
805 - FSFileBackendDirList
806 - FSFileBackendFileList
810 - FileBackendMultiWrite
812 - FileBackendStoreShardDirIterator
813 - FileBackendStoreShardFileIterator
814 - FileBackendStoreShardListIterator
819 - SwiftFileBackendDirList
820 - SwiftFileBackendFileList
821 - SwiftFileBackendList
822 - Wikimedia\FileBackend\FileOps:
828 - FileStatePredicates
832 - Wikimedia\FileBackend\FileOpHandle:
835 - FileBackendStoreOpHandle
836 - Wikimedia\FileBackend\FSFile:
845 - MSCompoundFileReader
848 - Wikimedia\ObjectCache:
855 - MediumSpecificBagOStuff
857 - MemcachedPeclBagOStuff
858 - MemcachedPhpBagOStuff
859 - MultiWriteBagOStuff
864 - RedisConnectionPool
867 - DBAccessObjectUtils
870 - BufferingStatsdDataFactory
871 - IBufferingStatsdDataFactory
872 - NullStatsdDataFactory
873 - PrefixingStatsdDataFactoryProxy
874 - SamplingStatsdClient
875 - StatsdAwareInterface
876 * MessageCache::get() with $language other than Language or null is
877 deprecated and emits deprecation warnings. For high-level access,
878 use wfMessage() or RequestContext::msg() instead.
879 * Manually constructing a Language object, deprecated in 1.35, now emits
880 deprecation warnings. Use LanguageFactory instead.
881 * MediaWiki\Languages\Data\Names::$names is deprecated.
882 * SearchEngineConfig::getConfig() has been deprecated, use DI with
883 ServiceOptions to inject the required options.
884 * ObjectCache::isDatabaseId() and ::getLocalClusterInstance() have been
885 deprecated. Use their equivalents in ObjectCacheFactory.
886 * Using the "post" source in parameter declarations returned from
887 Handler::getParamSettings() is deprecated, use "body" instead.
888 * ISQLPlatform::tableNamesN() is now deprecated.
889 * The implementation in SQLPlatform of ISQLPlatform::tableNames(), deprecated in
890 MediaWiki 1.39, now emits deprecation warnings.
891 * Title::getTitleProtection(), deprecated in 1.37, now emits warnings. You can
892 use RestrictionStore::getCreateProtection() instead.
893 * Title::loadRestrictions(), deprecated in 1.37, now emits warnings.
894 * Title::flushRestrictions(), deprecated in 1.37, now emits warnings.
895 * Title::getPageViewLanguage(), deprecated in 1.42, now emits warnings.
896 * wfUrlProtocols(), deprecated in 1.39, now emits warnings.
897 * wfGetServerUrl(), deprecated in 1.39, now emits warnings.
898 * wfExpandIRI(), deprecated in 1.39, now emits warnings.
899 * The following methods, previously deprecated, now emit deprecation warnings:
900 - ContentHandler::getDefaultModelFor(), deprecated since 1.33
901 - ContentHandler::getAllContentFormats(), deprecated since 1.35
902 - ContentHandler::getContentModels(), deprecated since 1.35
903 - ContentHandler::getForContent(), deprecated since 1.35
904 - ContentHandler::getForModelID(), deprecated since 1.35
905 - ContentHandler::getContentText(), deprecated since 1.37
906 * Passing a Message argument to OutputPage::setPageTitle(), which was
907 deprecated in 1.41, now emits warnings.
908 * OutputPage::showFatalError() is deprecated, use showErrorPage() instead.
909 * OutputPage::showPermissionsErrorPage() is deprecated,
910 use showPermissionStatus() instead.
911 * OutputPage::formatPermissionsErrorMessage(), deprecated since 1.36,
912 now emits deprecation warnings. Use formatPermissionStatus() instead.
913 * OutputPage::setCategoryLinks() has been deprecated and emits deprecation
914 warnings. Use ::addCategoryLinks() instead.
915 * OutputPage::setLanguageLinks() has been deprecated; use ::addLanguageLinks()
917 * Passing 'index' to OutputPage::setIndexPolicy() and
918 OutputPage::setRobotPolicy() after previously passing 'noindex' has
919 been deprecated; in a future release OutputPage will behave like
920 ParserOutput::setIndexPolicy(), where 'noindex' takes precedence
922 * (T375975) Language::embedBidi() has been deprecated; use <bdi> HTML tag
924 * (T375975) Language::getDirMark() has been deprecated; use <bdi> HTML tag
926 * (T375975) Language::getDirMarkEntity() has been hard deprecated; use
927 <bdi> HTML tag instead.
928 * (T375975) The unused third parameter of Language::specialList is removed as
929 the method isolates the title unconditionally from the details.
930 * LoadBalancer::getConnectionRef(), deprecated since 1.39, now emits deprecation
931 warnings. Use ::getConnection() instead.
932 * DBAccessObjectUtils::getDBOptions() is deprecated, use
933 SelectQueryBuilder::recency() instead.
934 * IDatabase::lockForUpdate is deprecated, use
935 SelectQueryBuilder::acquireRowLocks instead.
936 * ILBFactory::flushReplicaSnapshots() is deprecated no longer needed.
937 * wfGetUrlUtils() is deprecated; instead, get a UrlUtils from services.
938 * DerivedPageDataUpdater::getPreparedEdit(), provided for back-compatibility, is
939 now deprecated; use the getters directly, instead.
940 * AuthManager::forcePrimaryAuthenticationProviders(), provided for back-
941 compatibility, is now deprecated.
942 * WikiPage::hasDifferencesOutsideMainSlot(), provided as a stop-gap before
943 refactoring to support MCR, is now deprecated.
944 * ChangesList::getTimestamp() has been deprecated; use ::revDateLink() instead.
945 * RecentChange::doMarkPatrolled() is deprecated, use
946 RecentChange::markPatrolled() instead.
947 * LogFormatter::newFromRow() and LogFormatter::newFromEntry(), deprecated since
948 1.42, now emit deprecation warnings.
949 * LinksUpdate::getAddedLinks(), ::getRemovedLinks(), deprecated since 1.38, now
950 emit deprecation warnings.
951 * TitleLinksTable::getTitleArray(), deprecated since 1.38, now emits deprecation
953 * SiteConfig::variants() has been deprecated; use ::variantsFor().
954 * ObjectCache::$instances and ::getInstance() have been deprecated; instead, use
955 ObjectCacheFactory::getInstance().
956 * WANObjectCache::clearLastError() and BagOStuff::clearLastError have been hard
957 deprecated, use ::watchErrors() together with ::getLastErrors() instead.
958 * BagOStuff::getSegmentationSize() and ::getSegmentedValueMaxSize() no longer
959 have any usage. The subclass' method in MediumSpecificBagOStuff overrides also
960 have no usage as well.
961 * ApiBase::errorArrayToStatus() is deprecated with no replacement.
962 * ApiTestCase::setExpectedApiException() has been deprecated; instead, use
963 ::expectApiErrorCode() to test error codes instead of messages.
964 * ApiPageSet::getTitles(), ApiPageSet::getGoodTitles(),
965 ApiPageSet::getMissingTitles(), ApiPageSet::getGoodAndMissingTitles(),
966 ApiPageSet::getRedirectTitles() and ApiPageSet::getSpecialTitles, deprecated
967 since 1.37, now emit deprecation warnings.
968 * QueryPage::setDBLoadBalancer() and ::getDBLoadBalancer() have been deprecated,
969 use QueryPage::setDatabaseProvider() or ::getDatabaseProvider() instead.
970 * User::isBlockedGlobally(), deprecated since 1.40, now emits deprecation
972 * User::isBlockedFromEmailuser() and User::canSendEmail(), deprecated since
973 1.41, now emit deprecation warnings.
974 * wfMergeErrorArrays() has been deprecated.
975 * wfArrayDiff2() has been deprecated.
976 * User::whoIs() and User::whoIsReal(), have been deprecated.
977 * UserCache class and MediaWikiServices::getUserCache(), have been deprecated.
978 * JsonUnserializable and related classes have been renamed to JsonDeserializable
979 to make it clearer that they're related to converting serialized content back
980 into JSON, rather than stating that things are not representable in JSON. The
981 previous class names have been left behind as deprecated aliases:
982 - JsonUnserializable -> JsonDeserializable
983 - JsonUnserializableTrait -> JsonDeserializableTrait
984 - JsonUnserializer -> JsonDeserializer
985 Additionally, JsonCodec's unserialize() and unserializeArray() methods have
986 also been renamed to deserialize() and deserializeArray(), with the old names
988 * In the REST framework, the the BodyValidator interface and all functionality
989 related to it are deprecated. They have been replaced by
990 Handler::getBodyParamSettings() and Handler::parseBodyData(). The following
991 interfaces, classes, and methods are affected:
992 - interface BodyValidator
993 - class JsonBodyValidator
994 - class NullValidator
995 - function Handler::getBodyValidator
996 - function Validator::validateBody
997 * StatusValue will emit deprecation warnings when an error is given as
998 a MessageSpecifier combined with a parameters array, which is usually
999 a mistake, as the parameters have always been ignored.
1000 * In StatusValue::replaceMessage(), ::hasMessage() and ::hasMessagesExcept()
1001 passing MessageSpecifier or MessageValue as $source has been deprecated.
1002 * PageArchive::undeleteAsUser, deprecated since 1.35, now emits deprecation
1004 * DatabaseBlock::getQueryInfo() and DatabaseBlock::getRangeCond() are
1005 deprecated and emit deprecation warnings. Use the equivalent methods in
1007 * DatabaseBlockStore::getReadStage() and ::getWriteStage() are deprecated.
1008 Use the new schema unconditionally.
1009 * UserOptionsManager::resetOptions(), ::listOptionKinds and ::getOptionKinds are
1010 deprecated and will emit deprecation warnings. Use the corresponding methods
1011 in PreferencesFactory and UserOptionsManager::resetOptionsByName().
1012 * The `i18n-all-lists-margins` and `interface-message-box` module of SkinModule
1013 are deprecated. The former has been merged into the `elements` module, the
1014 latter has no required replacement. See JavaScript console for instructions.
1015 * ParsoidOutputAccess and all of its methods have been deprecated. Use
1016 ParserOutputAccess with ParserOptions::setUseParsoid() instead.
1017 * ParserOutput::addJsConfigVars(), deprecated since 1.38, now emits deprecation
1018 warnings. Use ParserOutput::setJsConfigVar() instead.
1019 * The following methods of ParserOutput, most of which used to return an
1020 array by reference, have been deprecated. Use the
1021 ParserOutput::getLinkList(...) method with an appropriate link type
1023 * ParserOutput::getFileSearchOptions() - ParserOutputLinkTypes::MEDIA
1024 * ParserOutput::getImages() - ParserOutputLinkTypes::MEDIA
1025 * ParserOutput::getInterwikiLinks() - ParserOutputLinkTypes::INTERWIKI
1026 * ParserOutput::getLanguageLinks() - ParserOutputLinkTypes::LANGUAGE
1027 * ParserOutput::getLinks() - ParserOutputLinkTypes::LOCAL
1028 * ParserOutput::getLinksSpecial() - ParserOutputLinkTypes::SPECIAL
1029 * ParserOutput::getTemplates() - ParserOutputLinkTypes::TEMPLATE
1030 * ParserOutput::getTemplateIds() - ParserOutputLinkTypes::TEMPLATE
1031 * ParserOutput::setLanguageLinks(null) now emits deprecation warnings. Use
1032 an empty array as an argument, not `null`.
1033 * ParserOutput::setPageProperty() now emits deprecation warnings when called
1034 with non-string values, which has been deprecated since 1.42.
1035 * Use of the reference to the internal array returned by
1036 ParserOutput::getExternalLinks() has been deprecated. In a future release
1037 it will return a copy of the array.
1038 * To support a future change allowing serializing of MessageValue objects
1039 as JSON, the methods MessageValue::objectParams(), Message::objectParams()
1040 and Message::objectParam() are deprecated. The UserGroupMembershipParam
1041 class and the ParamType::OBJECT constant are likewise deprecated.
1042 * Passing null or boolean values as message parameters, which are converted
1043 to strings "" and "1", is deprecated.
1044 * The Less mixin .column-break-after-avoid() is deprecated. Use just the
1045 CSS rule `break-after: avoid-column;` instead now.
1046 * The Less mixins .horizontal-gradient and .vertical-gradient are deprecated.
1047 Use CSS rule linear-gradient directly.
1048 * The following method are deprecated; instead call the appropriate
1049 constructor method in PageRestHelperFactory with the appropriate
1050 initialization arguments:
1051 * HtmlOutputRendererHelper::init()
1052 * HtmlMessageOutputHelper::init()
1053 * HtmlInputTransformHelper::init()
1054 Similarly, calling the constructor method in PageRestHelperFactory
1055 without the appropriate initialization arguments is now deprecated.
1056 * Calling HtmlToContentTransform::setMetrics() and
1057 HtmlInputTransformHelper::setMetrics() with a StatsdDataFactoryInterface
1058 is deprecated and emits warnings. Pass a StatsFactory instead.
1059 * HTMLForm methods getPreText, setPreText, addPreText, getPostText,
1060 setPostText, addPostText, getHeaderText, setHeaderText, addHeaderText,
1061 getFooterText, setFooterText and addFooterText, deprecated since 1.38, now
1062 emit deprecation warnings.
1063 * FormSpecialPage methods preText and postText, deprecated since 1.38, now
1064 emit deprecation warnings.
1065 * EditPage::internalAttemptSave() is deprecated as part of cleaning up how
1066 edits are saved, see T157658 for details.
1067 * The MessageCache::get hook, deprecated since 1.41, now emits deprecation
1069 * Twelve deprecated properties of OutputPage now will emit warnings; their
1070 relevant getters or setters should be used instead:
1071 * mCategoryLinks - getCategoryLinks() and setCategoryLinks()
1072 * mCategories - getCategories()
1073 * mIndicators - getIndicators() and setIndicators()
1074 * mHeadItems - getHeadItemsArray(), hasHeadItem(), addHeadItem(),
1076 * mModules - getModules() and addModules()
1077 * mModuleStyles - getModuleStyles() and addModuleStyles()
1078 * mJsConfigVars - getJsConfigVars() and addJsConfigVars()
1079 * mTemplateIds - getTemplateIds()
1080 - mEnableClientCache - Set with enableClientCache() and disableClientCache()
1081 - mNewSectionLink - Get with showNewSectionLink()
1082 - mHideNewSectionLink - Set with forceHideNewSectionLink()
1083 - mNoGallery - getNoGallery()
1084 * The following methods from the OutputPage class were deprecated; use
1085 corresponding methods on the ParserOutput returned from
1086 OutputPage::getMetadata() instead. (For example, instead of
1087 $output->setIndexPolicy() use $output->getMetadata()->setIndexPolicy().)
1088 - ::getIndexPolicy()
1089 - ::setIndexPolicy() (setting 'index' after 'noindex' is deprecated)
1090 - ::getPreventClickjacking()
1091 - ::setPreventClickjacking()
1092 * The hook OutputPageMakeCategoryLinks is deprecated. Use the new hook
1093 OutputPageRenderCategoryLink instead.
1094 * mw.cookie.getCrossSite() has been deprecated due to the removal of
1095 $wgUseSameSiteLegacyCookies in MW 1.42. Use mw.cookie.get().
1096 * The 'help' key in HTMLForm descriptors is deprecated. Use the 'help-raw'
1098 * ImageGalleryBase::setWidths() and ::setHeights() will now emit a deprecation
1099 warning if they are called without ImageGalleryBase::setParser() having been
1100 called. Please set the parser appropriately when using the image gallery.
1101 * (T45646) The localisation messages 'copyright' and 'history_copyright' are
1102 deprecated in favor of 'copyright-footer' and 'copyright-footer-history'.
1103 The new messages are parsed as wikitext instead of being treated as raw HTML.
1104 * (T45646) The hook 'SkinCopyrightFooter' is deprecated in favor of
1105 'SkinCopyrightFooterMessage'. The new hook allows specifying copyright
1106 messages that are parsed as wikitext instead of being treated as raw HTML.
1107 * (T374314) The 'mw.Uri' module has been deprecated in favour of the browser-
1108 native URL interface, which is now provided in all supported user agents. For
1109 details, see <https://developer.mozilla.org/en-US/docs/Web/API/URL>.
1110 * The parameter $default in WebRequest::getRawVal() is deprecated. Use ??
1112 * SpecialBlock::processForm(), SpecialBlock::parseExpiryInput() and
1113 SpecialBlock::canBlockEmail(), deprecated since 1.36, and
1114 SpecialBlock::getSuggestedDurations(), deprecated since 1.42, now emit
1115 deprecation warnings.
1116 * The following soft deprecated Skin methods will now emit warnings:
1117 - Skin::makeSpecialUrl (use SkinComponentUtils::makeSpecialUrl instead)
1118 - Skin::makeSpecialUrlSubpage (use SkinComponentUtils::makeSpecialUrlSubpage
1120 * The SkinFactory::getSkinNames deprecated in 1.37 now emits warnings,
1121 use getInstalledSkins instead.
1123 === Other changes in 1.43 ===
1125 * Class aliases to support the old PHPUnit 4 style un-namespaced `PHPUnit_`
1126 classes (such as PHPUnit_Framework_Error) have been removed.
1127 * [Temporary accounts] If $wgAutoCreateTempUser is enabled, then MediaWiki
1128 will create a temporary account and log the user in for unsuccessful edit
1129 attempts and null edits, in addition to edits that change content. This is
1130 a change from the previous paradigm, where temporary accounts were created
1131 only for successful edits. This change is done to support better logging
1132 support and moderation, to ensure that hooks run in a pre-save context have
1133 a user object to associate log entries and other actions with.
1134 * Several entries have been removed from the default list of interwikis used
1135 when installing new wikis. This does not affect existing wikis.
1136 * User auto-creations are now performed as the target user instead of
1138 * [Temporary accounts] T359043 Temporary accounts for anonymous edits are
1139 enabled in DevelopmentSettings.php. To disable the feature, set
1140 `$wgAutoCreateTempUser['enabled'] = false;` in LocalSettings.php
1141 * Corrected the interpretation of empty arrays in extension configuration when
1142 the default value is null. Previously, an empty array specified by the
1143 administrator would transform into the default null value. It now
1144 appropriately retains its empty array state.
1145 * (T362536) Exempted "deletedhistory", "deletedtext", and "viewsuppressed"
1146 rights from namespace protection ($wgNamespaceProtection) since that's
1147 only meant to prevent write actions.
1148 * Image captions are no longer trimmed.
1149 * 'SpecialPasswordResetOnSubmit' hook handlers can now receive both the
1150 username and the email provided by the user, instead of only one of them.
1151 * (T231827, T249976) Searchindex now uses utf8mb4,
1152 si_page is marked as PK and si_title can handle longer title values.
1156 MediaWiki 1.43 requires PHP 8.1.0 or later and the following PHP extensions:
1168 MariaDB is the recommended database software. MySQL, PostgreSQL, or SQLite can
1169 be used instead, but support for them is somewhat less mature.
1171 The supported versions are:
1173 * MariaDB 10.3 or higher
1174 * MySQL 5.7.0 or higher
1175 * PostgreSQL 10 or later
1176 * SQLite 3.8.0 or later
1178 == Online documentation ==
1179 Documentation for both end-users and site administrators is available on
1180 MediaWiki.org, and is covered under the GNU Free Documentation License (except
1181 for pages that explicitly state that their contents are in the public domain):
1183 <https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation>
1186 A mailing list is available for MediaWiki user support and discussion:
1188 <https://lists.wikimedia.org/postorius/lists/mediawiki-l.lists.wikimedia.org/>
1190 A low-traffic announcements-only list is also available:
1192 <https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/>
1194 It's highly recommended that you sign up for one of these lists if you're
1195 going to run a public MediaWiki, so you can be notified of security fixes.
1198 There's usually someone online in #mediawiki on irc.libera.chat.
1203 PHP 8.1 workboard: https://phabricator.wikimedia.org/tag/php_8.1_support/
1204 PHP 8.2 workboard: https://phabricator.wikimedia.org/tag/php_8.2_support/
1205 PHP 8.3 workboard: https://phabricator.wikimedia.org/tag/php_8.3_support/
1207 == MediaWiki 1.42.3 ==
1209 This is a maintenance release of the MediaWiki 1.42 branch.
1211 === Changes since MediaWiki 1.42.2 ===
1212 * Fix issue related to backport of AbuseFilter patch for T372998.
1214 == MediaWiki 1.42.2 ==
1216 This is a security and maintenance release of the MediaWiki 1.42 branch.
1218 === Changes since MediaWiki 1.42.1 ===
1219 * Localisation updates.
1220 * Parser: Deprecate use of mOutput before initialization.
1221 * (T365565) PrefixSearch: Make sure $prefix is a string.
1222 * Clarify that $wgAllowCrossOrigin only applies to REST.
1223 * composer.json: Add 5 more ext- to suggests.
1224 * resources: Fix 404 Not Found for foreign Financial-Times/polyfill-library.
1225 * ResourceLoader: Upgrade wikimedia/less.php to 4.4.1.
1226 * SpecialExport: Prevent passing null to strtolower.
1228 Additionally, some language support improvements which went out in 1.42.0 were
1229 not noted; they are included here for completeness:
1231 * (T343865) Added language support for Pu–Xian Min (Simplified Han script)
1233 * (T343865) Added language support for Pu–Xian Min (Traditional Han script)
1235 * (T284043) Added language support for Manchu (mnc).
1236 * (T284043) Added language support for Manchu (Mongolian script) (mnc-mong).
1237 * Added language converter for Central Moroccan Tamazigh (zgh).
1239 == MediaWiki 1.42.1 ==
1241 This is a maintenance release of the MediaWiki 1.42 branch.
1243 === Changes since MediaWiki 1.42.0 ===
1244 * Localisation updates.
1245 * Name the PagerTools array entries to allow hooks to unset them.
1247 == MediaWiki 1.42.0 ==
1249 === Changes since MediaWiki 1.42.0-rc.0 ===
1250 * Localisation updates.
1251 * wrapOldPasswords: Improve progress output and decrease batch size.
1252 * (T365060) Serialization test cases: fix filename after ParserOutput
1254 * Use virtual domain when running update maintenance scripts.
1255 * (T361367) ApiFeedWatchlist: Fix handling of array parameters.
1256 * (T366130) EncryptedPassword: Store default parameters as strings.
1258 == MediaWiki 1.42.0-rc.0 ==
1260 == Upgrading notes for 1.42 ==
1261 Don't forget to always back up your database before upgrading!
1263 See the file UPGRADE for more detailed per-version upgrade instructions from the
1264 oldest supported upgrading version, MediaWiki 1.35.
1266 Some specific notes for MediaWiki 1.42 upgrades are below:
1267 * MediaWiki 1.42 requires PHP 8.1 or above (up from 7.4) (T359868).
1268 * MediaWiki now requires Composer 2.x, and any related (vendor) files generated
1269 by Composer must be generated by Composer 2.x. Composer 1.x is mostly end of
1270 life by upstream, and using it will result in slower actions when downloading
1271 and installing packages. See the upstream blog post at
1272 https://blog.packagist.com/deprecating-composer-1-support/ for further
1275 For notes on 1.41.x and older releases, see HISTORY.
1277 === Configuration changes for system administrators in 1.42 ===
1278 * Composer 1.x is no longer supported, and can no longer be used with MediaWiki.
1280 ==== New configuration ====
1281 * $wgMicroStashType: This setting allows for control of the object cache backend
1282 for the MicroStash service.
1283 * $wgEditRecoveryExpiry: This setting sets the number of seconds for which to
1284 keep edit recovery data after each edit is stored.
1285 * $wgDjvuUseBoxedCommand and $wgDjvuShell: The first is a temporary flag to
1286 control whether or not to use BoxedCommand when wrapping DejaVu rendering, and
1287 the second sets the command to call if so.
1288 * $wgConditionalUserOptions: This setting makes it possible to define which user
1289 properties have defaults varying by user, without growing the user_properties
1290 table. The typical use-case is to enable a feature only for users created
1291 after a certain date when rolling out features on large wiki farms.
1292 * $wgGrantRiskGroups: This setting controls the risk levels for each grant, used
1293 to indicate on various UIs which grants should be considered risky. (T290790)
1294 * $wgTempAccountCreationThrottle: This setting is like AccountCreationThrottle,
1295 but to be used for managing temporary account creations.
1297 ==== Changed configuration ====
1298 * $wgAutoCreateTempUser: This setting (in active development), which configures
1299 automatic 'temporary' user creation on page save, has had two changes:
1300 - it now supports multiple match patterns on the 'matchPattern' key; and
1301 - it now uses a different format for deciding how to label temporary accounts;
1302 if your wiki used temporary accounts before 1.42, you will need to override
1303 the configuration value to also match the old format of *$1.
1304 * $wgLogActionsHandlers: This setting, which configures handlers for different
1305 log actions, is now ObjectFactory compatible.
1306 * $wgBotPasswordsCluster and $wgBotPasswordsDatabase: These settings have been
1307 deprecated; use $wgVirtualDomainsMapping['virtual-botpasswords'] instead.
1308 * $wgMainPageIsDomainRoot: This setting is no longer considered experimental.
1310 ==== Removed configuration ====
1311 * $wgDisableCookieCheck: Removed without deprecation.
1312 * $wgStatsCacheType: Removed without deprecation. Set $wgMicroStashType instead.
1313 * $wgJobSerialCommitThreshold: Removed without deprecation. Any setups using
1314 this config will perform just fine, but might be less performant.
1315 * $wgLogoHD: Deprecated since 1.35. Use $wgLogo instead.
1316 * $wgContentHandlerTextFallback: Deprecated since 1.37. No longer customizable.
1317 * $wgSquidPurgeUseHostHeader: Deprecated since 1.33. No longer customizable, and
1319 * $wgAllowImageTag: Deprecated since 1.35. Instead, you can register an
1320 extension tag named <img>.
1321 * $wgMinimalPasswordLength and $wgMaximalPasswordLength: Deprecated since 1.26.
1322 Use $wgPasswordPolicy instead.
1323 * $wgUseMediaWikiUIEverywhere: Experimental, removed without deprecation.
1324 * $wgHTMLFormAllowTableFormat: Experimental, removed without deprecation.
1325 * $wgOpenSearchTemplate: Deprecated since 1.25. Instead, you can use
1326 $wgOpenSearchTemplates['application/x-suggestions+json'].
1327 * $wgUseSameSiteLegacyCookies: Removed without deprecation.
1329 === New user-facing features in 1.42 ===
1330 * (T308160) filter: is now allowed in inline CSS in wikitext
1332 === New developer features in 1.42 ===
1333 * (T326466) MediaWikiIntegrationTestCase's database and set-up code now avoids
1334 using dynamic properties, which was causing deprecation warnings in PHP 8.2.
1335 * (T13555) MediaWiki now includes styles that allow more accessible markup for
1336 section headings. MediaWiki's own HTML output will be changed in the future.
1337 More information: https://www.mediawiki.org/wiki/Heading_HTML_changes
1338 * (T193472) PHP Notice and Warning errors that are silenced (e.g. by the "@"
1339 operator, error_reporting directive, or Wikimedia\AtEase) are now logged to
1340 a new "silenced-error" channel.
1341 * (T347347) The CLI installer accepts a "--with-developmentsettings" argument
1342 to require the DevelopmentSettings.php file at install time.
1343 * (T350054) MediaWiki's ResourceLoader has been updated to add basic support
1344 for code-splitting (aka "tree-shaking") when using the Codex component
1345 library. A ResourceLoader module can now specify a list of "codexComponents"
1346 in its module defintion and ensure that only the code for those components
1347 gets sent to the client. More information:
1348 https://www.mediawiki.org/wiki/Codex#Subset_of_components
1349 * (T345185) The SessionProviderInterface now allows defining providers that
1350 are exempt from rights checks when auto creating users.
1352 === External library changes in 1.42 ===
1354 ==== New external libraries ====
1355 * Added mediawiki/json-codec at v2.2.1.
1356 * Added mck89/peast at v1.16.2.
1358 ==== Changed external libraries ====
1359 * Updated OOUI from v0.48.1 to v0.49.1.
1360 * Updated OOjs Router from 0.3.0 to 0.5.0.
1361 * Updated codex, codex-design-tokens and codex-icons
1362 from v1.0.0 to v1.3.6.
1363 * Updated Vue from v3.2.37-compat to v3.3.9.
1364 * Updated composer/semver from 3.3.2 to 3.4.0.
1365 * Updated guzzlehttp/guzzle from 7.5.3 to 7.7.1.
1366 * Updated monolog/monolog from 2.2.0 to 2.9.2.
1367 * Updated pear/mail from 1.5.1 to 1.6.0.
1368 * Updated pear/mail_mime from 1.10.11 to 1.10.12.
1369 * Updated pear/net_smtp from 1.10.1 to 1.11.1.
1370 * Updated psr/http-message from 1.0.1 to 1.1.
1371 * Updated symfony/polyfill-php80 from 1.28.0 to 1.29.0.
1372 * Updated symfony/polyfill-php81 from 1.28.0 to 1.29.0.
1373 * Updated symfony/polyfill-php82 from 1.28.0 to 1.29.0.
1374 * Updated symfony/polyfill-php83 from 1.28.0 to 1.29.0.
1375 * Updated symfony/yaml from 5.4.23 to 5.4.35.
1376 * Updated wikimedia/less.php from 4.1.1 to 4.2.1.
1377 * Updated wikimedia/minify from 2.5.1 to 2.7.0.
1378 * Updated wikimedia/relpath from 3.0.0 to 4.0.0.
1379 * Updated wikimedia/remex-html from 4.0.1 to 4.1.0.
1380 * Updated wikimedia/shellbox from 4.0.0 to 4.0.1.
1382 ===== Changed development-only external libraries =====
1383 * Updated QUnit from v2.19.4 to v2.20.0.
1384 * Updated composer/spdx-licenses from 1.5.7 to 1.5.8.
1385 * Updated doctrine/dbal from 3.4.2 to 3.7.2.
1386 * Updated doctrine/sql-formatter from 1.1.1 to 1.1.3.
1387 * Updated grunt-banana-checker from 0.11.0 to 0.11.1.
1388 * Updated mediawiki/mediawiki-codesniffer from 42.0.0 to 43.0.0.
1389 * Updated mediawiki/mediawiki-phan-config from 0.13.0 to 0.14.0.
1390 * Updated php-parallel-lint/php-parallel-lint from 1.3.2 to 1.4.0.
1391 * Updated phpunit/phpunit from 9.5.28 to 9.6.16.
1392 * Updated psy/psysh from ^0.11.1 to ^0.12.3.
1393 * Updated seld/jsonlint from 1.8.3 to 1.10.1.
1394 * Updated wikimedia/testing-access-wrapper from 2.0.0 to 3.0.0.
1396 === Action API changes in 1.42 ===
1397 * APIQueryTags now includes "software" in the "source" array for software
1398 generated tags. Reliance on the "extension" entries in this array is now
1399 deprecated, but they will remain for backwards compatibility.
1401 === Languages updated in 1.42 ===
1402 MediaWiki supports over 350 languages. Many localisations are updated regularly.
1403 Below only new and removed languages are listed, as well as changes to languages
1404 because of Phabricator reports.
1406 * (T268143) Language variant conversion has been removed for Kazakh.
1407 * (T352776) Updated autonym spelling for the Mon language (mnw).
1408 * (T351874) Added language support for Komering (kge).
1409 * (T351992) Added language support for Efik (efi).
1410 * (T352954) Added language support for Rutul (rut).
1411 * (T353058) Added language support for Arbëresh (aae).
1412 * (T353307) Added language support for Guadeloupean Creole (gcf).
1413 * (T353500) Added language support for Southeastern Kolami (nit).
1414 * (T354519) Added language support for Tooro (ttj).
1415 * (T354926) Added language support for Nyoro (nyo).
1416 * (T356616) Added language support for Chinook Jargon (chn).
1417 * (T357879) Added language support for Ibibio (ibb).
1419 === Breaking changes in 1.42 ===
1420 * (T340802) ResourceLoader: The targets system is no longer active; all modules
1421 will load on all platforms even if they are marked as desktop- or mobile-only
1422 in the 'targets' field, which is no longer read. As part of this, the internal
1423 methods RL\Module::setTarget() & ::getTargets(), and OutputPage::setTarget(),
1425 * TitleArray, deprecated since 1.41, has been removed.
1426 * UserRightsProxy, deprecated since 1.38, has been removed.
1427 * SiteConfiguration::getConfig(), deprecated in 1.41, has been removed.
1428 * UserLoginCompleteHook is always called with its $direct parameter set to
1429 boolean true. The false case has been removed.
1430 * MagicWord::load() has been marked @internal, and may change in the future
1431 without further notice.
1432 * All classes that implemented the IDBAccessObject interface and all interfaces
1433 that extended it, no longer do that. See https://w.wiki/9DAX for more info.
1434 * The type of the last parameter of BeforeInitializeHook::onBeforeInitialize()
1435 and MediaWikiPerformActionHook::onMediaWikiPerformAction() changed from the
1436 MediaWiki class to the new ActionEntryPoint. Relevant methods are still
1437 available on the object.
1438 * Classes that override Maintenance::finalSetup() must now declare the $settings
1439 parameter and pass it on when calling the parent implementation.
1440 MaintenanceRunner will always provide this parameter when calling
1442 * WebResponse::disableForPostSend() is no longer static.
1443 * MediaWiki's virtualrest internal library has been removed, in favor of just
1444 using other HTTP libraries: Guzzle, MultiHttpClient or MwHttpRequest.
1445 * Several deprecated methods have been removed from the Content interface,
1446 in favor of the respective methods in ContentHandlers. Callers should
1447 use a more narrow interface like ContentRenderer or ContentTransformer
1448 when possible. The following methods have been removed from Content:
1450 - preSaveTransform()
1451 - preloadTransform()
1453 * User::blockedFor() and AbstractBlock::getReason(), deprecated in 1.35, have
1454 been removed. Use AbstractBlock::getReasonComment() instead.
1455 * SerializedValueContainer::newUnified(), deprecated in 1.41 has been removed.
1456 * Use of ActorMigration for any of the following tables, deprecated since 1.34,
1457 is no longer supported:
1465 * ParserOutput::setFlag() and ::getFlag(), deprecated in 1.38, were removed. You
1466 should use ::setOutputFlag() and ::getOutputFlag() instead.
1467 * ParserOutput::getCategories(), deprecated in 1.40, has been removed. You
1468 should use ::getCategoryNames() and ::getCategorySortKey() instead.
1469 * ParserOutput::getTOCHTML(), deprecated in 1.40, has been removed. You should
1470 use ::getTOCData() instead.
1471 * The parser does not substitute the default category sort key at parse time;
1472 this is substituted when the category links table is updated instead. As a
1473 result {{DEFAULTSORT}} will affect all the contents of the page (not just
1474 categories added after the location of {{DEFAULTSORT}} in the article) and
1475 ParserOutput::getCategorySortKey() will return the empty string (still
1476 meaning "use the default sort key") instead of the immediate value of
1477 {{DEFAULTSORT}}. ParserOutput::getCategorySortKey() will directly reflect the
1478 category link contents, instead of having post-processing done to it
1479 (character references decoded, new lines replaced, language conversion). That
1480 post-processing is now done when the category links table is updated, and so
1481 it consistently applies even when categories are added directly via API.
1482 * PostgresUpdater::addPgEnumValue() unused everywhere, have been removed
1483 without deprecation. Use of ENUM is highly discouraged.
1484 * ILoadBalancer::getAnyOpenConnection() has been removed without deprecation,
1485 use ::getConnection() instead.
1486 * The unused method CommentStore::getFields() has been removed without
1488 * LanguageConverter's internal properties, all deprecated in 1.35 or 1.36, have
1489 now had their deprecated property accessors dropped:
1494 - mVarSeparatorPattern
1505 * OutputPage::addParserOutputText has been marked @internal since there are no
1506 known users of it. Its old behavior has been deprecated and will change
1507 in the future without further notice.
1508 * A some methods of ConnectionManager and SessionConsistentConnectionManager,
1509 previously deprecated, have been removed:
1510 - ::releaseConnection(), deprecated in 1.38; do not use
1511 - ::getWriteConnectionRef(), deprecated in 1.39; use getWriteConnection()
1512 - ::getReadConnectionRef(), deprecated in 1.38; use getReadConnection()
1513 - ::getLazyWriteConnectionRef(), deprecated in 1.39; use getWriteConnection()
1514 - ::getLazyReadConnectionRef(), deprecated in 1.38; use getReadConnection()
1515 * CoreParserFunctions::mwnamespace(), deprecated in 1.39, has been removed. Use
1516 CoreParserFunctions::namespace() instead.
1517 * Processor:: and ExtensionProcessor::getExtraAutoloaderPaths(), deprecated in
1518 1.39, have been removed; use ::getExtractedAutoloadInfo() instead.
1519 * MWExceptionHandler::rollbackMasterChangesAndLog(), deprecated in 1.37, has
1520 been removed. Use ::rollbackPrimaryChangesAndLog() instead.
1521 * Passing a custom database connection to DatabaseBlockStore::insertBlock(),
1522 deprecated since 1.41, is no longer supported.
1523 * LanguageConverterFactory::isTitleConversionDisabled(), deprecated in 1.36,
1524 has been removed. Use ::isLinkConversionDisabled() instead.
1525 * MediaWikiIntegrationTestCase::$tablesUsed has been deprecated. The framework
1526 now detects these automatically.
1527 * Passing an actor id to the constructor of UserIdentityValue, deprecated
1528 since 1.36, is no longer being supported.
1529 * Support for setting dynamic property on StatusValue object has been removed.
1530 To pass your arbitrary data along the object, use StatusValue::statusData
1531 property (which is always declared).
1532 * The global function wfReportTime(), deprecated since 1.40, has been removed.
1533 * The skin template parameter 'reporttime', deprecated since 1.41, has been
1535 * WikiPage::getPageIsRedirectField(), deprecated since 1.41, has been removed.
1536 * WikiPage::insertRedirect(), deprecated since 1.41, has been removed.
1537 * Several methods in PageArchive, all deprecated in 1.38, have been removed:
1539 - ::getRevisionRecordByTimestamp()
1540 - ::getArchivedRevisionRecord()
1541 - ::getPreviousRevisionRecord()
1542 - ::getLastRevisionId()
1545 - ::getRevisionStatus()
1546 * Database, DatabaseInstaller, DatabaseUpdater, DBPrimaryPos, ResultWrapper and
1547 SQLPlatform are no longer stable to extend. It is not possible to define
1548 database types in an extension.
1549 * UserDef::PARAM_ALLOWED_USER_TYPES now differentiates between temporary account
1550 usernames and user accounts. Any endpoints that want temp users to be
1551 valid but were passing a name through will break. Temp users must now be
1553 * The Hooks class, a legacy wrapper for HooksContainer, has been removed. All of
1554 its contents have been previously deprecated in 1.35 (or 1.41 for ::runner()):
1560 - ::runWithoutAbort()
1562 * Article::__get(), ::__set(), deprecated since 1.35, have been removed.
1563 * Several API calls have been updated to return a 'temp' user flag:
1566 - ApiQueryRecentChanges
1567 - APIs extended from ApiQueryRevisionsBase
1568 * Parser::getCustomDefaultSort() and ::setDefaultSort(), deprecated since 1.38,
1570 * UserOptionsLookup::getDefaultOptions() and ::getDefaultOption() now accept a
1571 UserIdentity, to take conditional defaults for user properties into account.
1572 When run on a wiki where conditional defaults are used, calling those methods
1573 without the UserIdentity might produce unexpected results.
1574 * Installer-related classes have been namespaced without having aliases added.
1575 The following have been moved to MediaWiki\Installer:
1578 - InstallDocFormatter
1580 - InstallerOverrides
1581 - InstallerSessionProvider
1582 - LocalSettingsGenerator
1589 - WebInstallerComplete
1590 - WebInstallerCopying
1591 - WebInstallerDBConnect
1592 - WebInstallerDBSettings
1593 - WebInstallerDocument
1594 - WebInstallerExistingWikis
1595 - WebInstallerInstall
1596 - WebInstallerLanguage
1598 - WebInstallerOptions
1599 - WebInstallerOutput
1601 - WebInstallerReleaseNotes
1602 - WebInstallerRestart
1603 - WebInstallerUpgrade
1604 - WebInstallerUpgradeDoc
1605 - WebInstallerWelcome
1606 * The file mediawiki.ui/variables.less, deprecated since 1.41, has been
1607 removed in favor of mediawiki.skin.variables.less.
1608 * The file mediawiki.ui/utilities.less, with its three layout CSS classes, has
1610 * The module `jquery.cookie` (deprecated as of 1.41) has been removed. Please
1611 use `mediawiki.cookie` instead
1612 * The no-op module `es6-polyfills` (deprecated as of 1.41) has been removed.
1613 * Log formatters (as defined in $wgLogActionsHandlers) are now created by
1614 ObjectFactory, which means their constructors must be public. Legacy log
1615 formatters using callbacks instead of class names are no longer supported.
1616 * The old aliases for the namespaced ResourceLoader classes, deprecated since
1617 they were moved in MediaWiki 1.39, have now been dropped:
1618 - ResourceLoader – use MediaWiki\ResourceLoader\ResourceLoader
1619 - ResourceLoaderCircularDependencyError
1620 – use MediaWiki\ResourceLoader\CircularDependencyError
1621 - ResourceLoaderClientHtml – use MediaWiki\ResourceLoader\ClientHtml
1622 - ResourceLoaderCodexModule – use MediaWiki\ResourceLoader\CodexModule
1623 - ResourceLoaderContext – use MediaWiki\ResourceLoader\Context
1624 - ResourceLoaderFileModule – use MediaWiki\ResourceLoader\FileModule
1625 - ResourceLoaderFilePath – use MediaWiki\ResourceLoader\FilePath
1626 - ResourceLoaderForeignApiModule
1627 – use MediaWiki\ResourceLoader\ForeignApiModule
1628 - ResourceLoaderImage – use MediaWiki\ResourceLoader\Image
1629 - ResourceLoaderImageModule – use MediaWiki\ResourceLoader\ImageModule
1630 - ResourceLoaderLessVarFileModule
1631 – use MediaWiki\ResourceLoader\LessVarFileModule
1632 - ResourceLoaderModule – use MediaWiki\ResourceLoader\Module
1633 - ResourceLoaderMwUrlModule – use MediaWiki\ResourceLoader\MwUrlModule
1634 - ResourceLoaderOOUIFileModule – use MediaWiki\ResourceLoader\OOUIFileModule
1635 - ResourceLoaderOOUIIconPackModule
1636 – use MediaWiki\ResourceLoader\OOUIIconPackModule
1637 - ResourceLoaderOOUIImageModule
1638 – use MediaWiki\ResourceLoader\OOUIImageModule
1639 - ResourceLoaderOOUIModule – use MediaWiki\ResourceLoader\OOUIModule
1640 - ResourceLoaderSiteModule – use MediaWiki\ResourceLoader\SiteModule
1641 - ResourceLoaderSiteStylesModule
1642 – use MediaWiki\ResourceLoader\SiteStylesModule
1643 - ResourceLoaderSkinModule – use MediaWiki\ResourceLoader\SkinModule
1644 - ResourceLoaderStartUpModule – use MediaWiki\ResourceLoader\StartUpModule
1645 - ResourceLoaderUserModule – use MediaWiki\ResourceLoader\UserModule
1646 - ResourceLoaderUserOptionsModule
1647 – use MediaWiki\ResourceLoader\UserOptionsModule
1648 - ResourceLoaderUserStylesModule
1649 – use MediaWiki\ResourceLoader\UserStylesModule
1650 - ResourceLoaderWikiModule – use MediaWiki\ResourceLoader\WikiModule
1651 - DerivativeResourceLoaderContext
1652 – use MediaWiki\ResourceLoader\DerivativeContext
1653 - MessageBlobStore – use MediaWiki\ResourceLoader\MessageBlobStore
1654 - VueComponentParser – use MediaWiki\ResourceLoader\VueComponentParser
1655 * (T318989) Skin::lastModified, deprecated since 1.40, has been removed.
1656 * Composer 1.x is no longer supported, and can no longer be used with MediaWiki.
1657 * Title::GAID_FOR_UPDATE, deprecated in 1.34, has been removed. Instead, your
1658 code should use IDBAccessObject::READ_LATEST.
1659 * Six private Title class members, deprecated in 1.37, are now fully private;
1660 use their corresponding accessor methods:
1661 - $mTextform -> getText()
1662 - $mUrlform -> getPartialURL()
1663 - $mDbkeyform -> getDBkey()
1664 - $mNamespace -> getNamespace()
1665 - $mInterwiki -> getInterwiki()
1666 - $mFragment -> getFragment()
1667 * Skin::bottomScripts, deprecated since 1.37, has been removed.
1668 * Fallback index and options have been removed from
1669 DBAccessObjectUtils::getDBOptions() without deprecation.
1670 * The deprecated class aliases for now-namespaced or renamed PHP classes that
1671 were added in or before 1.39 LTS have now been removed:
1672 - Blob -> Wikimedia\Rdbms\Blob
1673 - Block -> MediaWiki\Block\DatabaseBlock
1674 - DBAccessError -> Wikimedia\Rdbms\DBAccessError
1675 - DBConnectionError -> Wikimedia\Rdbms\DBConnectionError
1676 - DBError -> Wikimedia\Rdbms\DBError
1677 - DBExpectedError -> Wikimedia\Rdbms\DBExpectedError
1678 - DBQueryError -> Wikimedia\Rdbms\DBQueryError
1679 - DBReadOnlyError -> Wikimedia\Rdbms\DBReadOnlyError
1680 - DBReplicationWaitError -> Wikimedia\Rdbms\DBReplicationWaitError
1681 - DBTransactionError -> Wikimedia\Rdbms\DBTransactionError
1682 - DBTransactionSizeError -> Wikimedia\Rdbms\DBTransactionSizeError
1683 - DBUnexpectedError -> Wikimedia\Rdbms\DBUnexpectedError
1684 - DatabaseMysqlBase -> Wikimedia\Rdbms\DatabaseMySQL
1685 - DatabaseMysqli -> Wikimedia\Rdbms\DatabaseMySQL
1686 - EasyDeflate -> Deflate
1687 - Field -> Wikimedia\Rdbms\Field
1688 - IMaintainableDatabase -> Wikimedia\Rdbms\IMaintainableDatabase
1689 - LinksDeletionUpdate -> MediaWiki\Deferred\LinksUpdate\LinksDeletionUpdate
1690 - LinksUpdate -> MediaWiki\Deferred\LinksUpdate\LinksUpdate
1691 - LoadBalancer -> Wikimedia\Rdbms\LoadBalancer
1692 - LoadBalancerSingle -> Wikimedia\Rdbms\LoadBalancerSingle
1693 - RCFeedEngine -> FormattedRCFeed
1694 - RandomPage -> MediaWiki\Specials\SpecialRandomPage
1695 * The return value of IDatabase::upsert(), deprecated since 1.33, has been
1697 * Instancing MediaWiki\Specials\SpecialRandomPage without injected services has
1699 * SpecialPage::listed() and ::setListed(), deprecated since 1.35, have both been
1700 removed. Use ::isListed() to read, and over-ride by implementing isListed() or
1701 by sub-classing UnlistedSpecialPage.
1702 * BlockListPager::getTotalAutoblocks() was removed.
1704 === Deprecations in 1.42 ===
1705 * (T273239) wfGetDB(), deprecated in 1.39, now emits deprecation warnings. Most
1706 code can migrate to MediaWikiServices::getInstance()->getConnectionProvider()
1707 ->getReplicaDatabase() or …->getPrimaryDatabase() as appropriate.
1708 * (T166010) All PHP code in MediaWiki is slowly being moved to be in a class
1709 namespace as appropriate, so that we can use PSR-4 auto-loading, which will
1710 speed up general code loading of MediaWiki. The old global namespace class
1711 names are being left behind as deprecated aliases.
1712 In this release of MediaWiki, 1868 classes now have a namespace and 821 do
1713 not yet (69% done, up from 63% in MediaWiki 1.41.0). The following have newly
1719 - HTMLCacheUpdater (and fix case for consistency with HTMLFileCache)
1723 - MediaWiki\Context:
1725 - DerivativeContextSource
1729 - MediaWiki\Deferred:
1730 - AtomicSectionUpdate
1734 - DeferrableCallback
1737 - DeferredUpdatesScope
1738 - DeferredUpdatesScopeMediaWikiStack
1739 - DeferredUpdatesScopeStack
1740 - EnqueueableDataUpdate
1741 - HtmlFileCacheUpdate
1742 - JobQueueEnqueueUpdate
1745 - MessageCacheUpdate
1747 - SendPasswordResetEmailUpdate
1749 - TransactionRoundAwareUpdate
1750 - TransactionRoundDefiningUpdate
1752 - UserEditCountUpdate
1753 - MediaWiki\HTMLForm:
1755 - CollapsibleFieldsetLayout
1757 - HTMLFormActionFieldLayout
1760 - HTMLFormFieldLayout
1761 - HTMLFormFieldRequiredOptionsException
1762 - HTMLNestedFilterable
1765 - MediaWiki\HTMLForm\Field:
1767 - HTMLAutoCompleteSelectField
1777 - HTMLFormFieldCloner
1778 - HTMLFormFieldWithButton
1782 - HTMLMultiSelectField
1783 - HTMLNamespacesMultiselectField
1785 - HTMLRestrictionsField
1786 - HTMLSelectAndOtherField
1788 - HTMLSelectLanguageField
1789 - HTMLSelectLimitField
1790 - HTMLSelectNamespace
1791 - HTMLSelectNamespaceWithButton
1792 - HTMLSelectOrOtherField
1793 - HTMLSizeFilterField
1796 - HTMLTagMultiselectField
1799 - HTMLTextFieldWithButton
1801 - HTMLTitleTextField
1802 - HTMLTitlesMultiselectField
1803 - HTMLToggleSwitchField
1805 - HTMLUsersMultiselectField
1806 - MediaWiki\Installer:
1809 - MediaWiki\LinkedData:
1810 - PageDataRequestHandler
1811 - MediaWiki\Maintenance:
1813 - MediaWiki\Message:
1818 - MediaWiki\PoolCounter:
1823 - PoolCounterWorkViaCallback
1824 - PoolWorkArticleView
1825 - PoolWorkArticleViewCurrent
1826 - PoolWorkArticleViewOld
1838 - (T352284) MediaWiki\User\Options:
1839 - DefaultOptionsLookup
1841 - UserOptionsManager
1842 - StaticUserOptionsLookup
1843 * Some hook classes have been moved from the generic MediaWiki\Hooks namespace
1844 to live closer to the code which uses them:
1845 - MediaWiki\Output\Hook:
1846 - AfterBuildFeedLinksHook
1847 - AfterFinalPageOutputHook
1848 - BeforePageDisplayHook
1849 - BeforePageRedirectHook
1850 - GetCacheVaryCookiesHook
1852 - MakeGlobalVariablesScriptHook
1853 - OutputPageAfterGetHeadLinksArrayHook
1854 - OutputPageBeforeHTMLHook
1855 - OutputPageBodyAttributesHook
1856 - OutputPageCheckLastModifiedHook
1857 - OutputPageMakeCategoryLinksHook
1858 - OutputPageParserOutputHook
1859 * API modules using ApiBase::requirePostedParameters() must also override
1860 mustBePosted() to return true.
1861 * Overriding MWException::getHTML(), ::getText(), ::getPageTitle(), and
1862 ::reportHTML() in order to display custom exception messages is now
1863 deprecated. Provide the error message when constructing the Exception,
1864 or if you need a whole custom error page, use ErrorPageError instead.
1865 * Using `new ImportReporter( … )` or `new ApiImportReporter( … )` without
1866 the $context parameter is now deprecated.
1867 * Using `WikiImporterFactory::getWikiImporter()` without the $performer
1868 parameter is now deprecated.
1869 * BlockManager::getUserBlock() was deprecated. Instead use
1870 BlockManager::getBlock(), which expects the caller to do ipblock-exempt
1872 * The `composer phpunit:entrypoint` entrypoint has been deprecated, along with
1873 bootstrap.integration.php and suite.xml. Run tests with `composer phpunit`
1874 instead, or simply `vendor/bin/phpunit`, which use bootstrap.php and
1876 * The global variable $wgCommandLineMode is deprecated. In most cases checks
1877 for `$wgCommandLineMode` can be replaced with `MW_ENTRY_POINT === 'cli'`.
1878 * The global function wfUnpack is deprecated and emits deprecation
1879 warnings. Use StringUtils::unpack instead.
1880 * BagOStuff::setNewPreparedValues() now emits deprecation warnings.
1881 * SpecialEmailUser::getTarget() has been deprecated.
1882 * User::isBlocked(), ::isBlockedFromCreateAccount() and ::isBlockedFrom() now
1883 emit deprecation warnings. They were deprecated since 1.34, 1.37 and 1.33
1885 * DatabaseBlock::newFromID() was deprecated and will emit deprecation warnings.
1886 Instead use DatabaseBlockStore::newFromID().
1887 * DatabaseBlock::getAutoblockExpiry() was deprecated without replacement.
1888 * MagicWord::getId() has been deprecated.
1889 * MagicWordFactory::getSubstIDs() has been deprecated.
1890 * Status::setMessageLocalizer is deprecated. Callers that want to control the
1891 localization of the Status object should obtain a StatusFormatter from
1892 the StatusFormatterFactory.
1893 * Html::buttonAttributes() and Html::getTextInputAttributes() methods
1894 no longer do anything and have been deprecated.
1895 * DatabaseBlock::doAutoblock and ::updateTimestamp are now deprecated, use
1896 DatabaseBlockStore::doAutoblock and ::updateTimestamp instead.
1897 * The MediaWiki class has been deprecated. Type hints in hooks should be
1898 changed to refer to MediaWikiEntryPoint instead. Note that extensions should
1899 not define their own entry points and should not interfere with the state of
1900 MediaWikiEntryPoint instances.
1901 * Various methods in ObjectCache have been deprecated and their equivalent made
1902 available in ObjectCacheFactory, use them instead:
1903 - ::getInstance() -> ObjectCacheFactory::getInstance()
1904 - ::newFromParams() -> ObjectCacheFactory::newFromParams()
1905 - ::newAnything() -> ObjectCacheFactory::newInstance(
1906 ObjectCache::getAnythingId() )
1907 - ::getLocalServerInstance() -> ObjectCacheFactory::getLocalServerInstance()
1908 - ::clear() -> ObjectCacheFactory::clear()
1909 - In addition, the ObjectCache::$instances member has been deprecated as well.
1910 * Vuex has been deprecated in favor of its successor, Pinia. Though deprecated,
1911 Vuex 4 will remain accessible for the foreseeable future. Pinia should be used
1913 * Linker::makeHeadline() has been deprecated.
1914 * SerializedValueContainer::isUnified() has been deprecated and now emits
1915 deprecation warnings since 1.42.
1916 * Linker::generateTOC(), Linker::tocIndent(), Linker::tocUnindent(),
1917 Linker::tocLine(), Linker::tocLineEnd(), Linker::tocList() are deprecated.
1918 * Title::getBrokenLinksFrom() has been deprecated.
1919 * LogFormatter subclasses now emit deprecation warnings unless they are
1920 constructed using LogFormatterFactory.
1921 * ReplicatedBagOStuff has been deprecated since 1.42.
1922 * The third argument to ContentRenderer::getParserOutput() now accepts a
1923 RevisionRecord or WikiRevision; passing an integer revision id has been
1924 deprecated and emits a warning.
1925 * Passing a null value to ParserOutput::setPageProperty() has been deprecated
1926 and emits a warning; pass an empty string or use `::unsetPageProperty()`
1928 * Passing a non-string value to ParserOutput::setPageProperty() has been
1929 deprecated; use ::setNumericPageProperty() instead.
1930 * Passing a non-scalar value to ParserOutput::setPageProperty() will emit
1931 a warning (it has never worked).
1932 * ParserOutput::setLanguageLinks() has been deprecated.
1933 * ParserOutput::getTimestamp() and ::setTimestamp() have been deprecated; use
1934 ::getRevisionTimestamp() and ::setRevisionTimestamp() instead.
1935 * ParserOutput::setText() has been deprecated; use ::setRawText() instead which
1936 matches the name of the corresponding getter, ParserOutput::getRawText().
1937 * ParserOutput::addTemplate() will emit a deprecation warning if it is called
1938 with a non-local title, such as an interwiki link. In a future release it will
1939 throw InvalidArgumentException.
1940 * The use of dynamic properties of Parser has been deprecated and will emit
1941 deprecation warnings.
1942 * The following deprecated public properties of Parser will emit deprecation
1944 - Parser::$ot, deprecated since 1.35
1945 - Parser::$mTitle, deprecated since 1.35
1946 - Parser::$mOptions, deprecated since 1.35
1947 * The following deprecated public properties of Parser are now marked
1948 for internal use only:
1949 - Parser::$mPPNodeCount, deprecated since 1.35
1950 - Parser::$mHighestExpansionDepth, deprecated since 1.35
1951 * ApiQueryBlockInfoTrait::addBlockInfoToQuery() will emit deprecation warnings
1952 and will soon stop working due to schema changes. Instead use
1953 addDeletedUserFilter() or getBlockDetailsForRows().
1954 * UploadBase::getImageInfo was deprecated, subclasses of ApiUpload can use
1955 ApiUpload::getUploadImageInfo() instead.
1956 * DatabaseBlockStore::updateTimestamp() is now internal and should not be
1958 * The LocalisationCache helper class GlobalDependency has been deprecated,
1959 use MainConfigDependency instead.
1960 * The module `mediawiki.icon` has been deprecated. Use the Codex mixin instead
1962 * ConfigRepository::class and MediaWikiServices::getConfigRepository() have been
1963 deprecated, they are unused.
1964 * Passing a WikiPage to PageEditStash::parseAndCache() has been deprecated.
1965 Use PageUpdater instance.
1966 * SpecialBlock::getSuggestedDurations() has been deprecated, use
1967 Language::getBlockDurations() instead.
1968 * MediaWikiServices::getBlockErrorFormatter() has been deprecated, use
1969 MediaWikiServices::getFormatterFactory()->getBlockErrorFormatter() instead.
1970 * DummyLinker has been deprecated. The DummyLinker parameter to the
1971 'ImageBeforeProduceHTML' hook will become null in the future.
1972 * Database::listViews() has been deprecated. This was previously used to filter
1973 views out of the return value of Database::listTables(). Now listTables()
1974 will not include views. MediaWiki does not use views.
1975 * (T207621) UserMailer::rfc822Phrase(), deprecated since 1.38, now emits
1976 deprecation warnings.
1977 * TempUserConfig::getMatchPattern() has been deprecated, use getMatchPatterns()
1979 * (T230025) Title::purgeSquid(), deprecated in 1.35, now emits warnings.
1980 * Title::getCdnUrls(), deprecated in 1.35, now emits warnings.
1981 * The rarely-used convenience method Xml::wrapClass() is now deprecated. Instead
1982 you can use Xml::tags('span', ['class'=>'foo'], 'bar').
1983 * WebRequest::getCrossSiteCookie() has been deprecated due to the removal of
1984 $wgUseSameSiteLegacyCookies. It will emit deprecation warnings. Use
1985 WebRequest::getCookie().
1986 * Using the array_merge_recursive merge strategy in extension.json and skin.json
1987 now emits deprecation warnings.
1988 * DBAccessObjectUtils::getDBFromIndex() is now deprecated, use
1989 ::getDBFromRecency() instead.
1990 * Many Xml methods that are specific to HTML but not XML are deprecated:
1993 - Xml::buildTableRow
2000 - Xml::inputLabelSep
2002 - Xml::languageSelector
2004 - Xml::listDropdownOptions
2005 - Xml::listDropdownOptionsOoui
2006 - Xml::monthSelector
2014 - Xml::attrib (only for use in HTML, not XML contexts)
2015 * IMaintainableDatabase::truncate() has been deprecated. Use truncateTable()
2017 * TextConflictHelper->incrementStatsByUserEdits() is now deprecated. The action
2018 this function previously handled should be moved into incrementConflictStats()
2019 and incrementResolvedStats().
2020 * SQLPlatform::getQueryVerb() is now deprecated.
2022 === Other changes in 1.42 ===
2023 * Gallery: Image captions are no longer wrapped in <p> tags. Skins that
2024 customize rendering for galleries may need to tweak their CSS.
2025 * Scripts under maintenance/dev/, for quickly setup a local MediaWiki for
2026 development purposes, have been removed, see DEVELOPERS.md for alternatives.
2030 PHP 8.0 workboard: https://phabricator.wikimedia.org/tag/php_8.0_support/
2031 PHP 8.1 workboard: https://phabricator.wikimedia.org/tag/php_8.1_support/
2032 PHP 8.2 workboard: https://phabricator.wikimedia.org/tag/php_8.2_support/
2033 PHP 8.3 workboard: https://phabricator.wikimedia.org/tag/php_8.3_support/
2035 == MediaWiki 1.41.4 ==
2037 This is a maintenance release of the MediaWiki 1.41 branch.
2039 === Changes since MediaWiki 1.41.3 ===
2040 * Fix issue related to backport of AbuseFilter patch for T372998.
2042 == MediaWiki 1.41.3 ==
2044 This is a security and maintenance release of the MediaWiki 1.41 branch.
2046 === Changes since MediaWiki 1.41.2 ===
2047 * Localisation updates.
2048 * Parser: Deprecate use of mOutput before initialization.
2049 * Clarify that $wgAllowCrossOrigin only applies to REST.
2050 * composer.json: Add 5 more ext- to suggests.
2051 * resources: Fix 404 Not Found for foreign Financial-Times/polyfill-library.
2052 * ResourceLoader: Fix regression of color mapping in Less.php.
2053 * ResourceLoader: Upgrade wikimedia/less.php to 4.4.1.
2054 * SpecialExport: Prevent passing null to strtolower.
2056 == MediaWiki 1.41.2 ==
2058 This is a maintenance release of the MediaWiki 1.41 branch.
2060 === Changes since MediaWiki 1.41.1 ===
2061 * Localisation updates.
2062 * maintenance/generateSitemap.php: Partially revert 676fcf4.
2063 * tests: Skip failing tests on php8.2 (and make pass).
2064 * (T326480) ApiResult: Make array ordering consistent across PHP versions.
2065 * (T352789, T287972) build: Raise TestingAccessWrapper from 2.0.0 to 3.0.0.
2066 * (T326478) tests: Create new classes to hold dynamic properties in auth tests.
2067 * (T353180) WANObjectCacheTest::testPreemptiveRefresh: Skip flaky test for PHP
2069 * tests: Remove es6 option from StartUpModuleTest.
2070 * (T326478) tests: Avoid dynamic properties in AuthenticationProvider Test.
2071 * tests: Skip failing tests on php8.3 (and make pass).
2072 * (T326466) Introduce and use DynamicPropertyTestHelper.
2073 * (T326478) tests: Avoid dynamic properties in auth tests.
2074 * (T352910) tests: Use TestingAccessWrapper::newFromClass in session tests.
2075 * (T326478) tests: Avoid dynamic properties in SessionManagerTest.
2076 * ArticleTest: Skip testGetOrSetOnNewProperty() if PHP >= 8.2.
2077 * tests: Remove dead code from WikiPageDbTest::assertPreparedEditNotEquals.
2078 * (T326479, T361985) StatusValue: Allow passing arbitrary data to augment
2080 * (T357760) Use i18n strings for truncated subpage message in SpecialMovePage.
2081 * debug: Update PsySH 0.11.1 -> 0.12.3.
2082 * (T361991) Fix slash-delimited regex from CLI on maintenence/grep.php.
2083 * (T352695) tests: Only set $dbSetup if setupTestDB() ends without throwing.
2084 * (T362272) api: Replace null $httpCode by 0 in ApiBase::dieWithErrorOrDebug.
2085 * (T362740) api: Pass wikiId to UserIdentity instance for action=userrights.
2086 * (T343994) SpecialPages: Document which class getDescription is returning a
2088 * (T150647, T216682) Make EncryptedPassword work with Argon2Password.
2089 * (T364270) Fix long param names overlapping docs in API help pages.
2090 * wrapOldPasswords: Improve progress output and decrease batch size.
2091 * (T361367) ApiFeedWatchlist: Fix handling of array parameters.
2092 * (T366130) EncryptedPassword: Store default parameters as strings.
2093 * Name the PagerTools array entries to allow hooks to unset them.
2094 * Do not mark HttpRequestFactory as @internal.
2096 == MediaWiki 1.41.1 ==
2098 This is a security and maintenance release of the MediaWiki 1.41 branch.
2100 === Changes since MediaWiki 1.41.0 ===
2101 * Localisation updates.
2102 * CategoryViewer: Fix "count(): Argument #1 ($value) must be of type
2103 Countable|array, null given".
2104 * (T353929) ActiveUsersPager: Count actions only once.
2105 * composer: Use @php instead of php.
2106 * (T334992) Headings in the license pickers should not be selected.
2107 * (T326065) Indent JsonContent using tabs.
2108 * Correct deprecation version of mediawiki.ui resource loader module.
2109 * Resources.php: Replace short urls with full urls.
2110 * (T354541) authmanager: Improve AuthenticationRequest docs.
2111 * Tweak docs for UseLegacyMediaStyles.
2112 * (T353870) Parse custom edit intro as content to enable language conversion.
2113 * (T330428) ForeignResourceManager: Add trailing newline in validateLicense.
2114 * ForeignResourceManager: Make it clearer what is being skipped for
2116 * (T355017) Add missing space in Special:RecentChangesLinked.
2117 * (T355003) composer.json Add ext-bcmath and ext-gmp to suggests.
2118 * PHPVersionCheck: Update text to match currently supported upstream PHP
2120 * (T354045) API: mark HTML output as non-cacheable.
2121 * (T355530) filerepo: Fix img_major_mime for files with a non-standard
2123 * (T355530) MimeAnalyzer: Add @since to isValidMajorMimeType.
2124 * (T352554) ZhConverter: Fix language variant fallback chain.
2125 * (T347541) Add 'maxlength' and 'minlength' support to HTMLTextAreaField.
2126 * (T357668) Parser::getExternalLinkAttribs: Don't set rel attribute to null.
2127 * LockManagerGroupIntegrationTest: Remove test depending on DBLockManager.
2128 * (T357808) LinkRendererTest: Add missing import for LinkTarget.
2129 * (T353305) ApiResetPassword: Allow both user and email parameters to be passed
2131 * (T358949) updateCollation: Explicitly cast $scale to int.
2132 * (T359055) api: Improve linking of language codes lists in top level i18n
2134 * (T359294) Make sure MovePage::isValidFileMove matches UploadBase::getTitle.
2135 * (T230245) Respect $maxConcurrency when queuing async FileOps.
2136 * (T352554) Follow-up "ZhConverter: Fix language variant fallback chain".
2137 * (T359139) Restore ability to disable footer links with "-".
2138 * Fix use of array keys in SessionManager::getVaryHeaders().
2139 * (T292237, T317451) build: Restore Doxygen output for MediaWiki release tags.
2140 * (T324903) HistoryPager: Add #[AllowDynamicProperties].
2141 * (T360850) Update Apache config syntax in .htaccess files.
2142 * Update wikimedia/parsoid to 0.18.2.
2143 * docs: Remove use of $IP from mwdocgen.php.
2144 * (T317451) build: Restore Doxygen output for MediaWiki release tags (take 3).
2145 * docs: Set stable permalink on markdown files.
2146 * (T360608) WebRequest: detectServer appends default ports that should be
2148 * (T357019) allow maintenance/deleteBatch.php to accept page ID.
2149 * (T355538, CVE-2024-34507) SECURITY: XSS in edit summary parser.
2150 * (T357760, CVE-2024-34506) SECURITY: Denial of service vector via GET request
2151 to Special:MovePage on pages with thousands of subpages.
2153 === Changes since MediaWiki 1.41.0-rc.0 ===
2154 * Localisation updates.
2155 * Update wikimedia/parsoid to 0.18.0.
2156 * (T351758) DEVELOPERS.md: reword WSL instructions to include best practices.
2157 * (T350615) PoolCounterConnectionManager: Add support for ipv6.
2158 * (T321234) Make MagicWordArray not fail on old revs with broken UTF-8.
2159 * thumb: Fix "PHP Deprecated: strlen(): Passing null to parameter".
2160 * (T344971) Maintenance: Fix RebuildTextIndex.
2161 * (T327007) htmlform: Correct validation for file input field.
2163 == MediaWiki 1.41.0-rc.0 ==
2165 == Upgrading notes for 1.41 ==
2166 Don't forget to always back up your database before upgrading!
2168 See the file UPGRADE for more detailed per-version upgrade instructions from the
2169 oldest supported upgrading version, MediaWiki 1.35.
2171 Some specific notes for MediaWiki 1.41 upgrades are below:
2172 * (T178356) MediaWiki now requires browsers to support ES6 for them to receive
2173 JavaScript, up from ES5. In practice, this primarily means that users of
2174 Internet Explorer 11 (EOL in 2022) will no longer get JavaScript tools.
2176 For notes on 1.40.x and older releases, see HISTORY.
2178 === Configuration changes for system administrators in 1.41 ===
2179 * $wgGroupPermissions: The 'purge' permission is now considered an
2180 implicit right that can be rate limited, but not revoked. This has
2181 effectively already been the case for a long time, see T291316.
2183 ==== New configuration ====
2184 * $wgPrivilegedGroups – Users belonging in some of the listed groups will be
2185 audited more aggressively.
2186 * $wgPageLinksSchemaMigrationStage – This temporary flag lets you control the
2187 migration stage for converting the pagelinks database table into normal form.
2188 * $wgExternalLinksDomainGaps – Can be used by large wikis to optimize certain
2189 external link queries.
2190 * $wgResourceLoaderEnableSourceMapLinks - Add a SourceMap header to
2191 ResourceLoader responses for JavaScript modules (T47514).
2192 * $wgVirtualDomainsMapping - Mapping of virtual domains to other dbs. It's
2193 useful to get connection to the external cluster.
2195 ==== Changed configuration ====
2196 * $wgAuthManagerAutoConfig – When using this setting to modify the
2197 authentication system in MediaWiki, the classes
2198 TemporaryPasswordPrimaryAuthenticationProvider,
2199 LocalPasswordPrimaryAuthenticationProvider and
2200 EmailNotificationSecondaryAuthenticationProvider now require
2201 DBLoadBalancerFactory, not DBLoadBalancer, as a service.
2202 * $wgUseFileCache is no longer used for ResourceLoader module caching.
2203 * $wgLBFactoryConf['secret'] has been replaced by $wgChronologyProtectorSecret.
2205 ==== Removed configuration ====
2206 * $wgCommentTempTableSchemaMigrationStage – This temporary flag did let you
2207 control the migration stage for the temporary comment database table, from
2209 * $wgExternalLinksSchemaMigrationStage – This temporary flag did let you
2210 control the migration stage for the externallinks database table.
2211 * $wgParserOutputHooks - This array interacted with
2212 ParserOutput::addOutputHook(), which has been deprecated since 1.38 and was
2213 removed in this release.
2215 === New user-facing features in 1.41 ===
2216 * Special:RandomPage can now take multiple namespaces in its URL, split by ','.
2217 * The aria-level HTML attribute is now allowed in wikitext by the Sanitizer.
2219 === New features for sysadmins in 1.41 ===
2220 * $wgDBssl can now enabled in the installer when the database type is
2221 Postgres or MariaDB/MySQL (T335828).
2222 * MWHttpRequest will forward 'tracestate' and/or 'traceparent' headers when
2223 those are present in the original request and $wgAllowExternalReqID is set
2225 * MultiHttpClient will send X-Request-Id header and additionally will forward
2226 'tracestate' and/or 'traceparent' headers when those are present in the
2227 original request and $wgAllowExternalReqID is set to true.
2229 === New developer features in 1.41 ===
2230 * Added ForeignResourcesDir extension.json / skin.json attribute, which should
2231 point to the directory holding your foreign-resources.yaml file. See
2232 https://www.mediawiki.org/wiki/Foreign_resources for background.
2233 * Added PrivilegedGroups attribute for extension.json / skin.json, which lets
2234 you add any new user groups you define to wgPrivilegedGroups (see above).
2235 * Added a .gitmessage commit template. To use it, run:
2236 `git config commit.template .gitmessage`
2237 * A new hook, TextSlotDiffRendererTablePrefixHook, has been added to allow
2238 extensions to add content within #mw-content-text but after the
2239 DifferenceEngineViewHeader or DifferenceEngineShowDiffPage hooks have been
2240 run. The new hook is used to add elements within a horizontal display area,
2241 where their order can be explicitly set. Examples of uses for this include
2242 adding the VisualEditor diff-type switch, and the legend for inline diffs that
2243 is displayed if Wikidiff2 is installed.
2244 * validation callbacks for HTMLForm fields can now return Status objects.
2245 HTMLForm::validate will convert good Status instances to true and Status
2246 instances to a string containing a list with the errors.
2247 * ?action=rollback, if successful, will fire core's postEdit JavaScript hook;
2248 for now, we do *not* display a success message to the user via mw.notify(),
2249 as the RollbackAction form's success page is already shown
2250 * MultiHttpClient constructor will accept `headers` property which defines a
2251 set of headers attached to every request performed by the client.
2252 * New `Wikimedia/Http/TelemetryHeadersInterface` interface that provides a
2253 telemetry information which could be attached to HTTP Requests
2254 * Wikimedia/Http/TelemetryHeadersInterface can be passed to MultiHttpClient
2255 via 'telemetry' option.
2256 * UserRegistrationLookup adds support for multiple kinds of registration dates
2257 Extensions providing support for wiki-farm can use this to provide a global
2258 registration date (across all wikis), for example.
2259 * When $wgUseXssLanguage is set to true (enabled by default in
2260 DevelopmentSettings.php), ?uselang=x-xss can be used to easily test
2261 whether all messages are being escaped correctly.
2262 * Html::noticeBox accepts new optional parameters, 'heading' & 'iconClassName'.
2263 'heading' allows to pass an string as title; 'iconClassName' overwrites the
2266 === External library changes in 1.41 ===
2268 ==== New external libraries ====
2269 * Added pinia at v2.0.16.
2270 * Added symfony/polyfill-php81 at v1.28.0.
2271 * Added symfony/polyfill-php82 at v1.28.0.
2272 * Added symfony/polyfill-php83 at v1.28.0.
2274 ==== Changed external libraries ====
2275 * Updated codex, codex-design-tokens and codex-icons
2276 from v0.6.2 to v1.0.0.
2277 * Updated guzzlehttp/guzzle from 7.5.0 to 7.5.3.
2278 * Updated jQuery from v3.6.1 to v3.7.0.
2279 * Updated justinrainbow/json-schema from 5.2.12 to v5.2.13.
2280 * Updated Mustache from 3.0.1 to 4.2.0.
2281 * Updated OOjs from 6.0.0 to 7.0.1.
2282 * Updated OOUI from v0.46.3 to v0.48.1.
2283 * Updated pear/mail from 1.5.0 to 1.5.1.
2284 * Updated symfony/polyfill-php82 from v1.27.0 to v1.28.0.
2285 * Updated symfony/yaml from v5.4.17 to v5.4.23.
2286 * Updated wikimedia/bcp-47-code from 1.0.0 to 2.0.0.
2287 * Updated wikimedia/common-passwords from 0.4.0 to 0.5.0.
2288 * Updated wikimedia/composer-merge-plugin from 2.0.1 to 2.1.0.
2289 * Updated wikimedia/html-formatter from 3.0.1 to 4.0.3.
2290 * Updated wikimedia/ip-utils from 4.0.0 to 5.0.0.
2291 * Updated wikimedia/less.php from 4.0.0 to 4.1.1.
2292 * Updated wikimedia/minify from 2.3.0 to 2.5.1.
2293 * Updated wikimedia/remex-html from 3.0.3 to 4.0.1.
2294 * Updated wikimedia/timestamp from 4.1.0 to 4.1.1.
2295 * Updated wikimedia/utfnormal from 3.0.2 to 4.0.0.
2297 ===== Changed development-only external libraries =====
2298 * Updated mediawiki/mediawiki-codesniffer from 41.0.0 to 42.0.0.
2299 * Updated mediawiki/mediawiki-phan-config from 0.12.1 to 0.13.0.
2301 ==== Removed external libraries ====
2302 * jquery.hoverIntent was removed.
2303 * codex-search was removed, it's part of codex now.
2304 * wikimedia/ip-set was removed, it's part of wikimedia/ip-utils now.
2305 * jquery.color was removed.
2306 * jquery.fullscreen was removed.
2307 * jquery.form was removed.
2309 === Action API changes in 1.41 ===
2310 * (T322944) `Authorization` was added to the default list of headers
2311 allowed for cross-origin API requests ($wgAllowedCorsHeaders).
2313 === Languages updated in 1.41 ===
2314 MediaWiki supports over 350 languages. Many localisations are updated regularly.
2315 Below only new and removed languages are listed, as well as changes to languages
2316 because of Phabricator reports.
2318 * (T345807) Added language support for Karekare (kai).
2319 * (T333765) Removed language support for Akan (Ak).
2320 * (T332113) Added language support for Northern Hindko (hno).
2321 * (T333425) Added language support for Iraqi (Mesopotamian) Arabic (acm).
2322 * (T336919) Added language support for Crimean Tatar (Romania) (crh-ro).
2323 * (T338416) Added language support for Betawi (bew).
2324 * (T341545) Added language support for West Coast Bajau (a.k.a. Sama; bdr).
2325 * (T332118) Namespace translations for Angika (anp) were added
2326 * (T341942) The autonym of the Buginese language is changed to the Latin-script
2327 name "Basa Ugi", and the localization in the language code "bug" is now only
2328 in the Latin script. It's possible to add localization in the Lontara script
2329 in translatewiki under the code "bug-bugi".
2330 * (T341943) Main Page name translation was changed from "Leppa Indoë"
2331 to "Watangpola". If you manage a wiki in this language, make sure that
2332 links to the main page are correctly updated. See
2333 https://translatewiki.net/w/i.php?title=Support&oldid=11723654#Change_MediaWiki:Mainpage/bug
2335 === Breaking changes in 1.41 ===
2336 * Article::doDelete(), deprecated since 1.37, has been removed.
2337 * CommentStore::getStore(), deprecated since 1.31, has been removed.
2338 * Article::getRedirectHeaderHtml() no longer accepts an array as $target.
2339 Passing an array was deprecated in 1.39. (The method itself has also
2341 * BagOStuff::addBusyCallback(), deprecated since 1.39, has been removed.
2342 * IExpiringStore has been removed, use either ExpirationAwareness or
2343 StorageAwareness constants instead.
2344 * IDatabase::wasErrorReissuable(), deprecated since 1.40, has been removed.
2345 * IDatabase::lastQuery and IReadableDatabase::lastQuery, deprecated in 1.40,
2347 * Database::queryMulti(), unused, has been removed without deprecation.
2348 The protected Database::doMultiStatementQuery method was removed, and the
2349 protected Database::executeQuery method signature was changed to take
2350 Query object as argument instead of a raw SQL string.
2351 * Database::unionConditionPermutations(), unused, has been removed without
2353 * SimpleSearchResultSetWidget and SimpleSearchResultWidget classes, deprecated
2354 in 1.31, have been removed.
2355 * Database::factory(), deprecated in 1.39, has been removed.
2356 * Calling IDatabase::delete() or IDatabase::update() with empty conditions
2357 has been deprecated since 1.35. This now throws an error.
2358 * Maintenance::shutdown() has been moved over into the MaintenanceRunner class
2359 without deprecation.
2360 * The following DatabasePostgres methods were unused and have been removed:
2361 - ::currentSequenceValue()
2364 * The following IDatabase methods were unused and removed without deprecation:
2365 - ::wasLockTimeout()
2366 - ::wasConnectionLoss()
2367 * Database::getTempTableWrites(), previously protected, is now private.
2368 * DatabasePostgres class parameter "keywordTableMap", deprecated since 1.37,
2370 * Database::doUpsert() and ::doReplace() have been removed without deprecation.
2371 Subclasses should override ::upsert() or ::replace() respectively.
2372 * SelectQueryBuilder::lockForUpdate(), deprecated in 1.40 and unused,
2373 has been removed without hard deprecation.
2374 * TransactionProfiler::setSilenced() deprecated in 1.40, has been removed.
2375 * ILoadBalancer::closeConnection, unused, has been removed without deprecation.
2376 * ILoadBalancer::waitFor, unused, has been removed without deprecation.
2377 * ILBFactory::resolveDomainID and ::getChronologyProtectorTouched, unused,
2378 have been removed without deprecation.
2379 * The following methods have been moved from ILoadBalancer to
2380 ILoadBalancerForOwner:
2381 - ::redefineLocalDomain()
2382 - ::hasPrimaryConnection()
2383 - ::setIndexAliases()
2384 * LBFactory::makeCookieValueFromCPIndex() and ::getCPInfoFromCookieValue()
2385 has been moved to ChronologyProtector class without backward compatability
2386 as they are not supposed to be used outside of core.
2387 * MWHttpRequest::factory(), deprecated since 1.34, has been removed.
2388 * The Http class, deprecated since 1.34, with the functions ::request(),
2389 ::get(), ::post(), ::userAgent(), ::isValidURI(), ::getProxy(),
2390 ::createMultiClient() have been removed.
2391 * WikiPage::factory(), ::newFromID() and ::newFromRow, deprecated in 1.36,
2393 * Maintenance::$mArgList, ::shouldExecute(), ::setAgentAndTriggers(),
2394 ::adjustMemoryLimit(), ::globals(), and ::loadSettings() have been removed.
2395 * The GenericArrayObject class, deprecated in 1.40,
2397 * The $replace parameter has been removed from HookContainer::scopedRegister.
2398 This parameter was unused outside core, and the functionality was intended
2400 * PrevNextNavigationRenderer class, deprecated in 1.39,
2402 * class alias MediaWiki\User\WatchlistNotificationManager, deprecated in 1.36,
2404 * MediaWikiServices::getWatchlistNotificationManager(), deprecated in 1.36,
2406 * Interface MediaWiki\Hook\ParserTestTablesHook, deprecated in 1.36,
2408 * The NewPagesLineEndingHook now takes NewPagesPager instead of
2409 SpecialNewpages as first argument.
2410 * The following methods in the Title class, deprecated since 1.37, have been
2412 - ::areCascadeProtectionSourcesLoaded()
2413 - ::areRestrictionsCascading()
2414 - ::areRestrictionsLoaded()
2415 - ::getAllRestrictions()
2416 - ::getCascadeProtectionSources()
2417 - ::getFilteredRestrictionTypes()
2418 - ::getRestrictionExpiry()
2419 - ::getRestrictionTypes()
2420 - ::getRestrictions()
2421 - ::isCascadeProtected()
2423 - ::isSemiProtected()
2424 - ::loadRestrictionsFromRows()
2425 * Global function wfShowingResults, deprecated in 1.40, has been removed.
2426 * Global function wfClearOutputBuffers, deprecated in 1.36, has been removed.
2427 * LinkBatch::__construct() now requires that all parameters be passed. The
2428 fallback to MediaWikiServices emitted deprecation notices since 1.35.
2429 * The methods IndexPager::getPagingLinks(), IndexPager::getLimitLinks() and
2430 IndexPager::buildPrevNextNavigation(), deprecated in 1.39,
2432 * Overriding the method IndexPager::makeLink(), deprecated in 1.39,
2433 is no longer possible.
2434 * MagicWordFactory::getCacheTime() is deprecated and returns -1.
2435 * Various mediawiki.less mediawiki.ui variables, deprecated in 1.35, have been
2436 removed. See also below that the remaining mediawiki.ui variables are now also
2438 * Calling getId() on an AbstractBlock from the wrong wiki, deprecated since
2439 1.38, now throws an exception.
2440 * SQLite no longer supports raw MySQL queries.
2441 * The following functions from the mediawiki.mixins Less import, deprecated
2442 since 1.37, have been removed: .transition(), .transition-transform(),
2443 .transform() and .transform-origin().
2444 * Support was dropped for skins with paths relative to core which has been
2445 sending deprecation notices since 1.37. The skin `templateDirectory` key
2446 should now always be relative to the skin.
2447 * The Skin public thisquery property was removed without deprecation. Only
2448 one skin was known to use it and that has been patched accordingly.
2449 * The jquery.tipsy module, deprecated since 1.28, has now been removed.
2450 * NamespaceInfo::getRestrictionLevels(), deprecated in 1.34, has been removed.
2451 Use PermissionManager::getNamespaceRestrictionLevels() instead.
2452 * Proto-relative external links are now stored and indexed only as HTTPS
2453 instead of two rows, one for HTTP and one for HTTPS.
2454 * MediaWikiIntegrationTestCase::getTestUser(), ::getTestSysop(), and
2455 ::getMutableTestUser() have been made protected and non-static.
2456 * MediaWikiIntegrationTestCase::$supportedDBs has been changed to a private
2458 * MediaWikiIntegrationTestCase::addCoreDBData() has been deprecated. The method
2459 is now a no-op and is no longer called. Tests should create the fixtures
2461 * Saving preferences for a temporary user now throws an error (e.g. via
2462 UserOptionsManager::saveOptions)
2463 * ApiQuery::getNamedDB() and ApiQueryBase::selectNamedDB(), deprecated in
2464 1.39, have been removed.
2465 * ChangeTags::addTagsAccompanyingChangeWithChecks() and
2466 ChangeTags::undefineTag() unused everywhere, have been removed without
2468 * Usage of MediaWiki::preOutputCommit() with the $postCommitWork arg has been
2469 dropped. It's no longer used.
2470 * SkinTemplateNavigation and SkinTemplateNavigation::SpecialPage hooks,
2471 deprecated in 1.39, have been removed.
2472 * The PersonalUrls hook, deprecated in 1.39, has been removed.
2473 * OutputPage::getCSPNonce(), soft deprecated in 1.35, now emits deprecation
2475 * Support of the third parameter of LogEventsListGetExtraInputs hook,
2476 deprecated since 1.32, has been removed.
2477 * JobSpecification::getTitle(), deprecated in 1.37, has been removed.
2478 * The module mw.ui.anchor has been removed. Projects that need it should
2479 maintain a local copy or use the Codex link mixin. More information
2481 * ParsoidCachePrewarmJob::newSpec() now requires a PageRecord as the second
2482 parameter instead of a page ID.
2483 * Public access to the DifferenceEngine properties mOldid, mNewid, mOldRev,
2484 mNewRev, mOldPage, mNewPage, mOldContent, mNewContent, mRevisionsLoaded,
2485 mTextLoaded and mCacheHit, deprecated in 1.32, was removed.
2486 * SearchDatabase::db, deprecated since 1.38, has been removed.
2487 * SearchDatabase::lb has been removed without deprecation, use ::dbProvider
2489 * StreamFile::STREAM_HEADLESS and StreamFile::STREAM_ALLOW_OB, deprecated
2490 in 1.34, have been removed.
2491 * AbstractAuthenticationProvider::setLogger(), ::setManager(), ::setConfig()
2492 and ::setHookContainer() have been removed and also from it's related
2493 interface, AuthenticationProvider. The corresponding properties are set in
2494 AbstractAuthenticationProvider::init(). For side effects, you can override
2495 AbstractAuthenticationProvider::postInitSetup().
2496 * Title::newFromTitleValue(), deprecated since 1.34, has been removed.
2497 * Parser::OT_MSG, related to OT_MSG(3) MediaWiki constant, parameter for
2498 starting external parse has been dropped. This was kept since 2008 for B/C
2499 only and no longer used. Use instead Parser::OT_PREPROCESS as the
2501 * SpecialPageAction has been removed without deprecation. There were no known
2502 uses outside of core.
2503 * ConfigRepository::getValueOf() has been removed without deprecation. This
2504 method was introduced and never used for a long time now.
2505 * BacklinkCache::get(), ::getLinks(), ::getCascadeProtectedLinks() which
2506 emitted deprecation warnings has no usage left. It has been removed.
2507 * The following constants and methods in the Language class, hard deprecated
2508 since 1.40, have been removed:
2511 - ::MESSAGES_FALLBACKS
2512 - ::STRICT_FALLBACKS
2514 - ::isSupportedLanguage()
2515 - ::isWellFormedLanguageTag()
2517 - ::isValidBuiltInCode()
2518 - ::isKnownLanguageTag()
2519 - ::getLocalisationCache()
2520 - ::fetchLanguageNames()
2521 - ::fetchLanguageName()
2524 - ::autoConvertToAllVariants()
2526 - ::convertNamespace()
2530 - ::convertCategoryKey()
2532 - ::getPreferredVariant()
2533 - ::getDefaultVariant()
2535 - ::getExtraHashOptions()
2536 - ::getParentLanguage()
2538 - ::getMessagesFileName()
2539 - ::getJsonMessagesFileName()
2540 - ::getFallbackFor()
2541 - ::getFallbacksFor()
2542 - ::getFallbacksIncludingSiteLanguage()
2543 - ::getMessagesFor()
2545 - ::getMessageKeysFor()
2546 - ::getConvRuleTitle()
2547 * The parameter noSeparators to Language::formatNum, deprecated since 1.36,
2548 has been removed. Use Language::formatNumNoSeparators instead.
2549 * The following methods in the ParserOutput class, deprecated since 1.38, have
2552 - ::addTrackingCategory()
2554 - ::getCategoryLinks()
2555 - ::getOutputHooks()
2558 - ::hasDynamicContent()
2559 - ::hideNewSection()
2560 - ::preventClickjacking()
2561 - ::setCategoryLinks()
2564 * OutputPage::allowClickjacking() and ::preventClickjacking(), deprecated
2565 since 1.38, have been removed.
2566 * ResourceFileCache has been removed without deprecation. There were no known
2567 uses outside of core.
2568 * Many LocalisationCache constants, properties and methods that have no known
2569 usage outside of the class have been made private without deprecation.
2570 * User::idFromName(), deprecated in 1.37, has been removed. Instead, you should
2571 use UserIdentityLookup::getUserIdentityByName().
2572 * User::incEditCount(), deprecated in 1.37, has been removed. Instead, use
2573 UserEditTracker::incrementUserEditCount().
2574 * Article::getTimestamp(), deprecated in 1.35, has been removed. Use WikiPage's
2575 or RevisionRecord's version of this method instead.
2576 * ActionFactory::actionExists(), deprecated since 1.38, has been dropped.
2577 * Action::exists(), deprecated since 1.38, has been dropped.
2578 * ContentHandler::getForTitle(), deprecated since 1.35, has been dropped.
2579 * LockManagerGroup::getDefault() and ::getAny(), deprecated since 1.35, have
2581 * BaseTemplate::getToolbox(), deprecated since 1.35, has been dropped. To add
2582 items to the toolbox, use the SidebarBeforeOutput hook. To get the toolbox,
2583 subclasses can use $this->data['sidebar']['TOOLBOX'].
2584 * IndexPager::getHookContainer(), deprecated since 1.40, has been removed. You
2585 should instead inject a HookContainer into your code.
2586 * Not specifying a manifest_version in your extension.json or skin.json file,
2587 deprecated since 1.26 and emitting warnings since 1.29, is no longer supported
2588 with a fallback; it will now have unspecified behaviour.
2589 * RecentChange::getEngine(), deprecated since 1.29, has been removed. Use
2590 RCFeed::factory() instead.
2591 * EditPage::showEditForm() no longer respects the $formCallback parameter, which
2592 was deprecated in 1.25. Use the EditPage::showEditForm:fields hook instead.
2593 * The following properties in EditPage, deprecated in 1.38, were made private:
2597 - $allowBlankArticle
2599 - $allowSelfRedirect
2604 * EditPage::addNewLineAtEnd(), deprecated since 1.38, was removed.
2605 * AuthManager::checkAccountCreatePermissions(), deprecated in 1.39, has been
2606 removed. Use authorizeCreateAccount() or probablyCanCreateAccount() instead.
2607 * LinkCache::addGoodLinkObj(), deprecated in 1.37, has been removed. You should
2608 use ::addGoodLinkObjFromRow().
2609 * Constructing TextConflictHelper without a ContentHandlerFactory, deprecated
2610 since 1.35, will now trigger a type error.
2611 * JobQueue::getWiki(), deprecated in 1.33, has been removed.
2612 * ManualLogEntry::setTags(), deprecated in 1.33, has been removed.
2613 * WikiPage::getDeletionUpdates(), deprecated in 1.37, has been removed.
2614 * ResourceLoader\Context::getConfig(), deprecated in 1.34, has been removed.
2615 * When creating a SearchUpdate instance, passing a non-Content string or Boolean
2616 as the $c parameter, deprecated since 1.34, will now trigger type errors.
2617 * SkinTemplate::getNameSpaceKey(), deprecated in 1.35, has been dropped. Instead
2618 you should use Title::getNamespaceKey().
2619 * The AddNewAccount hook, deprecated since 1.27, will now trigger deprecation
2620 warnings. You should use the LocalUserCreated hook instead.
2621 * The PrefixSearchBackend hook, deprecated since 1.27, will now trigger
2622 deprecation warnings. Override SearchEngine::completionSearchBackend instead.
2623 * PrefixSearch::validateNamespaces(), completely unused everywhere, has been
2624 removed without deprecation.
2625 * BaseTemplate::getTrail() and ::printTrail(), deprecated since 1.39, have been
2627 * Passing a second query parameter to Title::getFullURL(), Title::getLocalURL(),
2628 Title::getInternalURL(), or Title::getCanonicalURL(), each deprecated in 1.19,
2629 is now not supported. Pass it as a key,value pair in the first parameter array
2631 * Title::getBacklinkCache(), deprecated since 1.37, has been dropped. Instead,
2632 use BacklinkCacheFactory::getBacklinkCache().
2633 * Title::newFromIDs and TitleFactory::newFromIDs, deprecated in 1.38, have been
2634 dropped; use a PageStore QueryBuilder instead.
2635 * Title::getSelectFields(), deprecated since 1.36, has been dropped. You can use
2636 PageStore::newSelectQueryBuilder() instead.
2637 * Title::getTouched() will now trigger an error if you pass it an instance of
2638 IDatabase rather than a READ_XXX constant. This legacy behaviour has been
2639 deprecated since 1.38.
2640 * User::getGroupPermissions(), getGroupsWithPermission() & groupHasPermission(),
2641 all of which were deprecated since 1.34, have been removed. Instead, use the
2642 GroupPermissionsLookup service.
2643 * Similarly, PermissionManager::getGroupPermissions(), getGroupsWithPermission()
2644 & groupHasPermission(), all of which were deprecated since 1.36, have also
2645 been removed. Instead, use the GroupPermissionsLookup service.
2646 * The following old, deprecated aliases for classes in the RDBMS layer, have now
2648 - DBConnRef (use Wikimedia\Rdbms\DBConnRef)
2649 - Database (use Wikimedia\Rdbms\Database)
2650 - DatabaseBase (use Wikimedia\Rdbms\Database)
2651 - DatabaseMysqlBase (use Wikimedia\Rdbms\DatabaseMySQL)
2652 - DatabaseMysqli (use Wikimedia\Rdbms\DatabaseMySQL)
2653 - DatabasePostgres (use Wikimedia\Rdbms\DatabasePostgres)
2654 - DatabaseSqlite (use Wikimedia\Rdbms\DatabaseSqlite)
2655 - IDatabase (use Wikimedia\Rdbms\IDatabase)
2656 - FakeResultWrapper (use Wikimedia\Rdbms\FakeResultWrapper)
2657 - ResultWrapper (use Wikimedia\Rdbms\ResultWrapper)
2658 * The following old, deprecated aliases for classes have now been removed:
2659 - MediaWiki\Rest\Handler\HtmlInputTransformHelper
2660 - MediaWiki\Rest\Handler\HtmlMessageOutputHelper
2661 - MediaWiki\Rest\Handler\HtmlOutputRendererHelper
2662 - MediaWiki\Rest\Handler\PageContentHelper
2663 - MediaWiki\Rest\Handler\PageRestHelperFactory
2664 - MediaWiki\Rest\Handler\ParsoidFormatHelper
2665 - MediaWiki\Rest\Handler\RevisionContentHelper
2666 (use the classes from namespace MediaWiki\Rest\Handler\Helper)
2667 - SearchNearMatcher (use MediaWiki\Search\TitleMatcher)
2668 * $CHANGEDORCREATED argument of 'enotif_body' message was removed.
2669 It wasn't used in the default messages since 1.21.
2670 * The AbstractBlock and DatabaseBlock public properties mExpiry, mHideName,
2671 mTimestamp, mAuto and mParentBlockId, deprecated since 1.34, have been
2673 * WikiPage::doDeleteUpdates() and ::getDeletionUpdates(), deprecated in 1.37,
2675 * The User public properties mOptions, mBlock, mBlockedby and mHideName,
2676 deprecated since 1.35, were removed.
2677 * User::CHECK_USER_RIGHTS and User::IGNORE_USER_RIGHTS were removed. They were
2678 flags passed to methods which were previously removed.
2679 * All public properties of LinksUpdate, deprecated in 1.38, were removed.
2680 * The class Wikimedia\Rdbms\MySQLMasterPos, deprecated in 1.37, has been
2681 removed. Use Wikimedia\Rdbms\MySQLPrimaryPos instead.
2682 * The class GetBlockErrorMessageKey, deprecated in 1.40, has been removed.
2683 * The ability to set Parser::mTitle to null, deprecated in 1.34, was removed.
2684 * The following MagicWord methods have been removed without deprecation. There
2687 - ::compareStringLength
2688 - ::getVariableRegex
2689 - ::getVariableStartToEndRegex
2692 - ::matchVariableStartToEnd
2693 - ::pregRemoveAndRecord
2694 - ::substituteCallback
2695 * The following MagicWordArray methods have been removed or made private without
2696 deprecation. There were no known uses outside of the class.
2698 - ::getRegex, already marked as @internal, now private
2699 - ::getRegexStart, already marked as @internal, now private
2700 - ::getVariableRegex, deprecated since 1.36
2701 - ::getVariableStartToEndRegex, already marked as @internal, now private
2702 - ::parseMatch, now private
2703 * AbstractContent::getRedirectChain() and ::getUltimateRedirectTarget(), both
2704 deprecated in 1.38, have been removed.
2706 === Deprecations in 1.41 ===
2707 * The MessageCache::get hook is deprecated for performance reasons. Use
2708 MessageCacheFetchOverrides instead.
2709 * EtcdConfig::setLogger() is deprecated as it was unused and could not be
2710 used correctly. As a standalone class, its warnings now surface
2711 unconditionally via the native PHP error log.
2712 * The interface for hook ParserModifyImageHTML have been renamed from
2713 ParserModifyImageHTML to ParserModifyImageHTMLHook,
2714 the old name is deprecated.
2715 * (T178356) The es6-polyfills module is deprecated and is now a no-op.
2716 * SerializedValueContainer::newUnified() is unused and now emits deprecation
2718 * Profiler::setProfileID() and ::getAllowOutput() are now deprecated and also
2719 emit deprecation warnings. For ::setProfileID(), override the related class
2720 member directly in sub-class.
2721 * (T166010) All PHP code in MediaWiki is slowly being moved to be in a class
2722 namespace as appropriate, so that we can use PSR-4 auto-loading, which will
2723 speed up general code loading of MediaWiki. The old global namespace class
2724 names are being left behind as deprecated aliases.
2726 In this release of MediaWiki, 1661 classes now have a namespace and 972 do
2727 not yet (63% done, up from 54% in MediaWiki 1.40.0). The following have newly
2734 - EtcdConfigParseError
2740 - MediaWiki\EventRelayer:
2744 - MediaWiki\Installer:
2754 - AllMessagesTablePager
2759 - DeletedContribsPager
2769 - ProtectedPagesPager
2770 - ProtectedTitlesPager
2771 - RangeChronologicalPager
2772 - ReverseChronologicalPager
2777 - MediaWiki\Request:
2780 - MediaWiki\SiteStats:
2783 - MediaWiki\Specials:
2784 - SpecialActiveUsers
2785 - SpecialAllMessages
2786 - SpecialAncientPages
2789 - SpecialAutoblockList
2793 - SpecialBookSources
2794 - SpecialBotPasswords
2795 - SpecialBrokenRedirects
2797 - SpecialChangeContentModel
2798 - SpecialChangeCredentials
2799 - SpecialChangeEmail
2800 - SpecialChangePassword
2801 - SpecialComparePages
2802 - SpecialConfirmEmail
2804 - SpecialContributions
2805 - SpecialCreateAccount
2806 - SpecialDeadendPages
2808 - SpecialDeletedContributions
2810 - SpecialDoubleRedirects
2813 - SpecialEditWatchlist
2814 - SpecialEmailInvalidate
2816 - SpecialExpandTemplates
2818 - SpecialFewestRevisions
2819 - SpecialFileDuplicateSearch
2821 - SpecialGoToInterwiki
2823 - SpecialJavaScriptTest
2824 - SpecialLinkAccounts
2826 - SpecialListDuplicatedFiles
2829 - SpecialListGroupRights
2830 - SpecialListRedirects
2834 - SpecialLonelyPages
2837 - SpecialMediaStatistics
2838 - SpecialMergeHistory
2839 - SpecialMostCategories
2840 - SpecialMostInterwikis
2842 - SpecialMostLinkedCategories
2843 - SpecialMostLinkedTemplates
2844 - SpecialMostRevisions
2848 - SpecialNewPages (and capitalisation corrected)
2851 - SpecialPageHistory
2853 - SpecialPageLanguage
2854 - SpecialPagesWithProp
2855 - SpecialPasswordPolicies
2856 - SpecialPasswordReset
2857 - SpecialPermanentLink
2858 - SpecialPreferences
2859 - SpecialPrefixIndex (and capitalisation corrected)
2860 - SpecialProtectedPages (and capitalisation corrected)
2861 - SpecialProtectedTitles (and capitalisation corrected)
2862 - SpecialProtectPage
2864 - SpecialRandomInCategory
2866 - SpecialRandomRedirect
2867 - SpecialRandomRootPage
2868 - SpecialRecentChanges
2869 - SpecialRecentChangesLinked
2871 - SpecialRedirectToSpecial
2872 - SpecialRemoveCredentials
2873 - SpecialRenameUser (and capitalisation corrected)
2874 - SpecialResetTokens
2875 - SpecialRevisionDelete
2879 - SpecialSpecialPages (and capitalisation corrected)
2882 - SpecialTrackingCategories
2884 - SpecialUncategorizedCategories
2885 - SpecialUncategorizedImages
2886 - SpecialUncategorizedPages
2887 - SpecialUncategorizedTemplates
2889 - SpecialUnlinkAccounts
2891 - SpecialUnusedCategories
2892 - SpecialUnusedImages
2893 - SpecialUnusedTemplates
2894 - SpecialUnwatchedPages
2896 - SpecialUploadStash
2900 - SpecialWantedCategories
2901 - SpecialWantedTemplates
2903 - SpecialWhatLinksHere
2904 - SpecialWithoutInterwiki
2905 - MediaWiki\Specials\Redirects:
2906 - SpecialAllMyUploads
2909 - SpecialMycontributions
2914 - MediaWiki\SpecialPage:
2915 - AuthManagerSpecialPage
2916 - ChangesListSpecialPage
2917 - DisabledSpecialPage
2920 - IncludableSpecialPage
2921 - LoginSignupSpecialPage
2924 - RedirectSpecialArticle
2925 - RedirectSpecialPage
2927 - SpecialRedirectToSpecial
2928 - SpecialRedirectWithAction
2929 - UnlistedSpecialPage
2935 - ForeignTitleFactory
2936 - ImportTitleFactory
2937 - MalformedTitleException
2938 - MediaWikiTitleCodec
2939 - NaiveForeignTitleFactory
2940 - NaiveImportTitleFactory
2941 - NamespaceAwareForeignTitleFactory
2942 - NamespaceImportTitleFactory
2944 - SubpageImportTitleFactory
2951 - LoggedOutEditToken
2955 - UserArrayFromResult
2956 - UserGroupMembership
2958 - MediaWiki\User\CentralId:
2964 - ExtensionInfo (previously under MediaWiki\ExtensionInfo)
2966 - ConfiguredReadOnlyMode
2968 * Various mediawiki.ui variables have been deprecated in favor of
2969 'mediawiki.skin.variables.less' Codex design tokens featuring replacements.
2970 * Hook handlers must now be specified either as a PHP callable, or as a PHP
2971 object that has a method matching the hook name. Other ways to specify
2972 the handler are deprecated and will soon be removed. Deprecated ways to
2973 specify a hook handler include callables wrapped in an array. Handlers
2974 defined using a "HookHandlers" entry in extension.json are not affected.
2975 * TitleArray::newFromResult() has been deprecated and now emits deprecation
2976 warnings, use TitleArrayFromResults instead.
2977 * The MediaWikiIntegrationTestCase::$users has been deprecated. Use Authority
2978 if possible, or call ::getTestUser() or ::getTestSysop() directly.
2979 * WebRequest::isSafeRequest() and ::markAsSafeRequest() has been deprecated
2980 and now emits deprecation warnings. Use ::hasSafeMethod() instead.
2981 * The tests/phpunit/phpunit.php entrypoint has been deprecated. PHPUnit
2982 tests should be run with composer, for example with the
2983 `composer phpunit:entrypoint` command.
2984 * The unnamespace UserNamePrefixSearch class, deprecated in 1.36, now emits
2985 deprecation warnings. Use the MediaWiki\User\UserNamePrefixSearch service.
2986 * The jquery.cookie ResourceLoader module has been merged into the existing
2987 mediawiki.cookie module; jquery.cookie remains but is deprecated.
2988 * Passing a database to DatabaseBlockStore::insertBlock() is deprecated.
2989 DatabaseBlockStoreFactory should be used to fetch a correct
2990 DatabaseBlockStore instead.
2991 * The global function wfGetLangObj is deprecated and emits deprecation
2992 warnings. Use MediaWiki\Languages\LanguageFactory::getLanguage instead.
2993 * The SwiftVirtualRESTService class is deprecated in 1.41 and now emits
2994 deprecation warnings.
2995 * SqlBagOStuff::expireAll() is deprecated and now emits deprecation warnings,
2996 use SqlBagOStuff::deleteObjectsExpiringBefore() instead.
2997 * SqlBagOStuff::deleteAll() is deprecated and now emits deprecation warnings.
2998 * Passing an actor id to the UserIdentityValue constructor is now emits
2999 deprecation warnings, it is deprecated since 1.36.
3000 * UserGroupMembership::getGroupName(), deprecated in 1.38, and
3001 UserGroupMembership::getGroupMemberName(), deprecated in 1.40, now emit
3002 deprecation warnings.
3003 * UserGroupMembership::getLink() has been deprecated in favour of
3004 ::getLinkHTML() and ::getLinkWiki().
3005 * Linker::formatComment(), ::formatLinksInComment(), ::commentBlock() and
3006 ::revComment(), deprecated in 1.38, now emit deprecation warnings.
3007 * PageArchive::listRevisions(), ::getRevisionRecordByTimestamp(),
3008 ::getArchivedRevisionRecord(), ::getPreviousRevisionRecord(),
3009 ::getLastRevisionId() and ::isDeleted(), deprecated in 1.38,
3010 now emit deprecation warnings.
3011 * SearchResultThumbnail::getSize() has been deprecated to be dropped in the
3012 future as it is resource intensive and degrades performance.
3013 * The EmailUserPermissionsErrors and UserCanSendEmail hooks have been
3014 deprecated in favour of the EmailUserAuthorizeSend hook.
3015 * The EmailUser hook has been deprecated in favour of the EmailUserSendEmail
3017 * The InterwikiLoadPrefix hook now emits deprecation warnings. Resetting the
3018 $wgInterwikiCache setting instead.
3019 * SiteConfiguration::getConfig() now emits deprecation warnings, Use ::get()
3021 * SiteConfiguration::extractVar() and ::extractGlobal() have been deprecated
3022 and also emit deprecation warnings.
3023 * JobQueueGroup::waitForBackups() is deprecated. JobQueue::waitForBackups()
3024 should be used instead.
3025 * Hooks::isRegistered(), ::getHandlers(), ::run() and ::runWithoutAbort(),
3026 deprecated in 1.35, now emit deprecation warnings.
3027 * VirtualRESTService class and its subclasses now emit deprecation warnings
3028 in 1.41 and as a replacement we can use MultiHttpClient.
3029 * Calling the MediaWikiServices::getVirtualRESTServiceClient() function
3030 which creates the VirtualRESTServiceClient now emits deprecation warnings.
3031 * Language::getMessage and Language::getAllMessages are deprecated. Use
3032 LocalisationCache or MessageCache as appropriate.
3033 * VirtualRESTService class is deprecated in 1.41 and as a replacement
3034 we can use MultiHttpClient.
3035 * MediaWikiServices::getConfiguredReadOnlyMode() is deprecated. Use
3036 ::getReadOnlyMode() instead. ReadOnlyMode::getConfiguredReason()
3037 and ::isConfiguredReadOnly() has been added to support that.
3038 * UploadBase::isThrottled() has been deprecated and is emitting deprecation
3039 warnings. Rate limits are enforced by UploadBase::verifyTitlePermissions(),
3040 since rate limit checks are now implicit in permission checks.
3041 * JobSpecification::toSerializableArray() now emits deprecation warnings.
3042 * The following skin methods were deprecated:
3043 - Skin::makeSpecialUrl (use Title or Special class instead)
3044 - Skin::makeSpecialUrlSubpage (use Title or Special class instead)
3045 * mw.jqueryMsg.parser, deprecated in 1.31, now emits deprecation warnings.
3046 * ResourceLoader (T127268): The targets system is deprecated. Modules that
3047 have been marked as desktop or mobile only are no longer supported and
3048 will send deprecation warnings.
3049 * TextSlotDiffRenderer::setLanguage() is deprecated, and calling it will
3050 have no effect. Use ContentHandler::getSlotDiffRenderer(), or in subclasses,
3051 ContentHandler::createTextSlotDiffRenderer(), to correctly inject
3052 dependencies into TextSlotDiffRenderer.
3053 * The static methods encodeJsVar() and encodeJsCall() have been moved from the
3054 Xml class to the more appropriate MediaWiki\Html\Html one, and the old ones
3056 * Some work to rename classes was done in previous releases, but the renaming
3057 was not noted at the time. The old aliases work for now but are deprecated;
3058 this is now explicitly noted:
3060 - Category -> MediaWiki\Category\Category
3061 - CategoriesRdf -> MediaWiki\Category\CategoriesRdf
3062 - CategoryViewer -> MediaWiki\Category\CategoryViewer
3063 - TrackingCategories -> MediaWiki\Category\TrackingCategories
3064 - CommentStore -> MediaWiki\CommentStore\CommentStore
3065 - CommentStoreComment -> MediaWiki\CommentStore\CommentStoreComment
3066 - EditPage -> MediaWiki\EditPage\EditPage
3067 - TemplatesOnThisPageFormatter
3068 -> MediaWiki\EditPage\TemplatesOnThisPageFormatter
3069 - LinkFilter -> MediaWiki\ExternalLinks\LinkFilter
3070 - AtomFeed -> MediaWiki\Feed\AtomFeed
3071 - ChannelFeed -> MediaWiki\Feed\ChannelFeed
3072 - FeedItem -> MediaWiki\Feed\FeedItem
3073 - FeedUtils -> MediaWiki\Feed\FeedUtils
3074 - RSSFeed -> MediaWiki\Feed\RSSFeed
3075 - Html -> MediaWiki\Html\Html
3076 - FormOptions -> MediaWiki\Html\FormOptions
3077 - HtmlHelper -> MediaWiki\Html\HtmlHelper
3078 - ListToggle -> MediaWiki\Html\ListToggle
3079 - TemplateParser -> MediaWiki\Html\TemplateParser
3080 - RawMessage -> MediaWiki\Language\RawMessage
3081 - FileDeleteForm -> MediaWiki\Page\File\FileDeleteForm
3082 - MergeHistory -> MediaWiki\Page\File\MergeHistory
3083 - MovePage -> MediaWiki\Page\File\MovePage
3084 - ProtectionForm -> MediaWiki\Page\File\ProtectionForm
3085 - MediaWiki\BadFileLookup -> MediaWiki\Page\File\BadFileLookup
3086 - PageProps -> MediaWiki\Page\PageProps
3087 - MagicWord -> MediaWiki\Parser\MagicWord
3088 - MagicWordArray -> MediaWiki\Parser\MagicWordArray
3089 - MagicWordFactory -> MediaWiki\Parser\MagicWordFactory
3090 - Linker -> MediaWiki\Linker\Linker
3091 - DummyLinker -> MediaWiki\Linker\DummyLinker
3092 - ForkController -> MediaWiki\Maintenance\ForkController
3093 - OrderedStreamingForkController
3094 -> MediaWiki\Maintenance\OrderedStreamingForkController
3095 - ContentSecurityPolicy -> MediaWiki\Request\ContentSecurityPolicy
3096 - DerivativeRequest -> MediaWiki\Request\DerivativeRequest
3097 - FauxRequest -> MediaWiki\Request\FauxRequest
3098 - FauxRequestUpload -> MediaWiki\Request\FauxRequestUpload
3099 - PathRouter -> MediaWiki\Request\PathRouter
3100 - WebRequestUpload -> MediaWiki\Request\WebRequestUpload
3101 - FauxResponse -> MediaWiki\Request\FauxResponse
3102 - WebResponse -> MediaWiki\Request\WebResponse
3103 - MediaWiki\HeaderCallback -> MediaWiki\Request\HeaderCallback
3104 - StubObject -> MediaWiki\StubObject\StubObject
3105 - DeprecatedGlobal -> MediaWiki\StubObject\DeprecatedGlobal
3106 - StubGlobalUser -> MediaWiki\StubObject\StubGlobalUser
3107 - StubUserLang -> MediaWiki\StubObject\StubUserLang
3108 - Title -> MediaWiki\Title\Title
3109 - TitleArray -> MediaWiki\Title\TitleArray
3110 - TitleArrayFromResult -> MediaWiki\Title\TitleArrayFromResult
3111 - TitleFactory -> MediaWiki\Title\TitleFactory
3112 - ActorMigration -> MediaWiki\User\ActorMigration
3113 - ActorMigrationBase -> MediaWiki\User\ActorMigrationBase
3114 - WikiMap -> MediaWiki\WikiMap\WikiMap
3115 - WikiReference -> MediaWiki\WikiMap\WikiReference
3117 - ResourceLoader -> MediaWiki\ResourceLoader\ResourceLoader
3119 - IMaintainableDatabase -> Wikimedia\Rdbms\IMaintainableDatabase
3120 * The WebRequest::getRequestId() and WebRequest::overrideRequestId() are
3121 deprecated. Use methods from MediaWiki\Http\Telemetry class instead.
3122 * The XmlJsCode wrapper class has been renamed to MediaWiki\Html\HtmlJsCode,
3123 and the old name is now deprecated.
3124 * The use of non-serializable arguments to ParserOutput::addWarningMsg() has
3125 been deprecated and will emit deprecation warnings.
3126 * Class UserRightsProxy, deprecated since 1.38, now emits
3127 deprecation warnings from its factory functions.
3128 * MediaWiki\ResourceLoader\Module::getDeprecationInformation() is deprecated.
3129 Use ::getDeprecationWarning() instead.
3130 * Passing a Message to OutputPage::setPageTitle() is deprecated.
3131 Use ::setPageTitleMsg() instead (which escapes HTML metacharacters).
3132 * Passing arguments to OutputPage::prepareErrorPage() is deprecated.
3133 Use explicit calls to OutputPage::setPageTitleMsg() and ::setHTMLTitle()
3135 * Returning a string from Action::getPageTitle() is deprecated;
3136 return a Message instead, which will be formatted using FORMAT_ESCAPED.
3137 * Returning a string from SpecialPage::getDescription() is deprecated;
3138 return a Message instead, which will be formatted using FORMAT_ESCAPED.
3139 * MediaWiki\Block\AbstractBlock::getReason(), deprecated since 1.35, now emits
3140 deprecation warnings. Use ::getReasonComment() instead.
3141 * User::getGroups(), ::addGroup(), ::removeGroup(), ::getGroupMemberships(),
3142 ::getAllGroups(), ::getImplicitGroups(), deprecated since 1.35, now emit
3143 deprecation warnings.
3144 * The global function wfReportTime(), deprecated since 1.40, now emits
3145 deprecation warnings. The SkinTemplate parameter 'reporttime' is deprecated.
3146 * RevisionStore::getQueryInfo() and RevisionFactory::getQueryInfo() have been
3147 deprecated. Use ::newSelectQueryBuilder() instead.
3148 * Following methods in rdbms library have been made internal:
3149 - IDatabase::getLBInfo()
3150 - IDatabase::setLBInfo()
3151 - IDatabase::insert() Use InsertQueryBuilder instead.
3152 - IDatabase::update() Use UpdateQueryBuilder instead.
3153 - IDatabase::replace() Use ReplaceQueryBuilder instead.
3154 - IDatabase::upsert() Use InsertQueryBuilder instead.
3155 - IDatabase::delete() Use DeleteQueryBuilder instead.
3156 - IReadableDatabase::selectField() Use SelectQueryBuilder instead.
3157 - IReadableDatabase::selectFieldValues() Use SelectQueryBuilder instead.
3158 - IReadableDatabase::select() Use SelectQueryBuilder instead.
3159 - IReadableDatabase::selectRow() Use SelectQueryBuilder instead.
3160 - IReadableDatabase::estimateRowCount() Use SelectQueryBuilder instead.
3161 - IReadableDatabase::selectRowCount() Use SelectQueryBuilder instead.
3162 - ISQLPlatform::unionQueries() Use UnionQueryBuilder instead.
3163 * The core Wikimedia\Rdbms\DatabaseMysqlBase class has been renamed to reflect
3164 the earlier merger of Mysqli into it; it's now Wikimedia\Rdbms\DatabaseMySQL.
3165 * The following methods in SpecialEmailUser have been deprecated:
3166 - SpecialEmailUser::validateTarget(), use EmailUser::validateTarget()
3167 - SpecialEmailUser::getPermissionsError(), use EmailUser::canSend() or
3168 EmailUser::authorizeSend()
3169 - SpecialEmailUser::submit(), use EmailUser::sendEmailUnsafe()
3170 * User::isBlockedFromEmailuser() has been deprecated. EmailUser::canSend()
3171 checks blocks amongst other things. If you only need this check, use
3172 User::getBlock()->appliesToRight( 'sendemail' ).
3173 * User::canSendEmail() has been deprecated. Use EmailUser::canSend() instead.
3174 * The following methods, previously deprecated, now emit deprecation warnings:
3175 - ConfigFactory::getDefaultInstance(), deprecated since 1.27
3176 - AbstractContent::getNativeData(), deprecated since 1.33
3177 - TablePager::getBody(), deprecated since 1.24
3178 - ContentHandler::getSlotDiffRendererInternal(), deprecated since 1.35
3179 - ParserOutput::getCategories(), deprecated since 1.40
3180 - PasswordFactory::init(), deprecated since 1.32
3181 * WikitextContent::getRedirectTargetAndText has been deprecated, use
3182 WikitextContentHandler::extractRedirectTargetAndText instead.
3183 * WikiPage::doDeleteArticleBatched, deprecated in 1.37, now emits deprecation
3185 * WikiPage::getPageIsRedirectField() is now deprecated.
3186 * WikiPage::insertRedirect() is now deprecated.
3187 * Parser::getFreshParser(), deprecated since 1.39, now emits deprecation
3189 * The legacy MediaWiki UI ResourceLoader modules, such as `mediawiki.ui`, are
3190 all now emitting deprecation warnings in the JavaScript console. Please use
3191 Codex CSS components instead.
3192 * Article::getRedirectHeaderHtml() has been deprecated and emits deprecation
3193 warnings, use LinkRenderer::makeRedirectHeader() instead.
3194 * SpecialBlock::getTargetAndType(), deprecated since 1.36, now emits deprecation
3196 * ApiBase::checkTitleUserPermissions() now type-forces a PageIdentity instead of
3197 a LinkTarget. Passing a LinkTarget has been deprecated since 1.36.
3198 * Passing a User to ApiBase::checkUserRightsAny() in the second parameter, which
3199 was deprecated in 1.36, is no longer read. Instead, it will use the request
3200 context's set Authority via IContextSource::getAuthority().
3201 * Sanitizer::escapeIdReferenceList(), deprecated since 1.36, has been dropped.
3202 * RecentChange::getPerformer(), deprecated since 1.36, has been dropped.
3203 * SpecialPage::getLanguageConverter(), deprecated since 1.36, has been dropped.
3204 Use LanguageConverterFactory::getLanguageConverter() directly.
3205 * SpecialBlock::checkUnblockSelf(), deprecated since 1.36, has been dropped. Use
3206 BlockPermissionChecker instead.
3207 * DifferenceEngine::localiseLineNumbers() has been deprecated in favor of
3208 BaseTextDiffer::localizeLineNumbers(). Subclasses such as PhpTextDiffer may
3209 make this available via a ::localize() method.
3210 * ChangeTags::modifyDisplayQuery() and ChangeTagsStore::modifyDisplayQuery()
3211 have been deprecated in favor of ChangeTagsStore::modifyDisplayQueryBuilder()
3212 * Calling SpecialRandomPage::__construct without services as parameters is
3213 deprecated and emit deprecation warnings.
3215 === Other changes in 1.41 ===
3216 * ExternalLinksLookup::getExternalLinksForPage() now exists to centralize
3217 logic of looking up externallinks rows.
3218 * The update script no longer accepts the --skip-compat-checks option.
3219 * Use of the deprecated "Pragma: no-cache" HTTP response header on uncachable
3220 responses has been removed in favour of "Cache-Control: no-cache" (T345420).
3221 * Type hints were added to:
3222 - The return value of WebRequest:: and DerivativeRequest::getSession()
3223 - The return value of WebRequest:: and DerivativeRequest::getIP()
3224 - The return value of User::getTitleKey()
3225 - The return value of User::getRequest()
3226 - The `$key` parameter to Skin::normalizeKey()
3227 None of the methods whose return value was updated belongs to a class
3228 stable to extend, and adding type hints to parameters is backwards
3229 compatible. Therefore, this is not considered a breaking change.
3230 * The mergeMessageFileList script now only works for extensions and skins
3231 supporting extension registration (using extension.json or skin.json).
3232 It will no longer attempt to load PHP entry points.
3233 * Parser will no longer fall back to $wgTitle if a null is provided as a
3234 Title or PageReference. To change the relevant title used for methods
3235 that do not offer an option to set the page, call Parser::setPage.
3236 This affects the methods cleanSig, getSection and replaceSection.
3237 * (T347726, CVE-2023-51704) SECURITY: logging: Fix non-escaped messages
3242 MediaWiki 1.41 requires PHP 7.4.3 or later and the following PHP extensions:
3253 MariaDB is the recommended database software. MySQL, PostgreSQL, or SQLite can
3254 be used instead, but support for them is somewhat less mature.
3256 The supported versions are:
3258 * MariaDB 10.3 or higher
3259 * MySQL 5.7.0 or higher
3260 * PostgreSQL 10 or later
3261 * SQLite 3.8.0 or later
3263 == Online documentation ==
3264 Documentation for both end-users and site administrators is available on
3265 MediaWiki.org, and is covered under the GNU Free Documentation License (except
3266 for pages that explicitly state that their contents are in the public domain):
3268 https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
3271 A mailing list is available for MediaWiki user support and discussion:
3273 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
3275 A low-traffic announcements-only list is also available:
3277 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
3279 It's highly recommended that you sign up for one of these lists if you're
3280 going to run a public MediaWiki, so you can be notified of security fixes.
3283 There's usually someone online in #mediawiki on irc.libera.chat.
3287 PHP 8.0 workboard: https://phabricator.wikimedia.org/tag/php_8.0_support/
3288 PHP 8.1 workboard: https://phabricator.wikimedia.org/tag/php_8.1_support/
3289 PHP 8.2 workboard: https://phabricator.wikimedia.org/tag/php_8.2_support/
3290 PHP 8.3 workboard: https://phabricator.wikimedia.org/tag/php_8.3_support/
3292 == MediaWiki 1.40.4 ==
3294 This is a maintenance release of the MediaWiki 1.41 branch.
3296 === Changes since MediaWiki 1.40.3 ===
3297 * Localisation updates.
3298 * tests: Skip failing tests on php8.2 (and make pass).
3299 * (T326480) ApiResult: Make array ordering consistent across PHP versions.
3300 * (T352789, T287972) build: Raise TestingAccessWrapper from 2.0.0 to 3.0.0.
3301 * (T326478) tests: Create new classes to hold dynamic properties in auth tests.
3302 * (T326478) tests: Avoid dynamic properties in AuthenticationProvider Test.
3303 * tests: Skip failing tests on php8.3 (and make pass).
3304 * (T326466) Introduce and use DynamicPropertyTestHelper.
3305 * (T352910) tests: Use TestingAccessWrapper::newFromClass in session tests.
3306 * (T326478) tests: Avoid dynamic properties in SessionManagerTest.
3307 * ArticleTest: Skip testGetOrSetOnNewProperty() if PHP >= 8.2.
3308 * (T326478) tests: Avoid dynamic properties in auth tests.
3309 * tests: Remove dead code from WikiPageDbTest::assertPreparedEditNotEquals.
3310 * (T326479, T361985) StatusValue: Allow passing arbitrary data to augment
3312 * (T357760) Use i18n strings for truncated subpage message in SpecialMovePage.
3313 * debug: Update PsySH 0.11.1 -> 0.12.3.
3314 * (T361991) Fix slash-delimited regex from CLI on maintenence/grep.php.
3315 * (T352695) tests: Only set $dbSetup if setupTestDB() ends without throwing.
3316 * (T362272) api: Replace null $httpCode by 0 in ApiBase::dieWithErrorOrDebug.
3317 * (T150647, T216682) Make EncryptedPassword work with Argon2Password.
3318 * (T364270) Fix long param names overlapping docs in API help pages.
3319 * wrapOldPasswords: Improve progress output and decrease batch size.
3320 * (T361367) ApiFeedWatchlist: Fix handling of array parameters.
3321 * (T366130) EncryptedPassword: Store default parameters as strings.
3322 * Name the PagerTools array entries to allow hooks to unset them.
3323 * (T302186) Add title cache for Title::newMainPage().
3325 == MediaWiki 1.40.3 ==
3327 This is a security and maintenance release of the MediaWiki 1.40 branch.
3329 === Changes since MediaWiki 1.40.2 ===
3330 * Localisation updates.
3331 * (T296896) CategoryViewer::getSectionPagingLinks: Fix null array offset
3333 * CategoryViewer: Fix "count(): Argument #1 ($value) must be of type
3334 Countable|array, null given".
3335 * (T334992) Headings in the license pickers should not be selected.
3336 * (T353929) ActiveUsersPager: Count actions only once.
3337 * composer: Use @php instead of php.
3338 * (T326065) Indent JsonContent using tabs.
3339 * (T309714, T354274) mime: Add support for 'font/woff' and 'font/woff2' mime
3341 * (T353644) Update wikimedia/parsoid to 0.17.3.
3342 * (T354541) authmanager: Improve AuthenticationRequest docs.
3343 * (T330428) ForeignResourceManager: Add trailing newline in validateLicense.
3344 * (T355017) Add missing space in Special:RecentChangesLinked.
3345 * (T355003) composer.json Add ext-bcmath and ext-gmp to suggests.
3346 * PHPVersionCheck: Update text to match currently supported upstream PHP
3348 * (T354045) API: mark HTML output as non-cacheable.
3349 * (T355530) filerepo: Fix img_major_mime for files with a non-standard
3351 * (T355530) MimeAnalyzer: Add @since to isValidMajorMimeType.
3352 * (T352554) ZhConverter: Fix language variant fallback chain.
3353 * (T357668) Parser::getExternalLinkAttribs: Don't set rel attribute to null.
3354 * LockManagerGroupIntegrationTest: Remove test depending on DBLockManager.
3355 * (T357808) LinkRendererTest: Add missing import for LinkTarget.
3356 * (T353305) ApiResetPassword: Allow both user and email parameters to be passed
3358 * (T358949) updateCollation: Explicitly cast $scale to int.
3359 * (T359055) api: Improve linking of language codes lists in top level i18n
3361 * (T359294) Make sure MovePage::isValidFileMove matches UploadBase::getTitle.
3362 * (T230245) Respect $maxConcurrency when queuing async FileOps.
3363 * (T352554) Follow-up "ZhConverter: Fix language variant fallback chain".
3364 * (T359139) Restore ability to disable footer links with "-".
3365 * (T292237, T317451) build: Restore Doxygen output for MediaWiki release tags.
3366 * (T324903) HistoryPager: Add #[AllowDynamicProperties].
3367 * (T360850) Update Apache config syntax in .htaccess files.
3368 * (T309714) mime: Make test cases use data provider.
3369 * (T317489, T319202) Mark some parserTests on talk pages Parsoid only on
3371 * Update wikimedia/parsoid to 0.17.4.
3372 * docs: Remove use of $IP from mwdocgen.php.
3373 * (T317451) build: Restore Doxygen output for MediaWiki release tags (take 3).
3374 * docs: Set stable permalink on markdown files.
3375 * (T357019) allow maintenance/deleteBatch.php to accept page ID.
3376 * (T355538, CVE-2024-34507) SECURITY: XSS in edit summary parser.
3377 * (T357760, CVE-2024-34506) SECURITY: Denial of service vector via GET request
3378 to Special:MovePage on pages with thousands of subpages.
3380 == MediaWiki 1.40.2 ==
3382 This is a security and maintenance release of the MediaWiki 1.40 branch.
3384 === Changes since MediaWiki 1.40.1 ===
3385 * Localisation updates.
3386 * Updated symfony/polyfill-php80 from 1.27.0 to 1.28.0.
3387 * Updated symfony/polyfill-php81 from 1.27.0 to 1.28.0.
3388 * (T344912) mail: Encode period (ascii 46) if it appears in encoded email
3390 * Added symfony/polyfill-php82.
3391 * Added symfony/polyfill-php83.
3392 * Updated symfony/yaml from 5.4.17 to 5.4.23.
3393 * Updated wikimedia/timestamp from 4.1.0 to 4.1.1.
3394 * tests: Provide coverage for StatusValue::__toString.
3395 * StatusValue: Improve logging/debug output with multibyte characters.
3396 * (T347726, CVE-2023-51704) SECURITY: logging: Fix non-escaped messages
3398 * Updated wikimedia/parsoid from 0.17.0 to 0.17.1.
3399 * (T229992) LocalisationCache: Preserve fallback source language info.
3400 * (T340840) Title: Check local fallbacks for system message.
3401 * (T346332) Installer: Make Minerva works correctly for $wgDefaultSkin.
3402 * specials: Use options-messages on Special:RevisionDelete.
3403 * Fix use of buildComparison() in uppercaseTitlesForUnicodeTransition.php.
3404 * (T275085) Fix logging Status objects to 'authevents' channel.
3405 * (T341310) DEVELOPERS.md: mention git clone and WSL.
3406 * (T351758) DEVELOPERS.md: reword WSL instructions to include best practices.
3407 * (T350615) PoolCounterConnectionManager: Add support for ipv6.
3408 * ParsoidCachePrewarmJob::newSpec() now requires a PageRecord as the second
3409 parameter instead of a page ID.
3410 * (T341123) ParsoidCachePrewarmJob: enable deduplication.
3411 * (T349115) LocalisationCache: Fix a rare case in fallback source language.
3412 * (T351848) language: Avoid multiple signs in Language::userAdjust.
3413 * SwiftFileBackend: Fix "PHP Deprecated: strlen(): Passing null to parameter #1
3414 ($string) of type string is deprecated".
3415 * maintenance: Add missing parenthesis to SQL in attachLatest.php.
3416 * (T321234) Make MagicWordArray not fail on old revs with broken UTF-8.
3417 * thumb: Fix "PHP Deprecated: strlen(): Passing null to parameter".
3418 * (T327007) htmlform: Correct validation for file input field.
3420 == MediaWiki 1.40.1 ==
3422 This is a security and maintenance release of the MediaWiki 1.40 branch.
3424 === Changes since MediaWiki 1.40.0 ===
3425 * Localisation updates.
3426 * (T333050, CVE-2023-45363) SECURITY: Fix infinite loop for self-redirects
3427 with variants conversion.
3428 * docs: Fix a few typos in MainConfigSchema.
3429 * (T290464) Add DiscussionTools bundling to release notes.
3430 * (T309714) mime: Add support for 'font/sfnt' mime type.
3431 * (T341434) WikiImporter: Improve error message output.
3432 * (T341737) ApiBase: Cast $id to string in filterIDs.
3433 * (T286291, T296188) Merge zh and zh-tw namespace translations back to zh-hans,
3434 zh-hant, zh-hk respectively.
3435 * (T337875) WRStats: Round up SequenceSpec::hardExpiry to the nearest integer.
3436 * (T237898) installer: Check MariaDB version in updater/installer.
3437 * (T342632) ApiComparePages: Add help url.
3438 * (T326182, T324903) EditPage: Add #[AllowDynamicProperties].
3439 * (T342351) rdbms: Fix postgres db function call.
3440 * (T343675) user: Use {@} to escape annotation when writting about annotation.
3441 * (T343797) LanguageWa: Fix double timezone adjustment.
3442 * (T343669) skins: Avoid function call on array.
3443 * (T326454) Update pear/mail to 1.5.1.
3444 * (T343622) docs: Set the <comment> tag back to optional.
3445 * (T330528) Upgrade wikimedia/html-formatter from 3.0.1 to 4.0.3.
3446 * Updated jQuery from v3.6.1 to v3.7.1.
3447 * (T337463) wdio-mediawiki: await saveScreenshot.
3448 * (T208477) $wgPrivilegedGroups – Users belonging in some of the listed groups
3449 will be audited more aggressively.
3450 * doc: Improve description of "type" in extension.schema.v2.json.
3451 * Added PrivilegedGroups attribute for extension.json / skin.json, which lets
3452 you add any new user groups you define to wgPrivilegedGroups (see above).
3453 * (T288624) MultiHttpClient: Unset $this->cmh after closing it.
3454 * (T345039) Do not run SkinAfterBottomScripts hook twice unconditionally.
3455 * (T265734) API Help: Note that parameters may be inherited from other context.
3456 * (T285545) i18n: Split apihelp for standard dir parameter.
3457 * (T285545) i18n: Split apihelp for redirects/linkshere/transcludedin/fileusage
3459 * (T285545) i18n: Split apihelp for parameter list=deletedrevs&drprop=.
3460 * (T285545) i18n: Split apihelp for parameter list=allpages&apprexpiry=.
3461 * (T285545) i18n: Split apihelp for parameter action=opensearch&redirects=.
3462 * (T285545) i18n: Split apihelp for parameter action=managetags&operation=.
3463 * (T285545) api: Add message for list=watchlist&wlprop=expiry.
3464 * (T334011) ApiComparePages: expose 'difftype' param if wikidiff2 is installed.
3465 * (T342633) api: Add message for action=compare&prop=timestamp.
3466 * API: revids=… does not necessarily return the queried revisions.
3467 * (T235207) Get correct main page in API call examples.
3468 * doc: Make extension.schema.v2.json a valid JSON schema.
3469 * (T326696) Add since tag to UserOptionsManager::MAX_BYTES_OPTION_VALUE.
3470 * (T310378) Ensure that installer i18n is loaded by update.php.
3471 * updateSpecialPages.php: Avoid implicit float conversion on modulo.
3472 * (T347227) ImportReporter: Make callback functions public.
3473 * (T346898) importDump: Unconditionally call $importer->setUsernamePrefix().
3474 * (T204470) Remove feedback messages from RawHtmlMessages.
3475 * (T127268) MainConfigSchema: Update doc for "ResourceLoader: Default File
3476 modules to mobile and desktop targets".
3477 * (T264765, CVE-2023-45364) SECURITY: Article: Check permissions before
3478 showing link to view deleted revision.
3479 * doc: Improve description of type in extension.schema.v1.json.
3480 * (T340217, CVE-2023-45359) SECURITY: Vector 2022: Numerous unescaped messages
3481 leading to potential XSS.
3482 * (T340220, CVE-2023-45361) SECURITY: Vector 2022: vector-intro-page message
3483 is assumed to yield a valid title.
3484 * (T340221, CVE-2023-45360) SECURITY: XSS via 'youhavenewmessagesmanyusers'
3485 and 'youhavenewmessages' messages.
3486 * (T341529, CVE-2023-45362) SECURITY: diff-multi-sameuser ("X intermediate
3487 revisions by the same user not shown") ignores username suppression.
3488 * (T341565, CVE-2023-3550) SECURITY: Stored XSS when uploading crafted
3489 XML file to Special:Upload (non standard configuration).
3491 == MediaWiki 1.40.0 ==
3493 === Changes since MediaWiki 1.40.0-rc.0 ===
3494 * Localisation updates.
3495 * (T330464) Work around argument corruption bug in XMLReader::open.
3496 * build: Updating mediawiki/mediawiki-phan-config to 0.12.1.
3497 * Fix frame and frameless rdfa depending on file existing.
3498 * (T329214) Pass whether current rev of file exists to
3499 Linker::makeBrokenImageLinkObj.
3500 * (T334659) Handle thumb errors when !$enableLegacyMediaDOM.
3501 * A manualthumb that doesn't exist should be considered a thumb error.
3502 * (T313157) IndexPager: Also protect against $offset being 0.
3503 * (T335612, CVE-2023-36674) SECURITY: Move badFile lookup to Linker.
3505 == MediaWiki 1.40.0-rc.0 ==
3507 == Upgrading notes for 1.40 ==
3508 Don't forget to always back up your database before upgrading!
3510 See the file UPGRADE for more detailed per-version upgrade instructions from the
3511 oldest supported upgrading version, MediaWiki 1.35.
3513 Some specific notes for MediaWiki 1.40 upgrades are below:
3514 * Maintenance scripts should now be executed using maintenance/run.php, e.g.
3515 maintenance/run.php update not maintenance/update.php as before.
3516 * Five extensions have now been bundled with MediaWiki:
3517 * The DiscussionTools extension, which provides a forum-like editing
3518 experience for wikitext-based discussion pages.
3519 * The Echo extension, which provides a system of user notifications.
3520 * The Linter extension, which warns about use of deprecated wikitext.
3521 * The LoginNotify extension, which warns users about failed attempted logins.
3522 * The Thanks extension, which lets users thank editors for edits.
3523 * The Renameuser extension has been moved to MediaWiki core. It is now possible
3524 to rename users without installing an extension. The extension had already
3525 been bundled with MediaWiki since 1.18.
3527 For notes on 1.39.x and older releases, see HISTORY.
3529 === Configuration changes for system administrators in 1.40 ===
3530 * When computing PBKDF2 password hashes, MediaWiki now detects and uses OpenSSL
3531 support if available, unless $wgPasswordConfig['pbkdf2']['class'] is set in
3532 LocalSettings.php. OpenSSL is more efficient, so if that setting is present,
3533 you should remove it (or set it to 'Pbkdf2PasswordUsingOpenSSL' if possible).
3534 If users get an internal error when trying to log in, you can try setting it
3535 to 'Pbkdf2PasswordUsingHashExtension'. In particular, this would be necessary
3536 if existing PBKDF2 password hashes were computed using a hash algorithm other
3537 than "sha512" or "sha256" (the current and prior defaults).
3538 * You should configure your webserver to return the http header
3539 'X-Content-Type-Options: nosniff' for the /images directory. This will
3540 instruct browsers to not apply content sniffing when accessing the files.
3541 MediaWiki before 1.40 shipped with a content sniffer which disallowed
3542 potentially dangerous files at upload time, but this protection has now been
3543 removed in favor of this 'X-Content-Type-Options: nosniff' header and the
3544 installer will return a warning when it is not in place.
3545 * Support for MW_USE_LEGACY_DEFAULT_SETTINGS has been removed, setting this
3546 constant will not have any effect. Use of MW_USE_LEGACY_DEFAULT_SETTINGS
3547 had been deprecated since 1.39.
3549 ==== New configuration ====
3550 * $wgThumbnailNamespaces - This setting lets you define the namespaces for which
3551 image thumbnails (or a placeholder in the absence of a thumbnail) will be
3552 displayed on Special:Search.
3553 * $wgResourceLoaderClientPreferences – This experimental flag lets you enable
3554 client-side preferences for logged-out users.
3555 * $wgExternalLinksSchemaMigrationStage – This temporary flag lets you control
3556 the migration stage for the new schema for the external links database table.
3557 Ignore it unless you have a large wiki farm with complex migration needs.
3558 * $wgCommentTempTableSchemaMigrationStage – This temporary flag lets you control
3559 the migration stage for the temporary comment database table, from revision.
3560 Ignore it unless you have a large wiki farm with complex migration needs.
3561 * $wgSpecialContributeSkinsEnabled – This setting lets you list skins on which
3562 Special:Contribute is available, for where others don't work for the feature.
3563 * $wgPrivilegedGroups – Users belonging in some of the listed groups will be
3564 audited more aggressively.
3566 ==== Changed configuration ====
3567 * $wgPasswordPolicies – This setting, which controls what makes for a valid
3568 password for wiki accounts, has been adjusted to raise the minimal password
3569 length from 1 to 8 characters. The initial limit of 1 has been in place since
3570 MediaWiki 1.26. If you wish to allow shorter passwords, you can over-ride it
3571 in your LocalSettings following the guidance on MediaWiki.org.
3572 * (T254045) New accounts can no longer use an equals sign (=) in their
3573 usernames because of issues it causes in wikitext syntax. This can be
3574 adjusted by changing the value of $wgInvalidUsernameCharacters.
3575 * (T314318) $wgParserEnableLegacyMediaDOM – This setting has been changed, so
3576 the alternative modern HTML structure for media is now the default. You can
3577 disable it for now by over-riding this back to `true` in LocalSettings, but
3578 this configuration will be removed in future versions of MediaWiki. For more
3579 details, see the documentation at:
3580 https://www.mediawiki.org/wiki/Parsoid/Parser_Unification/Media_structure/FAQ
3581 * $wgWatchlistExpiryMaxDuration – This setting, which controls the maximum
3582 allowed duration for users to set their temporary watchlist entries for expiry
3583 if that feature is enabled, has been increased from 6 months to 1 year.
3585 ==== Removed configuration ====
3586 * $wgShellboxUrl – This setting, deprecated in 1.37, has now been removed; use
3587 $wgShellboxUrls instead.
3588 * $wgMainWANCache and $wgWANObjectCaches – These never-used settings have been
3589 removed. To inject WANObjectCache parameters, use $wgWANObjectCache instead.
3590 These variables were introduced for multi-DC wiki farms to add a separate
3591 memcached proxy for cross-DC relaying of purges but never used because
3592 WANObjectCache works based on route prefixes, which can be transparently
3593 handled by the main memcached proxy.
3594 * $wgParserTestFiles – This setting, deprecated in 1.30, has now been removed;
3595 extensions can place their parser test files in `tests/parser` instead.
3596 * (T231412) $wgAutoloadAttemptLowercase – This setting, deprecated in 1.35, no
3597 longer has any effect. If you run into difficulties, fix the names of miscased
3599 * (T309787) $wgVerifyMimeTypeIE – This setting, to provide extra security checks
3600 for very old versions of Internet Explorer clients, was removed. These user
3601 agents aren't used in practice, and haven't been served JavaScript content for
3604 === New user-facing features in 1.40 ===
3605 * Special:Search can now show thumbnails for results for titles outside NS_FILE.
3606 This is controlled via the new onSearchResultProvideThumbnail hook.
3607 * A new preference ('search-thumbnail-extra-namespaces') to allow users to
3608 control whether to show more thumbnails (per $wgThumbnailNamespaces)
3609 * (T324910) On pages using multi-content revisions, the raw content of a
3610 specific slot can be retrieved using the action=raw&slot=<role-name> query
3612 * (T313804) The preferences page now provides a search bar to find preferences,
3613 regardless of the tab on which they appear.
3615 === New developer features in 1.40 ===
3616 * The MediaWiki-Docker development environment is now configured to
3617 run on PHP 8.1 by default, up from PHP 7.4 now that that's EOL.
3618 * Vue development mode is enabled by default in DevelopmentSettings.php
3619 * (T277618) The @noVarDump annotation from the DebugInfoTrait tool can now be
3620 added to references to stop them from being expanded when their object is
3621 passed to var_dump(), to make its use for debugging more feasible.
3622 * The ApiSandbox will now by default request responses in the latest API format,
3623 rather than the original format. Users can set `formatversion` to a different
3625 * A new hook, GetBlockErrorMessageKeyHook, allows extensions' block error
3626 messages to be received and displayed by BlockErrorFormatter.
3627 * A new hook, SpecialCreateAccountBenefits, lets extensions and local code set
3628 custom content on the signup page about the benefits of using an account.
3629 * (T321412) A new 'PageUndeleteComplete' hook has been added for more thorough
3630 information about a page post restoration than the 'PageUndelete' hook passes.
3631 This provides similar functionality to the 'PageDeleteComplete' hook.
3632 * The Linker::specialLink() method can now link to a Special page's with a sub-
3633 page or action parameter set, e.g. [[Special:Contributions/JohnDoe]].
3634 * The PHPUnit entrypoints (tests/phpunit/phpunit.php and vendor/bin/phpunit)
3635 now check if composer dependencies are up-to-date, like update.php, using
3636 CheckComposerLockUpToDate. To disable this check, use
3637 MW_SKIP_EXTERNAL_DEPENDENCIES=1 environment flag when running PHPUnit.
3638 * ManualLogEntry::setForceBotFlag() has been added to allow the forcing of the
3639 bot flag for log entries which are inserted to the recent changes.
3641 === External library changes in 1.40 ===
3643 ==== New external libraries ====
3644 * Added codex-design-tokens at v0.6.2.
3645 * Added symfony/polyfill-php81 at v1.28.0.
3646 * Added symfony/polyfill-php82 at v1.28.0.
3647 * Added symfony/polyfill-php83 at v1.28.0.
3648 * Added wikimedia/bcp-47-code at v1.0.0.
3650 ===== New development-only external libraries =====
3651 * Added wikimedia/langconv at v0.4.2.
3653 ==== Changed external libraries ====
3654 * Updated OOUI from v0.44.3 to v0.46.3.
3655 * Updated codex, codex-search, and codex-icons from v0.2.2 to v0.6.2.
3656 * Updated cssjanus/cssjanus from 2.1.0 to 2.1.1.
3657 * Updated guzzlehttp/guzzle 7.4.5 to 7.5.0.
3658 * Updated justinrainbow/json-schema from 5.2.11 to 5.2.12.
3659 * Updated pear/mail from 1.4.1 to 1.5.1.
3660 * Updated pear/net_smtp from 0.10.0 to 0.10.1.
3661 * Updated psr/container from 1.1.1 to 1.1.2.
3662 * Updated symfony/polyfill-php80 from 1.26.0 to 1.28.0.
3663 * Updated symfony/yaml from 5.4.10 to 5.4.23.
3664 * Updated wikimedia/html-formatter from 3.0.1 to 4.0.3.
3665 * Updated wikimedia/less.php from 3.1.0 to 4.0.0.
3666 * Updated wikimedia/object-factory from 4.0.0 to 5.0.1.
3667 * Updated wikimedia/parsoid from 0.16.0 to 0.17.0.
3668 * Updated wikimedia/remex-html from 3.0.2 to 3.0.3.
3669 * Updated wikimedia/shellbox from 3.0.0 to 4.0.0.
3670 * Updated wikimedia/timestamp from 4.0.0 to 4.1.1.
3671 * Updated wikimedia/xmp-reader from 0.8.4 to 0.9.1.
3673 ===== Changed development-only external libraries =====
3674 * Updated QUnit from 2.18.2 to 2.19.4.
3675 * Updated api-testing from 1.5.0 to 1.5.1.
3676 * Updated composer/spdx-licenses from 1.5.6 to 1.5.7.
3677 * Updated eslint-config-wikimedia from 0.22.1 to 0.24.0.
3678 * Updated giorgiosironi/eris from ^0.10.0 to ^0.13.0.
3679 * Updated grunt from 1.5.2 to 1.6.1.
3680 * Updated grunt-banana-checker from 0.9.0 to 0.10.0.
3681 * Updated grunt-eslint from 24.0.0 to 24.0.1.
3682 * Updated karma from 6.3.15 to 6.4.1.
3683 * Updated mediawiki/mediawiki-codesniffer from 38.0.0 to 41.0.0.
3684 * Updated mediawiki/mediawiki-phan-config from 0.11.1 to 0.12.1.
3685 * Updated php-parallel-lint/php-console-highlighter from 0.5 to 1.0.0.
3686 * Updated php-parallel-lint/php-parallel-lint from 1.3.1 to 1.3.2.
3687 * Updated phpunit/phpunit from 8.5.28 to 9.5.28.
3688 * Updated stylelint-config-wikimedia from 0.13.0 to 0.13.1.
3689 * Updated wikimedia/alea from 0.9.3 to 1.0.0.
3691 ==== Removed external libraries ====
3692 * jquery.throttle-debounce, deprecated since MediaWiki 1.33.
3693 * WVUI, deprecated since MediaWiki 1.39.
3695 === Action API changes in 1.40 ===
3696 * New `cancreateaccount` parameter on action=query&meta=userinfo that allows
3697 you to check if the user can create an account. Some of the errors that have
3698 previously been returned by action=query&list=users&usprop=cancreate are now
3701 === Languages updated in 1.40 ===
3702 MediaWiki supports over 400 languages. Many localisations are updated regularly.
3703 Below only new and removed languages are listed, as well as changes to languages
3704 because of Phabricator reports.
3706 * (T300378) Added language support for Toki Pona (tok).
3707 * (T320465) Added language support for Magahi (mag).
3708 * (T320912) Added language support for Arakanese (rki).
3709 * (T323971) Added language support for Khakas (kjh).
3710 * (T326526) Added language support for Igala (igl).
3711 * (T329476) Added language support for Kusaal (kus).
3712 * (T330266) Added language support for Southern Dagaare (dga).
3713 * (T331596) Added language support for Obolo (ann).
3714 * (T331597) Added language support for Nogai (nog).
3715 * (T331599) Added language support for Wolaytta (wal).
3716 * (T295637) Add no to fallback chain of nb and nn.
3718 === Breaking changes in 1.40 ===
3719 * OutputPage::enableClientCache no longer accepts a parameter, nor does it
3720 return the current value. It simply sets the OutputPage::mEnableClientCache
3721 to true. Use OutputPage::disableClientCache to disable client side caching
3723 * ResourceLoader::makeMessageSetScript, unused since 1.26, has been removed
3724 without deprecation.
3726 - The internal protected method Skin::getFooterLinks() was removed.
3727 It had no known usages. Different from SkinTemplate::getFooterLinks.
3728 - The internal public method Skin::getSiteFooterLinks() was removed.
3729 It had no known usages.
3730 * The 'oojs-router' module has been removed without deprecation in favour
3731 of the 'mediawiki.router' wrapper module.
3732 * BagOStuff::makeKeyInternal(), deprecated for public use in 1.36, is now a
3733 protected method of MediumSpecificBagOStuff.
3734 * WANObjectCache::reap() and WANObjectCache::reapCheckKey(), deprecated since
3735 1.39, have been removed.
3736 * The EnqueueJob class, unused since 1.31, has been removed without
3738 * JobQueueGroup::singleton() and ::destroySingletons(), deprecated since 1.37,
3740 * JobRunner no longer supports manually calling the constructor,
3741 use MediaWikiServices::getInstance()->getJobRunner() instead.
3742 * JobRunner::setLogger, deprecated since 1.35, has been removed.
3743 * ContextSource::getStats, deprecated since 1.27, has been removed.
3744 * The following public properties of Parser, deprecated in 1.35,
3745 have been made private: Parser::$mLinkId, Parser::$mIncludeSizes,
3746 Parser::$mDoubleUnderscore, Parser::$mShowToc, Parser::$mRevisionId,
3747 Parser::$mRevisionTimestamp, Parser::$mRevisionUser, Parser::$mRevisionSize,
3748 Parser::$mInputSize, Parser::$mInParse, Parser::$mFirstCall,
3749 Parser::$mGeneratedPPNodeCount
3750 * The MWGrants class, deprecated since 1.38, has been removed.
3751 * PageProps::getInstance(), deprecated since 1.38, has been removed.
3752 * Global functions wfReadOnly and wfReadOnlyReason, deprecated since 1.38, have
3754 * Global function wfQueriesMustScale, deprecated since 1.39, has been removed.
3755 * Global function wfLogProfilingData, deprecated since 1.38, has been removed.
3756 * The HTMLCacheUpdate class, deprecated since 1.34, has been removed.
3757 * Linker::normaliseSpecialPage(), deprecated since 1.35, has been removed.
3758 * MWTimestamp::getHumanTimestamp(), deprecated since 1.26, has been removed.
3759 * Collation::singleton() and ::factory(), deprecated since 1.37, have been
3761 * SpecialVersion::listToText() and SpecialVersion::arrayToString()
3762 have become private or internal without deprecation.
3763 * The 'ParserTestFiles' key in the schema for extension.json has been removed.
3764 This was deprecated in 1.30 and the corresponding $wgParserTestFiles
3765 configuration variable has also been removed in this release. Extensions
3766 can put parser test files in their `tests/parser` directory to have them
3768 * DBLockManager, MySqlLockManager, and PostgreSqlLockManager have been
3769 removed without deprecation.
3770 * MediaWikiTestCaseTrait::checkPHPExtension() has been removed without
3771 deprecation. Use PHPUnit @requires annotations instead.
3772 * EditPage::getCopywarn(), deprecated since 1.38, has been removed.
3773 * EditPage::getCopyrightWarning() now requires a MessageLocalizer parameter.
3774 Use of other parameter types or omitting it was deprecated since 1.38.
3775 * Action constructor now requires Article and IContextSource parameters.
3776 Use of other parameter types or omitting them was deprecated since 1.35.
3777 * Article::viewRedirect(), deprecated since 1.30, has been removed.
3778 * Title::getNotificationTimestamp(), deprecated since 1.35, has been removed.
3779 * WikiRevision::$fileIsTemp property, deprecated since 1.29, has been removed.
3780 * Use of CommentStore::insertWithTempTable() with 'img_description' is no
3781 longer supported, it was deprecated since 1.32. Use CommentStore::insert()
3783 * Return values in the parameter $pageLang of the PageContentLanguage hook with
3784 other types than a Language object, deprecated since 1.33 & emitting warnings
3785 since 1.38, now throws an exception.
3786 * FormatMetadata::flattenArrayContentLang(), deprecated since 1.36, has been
3788 * WikiRevision::downloadSource() and ::importUpload(), deprecated since 1.31,
3790 * DataUpdate::runUpdates(), deprecated since 1.28, has been removed.
3791 * CdnCacheUpdate::newFromTitles(), deprecated since 1.35, has been removed.
3792 * HtmlFileCacheUpdate::newFromTitles(), deprecated since 1.37, has been
3794 * BaseTemplate::renderAfterPortlet() and ::getAfterPortlet(), has been removed.
3795 Use the corresponding methods in Skin class.
3796 * DifferenceEngine::textDiff(), deprecated since 1.32, has been removed.
3797 * Skin::getSearchPageTitle() and Skin::setSearchPageTitle(), deprecated since
3798 1.38, have been removed.
3799 * DifferenceEngine::getDiffBodyCacheKey(), deprecated since 1.31, has been
3801 * ForeignDBViaLBRepo::getMasterDB(), LocalRepo::getMasterDB(), and
3802 JobQueueDB::getMasterDB(), deprecated since 1.37, have been removed.
3803 * Clarified that the InitializeArticleMaybeRedirect hook should not change
3804 its $article parameter; the behavior when doing so was previously
3806 * IDatabase::ping()'s $rtt parameter was removed without deprecation.
3807 * IDatabase::setBigSelects(), unused, was removed without deprecation.
3808 * IDatabase::attributesFromType(), unused, was removed without deprecation.
3809 * IMaintainableDatabase::deadlockLoop() was removed without deprecation.
3810 * DatabasePostgres::remappedTableName(), deprecated since 1.37, has been
3812 * ILBFactory::getChronologyProtectorClientId and ::commitAll, unused, were
3813 removed without deprecation.
3814 * LoadBalancer::haveIndex() and ::isNonZeroLoad(), deprecated in 1.34,
3816 * LoadBalancer::getLazyConnectionRef(), deprecated in 1.38, has been removed.
3817 * ILBFactory::forEachLB(), deprecated in 1.39, has been removed.
3818 * LoadBalancer::getTransactionRoundStage and ::commitAll, unused, were
3819 removed without deprecation.
3820 * ILoadBalancer::getLaggedReplicaMode, unused, was removed without
3821 deprecation. Use ILBFactory::laggedReplicaUsed() instead.
3822 * Optional parameters of ILoadBalancer::waitForPrimaryPos(), $pos and $timeout
3823 have been removed without deprecation as they are unused.
3824 * LoadMonitorMysql was removed without deprecation. Use LoadMonitor instead.
3825 * IDatabase::selectDB(), deprecated since 1.32, has been removed.
3826 Use IDatabase::selectDomain() instead.
3827 * The following deprecated hooks have been removed:
3828 - BaseTemplateAfterPortlet, deprecated in 1.35
3829 - BeforeParserFetchTemplateAndtitle, deprecated in 1.36
3830 - BeforeParserrenderImageGallery, deprecated in 1.35
3831 - InternalParseBeforeSanitize, deprecated in 1.35
3832 - LinksUpdateConstructed, deprecated in 1.38
3833 - LinksUpdateAfterInsert, deprecated in 1.38
3834 - ParserSectionCreate, deprecated in 1.35
3835 - ResourceLoaderTestModules, deprecated in 1.33
3836 - SpecialMuteSubmit, deprecated in 1.35
3837 - UserLoadFromDatabase, deprecated in 1.37
3838 - UserSetCookies, deprecated in 1.27
3839 * RemexDriver::__construct() now only accepts a ServiceOptions instance as
3840 the only argument. Passing an array was deprecated since 1.36.
3841 * TidyDriverBase::supportsValidate(), deprecated since 1.36, has been removed.
3842 * RevDelList::reloadFromMaster(), deprecated since 1.37, has been removed.
3843 * ExternalStoreDB::getMaster(), deprecated since 1.37, has been removed.
3844 * DeletePage::deletionWasScheduled(), deprecated since 1.38, has been removed.
3845 * The SearchResultProvideThumbnailHook (which was unstable) and now no longer
3846 used, has been removed. Use SearchResultProvideThumbnailHook in the search
3847 namespace: MediaWiki\Search\Hook\SearchResultProvideThumbnailHook.
3848 * Command::cgroup(), deprecated since 1.36, has been removed.
3849 * When running tests, the serialize_precision INI setting is now set to -1
3850 (current PHP default) instead of 17. Extension tests may need to be adjusted
3851 accordingly; string representations of floating-point numbers in serialized
3852 or JSON-encoded data may change.
3853 * WikiRevision::$sha1base36 is now private.
3854 * IcuCollation::getUnicodeVersionForICU() was removed without deprecation.
3855 * LinkFilter::supportsIDN() was removed without deprecation.
3856 * The ability to pass null for the errorData parameter of HttpException and
3857 LocalizedHttpException was removed without deprecation.
3858 * ApiQueryExtLinksUsage::getProtocolPrefix() and ::prepareProtocols() have
3859 been moved to LinkFilter with the same name.
3860 * .box-sizing() Less mixin, deprecated since 1.37, has been removed.
3861 Use CSS box-sizing now.
3862 * MimeAnalyzer::getIEMimeTypes() and IEContentAnalyzer were removed.
3863 * Language::commafy and mw.language.commafy, deprecated since 1.36, has been
3865 * BagOStuff::decr(), deprecated since 1.28, has been removed.
3866 * BagOStuff::incr(), deprecated since 1.28, has been removed.
3868 === Deprecations in 1.40 ===
3870 - The public Skin::footerLink is deprecated.
3871 Use SkinComponentMenuLink::getTemplateData instead.
3872 It now emits deprecation warnings.
3873 - The protected Skin::lastModified is deprecated, and marked for @internal use
3874 and now emits deprecation warnings.
3875 * Manipulating $wgHooks after initialization is deprecated.
3876 HookContainer::register() or HookContainer::scopedRegister() should be
3877 used instead. During initialization, SettingsBuilder::registerHookHandlers
3878 can be used. For backwards compatibility, $wgHooks is replaced by a fake
3879 array that calls methods on HookContainer. $wgHooks can still be used as a
3880 configuration variable, only dynamic manipulation is deprecated.
3881 * ParserOptions::{get,set}ExternalLinkTarget() and
3882 ParserOptions::{get,set}MaxTemplateDepth() have been deprecated and marked
3883 for @internal use only.
3884 * ParserOutput::getCategories() has been deprecated; use ::getCategoryNames()
3885 and ::getCategorySortKey() instead.
3886 * ParserOutput::{get,set}TOCHTML() has been deprecated; use
3887 ::{get,set}TOCData() instead.
3888 * TransactionProfiler::setSilenced() is deprecated.
3889 Use TransactionProfiler::silenceForScope() instead.
3890 * The following methods in the Title class, deprecated since 1.37, emits
3891 deprecations warnings:
3892 - ::areCascadeProtectionSourcesLoaded()
3893 - ::areRestrictionsCascading()
3894 - ::areRestrictionsLoaded()
3895 - ::getAllRestrictions()
3896 - ::getCascadeProtectionSources()
3897 - ::getFilteredRestrictionTypes()
3898 - ::getRestrictionExpiry()
3899 - ::getRestrictionTypes()
3900 - ::getRestrictions()
3901 - ::isCascadeProtected()
3903 - ::isSemiProtected()
3904 - ::loadRestrictionsFromRows()
3905 * The class Pbkdf2Password was renamed to Pbkdf2PasswordUsingHashExtension,
3906 and the old name is now deprecated.
3907 * WikiPage::factory(), ::newFromID() and ::newFromRow, deprecated in 1.36, now
3908 emit deprecation warnings.
3909 * Manually constructing a LinkBatch object, deprecated in 1.35, now emits
3910 deprecation warnings. Use LinkBatchFactory instead.
3911 * Calling MediaWikiSite::getFileUrl() without a $path argument is deprecated.
3912 If you need the "generic" full file path, with $1 not replaced by anything,
3913 call $site->getPath( MediaWikiSite::PATH_FILE ) directly.
3914 * In SessionConsistentConnectionManager, the methods
3915 getReadConnectionRef() and getWriteConnectionRef() are deprecated;
3916 the ConnectionManager methods they override had been deprecated already.
3917 * Database::wasErrorReissuable() is deprecated.
3918 * MimeAnalyzer::isPHPImageType was not used and will now emit deprecation
3920 * GenericArrayObject, originally developed for Wikibase and SiteList, has been
3921 deprecated. Use built-in ArrayObject directly instead.
3922 * Parser::getFunctionLang() has been deprecated; use
3923 Parser::getTargetLanguage() instead.
3924 * MagicWordArray::getVariableRegex(), deprecated in 1.36, now emits deprecation
3926 * AbstractBlock::getId() now emits deprecation warnings in case of cross-wiki
3927 access. This use was deprecated in 1.38.
3928 * CommentStore::getStore, deprecated in 1.31, now emits deprecation warnings.
3929 * BacklinkCache::get(), ::getLinks() and ::getCascadeProtectedLinks(),
3930 deprecated in 1.37, now emit deprecation warnings.
3931 * LanguageConverterFactory::isTitleConversionDisabled(), deprecated in 1.36,
3932 now emits deprecation warnings.
3933 * Language::getFileName(), ::getMessagesFileName() and
3934 ::getJsonMessagesFileName(), deprecated in 1.34,
3935 now emit deprecation warnings.
3936 * Language::getLocalisationCache(), deprecated in 1.34, also
3937 Language::getMessagesFor(), ::getMessageFor() and ::getMessageKeysFor(),
3938 deprecated in 1.35, now emit deprecation warnings.
3939 * User::incEditCount(), deprecated in 1.37, now emits deprecation warnings.
3940 * User::idFromName(), deprecated in 1.37, now emits deprecation warnings.
3941 * The ability to override and use User::$mRights, deprecated in 1.34, now emits
3942 deprecation warnings.
3943 * IndexPager::getHookContainer is deprecated and emits deprecation warnings.
3944 Inject a HookContainer instead.
3945 * User::getGroupPermissions(), ::getGroupsWithPermission() and
3946 ::groupHasPermission(), deprecated in 1.34, now emit deprecation warnings.
3947 * PermissionManager::getGroupPermissions(), ::getGroupsWithPermission() and
3948 ::groupHasPermission(), deprecated in 1.36, now emit deprecation warnings.
3949 * Global function wfShowingResults is deprecated and emits deprecation warnings.
3950 * UserGroupMembership::getGroupMemberName is deprecated, the deprecation of
3951 UserGroupMembership::getGroupName in 1.38 missed a release note.
3952 Use Language::getGroupMemberName or ::getGroupName instead.
3953 * AbstractBlock::getPermissionsError(), deprecated in 1.35, now emits
3954 deprecation warnings.
3955 * SearchEngine::getNearMatcher() and ::getDefaultMatcher() have been deprecated
3956 in favor of MediaWikiServices::getInstance()->getTitleMatcher().
3957 * SearchNearMatcher class has been deprecated in 1.40 in favor of TitleMatcher.
3958 * The following functions are deprecated: User::isBlockedGlobally and
3959 User::getGlobalBlock. Use User::getBlock instead.
3960 * The UserIsBlockedGlobally hook is deprecated.
3961 Use GetUserBlock hook instead.
3962 * The SystemBlock type global-block is deprecated.
3963 GlobalBlocks are now added into CompositeBlocks via the GetUserBlock hook.
3964 * Language::isWellFormedLanguageTag(), deprecated in 1.39, now emits deprecation
3965 notices. Please use LanguageCode::isWellFormedLanguageTag() instead.
3966 * Language::fetchLanguageNames() and ::fetchLanguageName(), deprecated in 1.34,
3967 now emit deprecation warnings.
3968 * Language::getFallbackFor(), ::getFallbacksIncludingSiteLanguage() and
3969 ::getFallbacksFor(), deprecated in 1.35, now emit deprecation warnings.
3970 * Language::isSupportedLanguage(), ::isValidCode(), ::isValidBuiltInCode() and
3971 ::isKnownLanguageTag(), deprecated in 1.34, now emit deprecation warnings.
3972 * Language::getConverter(), ::autoConvert(), ::autoConvertToAllVariants(),
3973 ::convert(), ::convertNamespace(), ::convertHtml(), ::convertCategoryKey(),
3974 ::getVariants(), ::hasVariants(), ::hasVariant(), ::getDefaultVariant(),
3975 ::getURLVariant(), ::getExtraHashOptions(), ::getConvRuleTitle(),
3976 deprecated in 1.35, now emit deprecation warnings.
3977 * Language::factory() and ::getParentLanguage(), deprecated in 1.35, now emit
3978 deprecation warnings.
3979 * Executing maintenance scripts directly is deprecated. The maintenance/run.php
3980 entry point should be used instead.
3981 * MWHttpRequest::factory, deprecated in 1.34, now emits deprecation warnings.
3982 * Job::factory is deprecated, use JobFactory::newJob instead.
3983 * Http::request(), ::get(), ::post(), ::userAgent() and ::isValidURI(),
3984 deprecated in 1.34, now emit deprecation warnings.
3985 * Title.js's confusingly-named getName() and getNameText() methods, for using
3986 media files' pages, have been renamed to getFileNameWithoutExtension() and
3987 getFileNameTextWithoutExtension() respectively. The old names are deprecated.
3988 * Command::whitelistPaths() should now emit deprecation warnings. Make use of
3989 Command::allowPaths/disallowPaths() instead.
3990 * When manually creating an HTMLFormField (i.e. not via HTMLForm::factory),
3991 it is deprecated to not include the "parent" field as one of the parameters.
3992 * The MWException class is deprecated. Use native exceptions, either directly
3994 * SelectQueryBuilder::lockForUpdate() is deprecated. Use ::forUpdate() with
3995 ::fetchRowCount() or ::acquireRowLocks() instead.
3996 * ArticleUndelete hook is deprecated. Use PageUndeleteComplete hook instead.
3997 * The global function wfReportTime() is now deprecated.
3998 * PrevNextNavigationRenderer, deprecated in 1.39, now emits deprecation
4000 * PagerNavigationBuilder::setMakeLinkCallback(), deprecated in 1.39, now emits
4001 deprecation warnings.
4002 * IndexPager::getPagingLinks(), IndexPager::getLimitLinks() and
4003 IndexPager::buildPrevNextNavigation(), deprecated in 1.39, now emit
4004 deprecation warnings.
4005 * Overriding the method IndexPager::makeLink(), deprecated in 1.39, now emits
4006 deprecation warnings.
4007 * The following class names were namespaced (and, for the special pages,
4008 also renamed), and the old class names are now deprecated:
4009 - MostimagesPage -> MediaWiki\Specials\SpecialMostImages
4010 - MovePageForm -> MediaWiki\Specials\SpecialMovePage
4011 - UserrightsPage -> MediaWiki\Specials\SpecialUserRights
4012 - WantedFilesPage -> MediaWiki\Specials\SpecialWantedFiles
4013 - WantedPagesPage -> MediaWiki\Specials\SpecialWantedPages
4014 - DerivativeRequest -> MediaWiki\Request\DerivativeRequest
4015 - FauxRequest -> MediaWiki\Request\FauxRequest
4016 - FauxRequestUpload -> MediaWiki\Request\FauxRequestUpload
4017 - PathRouter -> MediaWiki\Request\PathRouter
4018 - WebRequestUpload -> MediaWiki\Request\WebRequestUpload
4019 - HeaderCallback -> MediaWiki\Request\HeaderCallback
4020 - FauxResponse -> MediaWiki\Request\FauxResponse
4021 - WebResponse -> MediaWiki\Request\WebResponse
4022 - ForeignResourceManager ->
4023 MediaWiki\ResourceLoader\ForeignResourceManager
4024 - DummyLinker -> MediaWiki\Linker\DummyLinker
4025 - Linker -> MediaWiki\Linker\Linker
4026 - PageProps -> MediaWiki\Page\PageProps
4027 - MagicWord -> MediaWiki\Parser\MagicWord
4028 - MagicWordArray -> MediaWiki\Parser\MagicWordArray
4029 - MagicWordFactory -> MediaWiki\Parser\MagicWordFactory
4030 - RawMessage -> MediaWiki\Language\RawMessage
4031 - ActorMigration -> MediaWiki\User\ActorMigration
4032 - ActorMigrationBase -> MediaWiki\User\ActorMigrationBase
4033 - CategoriesRdf -> MediaWiki\Category\CategoriesRdf
4034 - Category -> MediaWiki\Category\Category
4035 - CategoryViewer -> MediaWiki\Category\CategoryViewer
4036 - TrackingCategories -> MediaWiki\Category\TrackingCategories
4037 - EditPage -> MediaWiki\EditPage\EditPage
4038 - TemplatesOnThisPageFormatter ->
4039 MediaWiki\EditPage\TemplatesOnThisPageFormatter
4040 - ContentSecurityPolicy -> MediaWiki\Request\ContentSecurityPolicy
4041 - FormOptions -> MediaWiki\Html\FormOptions
4042 - Html -> MediaWiki\Html\Html
4043 - HtmlHelper -> MediaWiki\Html\HtmlHelper
4044 - TemplateParser -> MediaWiki\Html\TemplateParser
4045 - FormOptions -> MediaWiki\Html\FormOptions
4046 - WikiMap -> MediaWiki\WikiMap\WikiMap
4047 - WikiReference -> MediaWiki\WikiMap\WikiReference
4048 - MediaWiki\BadFileLookup -> MediaWiki\Page\File\BadFileLookup
4049 - FileDeleteForm -> MediaWiki\Page\File\FileDeleteForm
4050 - MergeHistory -> MediaWiki\Page\MergeHistory
4051 - MovePage -> MediaWiki\Page\MovePage
4052 - ProtectionForm -> MediaWiki\Page\ProtectionForm
4053 - LinkFilter -> MediaWiki\ExternalLinks\LinkFilter
4054 - TitleArray -> MediaWiki\Title\TitleArray
4055 - TitleArrayFromResult -> MediaWiki\Title\TitleArrayFromResult
4056 - TitleFactory -> MediaWiki\Title\TitleFactory
4057 - Title -> MediaWiki\Title\Title
4058 - ForkController -> MediaWiki\Maintenance\ForkController
4059 - OrderedStreamingForkController ->
4060 MediaWiki\Maintenance\OrderedStreamingForkController
4061 - AtomFeed -> MediaWiki\Feed\AtomFeed
4062 - ChannelFeed -> MediaWiki\Feed\ChannelFeed
4063 - FeedItem -> MediaWiki\Feed\FeedItem
4064 - FeedUtils -> MediaWiki\Feed\FeedUtils
4065 - RSSFeed -> MediaWiki\Feed\RSSFeed
4066 - DeprecatedGlobal -> MediaWiki\StubObject\DeprecatedGlobal
4067 - StubGlobalUser -> MediaWiki\StubObject\StubGlobalUser
4068 - StubObject -> MediaWiki\StubObject\StubObject
4069 - StubUserLang -> MediaWiki\StubObject\StubUserLang
4070 * ContentHandler::getParserOutputForIndexing() and ::getDataForSearchIndex()
4071 now take an optional RevisionRecord parameter.
4072 * The SearchDataForIndex hook is deprecated in favor of SearchDataForIndex2
4073 * IDatabase::lastQuery and IReadableDatabase::lastQuery are deprecated without
4074 without replacement.
4076 === Other changes in 1.40 ===
4077 * Calling RecentChange::doMarkPatrolled() with $auto = true has no effect and
4078 logs a warning. Since 1.31, it would mark the change as manually patrolled,
4079 but would not log it as such in patrol log and would still require
4080 'autopatrol' right (not 'patrol'). Generally, whether a change should become
4081 autopatrolled, is usually determined before it's inserted in the database.
4082 * In versions of MediaWiki before 1.39, the table of contents location
4083 was marked internally with <mw:toc>...</mw:toc>; in version 1.39
4084 this was changed to an empty tag <mw:tocplace />. In 1.40 this has
4085 been changed a final time to use an empty <meta> tag for future
4086 Parsoid compatibility (see Parser::TOC_PLACEHOLDER). This may
4087 affect you if stale content is left in the ParserCache or if your
4088 skin did manual ToC replacement without using the recommended
4089 Parser::replaceTableOfContentsMarker() function.
4090 * Skins can now choose which Codex theme should be loaded by setting the
4091 SkinCodexThemes attribute in their skin.json file.
4092 * The parser test framework has been updated, and the 'pst', 'ill', 'cat'
4093 and 'showflags' options have slight differences in their output. These
4094 options are not much used outside core, but third parties may need to
4095 update parser tests.
4096 * (T332889, CVE-2023-36675) SECURITY: Fix escaping in BlockLogFormatter.
4100 MediaWiki 1.40 requires PHP 7.4.3 or later and the following PHP extensions:
4111 MariaDB is the recommended database software. MySQL, PostgreSQL, or SQLite can
4112 be used instead, but support for them is somewhat less mature.
4114 The supported versions are:
4116 * MariaDB 10.3 or higher
4117 * MySQL 5.7.0 or higher
4118 * PostgreSQL 10 or later
4119 * SQLite 3.8.0 or later
4121 == Online documentation ==
4122 Documentation for both end-users and site administrators is available on
4123 MediaWiki.org, and is covered under the GNU Free Documentation License (except
4124 for pages that explicitly state that their contents are in the public domain):
4126 https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
4129 A mailing list is available for MediaWiki user support and discussion:
4131 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
4133 A low-traffic announcements-only list is also available:
4135 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
4137 It's highly recommended that you sign up for one of these lists if you're
4138 going to run a public MediaWiki, so you can be notified of security fixes.
4141 There's usually someone online in #mediawiki on irc.libera.chat.
4145 PHP 8.0 workboard: https://phabricator.wikimedia.org/tag/php_8.0_support/
4146 PHP 8.1 workboard: https://phabricator.wikimedia.org/tag/php_8.1_support/
4147 PHP 8.2 workboard: https://phabricator.wikimedia.org/tag/php_8.2_support/
4148 PHP 8.3 workboard: https://phabricator.wikimedia.org/tag/php_8.3_support/
4150 == MediaWiki 1.39.10 ==
4152 This is a maintenance release of the MediaWiki 1.39 branch.
4154 === Changes since 1.39.9 ===
4155 * Fix issue related to backport of AbuseFilter patch for T372998.
4157 == Mediawiki 1.39.9 ==
4159 This is a security and maintenance release of the MediaWiki 1.39 branch.
4161 === Changes since 1.39.8 ===
4162 * Localisation updates.
4163 * (T303007) skins: Fix Skin::buildSidebar to not share cache between skins.
4164 * (T367918) When using the 'runMaintenance' method in a
4165 LoadExtensionSchemaUpdates hook handler, only the script's class name is
4166 required, not its path.
4167 * Clarify that $wgAllowCrossOrigin only applies to REST.
4168 * (T370380) installer: Support MW_SKIP_EXTERNAL_DEPENDENCIES in update.php.
4169 * composer.json: Add 5 more ext- to suggests.
4170 * resources: Fix 404 Not Found for foreign Financial-Times/polyfill-library.
4171 * ResourceLoader: Fix regression of color mapping in Less.php.
4172 * ResourceLoader: Upgrade wikimedia/less.php to 4.4.1.
4173 * SpecialExport: Prevent passing null to strtolower.
4175 == MediaWiki 1.39.8 ==
4177 This is a maintenance release of the MediaWiki 1.39 branch.
4179 === Changes since 1.39.7 ===
4180 * Localisation updates.
4181 * tests: Skip failing tests on php8.2 (and make pass).
4182 * (T326480) ApiResult: Make array ordering consistent across PHP versions.
4183 * (T352789, T287972) build: Raise TestingAccessWrapper from 2.0.0 to 3.0.0.
4184 * (T326478) tests: Create new classes to hold dynamic properties in auth tests.
4185 * (T326478) tests: Avoid dynamic properties in AuthenticationProvider Test.
4186 * (T326466) Introduce and use DynamicPropertyTestHelper.
4187 * tests: Skip failing tests on php8.3 (and make pass).
4188 * (T352910) tests: Use TestingAccessWrapper::newFromClass in session tests.
4189 * (T326478) tests: Avoid dynamic properties in auth tests.
4190 * (T326479, T361985) StatusValue: Allow passing arbitrary data to augment
4192 * tests: Remove dead code from WikiPageDbTest::assertPreparedEditNotEquals.
4193 * (T326478) tests: Avoid dynamic properties in SessionManagerTest.
4194 * (T361990) Upgrading wikimedia/parsoid (v0.16.3 => v0.16.4).
4195 * (T357760) Use i18n strings for truncated subpage message in SpecialMovePage.
4196 * ArticleTest: Skip testGetOrSetOnNewProperty() if PHP >= 8.2.
4197 * (T361982) Update wikimedia/less.php from 3.1.0 to 3.2.1.
4198 * debug: Update PsySH 0.11.1 -> 0.12.3.
4199 * (T361991) Fix slash-delimited regex from CLI on maintenence/grep.php.
4200 * (T362078) Improve RestAPIAdditionalRouteFiles path expansion.
4201 * (T352695) tests: Only set $dbSetup if setupTestDB() ends without throwing.
4202 * (T302186) Add title cache for Title::newMainPage().
4203 * objectcache: Fix flaky WANObjectCacheTest::testLockTSESlow case.
4204 * (T362272) api: Replace null $httpCode by 0 in ApiBase::dieWithErrorOrDebug.
4205 * (T150647, T216682) Make EncryptedPassword work with Argon2Password.
4206 * (T327220) Special:ApiHelp: Move widths and floats in CSS to media query.
4207 * (T364270) Fix long param names overlapping docs in API help pages.
4208 * MaintenanceRunner.php: Add trailing newline to error message.
4209 * wrapOldPasswords: Improve progress output and decrease batch size.
4210 * (T361367) ApiFeedWatchlist: Fix handling of array parameters.
4211 * (T132418) ResourceLoader: Add 1min grace via stale-while-revalidate
4213 * (T366130) EncryptedPassword: Store default parameters as strings.
4214 * Name the PagerTools array entries to allow hooks to unset them.
4216 == MediaWiki 1.39.7 ==
4218 This is a security and maintenance release of the MediaWiki 1.39 branch.
4220 === Changes since 1.39.6 ===
4221 * Localisation updates.
4222 * (T334992) Headings in the license pickers should not be selected.
4223 * (T353929) ActiveUsersPager: Count actions only once.
4224 * composer: Use @php instead of php.
4225 * (T326065) Indent JsonContent using tabs.
4226 * (T354541) authmanager: Improve AuthenticationRequest docs.
4227 * (T355017) Add missing space in Special:RecentChangesLinked.
4228 * (T355003) composer.json Add ext-bcmath and ext-gmp to suggests.
4229 * PHPVersionCheck: Update text to match currently supported upstream PHP
4231 * (T354045) API: mark HTML output as non-cacheable.
4232 * (T355530) filerepo: Fix img_major_mime for files with a non-standard
4234 * (T355530) MimeAnalyzer: Add @since to isValidMajorMimeType.
4235 * (T317489, T319202) Mark some parserTests on talk pages Parsoid only on
4237 * (T350594) Update wikimedia/parsoid to 0.16.3.
4238 * (T352554) ZhConverter: Fix language variant fallback chain.
4239 * (T357668) Parser::getExternalLinkAttribs: Don't set rel attribute to null.
4240 * LockManagerGroupIntegrationTest: Remove test depending on DBLockManager.
4241 * (T357808) LinkRendererTest: Add missing import for LinkTarget.
4242 * (T353305) ApiResetPassword: Allow both user and email parameters to be passed
4244 * (T358949) updateCollation: Explicitly cast $scale to int.
4245 * (T359055) api: Improve linking of language codes lists in top level i18n
4247 * (T359294) Make sure MovePage::isValidFileMove matches UploadBase::getTitle.
4248 * (T230245) Respect $maxConcurrency when queuing async FileOps.
4249 * (T352554) Follow-up "ZhConverter: Fix language variant fallback chain".
4250 * (T292237, T317451) build: Restore Doxygen output for MediaWiki release tags.
4251 * (T324903) HistoryPager: Add #[AllowDynamicProperties].
4252 * (T360850) Update Apache config syntax in .htaccess files.
4253 * (T309714, T354274) mime: Add support for 'font/woff' and 'font/woff2' mime
4255 * (T309714) mime: Make test cases use data provider.
4256 * (T331608) installer: Bear with schema drift caused by running old updater.
4257 * docs: Remove use of $IP from mwdocgen.php.
4258 * (T317451) build: Restore Doxygen output for MediaWiki release tags (take 3).
4259 * docs: Set stable permalink on markdown files.
4260 * (T357019) allow maintenance/deleteBatch.php to accept page ID.
4261 * (T355538, CVE-2024-34507) SECURITY: XSS in edit summary parser.
4262 * (T357760, CVE-2024-34506) SECURITY: Denial of service vector via GET request
4263 to Special:MovePage on pages with thousands of subpages.
4265 == MediaWiki 1.39.6 ==
4267 This is a security and maintenance release of the MediaWiki 1.39 branch.
4269 === Changes since MediaWiki 1.39.5 ===
4270 * Localisation updates.
4271 * Updated symfony/polyfill-php80 from 1.26.0 to 1.28.0.
4272 * Updated symfony/polyfill-php81 from 1.26.0 to 1.28.0.
4273 * (T344912) mail: Encode period (ascii 46) if it appears in encoded email
4275 * Added symfony/polyfill-php82.
4276 * Added symfony/polyfill-php83.
4277 * Updated symfony/yaml from 5.4.10 to 5.4.23.
4278 * (T329609) ApiQueryLanguageinfoTest: Do not pass a float to setFakeTime.
4279 * Updated wikimedia/timestamp from 4.0.0 to 4.1.1.
4280 * tests: Provide coverage for StatusValue::__toString.
4281 * StatusValue: Improve logging/debug output with multibyte characters.
4282 * (T347726, CVE-2023-51704) SECURITY: logging: Fix non-escaped messages
4284 * Updated wikimedia/parsoid from 0.16.1 to 0.16.2.
4285 * (T229992) LocalisationCache: Preserve fallback source language info.
4286 * (T275085) Fix logging Status objects to 'authevents' channel.
4287 * (T341310) DEVELOPERS.md: mention git clone and WSL.
4288 * (T351758) DEVELOPERS.md: reword WSL instructions to include best practices.
4289 * (T349115) LocalisationCache: Fix a rare case in fallback source language.
4290 * SwiftFileBackend: Fix "PHP Deprecated: strlen(): Passing null to parameter #1
4291 ($string) of type string is deprecated".
4292 * maintenance: Add missing parenthesis to SQL in attachLatest.php.
4293 * (T353472) maintenance: Fix join condition in DeduplicateArchiveRevId.
4295 == MediaWiki 1.39.5 ==
4297 This is a security and maintenance release of the MediaWiki 1.39 branch.
4299 === Changes since MediaWiki 1.39.4 ===
4300 * Localisation updates.
4301 * (T333050, CVE-2023-45363) SECURITY: Fix infinite loop for self-redirects
4302 with variants conversion.
4303 * docs: Fix a few typos in MainConfigSchema.
4304 * (T309714) mime: Add support for 'font/sfnt' mime type.
4305 * (T341434) WikiImporter: Improve error message output.
4306 * (T317255) VueComponentParser: Use Zest's getElementsByTagName() rather than
4308 * (T341737) ApiBase: Cast $id to string in filterIDs.
4309 * (T286291, T296188) Merge zh and zh-tw namespace translations back to zh-hans,
4310 zh-hant, zh-hk respectively.
4311 * (T337875) WRStats: Round up SequenceSpec::hardExpiry to the nearest integer.
4312 * (T237898) installer: Check MariaDB version in updater/installer.
4313 * (T342632) ApiComparePages: Add help url.
4314 * (T326182, T324903) EditPage: Add #[AllowDynamicProperties].
4315 * (T342351) rdbms: Fix postgres db function call.
4316 * (T343675) user: Use {@} to escape annotation when writting about annotation.
4317 * (T343797) LanguageWa: Fix double timezone adjustment.
4318 * (T326454) Update pear/mail to 1.5.1.
4319 * (T204470) Remove feedback messages from RawHtmlMessages.
4320 * (T264765, CVE-2023-45364) SECURITY: Article: Check permissions before
4321 showing link to view deleted revision.
4322 * (T310378) Ensure that installer i18n is loaded by update.php.
4323 * (T343622) docs: Set the <comment> tag back to optional.
4324 * (T330528) Upgrade wikimedia/html-formatter from 3.0.1 to 4.0.3.
4325 * (T337463) wdio-mediawiki: await saveScreenshot.
4326 * (T274041) Include core PSR-4 classes in the generated classmap.
4327 * (T208477) $wgPrivilegedGroups – Users belonging in some of the listed groups
4328 will be audited more aggressively.
4329 * doc: Improve description of "type" in extension.schema.v2.json.
4330 * Added PrivilegedGroups attribute for extension.json / skin.json, which lets
4331 you add any new user groups you define to wgPrivilegedGroups (see above).
4332 * HTMLForm: Fix E_NOTICE when hide-if is used with setFormIdentifier.
4333 * (T288624) MultiHttpClient: Unset $this->cmh after closing it.
4334 * (T345039) Do not run SkinAfterBottomScripts hook twice unconditionally.
4335 * (T265734) API Help: Note that parameters may be inherited from other context.
4336 * API: Make continue parameter help description more specific.
4337 * (T285545) i18n: Split apihelp for standard dir parameter.
4338 * (T285545) i18n: Split apihelp for redirects/linkshere/transcludedin/fileusage
4340 * (T285545) i18n: Split apihelp for parameter list=deletedrevs&drprop=.
4341 * (T285545) i18n: Split apihelp for parameter list=allpages&apprexpiry=.
4342 * (T285545) i18n: Split apihelp for parameter action=opensearch&redirects=.
4343 * (T285545) i18n: Split apihelp for parameter action=managetags&operation=.
4344 * (T285545) api: Add message for list=watchlist&wlprop=expiry.
4345 * (T334011) ApiComparePages: expose 'difftype' param if wikidiff2 is installed.
4346 * (T342633) api: Add message for action=compare&prop=timestamp.
4347 * API: revids=… does not necessarily return the queried revisions.
4348 * (T326696) user: Truncate option value in UserOptionsManager.
4349 * (T326696) ApiOptions: Give warning if the value is too long.
4350 * API i18n: Add {{PLURAL:}} for byte count messages.
4351 * (T235207) Get correct main page in API call examples.
4352 * doc: Make extension.schema.v2.json a valid JSON schema.
4353 * updateSpecialPages.php: Avoid implicit float conversion on modulo.
4354 * (T347227) ImportReporter: Make callback functions public.
4355 * (T346898) importDump: Unconditionally call $importer->setUsernamePrefix().
4356 * doc: Improve description of type in extension.schema.v1.json.
4357 * (T340217, CVE-2023-45359) SECURITY: Vector 2022: Numerous unescaped
4358 messages leading to potential XSS.
4359 * (T340220, CVE-2023-45361) SECURITY: Vector 2022: vector-intro-page
4360 message is assumed to yield a valid title.
4361 * (T340221, CVE-2023-45360) SECURITY: XSS via
4362 'youhavenewmessagesmanyusers' and 'youhavenewmessages' messages.
4363 * (T341529, CVE-2023-45362) SECURITY: diff-multi-sameuser
4364 ("X intermediate revisions by the same user not shown") ignores
4365 username suppression.
4366 * (T341565, CVE-2023-3550) SECURITY: Stored XSS when uploading crafted
4367 XML file to Special:Upload (non-standard configuration).
4369 == MediaWiki 1.39.4 ==
4371 This is a security and maintenance release of the MediaWiki 1.39 branch.
4373 === Changes since MediaWiki 1.39.3 ===
4374 * Localisation updates.
4375 * (T333990) composer.json: Explicitly pin psr/http-message to 1.0.1.
4376 * (T335203, CVE-2023-29197) SECURITY: Upgrading guzzlehttp/psr7
4378 * (T333776) {{ACTIVEUSERS}} wasn't being updated without updateSpecialPages.php.
4379 * (T258860) Prevent LogicCache exception from message cache during IO errors
4381 * (T336868) Improve idempotency of postgres index upgrades.
4382 * (T322944) Add Authorization to default $wgAllowedCorsHeaders.
4383 * (T332889, CVE-2023-36675) SECURITY: Fix escaping in BlockLogFormatter.
4384 * A fake MessageLocalizer for use in unit tests.
4385 * (T338114) Title: Add forward alias.
4386 * composer: Add symfony/polyfill-php81 like symfony/polyfill-php80.
4387 * (T330464) Work around argument corruption bug in XMLReader::open.
4388 * Fix frame and frameless rdfa depending on file existing.
4389 * Fixes for the phan upgrade, part 1.
4390 * Fixes for the phan upgrade, part 2.
4391 * (T298571) build: Update mediawiki/mediawiki-phan-config to 0.12.0.
4392 * build: Updating mediawiki/mediawiki-phan-config to 0.12.1.
4393 * (T329214) Pass whether current rev of file exists to
4394 Linker::makeBrokenImageLinkObj.
4395 * (T334659) Handle thumb errors when !$enableLegacyMediaDOM.
4396 * A manualthumb that doesn't exist should be considered a thumb error.
4397 * (T313157) IndexPager: Also protect against $offset being 0.
4398 * (T335612, CVE-2023-36674) SECURITY: Move badFile lookup to Linker.
4400 == MediaWiki 1.39.3 ==
4402 This is a security and maintenance release of the MediaWiki 1.39 branch.
4404 === Changes since MediaWiki 1.39.2 ===
4405 * Localisation updates.
4406 * (T328477) LinksUpdate: Use DB key for category links table.
4407 * GlobalFunctions: Remove check for MEDIAWIKI constant.
4408 * (T329484) API: Fix query+allimages user parameter description.
4409 * (T330529) SpecialEditTags: Set default of '' for wpReason.
4410 * (T330382) postgres: Make the upgrade ignore dropping indexes that
4412 * (T330526) htmlform: Handle null from HTMLFormField::getDefault in
4414 * (T291753) rdbms: escape backslashes in makeConnectionString for PostgreSQL.
4415 * (T325529) Fix total breakage of wgCanonicalServer fallback.
4416 * (T318103) mediawiki.storage: Disable async GC during integration test.
4417 * (T332461, T332397) TempFSFile: Keep the WeakMap alive.
4418 * (T332902) page: fix InvalidArgumentException in SQLPlatform::makeList.
4419 * (T285159, CVE-2023-29141) SECURITY: Do not apply autoblocks to untrusted
4422 == MediaWiki 1.39.2 ==
4424 This is a maintenance release of the MediaWiki 1.39 branch.
4426 === Changes since MediaWiki 1.39.1 ===
4427 * Localisation updates.
4428 * (T325872) ChangeTags: Remove table name from condition.
4429 * (T324895) MWCallbackStream: Add explicit $stream property.
4430 * (T297031, T326039) PostgresUpdater: Move setDefault ahead of
4431 changeNullableField.
4432 * (T321319) Produce HTML for invalid JSON.
4433 * (T215466, T326071) MigrateActors: Write to revision table (Follow-up 24115a8).
4434 * (T223027) ReservedUsernames config: Add reserved names from maintenance
4436 * (T325000, T324896, T307631) Updated OOUI from v0.44.3 to v0.44.5.
4437 * Remove /images .htaccess rules that are no longer relevant.
4438 * Disable php in .htaccess of images directory as a hardening measure.
4439 * (T322583) Include missing message parameter in message.
4440 * LocalFileTest: use encodeBlob/decodeBlob for img_metadata.
4441 * DatabaseSqlite: fix null blobs.
4442 * rdbms: avoid pg_escape_bytea() call-style deprecation notices.
4443 * (T322278) Improve LocalisationCache post-merge validation check.
4444 * (T324408, T326367) Updated wikimedia/remex-html from 3.0.2 to 3.0.3.
4445 * (T322278) Fix the remaining Phan failures on PHP 8.1.
4446 * (T322278, T326367) Respond to some messages from Phan on PHP 8.1.
4447 * Fix phan error when Excimer is enabled.
4448 * (T326021) Add matrix: to $wgUrlProtocols.
4449 * (T314099) stream wrapper: Declare $context class property.
4450 * (T314099) libs\jsminplus: Declare JSNode::$expression.
4451 * (T314096) composer.json: Updated composer/spdx-licenses from 1.5.6 to 1.5.7.
4452 * (T326472) Upgrading cssjanus/cssjanus (v2.1.0 => v2.1.1).
4453 * (T308536) rdbms: Remove deprecation mark for $wgSharedDB.
4454 * (T215466, T326071) installer: Split drop action out of the SQL patch for actor
4456 * (T322603) SqliteMaintenance.php: Fix fatally broken instanceof check.
4457 * (T326377) rdbms: Use DBConnRef in SelectQueryBuilder.
4458 * api/en.json: api-help-datatype-expiry add missing 'may'.
4459 * (T317329) OutputPage: Fix undefined ['host'] in ImagePreconnect code.
4460 * (T328222) Pass empty string to strlen() if schema is null for
4462 * (T289926) SpecialRevisionDelete: Set default of '' for wpReason.
4463 * (T155582, T328503) Fix XML dumps for content types with non-string
4465 * (T326886) PoolCounterRedis: Fix wrong cast, locks weren't being released.
4466 * (T314099) revisiondelete: Replace dynamic property Status::$itemStatuses
4467 * (T327821) skin: Restore default 'value' attribute in makeSearchButton().
4468 * (T329198) ParamValidator: Improve paramvalidator-help-multi-max message.
4469 * (T329415) Clear the statsd data buffer regardless of StatsdServer config.
4470 * (T292348) WikiImporter: do not fail if upload entry in dump lacks 'text' tag.
4471 * (T330049) UnregisteredLocalFile: Don't call MimeAnalyzer if no path.
4472 * (T324894 TempFSFile: Use a WeakMap for reference tracking if available.
4473 * (T295637) Add no to fallback chain of nb and nn.
4475 == MediaWiki 1.39.1 ==
4477 This is a security and maintenance release of the MediaWiki 1.39 branch.
4479 === Changes since MediaWiki 1.39.0 ===
4480 * Localisation updates.
4481 * PostgresUpdater: Remove trailing space from 'user_id ' column.
4482 * (T304515) LCStoreStaticArray: atomically replace the cache file.
4483 * (T324516) postgres: Fix upgrade for templatelinks primary key.
4484 * (T324890, T324891, T324901) Parser: Allow dynamic properties on PHP 8.2.
4485 * (T324513) uuid\GlobalIdGenerator: Check if getmyuid() exists.
4486 * (T314099) OutputPage: Remove unused dynamic property ParserOptions->isBogus.
4487 * (T314099) api: Remove use of undeclared property in action=comparepages.
4488 * Upgrading wikimedia/xmp-reader (0.8.5 => 0.8.6).
4489 * (T324489) Upgrading wikimedia/parsoid (v0.16.0 => v0.16.1).
4490 * Updated pear/mail (v1.4.1 => v1.5.0).
4491 * Removed wikimedia/dodo (v0.4.0).
4492 * (T324910) On pages using multi-content revisions, the raw content of a
4493 specific slot can be retrieved using the action=raw&slot=<role-name> query
4495 * (T322637) SECURITY: sqlite should not create DB file world-readable.
4497 == MediaWiki 1.39.0 ==
4499 === Changes since MediaWiki 1.39.0-rc.1 ===
4500 * Localisation updates.
4501 * exception: Tolerate no service container when trying DB rollback.
4502 * (T320282) Upgrading wikimedia/xmp-reader (0.8.3 => 0.8.4).
4503 * objectcache: Deprecate WANObjectCache::reap() and ::reapCheckKey().
4504 * (T320864) When calling mail(), use an array for headers.
4505 * Upgrading wikimedia/xmp-reader (0.8.4 => 0.8.5).
4506 * (T321154) Call setFormIdentifier() on LogEventsList form.
4507 * When importing revision with same timestamp as latest revision, treat
4508 it as the new latest.
4509 * (T320726) RandomImageGenerator::getImageSpec: Don't pass a float to mt_rand(),
4511 * (T298485, T322360) WikiExporter: Avoid calling reload in processing every row.
4512 * (T321551) pager: Fix null used for foreach in Pager::getNavigationBar.
4513 * (T321551) pager: Remove unused AlphabeticPager::getOrderTypeMessages()
4515 * pager: Remove unused PagerNavigationBuilder::setExtra().
4516 * PagerNavigationBuilder: Document that nulls in setLinkQuery() etc. are
4518 * (T322335) ApiQueryRevisionsBase: Fix 'rvdiffto' parameter handling on PHP 8.0.
4519 * (T314096) TestFileEditor: Fix string interpolation.
4520 * (T289926) api: Fix minor PHP 8.1 incompatibility in ApiOptions.
4521 * (T322803) SpecialBotPasswords: Don't pass null to trim().
4522 * (T289926) Fix incomplete ITextFormatter mocks.
4523 * Language: Handle ronna and quetta.
4524 * (T72510) rdbms: make SqlitePlatform::tableName() apply double quotes.
4525 * (T323373) Parser: Fix extractSections() behavior for PHP >= 8.0.
4526 * .gitattributes: Ship docker-compose.yml to the tarball.
4528 == MediaWiki 1.39.0-rc.1 ==
4530 === Changes since MediaWiki 1.39.0-rc.0 ===
4531 * Localisation updates.
4532 * (T318481) composer: Drop symfony/php73-polyfill.
4533 * (T318460) SpecialChangeEmail: Set default for returntoquery.
4534 * (T318307) HTMLFormField::validate(): Update docs to permit all data types
4535 * (T306802) docker: update to latest published images.
4536 * (T318754) WebInstallerOptions::addPersonalizationOptions(): Close fieldset.
4537 * (T227047) Soft-deprecate the remainder of ActorMigration.
4538 * (T316304, CVE-2022-41767) SECURITY: reassignEdits doesn't update results
4539 in an IP range check on Special:Contributions.
4540 * (T309894, CVE-2022-41765) SECURITY: HTMLUserTextField exposes existence
4542 * (T307278, CVE-2022-41766) SECURITY: On action=rollback the message
4543 "alreadyrolled" can leak revision deleted user name.
4544 * (T319186) .phan/config.php: Update minimum_target_php_version.
4545 * Tests: Explicit cast to int in RandomImageGenerator test (php8 warnings).
4546 * (T319186) .phan/config.php: Update minimum_target_php_version.
4547 * (T310243) Deprecate use of 'wvui-search' package.
4548 * utils: Fix return doc about false/null for UrlUtils::expand.
4549 * (T319000) WebInstaller: Don't try and run trim() on null.
4550 * In the event of preg failure in MagicWordArray throw exception.
4551 * (T318753) Installer: Disable logo dropper for now.
4553 == MediaWiki 1.39.0-rc.0 ==
4555 == Upgrading notes for 1.39 ==
4556 Don't forget to always back up your database before upgrading!
4558 See the file UPGRADE for more detailed per-version upgrade instructions from the
4559 oldest supported upgrading version, MediaWiki 1.31.
4561 Some specific notes for MediaWiki 1.39 upgrades are below:
4562 * (T278139) Drop PHP 7.3 support in MediaWiki 1.39; require 7.4.3 or higher.
4564 For notes on 1.38.x and older releases, see HISTORY.
4566 === Configuration changes for system administrators in 1.39 ===
4568 ==== New configuration ====
4569 * $wgAutoCreateTempUser – This configures automatic user creation on page save.
4570 * $wgCopyUploadAllowOnWikiDomainConfig – This configures if administrators can
4571 use the MediaWiki:Copyupload-allowed-domains system message to define which
4572 domains can be used with the upload-by-url tool.
4573 * $wgCdnMatchParameterOrder – This can be set to false if MediaWiki is behind a
4574 CDN that re-orders query parameters. This will make the code that matches
4575 request URLs to canonical CDN URLs insensitive to parameter order.
4576 * $wgMultiShardSiteStats – This allows you to split site_stats across multiple
4577 rows. Only useful for very large, heavily edited wikis. (T306589)
4578 * $wgPrivilegedGroups – Users belonging in some of the listed groups will be
4579 audited more aggressively.
4581 ==== Changed configuration ====
4582 * $wgInvalidUsernameCharacters – This setting now contains the char '>', which
4583 is now the reserved delimiter for external user names.
4584 * $wgLocalFileRepo – The default serialization method for file meta-data has
4585 been changed to JSON. You can revert it to PHP by setting the property
4586 'useJsonMetadata' to false.
4587 * $wgLBFactoryConf – The 'configCallback' flag can now be set to a callback
4588 function that returns an array with keys to update in $wgLBFactoryConf. This
4589 can be used to update the database configuration on the fly, e.g. to take
4590 replica hosts out of rotation.
4591 * $wgDBservers and $wgLBFactoryConf – The DBO_SSL flag in has been deprecated in
4592 favour of a boolean "ssl" parameter.
4593 * $wgObjectCaches – The 'globalKeyLB' and 'localKeyLB' flags are no longer
4596 ==== Removed configuration ====
4597 * $wgMultiContentRevisionSchemaMigrationStage - This transition flag, deprecated
4598 since MediaWiki 1.35, has been removed; the data migration is over.
4599 * $wgActorTableSchemaMigrationStage - This transition flag has been removed; the
4600 data migration is over.
4601 * $wgWikiFarmSiteDetector – This experimental setting has been removed without
4602 replacement. Use the MW_WIKI_NAME environment variable to specifiy the name of
4603 the site for which to load configuration. Using the WIKI_NAME environment
4604 variable for this purpose is deprecated.
4605 * $wgParserCacheUseJson - The ParserCache now always uses JSON serialization.
4606 Reading old non-JSON cache entries is still supported. The setting had been
4607 deprecated since 1.36.
4608 * $wgAllowJavaUploads - To allow uploads of JAR files, remove application/java
4609 from $wgMimeTypeExclusions.
4610 * $wgMaxRedirects – This broken feature was removed, as it never worked as
4612 * $wgElementTiming – This experimental, default-disabled feature has been
4613 removed without replacement.
4614 * $wgPriorityHints and $wgPriorityHintsRatio – The related experimental feature
4615 has been removed without replacement.
4616 * $wgIncludeLegacyJavaScript – This flag has been removed, without loss of any
4617 functionality in this release. Most former "wikibits" functions were removed
4618 after deprecation in previous releases. The remaining functions, such as
4619 importScript, are now available unconditionally.
4620 * $wgLegacySchemaConversion - This unused setting has been removed.
4621 * $wgInterwikiPrefixDisplayTypes - This unused setting has been removed.
4622 * $wgMangleFlashPolicy – This is no longer functional, and is now deprecated.
4623 Users who are somehow still using Flash as a browser extension will be exposed
4624 to CSRF vulnerabilities.
4626 === New user-facing features in 1.39 ===
4627 * Optional automatic user creation on page save ($wgAutoCreateTempUser)
4628 * Administrators now have the option to delete/undelete the associated "Talk"
4629 page when they are (un)deleting a given page. `deletetalk` and `undeletetalk`
4630 options were added to the 'delete' and 'undelete' action APIs in MW 1.38.
4631 * `{{=}}` is now a wikitext built-in magic word, expanding to `=`. This is
4632 conventionally used as an escape mechanism to allow the use of `=` in
4633 unnamed template arguments. Defining [[Template:=]] to expand to something
4634 other than `=` has been deprecated since 1.36, with affected pages put into
4635 a special tracking category for migration.
4636 * (T284020) Bot passwords are now supported when using the REST API.
4638 === New developer features in 1.39 ===
4639 * Added optional $size param to SearchResultProvideThumbnail hook.
4640 * SearchResultProvideThumbnail hook interface moved from MediaWiki\Rest\Hook
4641 namespace to MediaWiki\Search\Hook.
4642 * JsonValidateSaveHook has been added to allow extensions to set additional
4643 pre-save validations for specific JSON pages (T313254)
4644 * Added 'PermissionErrorAudit' hook, enabling extensions to audit permission
4645 errors on specfic actions. For instance account registration failed attempts
4646 due to a block (T306018).
4648 === External library changes in 1.39 ===
4650 ==== New external libraries ====
4651 * Added Codex v0.1.1. This replaces the now deprecated wvui library.
4652 * Added symfony/polyfill-php81.
4653 * Added symfony/polyfill-php82.
4654 * Added symfony/polyfill-php83.
4656 ===== New development-only external libraries =====
4657 * Updated QUnit from 2.18.0 to 2.18.2.
4659 ==== Changed external libraries ====
4660 * Updated jQuery from v3.6.0 to v3.6.1.
4661 * Updated OOUI from v0.43.2 to v0.44.5.
4662 * Updated composer/semver from 3.2.6 to 3.3.2.
4663 * Updated cssjanus/cssjanus fromv2.1.0 to v2.1.1.
4664 * Updated pear/mail from v1.4.1 to v1.5.1.
4665 * Updated symfony/polyfill-php80 from 1.25.0 to 1.28.0.
4666 * Updated symfony/yaml from 5.4.3 to 5.4.23.
4667 * Updated vue/compat from 3.2.23 to 3.2.37.
4668 * Updated wikimedia/base-convert from 2.0.1 to 2.0.2.
4669 * Updated wikimedia/html-formatter from 3.0.1 to 4.0.3.
4670 * Updated wikimedia/ip-set from 3.0.0 to 3.1.0.
4671 * Updated wikimedia/minify from 2.2.6 to 2.3.0.
4672 * Updated wikimedia/php-session-serializer from 2.0.0 to 2.0.1.
4673 * Updated wikimedia/remex-html from 3.0.2 to 3.0.3.
4674 * Updated wikimedia/running-stat from 1.2.1 to 2.1.0.
4675 * Updated wikimedia/scoped-callback from 3.0.0 to 4.0.0.
4676 * Updated wikimedia/services from 2.0.1 to 3.0.0.
4677 * Updated wikimedia/timestamp from 3.0.0 to 4.1.1.
4678 * Updated wikimedia/xmp-reader from 0.8.1 to 0.8.6.
4680 ===== Changed development-only external libraries =====
4681 * Updated composer/spdx-licenses from 1.5.5 to 1.5.7.
4682 * Updated doctrine/dbal for PHP < 7.3 from 2.13.6 to 2.13.9.
4683 * Updated doctrine/dbal for PHP >= 7.3 from 3.1.5 to 3.4.2.
4684 * Updated mediawiki/mediawiki-phan-config from 0.11.1 to 0.12.1.
4686 ==== Removed external libraries ====
4687 * Removed wikimedia/dodo (v0.4.0).
4689 === Bug fixes in 1.39 ===
4690 * (T314013) $wgExtraNamespaces no longer overrides canonical namespace names
4691 specified in extension.json files. While this setting can still be used to
4692 rename extension-defined namespaces, system administrators may need to run
4693 namespaceDupes.php after upgrading.
4695 === Action API changes in 1.39 ===
4696 * New `undeletetalk` parameter on action=undelete that allows you to restore
4697 all revisions of the associated talk page.
4699 === Languages updated in 1.39 ===
4700 MediaWiki supports over 350 languages. Many localisations are updated regularly.
4701 Below only new and removed languages are listed, as well as changes to languages
4702 because of Phabricator reports.
4704 * Actual localization was added for several languages, which were already
4705 in Names.php and even used for a Wikipedia:
4706 ** (T313200) Added language support for Rundi (Kirundi, rn).
4707 ** (T310976) Added language support for Tumbuka (ChiTumbuka, tum).
4708 ** (T314270) Added language support for Kanuri (kr).
4709 * (T313199) Added language support for Sylheti (syl).
4710 * (T311975) Added language support for Ghanaian Pidgin (gpe).
4711 * (T307080) Added language support for Okinawan (ryu).
4712 * (T307887) Added language support for Mooré (mos).
4713 * (T308813) Added language support for Nigerian Pidgin (pcm).
4714 * (T309763) Added language support for Tai Nüa (tdd).
4715 * (T310040) Added language support for Fante (fat).
4716 * (T311034) Added language support for Campidanese Sardinian (sro).
4717 * (T315406) Fix the autonym of the Iñupiaq language to "Iñupiatun".
4718 * (T315677) Removed French fallback from the Fula language (ff).
4719 * (T304920) In Swahili, The "Media" namespace is now "Media", as in English,
4720 and the "File" namespace is now "Faili". The old name of the "File" namespace
4721 was "Picha", and it's kept for backwards compatibility. If you manage a wiki
4722 in Swahili, and you use "Faili:" as a namespace anywhere in wikitext, and
4723 you mean to use it as "Media:", these need to be replaced to "Media:".
4724 * (T309866) Some namespace translations were updated for Kyrgyz (ky). The old
4725 ones are retained as aliases for backwards compatibility.
4726 * (T117845) Started the renaming of the language codes for Serbian from sr-ec
4727 and sr-el to sr-cyrl and sr-latn.
4728 * (T295637) Add no to fallback chain of nb and nn.
4730 === Breaking changes in 1.39 ===
4731 * Basic non-JavaScript (Grade C) support has been dropped for Internet Explorer
4732 9-10, Firefox 27-38, and Android 4.3-4.4.
4733 * The following methods, deprecated since 1.37, have been removed from IDatabase
4738 * Title::getDefaultNamespace(), deprecated since 1.37, has been removed.
4739 * The DBPrimaryPos class alias 'DBMasterPos' has been removed.
4740 * The global function wfGetLB(), deprecated since 1.27, has been removed.
4741 * Passing a db to BlockRestrictionStore::loadByBlockId() is no longer supported.
4742 BlockRestrictionStoreFactory should be used to fetch a correct
4743 BlockRestrictionStore instead. This was deprecated since 1.38.
4744 * The global function wfGetCache(), deprecated since 1.32, has been removed. You
4745 can use ObjectCache::getInstance() instead.
4746 * The global function wfGetMainCache(), deprecated since 1.32, has been removed.
4747 You can use ObjectCache::getLocalClusterInstance() instead.
4748 * MovePage::__construct() now requires that all parameters be passed. The
4749 fallback to MediaWikiServices emitted deprecation notices since 1.37.
4750 * WikiPage::doEditContent(), deprecated since 1.32, was removed.
4751 * WikiPage::prepareContentForEdit() now requires a UserIdentity parameter to be
4752 provided. Not providing one has been deprecated since 1.37.
4753 * EventRelayerKafka, deprecated in 1.38, was removed.
4754 * MediaWiki\Logger\Monolog\KafkaHandler, deprecated in 1.38, was removed.
4755 * The "trace" option of SectionProfiler, deprecated in 1.38, was removed.
4756 * The global function wfWikiID(), deprecated since 1.35, has been removed.
4757 * Database::wasKnownStatementRollbackError() was removed. Subclasses should
4758 override isKnownStatementRollbackError() instead.
4759 * Database::wasQueryTimeoutError() was removed. Subclasses should
4760 override isQueryTimeoutError() instead.
4761 * Database::buildSuperlative() has been removed without deprecation.
4762 * The following methods, deprecated in 1.37, have been removed:
4763 - Linker::setStubThreshold(), ::getStubThreshold().
4764 - LinkRendererFactory::createForUser().
4765 - ParserOptions::getStubThreshold(), ::setStubThreshold().
4766 * Changes to ResourceLoader modules:
4767 - The mediawiki.viewport module, deprecated in 1.37 has been
4768 removed. Use IntersectionObserver instead.
4769 * If you manage a wiki in Swahili, and you use "Faili:" as a namespace anywhere,
4770 and you mean to use it as "Media:", replace it with "Media:". See T304920.
4772 - Skin::getCopyrightIcon(), ::getPoweredBy(), deprecated in 1.37 have been
4774 - Skin::bottomScripts, deprecated in 1.37, now emits deprecation notices.
4775 Skins using SkinTemplate must set bodyOnly as a skin option and
4776 remove lines of code generating html, body and head elements.
4777 - Skin::makeSearchButton and Skin::makeSearchInput were deprecated in 1.38.
4778 Use SkinTemplate methods with the same name or Skin::getTemplateData
4780 - Styles for the HTML classes `warningbox`, `errorbox` and `successbox` have
4781 been removed in favor of Html class methods.
4782 - The feature `legacy` used inside ResourceLoaderSkinModule,
4783 deprecated in 1.37, will no longer ship any styles.
4784 - Skin::getSkinStylePath, deprecated since 1.36, has been removed.
4785 - Skin::getPortletData has been made private.
4786 - SkinTemplate::getPersonalToolsList(), deprecated in 1.35 has been
4788 - The following SkinTemplate template data, deprecated in 1.37,
4792 - The following hooks, deprecated in 1.37, have been removed:
4793 - SkinGetPoweredBy: SkinGetPoweredByHook
4794 - The following hooks are deprecated and replaced with
4795 SkinTemplateNavigation::Universal:
4796 - SkinTemplateNavigation::SpecialPage
4797 - SkinTemplateNavigation
4799 - The mediawiki.skinning.content.externallinks module, which was
4800 deprecated in 1.36 has been removed. Skins that still rely on it
4801 will lose the icon styling of external links by type.
4802 * Experimental wiki farm support: Automatic detection of the requested site
4803 within a wiki farm based on the requested domain has been removed.
4804 Use the MW_WIKI_NAME environment variable to specify the name of the site
4805 to load configuration for. Using the WIKI_NAME environment variable for this
4806 purpose is deprecated. This is only relevant if you have been using
4807 $wgWikiFarmSettingsDirectory to load wiki farm config.
4808 * MWExceptionHandler::installHandler was marked @internal and had required
4809 arguments added. This method is intended for use in bootstrap code and is
4810 unused in known extensions.
4811 * MWException::useOutputPage was made private without deprecation.
4812 This method was apparently only public for testing and is unused in known
4814 * Calling getId() on a User or UserIdentityValue from the wrong wiki, deprecated
4815 since 1.36, now throws an exception.
4816 * The following methods have been removed from ExtensionRegistry without
4817 deprecation and without replacement. They had been introduced in 1.35 for use
4818 in the testing framework, and were not in use by any known extension:
4819 - exportAutoloadClassesAndNamespaces
4820 - exportTestAutoloadClassesAndNamespaces
4821 * The MWNamespace class, deprecated since 1.34, has been removed. Use the
4822 NamespaceInfo service instead.
4823 * The UnknownContent and UnknownContentHandler class aliases have been removed,
4824 use FallbackContent and FallbackContentHandler instead.
4825 * IResultWrapper::next() now returns void, to match the Iterator interface that
4826 it implements. fetchObject() has the same behavior as next() used to.
4827 * In HTMLForm HTMLAutoCompleteSelectFields, the parameters 'autocomplete' and
4828 'autocomplete-messages', which were deprecated in MediaWiki 1.29, were
4829 removed. Instead, use 'autocomplete-data' and 'autocomplete-data-messages'.
4830 * The global $wgParser, deprecated in 1.32, was removed. Use
4831 MediaWikiServices::getInstance()->getParser() instead.
4832 * ParserOutput::setText will now set the ParserOutput's text to null if
4833 given null. Previously it did nothing if given null.
4834 * The default value for the first argument to the ParserOutput constructor
4835 is now null instead of ''.
4836 * IDatabase::lockTables() and IDatabase::unlockTables(), deprecated since 1.38,
4838 * The $context parameter to `new HTMLForm( … )` and `HTMLForm::factory( … )`
4840 * The class alias for revision related classes in namespace MediaWiki\Storage
4841 has been removed. Classes are IncompleteRevisionException,
4842 MutableRevisionRecord, MutableRevisionSlots, RevisionAccessException,
4843 RevisionArchiveRecord, RevisionFactory, RevisionLookup, RevisionRecord,
4844 RevisionSlots, RevisionStore, RevisionStoreRecord, SlotRecord, and
4845 SuppressedDataException.
4846 * Calling getBy() on an AbstractBlock from the wrong wiki, deprecated since
4847 1.38, now throws an exception.
4848 * Passing a MediaWiki\Linker\LinkTarget to EditPage::makeTemplatesOnThisPageList
4849 or TemplatesOnThisPageFormatter::format is no longer supported,
4850 a MediaWiki\Page\PageIdentity is required.
4851 * The deprecated class alias FakeConverter has been removed, use
4852 TrivialLanguageConverter instead.
4853 * The deprecated ApiQueryContributions class alias has been removed, use
4854 ApiQueryUserContribs instead.
4855 * The deprecated MediaWiki\Special\SpecialPageFactory class alias has been
4856 removed, use MediaWiki\SpecialPage\SpecialPageFactory instead.
4857 * The following skin modules, deprecated in 1.37, have been removed:
4858 - mediawiki.skinning.elements
4859 - mediawiki.skinning.content
4860 - mediawiki.toc.styles
4861 - mediawiki.legacy.config
4862 - mediawiki.legacy.shared
4863 - mediawiki.legacy.commonPrint
4864 * FileModule::compileLessFile(), deprecated since 1.35, has been removed. Use
4865 ::compileLessString() instead.
4866 * LogFormatter::styleRestricedElement(), deprecated since 1.37, has been
4867 removed. Use ::styleRestrictedElement() instead.
4868 * Title::isNamespaceProtected(), deprecated in 1.34, has been removed.
4869 * ApiStashEdit::parseAndStash(), deprecated in 1.34, has been removed.
4870 * LinkCache::forUpdate(), deprecated in 1.34, has been removed.
4871 * Passing null instead of a NamespaceInfo instance to LinkCache::__construct()
4872 is not supported anymore. It is recommended to request an instance from the
4874 * ApiQueryBase::showHiddenUsersAddBlockInfo(), deprecated in 1.34, has been
4875 removed. Use ApiQueryBlockInfoTrait instead.
4876 * ApiQueryBase::prefixedTitlePartToKey(), deprecated in 1.35, has been removed.
4877 Use ::parsePrefixedTitlePart() instead.
4878 * ExternalStoreDB::getSlave(), deprecated in 1.34, has been removed. Use
4879 ExternalStoreDB::getReplica() instead.
4880 * ChangesListSpecialPage::checkStructuredFilterUiEnabled() and
4881 SpecialWatchlist::checkStructuredFilterUiEnabled() now support UserIdentity
4882 as the only argument. Passing Config argument was deprecated in 1.34.
4883 * DatabaseUpdater::ifNoActorTable(), deprecated in 1.35, has been removed. Use
4884 ::ifTableNotExists() instead.
4885 * MediaWiki\Revision\RevisionStoreFactory::getRevisionStore was documented
4886 to allow passing bool true as a dbDomain, this is no longer possible,
4887 because that is an invalid value for a dbDomain.
4888 * LinkHolderArray::__construct() had its signature changed. The class was marked
4890 * SpecialMute::isTargetBlacklisted(), deprecated in 1.35, has been removed. Use
4891 ::isTargetMuted() instead.
4892 * WebRequest::checkUrlExtension(), deprecated in 1.35, has been removed.
4893 * ContentHandler::cleanupHandlersCache(), deprecated in 1.35, has been removed.
4894 * SpecialVersion::getExtAuthorsFileName, deprecated in 1.35, has been removed.
4895 Use MediaWiki\ExtensionInfo::getAuthorsFileName.
4896 * SpecialVersion::getExtLicenseFileName, deprecated in 1.35, has been removed.
4897 Use MediaWiki\ExtensionInfo::getLicenseFileNames.
4898 * CategoryPage::getCategoryViewerClass and ::setCategoryViewerClass, deprecated
4899 in 1.35, have been removed.
4900 * SqlBlobStore::getLegacyEncodingConversionLang(), deprecated in 1.34, has been
4902 * wfCanIPUseHTTPS(), deprecated in 1.37, has been removed.
4903 * wfGetScriptUrl(), deprecated in 1.35, has been removed.
4904 * The following methods of Database class, are no longer stable to override:
4905 - ::implicitOrderby()
4913 - ::buildSubstring()
4914 - ::buildStringCast()
4915 - ::buildIntegerCast()
4917 - ::addIdentifierQuotes()
4920 - ::unionSupportsOrderAndLimit()
4926 - ::setTableAliases()
4927 - ::setIndexAliases()
4928 - ::buildGroupConcatField()
4929 * SpecialUnblock::processUnblock(), deprecated in 1.36, has been removed. Use
4930 UnblockUser instead.
4931 * wfLocalFile() and wfFindFile(), deprecated in 1.34, have been removed.
4932 * Maintenance script resetUserTokens.php, deprecated in 1.27, has been removed.
4933 * These methods in Database have been removed without deprecation as they are
4934 not used outside core. Users should override corresponding methods in
4935 SQLPlatform instead:
4936 - Database::doInsert -> SQLPlatform::insertSqlText
4937 - Database::doDropTable -> SQLPlatform::dropTableSqlText
4938 - Database::doRollback -> SQLPlatform::rollbackSqlText
4939 - Database::doSavepoint -> SQLPlatform::savepointSqlText
4940 - Database::doReleaseSavepoint -> SQLPlatform::releaseSavepointSqlText
4941 - Database::doRollbackToSavepoint -> SQLPlatform::rollbackToSavepointSqlText
4942 * The following protected methods of Database class have been removed without
4943 deprecation as they are not used outside core. Users should call
4944 corresponding methods in SQLPlatform:
4945 - Database::makeInsertLists -> SQLPlatform::makeInsertLists
4946 - Database::isFlagInOptions -> SQLPlatform::isFlagInOptions
4947 - Database::normalizeOptions -> SQLPlatform::normalizeOptions
4948 - Database::fieldNameWithAlias -> SQLPlatform::fieldNameWithAlias
4949 - Database::isTransactableQuery -> SQLPlatform::isTransactableQuery
4950 * $wgCanonicalNamespaceNames no longer includes custom namespaces defined using
4951 $wgExtraNamespaces. Extensions should use the NamespaceInfo service instead
4952 of accessing this configuration setting directly.
4953 * The following hook, deprecated in 1.35, has been removed:
4954 - ParserGetVariableValueVarCache: ParserGetVariableValueVarCacheHook
4955 * The $variableCache parameter to the ParserGetVariableValueSwitch hook is
4956 no longer used; non-standard use of this parameter has been deprecated since
4958 * These methods have been moved from IDatabase to IMaintainableDatabase:
4959 - IDatabase::fieldExists -> IMaintainableDatabase::fieldExists
4960 - IDatabase::indexExists -> IMaintainableDatabase::indexExists
4961 - IDatabase::tableExists -> IMaintainableDatabase::tableExists
4962 * DBConnRef doesn't accept live connection in constructor anymore.
4963 Only parameters for getting connection should be provided.
4964 * IDatabase::getTopologyRootPrimary() was removed.
4965 * User::blockedBy(), deprecated since 1.38, has been removed.
4966 * User::getBlockId(), deprecated since 1.38, has been removed.
4967 * AlphabeticPager::getOrderTypeMessages(), unused since 1.13, has been removed
4968 without deprecation.
4970 === Deprecations in 1.39 ===
4971 * PageProps::getInstance(), deprecated since 1.38, emits deprecations warnings.
4972 * The global function wfGetDB() has been deprecated. Use
4973 LoadBalancer::getConnection() instead.
4974 * SpecialRedirectWithAction::__construct without SearchEngineFactory argument
4975 will now emit a deprecation notice.
4976 * Use of the SiteStatsUpdate constructor has been deprecated in favor of
4977 the ::factory() method.
4978 * AuthManager::checkAccountCreatePermissions has been deprecated. Use
4979 AuthManager::authorizeCreateAccount or AuthManager::probablyCanCreateAccount
4981 * Title::getSelectFields() has been deprecated in favor of
4982 PageStore::newSelectQueryBuilder()
4983 * Title::newFromTitleValue(), deprecated since in 1.34, now emits deprecation
4984 warnings. Use ::newFromLinkTarget() instead.
4985 * ExtensionRegistry::readFromQueue() has been marked @internal. Extensions
4986 should use ExtensionProcessor instead.
4987 * Processor::getExtraAutoloaderPaths() and
4988 ExtensionProcessor::getExtraAutoloaderPaths() have been deprecated, use get
4989 getExtractedAutoloadInfo() instead.
4990 * The following global functions are deprecated in favor of the listed UrlUtils
4992 - wfExpandUrl -> UrlUtils::expand
4993 - wfGetServerUrl -> UrlUtils::getServer
4994 - wfAssembleUrl -> UrlUtils::assemble
4995 - wfRemoveDotSegments -> UrlUtils::removeDotSegments
4996 - wfUrlProtocols -> UrlUtils::validProtocols
4997 - wfUrlProtocolsWithoutProtRel -> UrlUtils::validAbsoluteProtocols
4998 - wfParseUrl -> UrlUtils::parse
4999 - wfExpandIRI -> UrlUtils::expandIRI
5000 - wfMatchesDomainList -> UrlUtils::matchesDomainList
5001 These methods are exact replacements except that
5002 1) they return null instead of false or empty string on error (where
5004 2) UrlUtils::validProtocols does not take a parameter (documentation said not
5005 to pass one to wfUrlProtocols anyway);
5006 3) they use type hints (don't try passing null instead of string, etc.).
5007 * MaintainableDBConnRef is deprecated, use DBConnRef instead.
5008 * Loading DefaultSettings.php is deprecated. To get default values of main
5009 config settings, use MainConfigSchema::listDefaultValues() or
5010 MainConfigSchema::getDefaultValue().
5011 * AbstractContent::getRedirectChain() and
5012 AbstractContent::getUltimateRedirectTarget() are now emitting deprecation
5014 * (T244138) QueryPage::getSQL() is deprecated. Instead QueryPage::getQueryInfo()
5015 should be overridden.
5016 * Calling new JobRunner() directly without $serviceOptions now emits
5017 deprecation warnings. Use MediaWikiServices::getInstance()->getJobRunner()
5019 * Passing an array of targets to Article::getRedirectHeaderHtml() is
5020 deprecated. Supply a single redirect target instead (T296430).
5021 * The following Less mediawiki.mixins have been deprecated:
5023 - .animation-delay()
5024 - .transform-rotate()
5025 * Skin::getAction is deprecated. Use IContextSource::getActionName instead.
5026 * User::getOption, deprecated since 1.35, now emits deprecation warnings.
5027 Use UserOptionsLookup::getOption instead.
5028 * ILBFactory::forEachLB() is deprecated. Use ::getAllLBs().
5029 * LoadBalancer::forEachOpenConnection() and ::forEachOpenPrimaryConnection()
5030 are deprecated without replacement.
5031 * The following classes were moved from the root namespace to the
5032 MediaWiki\ResourceLoader namespace, the old names becoming deprecated aliases:
5033 ResourceLoader, MessageBlobStore, VueComponentParser.
5034 * The following classes had the "ResourceLoader" prefix stripped while being
5035 moved to the MediaWiki\ResourceLoader namespace, the old names becoming
5036 deprecated aliases: DerivativeResourceLoaderContext,
5037 ResourceLoaderCircularDependencyError, ResourceLoaderClientHtml,
5038 ResourceLoaderCodexModule, ResourceLoaderContext, ResourceLoaderFileModule,
5039 ResourceLoaderFilePath, ResourceLoaderForeignApiModule, ResourceLoaderImage,
5040 ResourceLoaderImageModule, ResourceLoaderLanguageDataModule,
5041 ResourceLoaderLessVarFileModule, ResourceLoaderModule,
5042 ResourceLoaderMwUrlModule, ResourceLoaderOOUIFileModule,
5043 ResourceLoaderOOUIIconPackModule, ResourceLoaderOOUIImageModule,
5044 ResourceLoaderOOUIModule, ResourceLoaderSiteModule,
5045 ResourceLoaderSiteStylesModule, ResourceLoaderSkinModule,
5046 ResourceLoaderStartUpModule, ResourceLoaderUserModule,
5047 ResourceLoaderUserOptionsModule, ResourceLoaderUserStylesModule,
5048 ResourceLoaderWikiModule.
5049 * WANObjectCache::reap() and WANObjectCache::reapCheckKey() have been
5050 deprecated without replacement.
5051 * The following methods in WikiRevision and their interfaces
5052 ImportableUploadRevision and ImportableOldRevision are deprecated:
5053 - ::getUserObj() → ::getUser()
5054 - ::setUserObj() → ::setUsername()
5055 - ::setUserIP() → ::setUsername()
5056 * ObjectCache::addBusyCallback() is deprecated and non-functional.
5057 * MWTimestamp::getHumanTimestamp(), deprecated in 1.26, now emits deprecation
5059 * Article::viewRedirect(), deprecated in 1.30, now emits deprecation warnings.
5060 * Parser::getFreshParser() is deprecated, use ParserFactory::getInstance().
5061 * CoreParserFunctions::mwnamespace() is deprecated and emits deprecation
5062 warnings, use CoreParserFunctions::namespace() instead.
5063 * Registering magic variables whose names include a colon is deprecated.
5064 * User::blockedFor(), deprecated in 1.35, now emits deprecation warnings.
5065 * Access to previously public properties AbstractBlock::$mExpiry,
5066 AbstractBlock::$mHideName, AbstractBlock::$mTimestamp, DatabaseBlock::$mAuto,
5067 and DatabaseBlock::$mParentBlockId, deprecated in 1.34, now emits deprecation
5069 * Access to previously public properties User::$mBlock, User::$mBlockedby, and
5070 User::$mHideName, deprecated in 1.35, now emits deprecation warnings.
5071 * JobQueueGroup::singleton() and ::destroySingletons(), deprecated in 1.37, now
5072 emit deprecation warnings.
5073 * Title::getNotificationTimestamp(), deprecated in 1.35, now emits deprecation
5075 * Global functions wfReadOnly and wfReadOnlyReason, deprecated in 1.38, now
5076 emit deprecation warnings.
5077 * Overriding or calling DifferenceEngine::getDiffBodyCacheKey(), deprecated in
5078 1.31, now emits deprecation warnings.
5079 * Access to previously public property WikiRevision::$fileIsTemp, deprecated in
5080 1.29, now emits deprecation warnings.
5081 * wfQueriesMustScale() has been deprecated and emits deprecation warnings.
5082 * ContextSource::getStats(), RequestContext::getStats(), and
5083 DerivativeContext::getStats(), deprecated in 1.27, now emit deprecation
5085 * ManualLogEntry::setTags(), deprecated in 1.33, now emits deprecation warnings.
5086 * WikiRevision::downloadSource(), deprecated in 1.31, now emits deprecation
5088 * DifferenceEngine::textDiff(), deprecated in 1.32, now emits deprecation
5090 * FormatMetadata::flattenArrayContentLang(), deprecated in 1.36, now emits
5091 deprecation warnings.
5092 * SkinTemplate::getNameSpaceKey(), deprecated in 1.35, now emits deprecation
5094 * EnqueueJob::newFromJobsByWiki(), deprecated in 1.33, now emits deprecation
5096 * The following methods of the MWGrants class, all deprecated since 1.38,
5097 are now emitting deprecation warnings:
5108 * DataUpdate::runUpdates(), deprecated in 1.28, now emits deprecation warnings.
5109 * CdnCacheUpdate::newFromTitles(), deprecated in 1.35, now emits deprecation
5111 * Instantiating HTMLCacheUpdate class, deprecated in 1.34, now emits deprecation
5113 * ISQLPlatform::tableNames() (implemented by IDatabase) is now deprecated.
5114 None of the tableName*() functions should be used by most users;
5115 if you absolutely must use raw SQL, write several tableName() calls instead.
5116 * Language::isWellFormedLanguageTag() has been deprecated in favor of
5117 LanguageCode::isWellFormedLanguageTag().
5118 * The PrevNextNavigationRenderer helper class has been deprecated in favor of
5119 the new PagerNavigationBuilder one.
5120 * The methods IndexPager::getPagingLinks(), IndexPager::getLimitLinks() and
5121 IndexPager::buildPrevNextNavigation() have been deprecated in favor of
5122 IndexPager::getNavigationBuilder().
5123 * Overriding the method IndexPager::makeLink() has been deprecated.
5124 * ActorMigration is deprecated. The temporary table is no longer needed, the
5125 actor table can be directly joined to the revision table, which is simple
5126 enough to not need a helper class. See the methods of ActorMigration for more
5127 specific information on replacements. ActorMigrationBase remains usable for
5128 migrations in extension tables.
5130 === Other changes in 1.39 ===
5131 * Dynamic default values are now applied before extension registration callbacks
5132 are run. This way, extensions have a complete view of config variables, with
5133 all defaults applied. For example, when the default value of X used to be
5134 static but becomes dynamic, and an extension reads the value of X in the
5135 registration callback, it will now continue to function as expected. In some
5136 cases however, this may cause an undesired change in behavior: if the dynamic
5137 default of setting X depends on the value of setting Y, and an extension
5138 changes Y, the changed value of Y will no longer affect the value of X.
5142 MediaWiki 1.39 requires PHP 7.4.3 or later and the following PHP extensions:
5153 MariaDB is the recommended database software. MySQL, PostgreSQL, or SQLite can
5154 be used instead, but support for them is somewhat less mature.
5156 The supported versions are:
5158 * MariaDB 10.3 or higher
5159 * MySQL 5.7.0 or higher
5160 * PostgreSQL 10 or later
5161 * SQLite 3.8.0 or later
5163 == Online documentation ==
5164 Documentation for both end-users and site administrators is available on
5165 MediaWiki.org, and is covered under the GNU Free Documentation License (except
5166 for pages that explicitly state that their contents are in the public domain):
5168 https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
5171 A mailing list is available for MediaWiki user support and discussion:
5173 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
5175 A low-traffic announcements-only list is also available:
5177 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
5179 It's highly recommended that you sign up for one of these lists if you're
5180 going to run a public MediaWiki, so you can be notified of security fixes.
5183 There's usually someone online in #mediawiki on irc.libera.chat.
5187 == MediaWiki 1.38.7 ==
5189 This is a security and maintenance release of the MediaWiki 1.38 branch.
5191 === Changes since MediaWiki 1.38.6 ===
5192 * Localisation updates.
5193 * (T333990) composer.json: Explicitly pin psr/http-message to 1.0.1.
5194 * (T335203, CVE-2023-29197) SECURITY: Upgrading guzzlehttp/psr7
5196 * (T322944) Add Authorization to default $wgAllowedCorsHeaders.
5197 * (T332889, CVE-2023-36675) SECURITY: Fix escaping in BlockLogFormatter.
5198 * (T330464) Work around argument corruption bug in XMLReader::open.
5199 * (T313157) IndexPager: Also protect against $offset being 0.
5200 * (T335612, CVE-2023-36674) SECURITY: Move badFile lookup to Linker.
5202 == MediaWiki 1.38.6 ==
5204 This is a security and maintenance release of the MediaWiki 1.38 branch.
5206 === Changes since MediaWiki 1.38.5 ===
5207 * Localisation updates.
5208 * (T325872) ChangeTags: Remove table name from condition.
5209 * (T324895) MWCallbackStream: Add explicit $stream property.
5210 * (T297031, T326039) PostgresUpdater: Move setDefault ahead of
5211 changeNullableField.
5212 * Remove /images .htaccess rules that are no longer relevent.
5213 * Disable php in .htaccess of images directory as a hardening measure.
5214 * (T322583) Include missing message parameter in message.
5215 * Fix phan error when Excimer is enabled.
5216 * (T323373) Parser: Fix extractSections() behavior for PHP >= 8.0
5217 * (T326021) Add matrix: to $wgUrlProtocols.
5218 * (T326377) rdbms: Use DBConnRef in SelectQueryBuilder.
5219 * api/en.json: api-help-datatype-expiry add missing 'may'.
5220 * (T328222) Pass empty string to strlen() if schema is null for
5222 * (T317329) OutputPage: Fix undefined ['host'] in ImagePreconnect code.
5223 * (T289926) SpecialRevisionDelete: Set default of '' for wpReason.
5224 * (T155582, T328503) Fix XML dumps for content types with non-string
5226 * (T314099) revisiondelete: Replace dynamic property Status::$itemStatuses.
5227 * (T329198) ParamValidator: Improve paramvalidator-help-multi-max message.
5228 * (T292348) WikiImporter: do not fail if upload entry in dump lacks 'text'
5230 * (T295637) Add no to fallback chain of nb and nn.
5231 * (T329484) API: Fix query+allimages user parameter description.
5232 * (T330529) SpecialEditTags: Set default of '' for wpReason.
5233 * (T330526) htmlform: Handle null from HTMLFormField::getDefault in
5235 * (T285159, CVE-2023-29141) SECURITY: Do not apply autoblocks to untrusted
5238 == MediaWiki 1.38.5 ==
5240 This is a security and maintenance release of the MediaWiki 1.38 branch.
5242 === Changes since MediaWiki 1.38.4 ===
5243 * Localisation updates.
5244 * Tests: Explicit cast to int in RandomImageGenerator test (php8 warnings).
5245 * (T319000) WebInstaller: Don't try and run trim() on null.
5246 * (T318753) Installer: Disable logo dropper for now.
5247 * (T320864) When calling mail(), use an array for headers.
5248 * (T311567) In ManualLogEntry, cast the comment to string.
5249 * (T289926) api: Fix minor PHP 8.1 incompatibility in ApiOptions.
5250 * (T322803) SpecialBotPasswords: Don't pass null to trim().
5251 * (T323082) Upgrading wikimedia/xmp-reader (0.8.1 => 0.8.5).
5252 * Language: Handle ronna and quetta.
5253 * PostgresUpdater: Remove trailing space from 'user_id ' column.
5254 * (T304515) LCStoreStaticArray: atomically replace the cache file.
5255 * (T324890, T324891, T324901) Parser: Allow dynamic properties on PHP 8.2.
5256 * (T324910) On pages using multi-content revisions, the raw content of a
5257 specific slot can be retrieved using the action=raw&slot=<role-name> query
5259 * (T322637) SECURITY: sqlite should not create DB file world-readable.
5261 == MediaWiki 1.38.4 ==
5263 This is a maintenance release of the MediaWiki 1.38 branch.
5265 === Changes since MediaWiki 1.38.3 ===
5266 * Fix missing use statement from backport of fix for T307278.
5268 == MediaWiki 1.38.3 ==
5270 This is a security and maintenance release of the MediaWiki 1.38 branch.
5272 === Changes since MediaWiki 1.38.2 ===
5273 * Localisation updates.
5274 * (T311568) UploadBase::setTempFile() handle $tempPath being passed as null.
5275 * (T311559) SpecialListFiles: user parameter isn't always present.
5276 * (T311561) ImageListPager: Don't call htmlspecialchars() on null.
5277 * (T311920) SpecialBlockList: Prevent passing null to trim().
5278 * (T311921) SpecialUserrights: Don't pass null to str_replace.
5279 * (T311570) SpecialWithoutInterwiki: Don't pass null through to
5280 Title::capitalize().
5281 * (T311574, T311576) SpecialLinkSearch: Don't pass null through to the parser.
5282 * (T311360) RecentChange: Straight join to actor table when needed.
5283 * (T311360) RecentChange: Make join to comment table also straight.
5284 * Remove messages in en-gb.json.
5285 * (T312519, T312520) Parser::extensionSubstitution() Don't run substr() on null.
5286 * (T287564) populateInterwiki: Include not null columns iw_api/iw_wikiid.
5287 * (T312302) SpecialRedirect: Don't pass null to explode.
5288 * RemoveInvalidEmails: Fix quoting for postgres.
5289 * (T312678) import: UploadSourceAdapter::stream_read() don't pass null to
5291 * (T312300) SpecialDiff: Don't pass null to explode().
5292 * (T312680) parser: Fix CoreParserFunctions::urlencode() null coalescence $arg.
5293 * (T289926) Handle null passed to wfShorthandToInteger() and Html::element().
5294 * (T289926) Ensure that strlen() does not get passed a (valid) null.
5295 * (T312301) SpecialDiff: Don't pass null to trim().
5296 * Hooks: Use more meaningful name for SkinAfterPortlet hook parameter.
5297 * (T289926) Ensure we don't pass null to mb_strlen.
5298 * (T312305, T311572, T311571, T311578) HTMLForm: Null coalescence in trim()
5300 * (T289926) site: Consistently return null from Site::getDomain().
5301 * (T307304, T289879) filebackend,jobqueue: Add signature for
5302 FilterIterator::accept().
5303 * (T304559) Use page ID from parent revision, improve logging.
5304 * (T312183) rdbms: Adapt hasOrMadeRecentPrimaryChanges test mock for PHP 8.1.
5305 * Add application/vnd.ms-opentype to MIME list.
5306 * Allow composer/installers plugin in composer.json.
5307 * (T313663) Make ReadOnlyModeTest work in php8.
5308 * (T313663) Make HandlerTestTrait compatible with php8.1.
5309 * (T313663) [php8] Make DeletePageTest stop giving warnings on php8.1.
5310 * Change type hints for BatchRowIterator and NotRecursiveIterator for
5311 compatibility with PHP 8.1.
5312 * (T313663) [php8.1] Change override of $wgResourceBasePath for CSP tests.
5313 * (T313663) parser: Mock WikiPage::getContentModel in ParserCacheTest to fix
5315 * (T313663) [php8.1] Make WikiImporterFactoryTest use better mock for
5317 * Fix tests so getName() doesn't return null.
5318 * (T313663) [php8] Don't use strlen on potentially null string.
5319 * (T313663) [php8.1] Suppress test warning about providing null.
5320 * (T313663) [php8.1] mock User::getTitleKey() in DeaultPreferencesFactoryTest.
5321 * (T313663) Parser will use current timestamp instead of null if passed a
5322 RevisionRecord that does not have a timestamp.
5323 * (T313663) Add explicit null check for $sha in FileBackend [php8.1].
5324 * (T313663) LogFormatter: Cast argument of ctype_digit to string [php8.1].
5325 * (T313663) Mock UserOptionsManager::getOption for php8.1.
5326 * (T289879, T289926) Get rid of warnings on PHP 8.1.
5327 * (T313663) Check for null return of preg_replace in MediaWikiTitleCodec.
5328 * (T313663) cast db name to string when checking if it is read only [php8.1].
5329 * (T313663) Avoid testing strlen on null in ApiQuerySiteinfo [php 8.1 compat].
5330 * (T313663) Use default timezone UTC for SpecialWatchlistTest [php 8.1].
5331 * (T313663) Mock User::getTitleKey in SpecialPreferencesTest [php 8.1].
5332 * (T314096) Migrate use of ${var}-style string interpolation.
5333 * (T314099) preprocessor: Add missing field declarations.
5334 * (T313663, T313662) Make default value for optional args {{PAGESINCAT:..}} be
5336 * (T313663) [php8.1] Mock out getLocalDomainID for WatchedItemStore tests.
5337 * (T313663) Suppress warnings for the null test of addIdentifierQuotes.
5338 * (T314225) SpecialCategories: Null coalescene $par.
5339 * (T314099) User: Allow dynamic properties on PHP 8.2.
5340 * (T314404) SpecialGoToInterwiki: Null coalescene $par.
5341 * (T314397) SpecialBlock: Better handle null in getTargetUserTitle.
5342 * (T314099) phpunit: Fix trivial dynamic property usages in tests.
5343 * (T314405) UploadStash: Check if us_prop is set in the fileMetadata.
5344 * (T313663) Make ChangesListSpecialPageTest cast to string for php 8.1.
5345 * (T313663) Do not test giving a null fragment to Title::makeTitle.
5346 * (T314550) SpecialMergeHistory: Set timestamp to '' if no mergepoint.
5347 * (T314551) SpecialMergeHistory: Set defaults for target and dest parameters.
5348 * (T313663) Cast results of Sqlite test to string [php 8.1].
5349 * (T314208) Set $wgServer for HttpRequestFactoryTest to prevent warnings on
5351 * (T314208, T297082) phpunit: Fallback to global default user options.
5352 * (T307282) Avoid passing null to strcasecmp(), for PHP 8.1.
5353 * Fix a couple deprecation warnings in the installer under PHP 8.1.
5354 * api: Add rel=nofollow to help examples.
5355 * (T307613) Validate length of user email on Special:ChangeEmail/
5356 Special:CreateAccount.
5357 * (T314226) LoginSignupSpecialPage: Check if $value is a string before length.
5358 * (T314824) tests: Update parser test after i18n change.
5359 * (T313663, T296083) context: Replace deprecated User::getOption.
5360 * (T295958, T278847) MediaWiki-Docker: Switch PHP images to PHP7.4.
5361 * (T314906, T314907) SpecialBlock: Set defaults for wpPageRestrictions and
5362 wpNamespaceRestrictions.
5363 * (T315309) ImportStreamSource::newFromURL() Prevent passing null to fwrite.
5364 * (T315892) composer.json: Pin phpunit to 8.5.28.
5365 * (T313663) Do not compare byte-for-byte of serialized items in tests [php8.1].
5366 * objectcache: avoid php 8.1 argument type warnings in
5367 genericKeyFromComponents().
5368 * (T317750) session: Fix broken SessionTest case due to PHPUnit dependency
5370 * ManualLogEntry: Don't pass null to trim() as PHP 8.1 whines.
5371 * (T313663) Add a null check VueComponentParser to prevent php8.1 issues.
5372 * (T313049) Bump wikimedia/parsoid to v0.15.1.
5373 * (T318754) WebInstallerOptions::addPersonalizationOptions(): Close fieldset.
5374 * (T318460) SpecialChangeEmail: Set default for returntoquery.
5375 * (T318307) Update docs for HTMLFormField::validate() to permit all data types.
5376 * (T316304, CVE-2022-41767) SECURITY: reassignEdits doesn't update results
5377 in an IP range check on Special:Contributions.
5378 * (T309894, CVE-2022-41765) SECURITY: HTMLUserTextField exposes existence
5380 * (T307278, CVE-2022-41766) SECURITY: On action=rollback the message
5381 "alreadyrolled" can leak revision deleted user name.
5383 == MediaWiki 1.38.2 ==
5385 This is a security and maintenance release of the MediaWiki 1.38 branch.
5387 === Changes since MediaWiki 1.38.1 ===
5388 * Localisation updates.
5389 * (T309426) Repair language selector for SVGs.
5390 * (T310013) Fix default value for $wgShowEXIF and $wgUsePathInfo.
5391 * (T308471) SECURITY: Escape welcomeuser message passed to showSuccessPage().
5392 * (T308473) SECURITY: Escape contributions-title msg for use within page title.
5393 * (T311272) Call parent constructor of AddSite maintenance script first.
5394 * MediaWiki: Don't eagerly initialize action name.
5395 * (T311384, CVE-2022-27776) Updated guzzlehttp/guzzle from 7.4.1 to 7.4.5.
5396 * (T289926) Avoid passing null to trim() in SkinTemplate.
5397 * (T289879) Address deprecations for PHP 8.1.
5398 * (T311473) rollbackEdits: Pass user identity to RollbackPage.
5399 * Upgrade wikimedia/remex-html from 3.0.1 to 3.0.2.
5400 * (T311551) ShellboxClientFactory::getUrl(): Check if $this->key is null.
5401 * (T311552) ChangesListSpecialPage: Don't pass null to FormatJson::decode().
5402 * (T311569) FileBackend::isStoragePath() Handle being passed null.
5403 * (T311544) Pass int to ApiUsageException::newWithMessage()'s $httpCode param.
5404 * (T311678) SpecialEditWatchlist: Prevent passing null to strtolower().
5405 * (T311554) ChangeTags: Return early in formatSummaryRow() if $tags === null.
5406 * Upgrade wikimedia/common-passwords from 0.3.0 to 0.4.0.
5408 == MediaWiki 1.38.1 ==
5410 This is a maintenance release of the MediaWiki 1.38 branch.
5412 === Changes since MediaWiki 1.38.0 ===
5413 * (T309860) Add justinrainbow/json-schema to vendor.
5414 * (T309933) Drop PHP 7.2 support in MediaWiki 1.38; require 7.3.19.
5416 == MediaWiki 1.38.0 ==
5418 === Changes since MediaWiki 1.38.0-rc.1 ===
5419 * Localisation updates.
5420 * (T309114) LocalFile::prerenderThumbnails: Limit the number of thumbnail
5422 * (T305779) phpunit: Support setting skin context in BundleSizeTest subclasses.
5423 * (T309028) SECURITY: ApiEditPage: update title after redirects.
5424 * (T308967) notifications: prevent log spam when invalid user object listed.
5425 * composer: Lock Parsoid version to specific 0.15.0 release.
5426 * (T306362, T308680) change-your-logo.svg: Resize to 135px square, re-crush,
5427 and manually minify.
5429 == MediaWiki 1.38.0-rc.1 ==
5431 === Changes since MediaWiki 1.38.0-rc.0 ===
5432 * Localisation updates.
5433 * (T305028) Undeprecate EditPage::$textbox2.
5434 * (T305635) LogActions is a map, not a list.
5435 * (T306721) Add wikimedia/equivset to vendor; needed by bundled AbuseFilter.
5436 * (T307284) Simplify TransactionManager::pendingWriteQueryDuration.
5437 * (T307307) Add symfony/yaml to vendor.
5438 * Fix old_name in UserLogoutComplete hook.
5439 * REST: don't send stack trace in error responses.
5440 * (T307998) SessionManager: stop storing an ObjectFactory instance.
5441 * (T193565) UserGroupManager: Fix dbDomain in addUserToGroup() deferred update.
5443 == Upgrading notes for 1.38 ==
5444 Don't forget to always back up your database before upgrading!
5446 See the file UPGRADE for more detailed per-version upgrade instructions from the
5447 oldest supported upgrading version, MediaWiki 1.29.
5449 Some specific notes for MediaWiki 1.38 upgrades are below:
5450 * (T191740) The AbuseFilter extension is now bundled with MediaWiki. This is an
5451 anti-abuse feature that lets privileged users to set specific actions to be
5452 taken when actions by users, such as edits or file uploads, match certain
5454 * (T232948) The Math extension is now bundled with MediaWiki. This is a content
5455 feature that lets users create mathematical formulæ, written in a sub-set of
5456 LaTeX and rendered in MathML with a fallback SVG image. By default, it will
5457 use Wikimedia's mathoid service to render each formula, but local rendering
5458 can be set up for network isolation or performance.
5459 * (T191743) The Minerva skin is now bundled with MediaWiki. This is a simple,
5460 light-weight, and scalable skin that is particularly optimised for mobile use,
5461 and integrates well with the MobileFrontend extension (available separately),
5462 but can also be used as a regular desktop skin.
5464 For notes on 1.37.x and older releases, see HISTORY.
5466 === Configuration changes for system administrators in 1.38 ===
5468 ==== New configuration ====
5469 * (T297708) $wgMaxExecutionTimeForExpensiveQueries - This setting can be used to
5470 control the maximum execution time for several expensive query pages (e.g.
5471 RecentChanges and UserContribs).
5472 * $wgBrowserFormatDetection – This setting allows overriding browsers' automatic
5473 detection and handling of formats. It's initially used to prevent auto-linking
5474 of possible telephone numbers in wiki pages' output in Safari on iOS; this can
5475 be re-enabled if you wish, or locally extended for other browsers' quirks.
5476 * (T240685) $wgMetricsTarget, $wgMetricsFormat, $wgMetricsPrefix - These provide
5477 configuration for a new MetricsFactory service with support for the dogstatsd
5478 format, intended for integration with Prometheus integration.
5479 * $wgGroupInheritsPermissions – This setting allows inheriting permissions, both
5480 granted and revoked, from another group.
5481 * $wgForeignApiRepos – ForeignAPIRepo now has a apiMetadataExpiry option to
5482 control for how long file metadata is cached. Additionally the default changed
5483 from 1 hour to 4 hours.
5484 * $wgSkinsPreferred – This lets you set a list of preferred skins to be listed
5485 higher in Special:Preferences.
5486 * $wgWikiFarmSettingsDirectory – A directory that contains site-specific
5487 configuration files. Setting this will enable multi-tenant ("wiki farm")
5488 mode, causing site-specific settings to be loaded based on information from
5489 the web request. EXPERIMENTAL.
5490 * $wgWikiFarmSettingsExtension – The file extension to be used when looking up
5491 site-specific settings files in $wgWikiFarmSettingsDirectory, such as 'json'
5492 or 'yaml'. EXPERIMENTAL.
5493 * $wgWikiFarmSiteDetector – A callback function that returns the name of the
5494 wiki for the current request. This is used in multi-tenant ("wiki farm")
5495 mode to determine which settings file to load from
5496 $wgWikiFarmSettingsDirectory. EXPERIMENTAL.
5497 * $wgEnableRemoteBagOStuffTests – This replaces the environment variable
5498 PHPUNIT_USE_BAGOSTUFF.
5499 * (T230211) $wgForceDeferredUpdatesPreSend – Force deferred updates to be run
5500 before sending a response to the client, instead of attempting to run them
5501 after sending the response. Setting this to true is useful for end-to-end
5502 testing, to ensure that the effects of a request are visible to any subsequent
5503 requests, even if they are made immediately after the first one. Note however
5504 that this does not ensure that database replication is complete, nor does it
5505 execute any jobs enqueued for later.
5506 * $wgTemplateLinksSchemaMigrationStage – Templatelinks table schema migration
5507 stage, for normalizing tl_namespace and tl_title fields.
5509 ==== Changed configuration ====
5510 * $wgStyleDirectory and $wgExtensionDirectory – These are now set later, so can
5511 no longer be used within LocalSettings.php unless explicitly set in that file.
5512 * $wgFileBackends – This setting no longer takes 'fileJournal' as an option.
5513 * $wgMaxImageArea - This setting may now be set to false to disable size.
5514 checking before scaling. Extensions can still override its value by using the
5515 BitmapHandlerCheckImageArea hook.
5516 * $wgAjaxUploadDestCheck – This is now deprecated, and act as always-true.
5517 * $wgInterwikiCache – This no longer supports the string value for CDB files.
5518 * $wgParserOutputHooks – This is now deprecated; adjustments using this should
5519 be done with OutputPageParserOutputHook instead. (T292321)
5520 * $wgExternalStores – This is newly documentated in
5521 includes/externalstore/README.md.
5523 ==== Removed configuration ====
5524 * $wgShellLocale - This setting has been removed as it was a flawed solution to
5525 the problem of locale dependence, MediaWiki will now always set a locale of
5526 C.UTF-8 or C and works around the remaining problems of the C locale by not
5527 using escapeshellarg. This follows the direction of PHP 8.0, which sets a
5528 locale of C by default instead of respecting LC_CTYPE.
5529 * $wgLoggedOutMaxAge - Experiment removed, originally added in 1.35. (T293848)
5530 * $wgIncludejQueryMigrate - Deprecated in 1.36. We only support jQuery v3.
5531 * $wgUseCategoryBrowser - This experimental feature has been removed. If you
5532 still need to use this feature, please see [[mw:Extension:CategoryExplorer]].
5533 * $wgStyleSheetPath - alias for $wgStylePath, deprecated since 1.3 (2004).
5535 === User-facing changes in 1.38 ===
5536 * (T284921) The "auto-number headings" feature was removed following a
5537 consultation, due to performance reasons.
5539 === New operator/developer features in 1.38 ===
5540 * EXPERIMENTAL: The environment variable MW_CONFIG_FILE can be used to specify
5541 the location of the settings file. This allows alternative settings files to
5542 be loaded depending on the environment. Settings files may be given as PHP
5543 files like the traditional LocalSettings.php file, or they may use JSON or
5545 See https://www.mediawiki.org/wiki/Manual:YAML_settings_file_format
5546 * Added a deleteUserEmail maintenance script - This file enables the deletion of
5547 a given user's associated email address. It can be helpful for
5548 privacy-preserving operations.
5549 * The description array for constructing an HTMLForm now can use 'disable-if' to
5550 disable fields on condition easily, supported expressions are the same as
5552 * There is a new interface, IForeignRepoWithMWApi, to allows you to mark file
5553 repos provided by an extension as supporting making API queries against the
5554 foreign file repo so that extensions like TimedMediaHandler that depend on
5555 this can stop hard-coding looking for specific class names.
5556 * Added EXPERIMENTAL support for an easy to configure multi-tenant ("wiki
5558 Settings for each site can be placed in a directory specified by
5559 $wgWikiFarmSettingsDirectory. Site detection is controlled by
5560 $wgWikiFarmSiteDetector and defaults to the requested host name.
5561 For example, setting $wgWikiFarmSettingsDirectory = "sites" would cause
5562 the settings for wiki.example.com to be loaded from
5563 "sites/wiki_example_com.yaml".
5564 WARNING: YAML files under the web root may be accessible to browsers, please
5565 take appropriate measures to protect them from access via HTTP.
5566 * Running QUnit tests for an individual test suite module is possible with
5567 `grunt qunit --qunit-component={componentName}`, where {componentName} is
5568 "MediaWiki" to run core's QUnit tests or the skin or extension name.
5569 * The 'mediawiki.mixins' module now has a `.user-select()` Less mixin.
5571 === External library changes in 1.38 ===
5573 ==== New external libraries ====
5574 * symfony/yaml was promoted from development-only.
5575 * justinrainbow/json-schema was promoted from development-only.
5577 ==== Changed external libraries ====
5578 * Updated OOUI from v0.42.0 to v0.43.2.
5579 * Updated Vue from 2.6.11 to 3.2.23.
5580 * Updated WVUI from v0.3.0 to v0.4.0.
5581 * Updated composer/semver from 3.2.5 to 3.2.6.
5582 * Updated guzzlehttp/guzzle from 7.2.0 to 7.4.5.
5583 * Updated pear/mail_mime from 1.10.9 to 1.10.11.
5584 * Updated pear/net_smtp from 1.9.2 to 1.10.0.
5585 * Updated psr/log from 1.1.3 to 1.1.4.
5586 * Updated psy/psysh from 0.10.5 to 0.11.1.
5587 * Updated symfony/polyfill-php80 from 1.23.1 to 1.25.0.
5588 * Updated wikimedia/assert from 0.5.0 to 0.5.1.
5589 * Updated wikimedia/cdb from 1.4.1 to 2.0.0.
5590 * Updated wikimedia/ip-utils from 3.0.2 to 4.0.0.
5591 * Updated wikimedia/minify from 2.2.4 to 2.2.6.
5592 * Updated wikimedia/object-factory from 3.0.2 to 4.0.0.
5593 * Updated wikimedia/parsoid from v0.14.0-a14 to v0.15.0.
5594 * Updated wikimedia/purtle from 1.0.7 to 1.0.8.
5595 * Updated wikimedia/request-timeout from 1.1.0 to 1.2.0.
5596 * Updated wikimedia/shellbox from 2.0.0 to 3.0.0.
5597 * Updated wikimedia/wrappedstring from 3.2.0 to 4.0.1.
5598 * Updated wikimedia/remex-html from 3.0.1 to 3.0.2.
5599 * Updated wikimedia/common-passwords from 0.3.0 to 0.4.0.
5601 ===== Changed development-only external libraries =====
5602 * Updated QUnit from 2.16.0 to 2.18.0.
5603 * Updated composer/semver from 3.5.4 to 3.5.5.
5604 * Updated composer/spdx-licenses from 1.5.4 to 1.5.5.
5605 * Updated doctrine/dbal for PHP < 7.3 from 2.10.4 to 2.13.6.
5606 * Updated doctrine/dbal for PHP >= 7.3 from 3.0.0 to 3.1.5.
5608 ==== Removed external libraries ====
5609 * jquery.jStorage, deprecated since MW 1.28; use "mediawiki.storage" instead.
5611 === Action API changes in 1.38 ===
5612 * New `deletetalk` parameter on action=delete that allows you to delete the
5613 associated talk page of a subject page.
5614 * New `variant` parameter for all API actions, for specifying language variant
5615 (akin to the existing `variant` parameter for index.php). Task T117549.
5617 === Languages updated in 1.38 ===
5618 MediaWiki supports over 400 languages. Many localisations are updated regularly.
5619 Below only new and removed languages are listed, as well as changes to languages
5620 because of Phabricator reports.
5622 * (T292166) Updated namespace names for the Lombard language.
5623 * (T299201) Changed the autonym of the Angika language to अंगिका
5624 * (T298309) Changed the autonym of the Abkhaz language to аԥсшәа
5625 * (T302972) Changed the autonym of the Kirundi language to ikirundi
5626 * (T220303) Show numbered lists with Burmese numerals in relevant languages
5627 * (T291899) Added language support for Xiang Chinese (hsn).
5628 * (T292612) Added language support for S'gaw Karen (ksw).
5629 * (T293656) Added language support for Farefare (gur).
5630 * (T294729) Added language support for Pa'O (blk).
5631 * (T296286) Added language support for Skolt Sámi (sms).
5632 * (T296612) Added language support for Makhuwa (vmw).
5633 * (T296707) Added language support for Ga (gaa).
5634 * (T297073) Added language support for Nanai (gld).
5635 * (T297074) Added language support for Nawdm (nmz).
5636 * (T298075) Added language support for Northern Thai (nod).
5637 * (T298182) Added language support for Cape Verdean Creole (kea).
5638 * (T298385) Added language support for Nheengatu (yrl).
5639 * (T299329) Added language support for Fon (fon).
5640 * (T300474) Added language support for Nkore (nyn).
5641 * (T302556) Added language support for Pannonian Rusyn (rsk).
5643 === Breaking changes in 1.38 ===
5644 * (T291008) The IP class, deprecated since 1.35 in favor of the IPUtils library,
5645 has been removed. The IP related regexes which were also deprecated in favor
5646 of the IPUtils library were also removed, IPUtils::RE_* should be used
5648 * (T293043) The MediaWikiIntegrationTestCase class alias 'MediaWikiTestCase' has
5650 * LinkCache::singleton(), deprecated since 1.28, has been removed.
5651 * RepoGroup::singleton(), ::destroySingletons() and setSingleton(), all
5652 deprecated since 1.34, have been removed.
5653 * The following methods from FileDeleteForm were removed:
5654 - ::__construct (the class is no longer newable)
5656 - ::haveDeletableFile()
5657 Use FileDeleteAction instead.
5658 * MessageCache::singleton(), deprecated since 1.34, has been removed.
5659 * LockManagerGroup::singleton() and ::destroySingletons(), both deprecated since
5660 1.34, have been removed.
5661 * FileBackendGroup::singleton() and ::destroySingletons(), both deprecated since
5662 1.35, have been removed.
5663 * TemplateParser used to support disabling the cache with a boolean parameter in
5664 its constructor. This was deprecated in 1.35 and has now been removed.
5665 * The ArticleUndeleteLogEntry hook, deprecated in 1.37, was removed.
5666 * The BeforeResetNotificationTimestamp hook, deprecated in 1.37, was removed.
5667 * The global function mimeTypeMatch() has been removed without a deprecation
5669 * The following JavaScript mw.config keys have been removed:
5673 - $wgCookieExpiration
5674 Use mw.cookie from the mediawiki.cookie module instead.
5675 * The signature of PageUpdater::markAsRevert method was changed. It has never
5676 been used outside of MediaWiki core.
5677 * If you want to use interwiki titles with HTMLTitleTextField, you now need to
5678 pass 'interwiki' => true. In 1.37, the default behavior was to let interwiki
5679 title through by default, logging a deprecation warning.
5680 * The `UndeleteForm::undelete` hook, deprecated in 1.37, was removed.
5681 * BagOStuff::setDebug(), deprecated since 1.36, has been removed.
5682 * The `jquery.mw-jump` ResourceLoader module was removed.
5683 * The `wgForeignUploadTargets` and `wgEnableUploads` configuration values were
5684 removed from mw.config. They had previously been documented as being included
5685 for internal use by the mediawiki.ForeignUpload module.
5686 *The `&$hasHistory` parameter to WikiPage::getAutoDeleteReason() and
5687 ContentHandler::getAutoDeleteReason() was hard-deprecated with no replacement.
5688 * Several Skin methods, which have emitted deprecation warnings since 1.36, have
5689 been removed. These include:
5690 - Skin::privacyLink()
5692 - Skin::disclaimerLink()
5693 For these, instead use Skin::footerLink() to alter footer links.
5695 For this, use ResourceLoaderSkinModule::getAvailableLogos() instead.
5696 - Skin::getIndicatorsHTML()
5697 For this, use Skin::getIndicatorsData() instead.
5698 - Skin::subPageSubtitle()
5699 For this, use Skin::prepareSubtitle() instead.
5700 - Skin::makeVariablesScript()
5701 For this, use ResourceLoader::makeInlineScript() instead.
5702 - Skin::getAllowedSkins()
5703 - Skin::getSkinNames()
5704 For these, use SkinFactory::getAllowedSkins() or ::getInstalledSkins().
5706 - Skin::getSearchLink()
5707 - Skin::mainPageLink()
5708 * Parser::getUser and ::mUser, as well as ParserOptions::getUser, deprecated
5709 since 1.37, has been removed.
5710 * Parser::$mStripState, deprecated in 1.35, has been made private. Use
5711 Parser::getStripState() instead.
5712 * The following deprecated features in blocks were removed:
5713 - DatabaseBlock constructor 'byText' property with blocker's name, use 'by'
5714 property with UserIdentity value instead.
5715 - DatabaseBlock constructor 'by' property with blocker's ID, use 'by' property
5716 with UserIdentity value instead.
5717 - DatabaseBlock::isWhitelistedFromAutoblocks, use ::isExemptedFromAutoblocks.
5718 - DatabaseBlock::setBlocker now only accepts UserIdentity.
5719 - AbstractBlock::getTargetAndType and ::getTarget, use ::getTargetName,
5720 ::getTargetUserIdentity and ::getType instead
5721 * The following functions, emitting deprecations since 1.37, have been removed:
5722 - Title::isWatchable()
5723 - WatchAction::doWatchOrUnwatch(), WatchAction::doWatch(),
5724 WatchAction::doUnwatch(), WatchAction::getWatchToken()
5725 - User::isWatched(), User::isTempWatched(), User::addWatch(),
5727 * ParserOptions::setTidy() that had no effect and was deprecated since 1.35 has
5729 * The "YAML" encoding option of EtcdConfig, has been removed without
5731 * The constant ApiBase::PARAM_VALUE_LINKS, deprecated since 1.35 has been
5733 * UserLoadOptions, UserSaveOptions and UserResetAllOptions hooks, deprecated
5734 since 1.37, were removed.
5735 * The experimental FileJournal system has been removed without deprecation. This
5736 includes the FileJournal abstract class, its implementation classes
5737 DBFileJournal and NullFileJournal, various minor getters and setters, and the
5738 option for the wiki configuration $wgFileBackends.
5739 * The return values for each `bind` function in checkboxHack.js has been changed
5740 from an object to a function. In addition, the `unbind` function has been
5741 removed. A deprecation process was assumed unnecessary as there were no known
5743 * File::getUser, ::getImageSize, ArchivedFile::getRawDescription, ::getUser,
5744 ::getRawUser and ::getRawDescription, deprecated since 1.37, has been removed.
5745 * ShellboxHttpClient class has been removed without deprecation. It was an
5746 internal class used by ShellboxClientFactory.
5747 * The following hard deprecated User methods have been removed:
5748 - ::resetIdByNameCache,
5749 - ::getStubThreshold,
5750 - ::matchEditTokenNoSuffix,
5751 - ::changeableByGroup,
5752 - ::changeableGroups,
5753 - ::isAllowUsertalk,
5758 - ::isValidUserName,
5760 - ::isCreatableName,
5761 - ::getCanonicalName,
5762 - ::addAutopromoteOnceGroups,
5763 - ::getDefaultOptions,
5764 - ::getDefaultOption,
5772 - ::getEffectiveGroups,
5773 - ::getAutomaticGroups,
5776 - ::getFirstEditTimestamp
5777 - ::getLatestEditTimestamp
5778 * Http::$httpEngine, deprecated since 1.34, has been removed. The only available
5779 HTTP engine is now Guzzle. CurlHttpRequest and PhpHttpRequest classes were
5781 * The UserRightsProxy class was deprecated. Pass the correct domain to
5782 UserGroupManagerFactory instead.
5783 * Parser option enableLimitReport was deprecated. The report is now generated
5784 post-parse and can be included by providing 'includeDebugInfo' option to
5785 ParserOutput::getText. Thus, ParserOptions::enableLimitReport and
5786 ::getEnableLimitReport methods were deprecated.
5787 * Ajax action that was deprecated in 1.27 now has been removed.
5788 * The following methods have been removed from IDatabase without deprecation as
5789 they were completely unused:
5790 - ::preCommitCallbacksPending()
5791 - ::pendingWriteRowsAffected()
5792 - ::getServerUptime()
5794 * The following deprecated methods have been removed from IDatabase:
5795 - ::aggregateValue() soft-deprecated since 1.33
5796 - ::getTopologyRootMaster() since 1.37
5797 - ::masterPosWait() since 1.37
5798 - ::dataSeek() soft-deprecated since 1.37
5799 - ::numFields() soft-deprecated since 1.37
5800 - ::fieldName() soft-deprecated since 1.37
5801 - ::onTransactionIdle() soft-deprecated since 1.32
5802 - ::getMasterPos() since 1.37
5803 * DatabaseMysqlBase::fieldType() and DatabasePostgres::fieldType(), deprecated
5804 since 1.37, have been removed.
5805 * Database::assertIsWritableMaster(), deprecated since 1.37, has been removed.
5806 * ResultWrapper::getInternalResult(), soft-deprecated since 1.37 and
5807 ResultWrapper::unwrap(), deprecated since 1.37, have been removed.
5808 * Language::AS_AUTONYMS, deprecated since 1.34, has been removed. You can use
5809 the LanguageNameUtils::AUTONYMS constant instead.
5810 * Several Language class variables deprecated in 1.35 have been removed; they
5811 are each replaced by a constant, as listed after the arrow:
5812 - ::$mWeekdayMsgs → WEEKDAY_MESSAGES
5813 - ::$mWeekdayAbbrevMsg → WEEKDAY_ABBREVIATED_MESSAGES
5814 - ::$mMonthGenMsgs → MONTH_GENITIVE_MESSAGES
5815 - ::$mIranianCalendarMonthMsgs → IRANIAN_CALENDAR_MONTHS_MESSAGES
5816 - ::$mHebrewCalendarMonthMsgs → HEBREW_CALENDAR_MONTHS_MESSAGES
5817 - ::$mHebrewCalendarMonthGenMsgs → HEBREW_CALENDAR_MONTH_GENITIVE_MESSAGES
5818 - ::$mHijriCalendarMonthMsgs → HIJRI_CALENDAR_MONTH_MESSAGES
5819 * wfIncrStats, deprecated since 1.36, has been removed.
5820 * Profiler::profileIn and ::profileOut, deprecated in 1.33, has been removed.
5821 * IEditObject::AS_CANNOT_USE_CUSTOM_MODEL, deprecated in 1.35, was removed.
5822 * Several protected methods in EditPage were made private. None of these was
5823 used outside of EditPage itself. Since the class is not stable to extend,
5824 this change happened without a deprecation phase.
5825 * The following public methods in EditPage, unused externally, were
5828 - ::isSupportedContentModel()
5829 - ::getParentRevId()
5830 * EditPage::setApiEditOverride() was marked as @internal for use by
5832 * SelectQueryBuilder::straightJoin() was renamed to straightJoinOption().
5833 * The following deprecated methods have been removed from ILBFactory:
5834 - ::beginMasterChanges() since 1.37
5835 - ::commitMasterChanges() since 1.37
5836 - ::rollbackMasterChanges() since 1.37
5837 - ::hasMasterChanges() since 1.37
5838 - ::hasOrMadeRecentMasterChanges() since 1.37
5839 * The "groupLoadsByDB" option to LBFactoryMulti has been removed. Consider using
5840 "groupLoadsBySection" instead.
5841 * The following methods have been removed from ILoadBalancer without deprecation
5842 as they were completely unused:
5845 - ::forEachOpenReplicaConnection()
5846 * The following deprecated methods have been removed from ILoadBalancer:
5847 - ::getMasterPos() since 1.37
5848 - ::finalizeMasterChanges() since 1.37
5849 - ::approveMasterChanges() since 1.37
5850 - ::beginMasterChanges() since 1.37
5851 - ::commitMasterChanges() since 1.37
5852 - ::runMasterTransactionIdleCallbacks() since 1.37
5853 - ::runMasterTransactionListenerCallbacks() since 1.37
5854 - ::rollbackMasterChanges() since 1.37
5855 - ::flushMasterSnapshots() since 1.37
5856 - ::hasMasterConnection() since 1.37
5857 - ::hasMasterChanges() since 1.37
5858 - ::lastMasterChangeTimestamp() since 1.37
5859 - ::hasOrMadeRecentMasterChanges() since 1.37
5860 - ::pendingMasterChangeCallers() since 1.37
5861 - ::forEachOpenMasterConnection() since 1.37
5862 - ::waitForMasterPos() since 1.37
5863 * LoadBalancer::safeGetLag() which has been soft-deprecated since 1.34 has been
5865 * The following properties of the EditPage class, deprecated since 1.35, were
5867 - ::$deletedSinceEdit
5875 - ::$allowBlankSummary
5878 - ::$hasPresetSummary
5882 - ::$nosummaryparentRevId
5886 * Special:ListFiles and Special:NewFiles no longer allows to search for parts of
5887 file names (option was not available for $wgMiserMode = true)
5888 * DBAccessBase, deprecated since 1.37, has been removed.
5889 * The UserNamePrefixSearch service no longer supports a UserIdentity parameter
5890 to search(), to check for a specific audience an Authority object is required.
5891 * The methods CoreParserFunctions::register() and CoreTagHooks::register() have
5892 been marked @internal, and had a seconds parameter added. These methods are
5893 intended for use in Parser's constructor, and are not used by any known
5895 * LoadBalancer::openConnection(), deprecated since 1.34, has been removed.
5896 * Skin::preloadExistence has been made private. There is no known usages outside
5899 === Deprecations in 1.38 ===
5900 * The MWGrants class is deprecated in favor of the new GrantsInfo and
5901 GrantsLocalization services.
5902 * The global functions wfReadOnly() and wfReadOnlyReason() have been deprecated
5903 in favor of the ReadOnlyMode service.
5904 * PageProps::getInstance() has been deprecated. Use
5905 MediaWikiServices::getPageProps() instead.
5906 * User::setOption(), deprecated since 1.35, now emits deprecation warnings.
5907 * Linker::formatComment(), ::formatLinksInComment(), ::commentBlock() and
5908 revComment() were deprecated. Use the new CommentFormatter service.
5909 * Several Skin methods have been deprecated.
5910 - Skin::setSearchPageTitle(), Skin::getSearchPageTitle(). For these,
5911 use SpecialPage::newSearchPage() or associated user preference instead.
5912 - Skin::getSkinStylePath now triggers deprecation warnings. Direct string path
5913 should be used instead.
5914 - SkinTemplate::getPersonalToolsList(), deprecated since 1.35, now emits
5915 deprecation warnings.
5916 - In preparation for SkinTemplate::getPortletData becoming a private
5917 function, extending the method is no longer permitted. Use
5918 SkinTemplate::getTemplateData instead.
5919 - SkinTemplate::buildContentNavigationUrls is now deprecated. Skins can
5920 use the runOnSkinTemplateNavigationHooks method or the
5921 SkinTemplateNavigation__Universal hook if they need access to this data.
5922 * Usage of several template data keys in QuickTemplate are now deprecated:
5923 - searchaction, poweredbyico, copyrightico
5924 * DatabaseBlock::purgeExpired(), deprecated since 1.36, now emits deprecation
5926 * The following methods from the User class now trigger deprecation warnings:
5929 * Content::getParserOutput and AbstractContent::fillParserOutput was
5930 hard-deprecated, use ContentRenderer::getParserOutput instead. Extensions
5931 defining a content model should override ContentHandler::fillParserOutput.
5932 * Title::newFromIDs and TitleFactory::newFromIDs have been hard deprecated. Use
5933 a PageSelectQueryBuilder from a PageStore instead.
5934 * Content::getRedirectChain() and Content::getUltimateRedirectTarget() have been
5935 deprecated with no replacement because support for $wgMaxRedirect will be
5936 removed completely. See T296430 for more information.
5937 * WikiPage::getRedirectTarget() has been deprecated. Use the equivalent
5938 RedirectLookup::getRedirectTarget() instead.
5939 * Article::doDelete() was deprecated. Use WikiPage::doDeleteArticleReal if you
5940 only need to delete the article. If you also need things to happen with
5941 OutputPage, you may want to check the hooks in DeleteAction instead.
5942 * Instantiating the MessageContent class now emits deprecation notices.
5943 * Message::content() now triggers deprecation warnings.
5944 * Parser::setDefaultSort(), Parser::getDefaultSort(), and
5945 Parser::getCustomDefaultSort() now trigger deprecation warnings. Use
5946 ParserOutput::{get,set}PageProperty('defaultsort') instead.
5947 * The following methods from the ParserOutput class now emit deprecation
5949 - ::hideNewSection() - use ::setHideNewSection()
5950 - ::preventClickjacking() - use ::{get,set}PreventClickjacking()
5951 - ::getProperty() - use ::getPageProperty() (return value changed)
5952 - ::setProperty() - use ::setPageProperty()
5953 - ::unsetProperty() - use ::unsetPageProperties()
5954 - ::getProperties() - use ::getPageProperties()
5955 - ::getCategoryLinks() - use ::getCategoryNames()
5956 - ::setCategoryLinks() - use ::setCategories()
5957 - ::addTrackingCategory() - use Parser::addTrackingCategory()
5958 or TrackingCategories::addTrackingCategory()
5959 - ::addWarning() - use ::addWarningMsg()
5960 - ::hasDynamicContent() - use ::hasReducedExpiry()
5961 * The following methods from the ParserOutput class were deprecated:
5962 - ::getFlag() - use ::getOutputFlag()
5963 - ::setFlag() - use ::setOutputFlag()
5964 - ::getAllFlags() - this method is now marked @internal
5965 - ::addJsConfigVars() - use ::setJsConfigVar() or ::appendJsConfigVar()
5966 - ::addOutputHook() / ::getOutputHooks() - these hooks should be migrated
5967 to use the OutputPageParserOutput hook instead
5968 * The use of ParserOutput::setExtensionData() to overwrite previous values
5969 stored under a given key has been deprecated; use the new
5970 ::appendExtensionData() to collect multiple values in the ParserOutput rather
5971 than destructively updating stored values. (T300981)
5972 * The signatures of the following methods from the ParserOutput class were
5973 narrowed, restricting the permitted argument types:
5974 - ::addModules() - if you formerly passed a string, pass an array with
5975 the string as the only element.
5976 - ::addModuleStyles() - if you formerly passed a string, pass an array
5977 with the string as the only element.
5978 * Access to the following public or protected properties of OutputPage was
5979 deprecated; they will be made private or removed in a future release.
5980 Use accessor functions instead.
5989 - ::$mEnableClientCache
5990 - ::$mNewSectionLink
5991 - ::$mHideNewSectionLink
5993 * The following methods were deprecated; use ::setPreventClickjacking(..)
5995 - OutputPage::preventClickjacking()
5996 - OutputPage::allowClickjacking()
5997 - ImageHistoryList::preventClickjacking()
5998 - ImageHistoryPseudoPager::preventClickjacking()
5999 - ContribsPager::preventClickjacking()
6000 * OutputPage::enableClientCache() was deprecated, because it is universally used
6001 to do the opposite -- use OutputPage::disableClientCache() instead.
6002 * Sanitizer::removeHTMLtags() has been deprecated. Its output can include
6003 unbalanced or ill-formed HTML and thus external callers may be misled about
6004 how to safely incorporate its output into a page. It is recommended to use the
6005 new Sanitizer::removeSomeTags() method instead, which will always return
6007 * EventRelayerKafka was deprecated. To use $wgEventRelayerConfig with Kafka,
6008 add a similar class to your code.
6009 * MediaWiki\Logger\Monolog\KafkaHandler was deprecated. Consider using
6010 $wgMWLoggerDefaultSpi with SyslogHandler, or to use Kafka, add a similar
6011 Monolog handler class to your code.
6012 * Collation::singleton() and ::factory() now trigger deprecation warnings.
6013 * The following methods in MWNamespace, all deprecated since 1.34, now emit
6014 deprecation warnings:
6018 - getCanonicalNamespaces()
6019 - getCanonicalName()
6020 - getCanonicalIndex()
6021 - getValidNamespaces()
6024 - getContentNamespaces()
6025 * Return values in the parameter $pageLang of the hook PageContentLanguage with
6026 other types than a Language object, deprecated since 1.33, now emmits
6027 deprecation warnings.
6028 * Passing a db to BlockRestrictionStore::loadByBlockId() is deprecated.
6029 BlockRestrictionStoreFactory should be used to fetch a correct
6030 BlockRestrictionStore instead.
6031 * All external access to ParserOutput and CacheTime classes properties will now
6032 emit deprecation warnings. Use getters and setters instead.
6033 * The custom jQuery event `watchpage.mw` emitted on #ca-watch and #ca-unwatch is
6034 now deprecated in favour of the new `wikipage.watchlistChange` hook.
6035 * The global function wfLogProfilingData() has been deprecated without a
6036 replacement. The logic has been moved to the MediaWiki class.
6037 * The "trace" option of SectionProfiler has been deprecated.
6038 * The PageArchive class has had several methods deprecated. The replacements are
6040 - Use UndeletePage instead of ::undeleteAsUser(), ::getFileStatus() and
6041 ::getRevisionStatus().
6042 - Use the respective methods of the new ArchivedRevisionLookup service
6043 instead of ::listRevisions, ::getRevisionRecordByTimestamp,
6044 ::getArchivedRevisionRecord, ::getPreviousRevisionRecord and
6045 ::getLastRevisionId.
6046 - Use ArchivedRevisionLookup::hasArchivedRevisions instead of ::isDeleted.
6047 * PageUpdater::isUnchanged() has been deprecated, use wasRevisionCreated()
6049 * The `mediawiki.pager.tablePager` module was deprecated in favor of the more
6050 generic `mediawiki.pager.styles`.
6051 * wfGetCache() and wfGetMainCache(), both deprecated since 1.32, now emit
6052 deprecation warnings.
6053 * LinkCache::addGoodLinkObj() has been hard deprecated.
6054 * ApiStashEdit::parseAndStash has been hard deprecated.
6055 * Content::prepareSave was hard-deprecated, now emits deprecation warnings.
6056 Use ContentHandler::validateSave instead.
6057 * The hooks LinksUpdateAfterInsert and LinksUpdateConstructed were deprecated.
6058 * Access to all public properties in LinksUpdate was deprecated.
6059 * The global variable $IP has been deprecated for use in application logic.
6060 It will remain available for use in LocalSettings.php for now, though
6061 $wgBaseDirectory is preferred.
6062 Application logic should use the BaseDirectory setting from the main config.
6063 Tests and framework code that need to function without MediaWiki being
6064 fully initialized should use the MW_INSTALL_PATH constant.
6065 * The global function wfWikiID(), deprecated since 1.35, now emits deprecation
6067 * AbstractBlock::getBy() now takes a wikiId as a parameter and emits deprecation
6068 warnings in case of cross-wiki accesses.
6069 * The `button` parameter for `bindUpdateAriaExpandedOnInput` and
6070 `updateAriaExpanded` in checkboxHack.js have been deprecated.
6071 `bindToggleOnSpaceEnter` has also been deprecated in favor of
6072 `bindToggleOnEnter`.
6073 * IDatabase::lockTables() and IDatabase::unlockTables() have been deprecated
6074 with no replacement. Instead, callers should batch updates into atomic
6075 transactions, using FOR UPDATE for SELECT queries.
6076 * EditPage::addNewLineAtEnd() was deprecated; use
6077 TextboxBuilder::addNewLineAtEnd instead.
6078 * EditPage::getCopywarn() was deprecated; use EditPage::getCopyrightWarning
6080 * EditPage::getCopyrightWarning() without passing a MessageLocalizer parameter
6081 has been deprecated.
6082 * Passing the $formCallback parameter to EditPage::showEditForm, deprecated in
6083 1.25 and previously emitting a warn notice, now emits a deprecation notice.
6084 * EditPage::$action has been deprecated.
6085 * The following properties in EditPage now emit deprecation notices when used
6087 - mArticle (use ::getArticle() instead)
6088 - mTitle (use ::getTitle() instead)
6089 - isNew (no replacement)
6090 - allowBlankArticle (no replacement)
6091 - selfRedirect (no replacement)
6092 - allowSelfRedirect (no replacement)
6093 - diff (no replacement)
6094 - textbox2 (no replacement)
6095 - undoAfter (no replacement)
6096 - edit (no replacement)
6097 - contentLength (no replacement)
6098 * The HTMLForm methods getPreText, setPreText, addPreText, getPostText,
6099 setPostText, addPostText, getHeaderText, setHeaderText, addHeaderText,
6100 getFooterText, setFooterText and addFooterText have been renamed to
6101 getPreHtml, setPreHtml, addPreHtml, getPostHtml, setPostHtml, addPostHtml,
6102 getHeaderHtml, setHeaderHtml, addHeaderHtml, getFooterHtml, setFooterHtml and
6103 addFooterHtml respectively.
6104 * The FormSpecialPage methods preText and postText have been renamed to preHtml
6105 and postHtml respectively.
6106 * Article::doDelete, deprecated in 1.37, now emits deprecation notices.
6107 * The following Less mediawiki.mixins have been deprecated:
6108 - .background-image()
6109 - .list-style-image()
6110 * Category::getPageCount now takes a parameter. Category::COUNT_ALL_MEMBERS
6111 return count of all members while Category::COUNT_CONTENT_PAGES return that
6112 of content pages. For the former behavior use Category::getMemberCount()
6113 * Using `new HTMLForm( … )` or `HTMLForm::factory( … )` without the $context
6114 parameter is now deprecated.
6115 * BagOStuff::incr() and BagOStuff::decr() are now deprecated.
6116 * Action::exists() and ActionFactory::actionExists() are deprecated, use
6117 (bool)ActionFactory::getAction().
6119 === Other changes in 1.38 ===
6120 * The following things were changed in the file deletion form:
6121 - The name and ID of the submit button are now `wpConfirmB`, not
6122 `mw-filedelete-submit`
6123 - The ID of the form is now `deleteconfirm`, not `mw-img-deleteconfirm`
6124 - The `mw-filedelete-editreasons` class was replaced with
6125 `mw-delete-editreasons`
6126 The goal of these changes is to make the HTML more similar to that of
6127 normal page deletion.
6128 * ParserOptions created with ::newFrom* or ::newCanonical are now identical.
6129 * MediaWiki initialization order have been changed to load vendor autoload
6130 earlier. This means that extensions that are installed via composer and
6131 execute code upon autoloading can not depend on any MediaWiki classes,
6132 constants or globals in that code.
6133 * The source of truth for configuration defaults is now the MainConfigSchema
6134 class. DefaultSettings.php still exists for backwards compatibility. A PHP
6135 file generated for optimized loading will be used in Setup.php to initialize
6136 configuration variables. Setup.php can be made to load DefaultSettings.php
6137 as before by setting MW_USE_LEGACY_DEFAULT_SETTINGS as an environment
6138 variable (e.g. via SetEnv in htaccess) or a PHP constant (e.g. via
6139 auto_prepend_file in php.ini).
6142 MediaWiki 1.38 requires PHP 7.3.19 or later and the following PHP extensions:
6153 MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
6154 but support for them is somewhat less mature.
6156 The supported versions are:
6158 * MySQL 5.5.8 or later
6159 * PostgreSQL 9.4 or later
6160 * SQLite 3.8.0 or later
6162 == Online documentation ==
6163 Documentation for both end-users and site administrators is available on
6164 MediaWiki.org, and is covered under the GNU Free Documentation License (except
6165 for pages that explicitly state that their contents are in the public domain):
6167 https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
6170 A mailing list is available for MediaWiki user support and discussion:
6172 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
6174 A low-traffic announcements-only list is also available:
6176 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
6178 It's highly recommended that you sign up for one of these lists if you're
6179 going to run a public MediaWiki, so you can be notified of security fixes.
6182 There's usually someone online in #mediawiki on irc.libera.chat.
6186 == MediaWiki 1.37.6 ==
6188 This is a maintenance release of the MediaWiki 1.37 branch.
6190 === Changes since MediaWiki 1.37.5 ===
6191 * Fix missing use statement from backport of fix for T307278.
6193 == MediaWiki 1.37.5 ==
6195 This is a security and maintenance release of the MediaWiki 1.37 branch.
6197 === Changes since MediaWiki 1.37.4 ===
6198 * Localisation updates.
6199 * (T312519, T312520) Parser::extensionSubstitution() Don't run substr() on null.
6200 * (T287564) populateInterwiki: Include not null columns iw_api/iw_wikiid.
6201 * (T312302) SpecialRedirect: Don't pass null to explode.
6202 * RemoveInvalidEmails: Fix quoting for postgres.
6203 * (T312678) import: UploadSourceAdapter::stream_read() don't pass null to
6205 * (T312300) SpecialDiff: Don't pass null to explode().
6206 * (T312680) parser: Fix CoreParserFunctions::urlencode() null coalescence $arg.
6207 * (T289926) Handle null passed to wfShorthandToInteger() and Html::element().
6208 * (T289926) Ensure that strlen() does not get passed a (valid) null.
6209 * (T312301) SpecialDiff: Don't pass null to trim().
6210 * Hooks: Use more meaningful name for SkinAfterPortlet hook parameter.
6211 * (T289926) Ensure we don't pass null to mb_strlen.
6212 * (T312305, T311572, T311571, T311578) HTMLForm: Null coalescence in trim()
6214 * (T289926) site: Consistently return null from Site::getDomain().
6215 * (T307304, T289879) filebackend,jobqueue: Add signature for
6216 FilterIterator::accept().
6217 * (T312183) rdbms: Adapt hasOrMadeRecentPrimaryChanges test mock for PHP 8.1.
6218 * Add application/vnd.ms-opentype to MIME list.
6219 * Allow composer/installers plugin in composer.json.
6220 * Change type hints for BatchRowIterator and NotRecursiveIterator for
6221 compatibility with PHP 8.1.
6222 * (T313663) [php8.1] Change override of $wgResourceBasePath for CSP tests.
6223 * (T313663) parser: Mock WikiPage::getContentModel in ParserCacheTest to fix
6225 * (T313663) [php8.1] Make WikiImporterFactoryTest use better mock for
6227 * Fix tests so getName() doesn't return null.
6228 * (T313663) [php8] Don't use strlen on potentially null string.
6229 * (T313663) [php8.1] Suppress test warning about providing null.
6230 * (T313663) Parser will use current timestamp instead of null if passed a
6231 RevisionRecord that does not have a timestamp.
6232 * (T313663) Add explicit null check for $sha in FileBackend [php8.1].
6233 * (T313663) LogFormatter: Cast argument of ctype_digit to string [php8.1].
6234 * (T313663) Mock UserOptionsManager::getOption for php8.1.
6235 * (T289879, T289926) Get rid of warnings on PHP 8.1.
6236 * (T313663) Check for null return of preg_replace in MediaWikiTitleCodec.
6237 * (T313663) cast db name to string when checking if it is read only [php8.1].
6238 * (T313663) Avoid testing strlen on null in ApiQuerySiteinfo [php 8.1 compat].
6239 * Fix a couple deprecation warnings in the installer under PHP 8.1.
6240 * (T313663) Use default timezone UTC for SpecialWatchlistTest [php 8.1].
6241 * (T313663) Mock User::getTitleKey in SpecialPreferencesTest [php 8.1].
6242 * (T314096) Migrate use of ${var}-style string interpolation.
6243 * (T314099) preprocessor: Add missing field declarations.
6244 * (T313663, T313662) Make default value for optional args {{PAGESINCAT:..}} be
6246 * (T314225) SpecialCategories: Null coalescene $par.
6247 * (T314099) User: Allow dynamic properties on PHP 8.2.
6248 * (T314397) SpecialBlock: Better handle null in getTargetUserTitle.
6249 * (T314099) phpunit: Fix trivial dynamic property usages in tests.
6250 * (T314405) UploadStash: Check if us_prop is set in the fileMetadata.
6251 * (T313663) Make ChangesListSpecialPageTest cast to string for php 8.1.
6252 * (T313663) Do not test giving a null fragment to Title::makeTitle.
6253 * (T314550) SpecialMergeHistory: Set timestamp to '' if no mergepoint.
6254 * (T314551) SpecialMergeHistory: Set defaults for target and dest parameters.
6255 * api: Add rel=nofollow to help examples.
6256 * (T307613) Validate length of user email on Special:ChangeEmail/
6257 Special:CreateAccount.
6258 * (T314226) LoginSignupSpecialPage: Check if $value is a string before length.
6259 * (T314824) tests: Update parser test after i18n change.
6260 * (T295958, T278847) MediaWiki-Docker: Switch PHP images to PHP7.4.
6261 * (T314906, T314907) SpecialBlock: Set defaults for wpPageRestrictions and
6262 wpNamespaceRestrictions.
6263 * (T315309) ImportStreamSource::newFromURL() Prevent passing null to fwrite.
6264 * (T315892) composer.json: Pin phpunit to 8.5.28.
6265 * (T313049) Bump wikimedia/parsoid to v0.14.2.
6266 * (T317750) session: Fix broken SessionTest case due to PHPUnit dependency
6268 * (T318079) SpecialEditTags: Set default value of wpTagsToRemove to empty array.
6269 * (T318460) SpecialChangeEmail: Set default for returntoquery.
6270 * (T318307) Update docs for HTMLFormField::validate() to permit all data types.
6271 * (T316304, CVE-2022-41767) SECURITY: reassignEdits doesn't update results
6272 in an IP range check on Special:Contributions.
6273 * (T309894, CVE-2022-41765) SECURITY: HTMLUserTextField exposes existence
6275 * (T307278, CVE-2022-41766) SECURITY: On action=rollback the message
6276 "alreadyrolled" can leak revision deleted user name.
6278 == MediaWiki 1.37.4 ==
6280 This is a maintenance release of the MediaWiki 1.37 branch.
6282 === Changes since MediaWiki 1.37.3 ===
6283 * Localisation updates.
6284 * (T311568) UploadBase::setTempFile() handle $tempPath being passed as null.
6285 * (T311559) SpecialListFiles: user parameter isn't always present.
6286 * (T311561) ImageListPager: Don't call htmlspecialchars() on null.
6287 * (T311920) SpecialBlockList: Prevent passing null to trim().
6288 * (T311921) SpecialUserrights: Don't pass null to str_replace.
6289 * (T311570) SpecialWithoutInterwiki: Don't pass null through to
6290 Title::capitalize().
6291 * (T311574, T311576) SpecialLinkSearch: Don't pass null through to the parser.
6292 * (T312059) Update guzzlehttp/guzzle to 7.4.5 in vendor.
6293 * (T296435, T297669) cache: Add four fields to LinkCache::getSelectFields.
6295 == MediaWiki 1.37.3 ==
6297 This is a security and maintenance release of the MediaWiki 1.37 branch.
6299 === Changes since MediaWiki 1.37.2 ===
6300 * Localisation updates.
6301 * (T289879) Type hints for ArrayAccess and JsonSerializable.
6302 * (T304783) TemplateParser: avoid warnings when called by NoLocalSettings.
6303 * Rebuilt vendor with composer 2.3.3.
6304 * Fix old_name in UserLogoutComplete hook.
6305 * (T289879) Address some deprecations for PHP 8.1.
6306 * (T193565) UserGroupManager: Fix dbDomain in addUserToGroup() deferred update.
6307 * (T309114) LocalFile::prerenderThumbnails: Limit the number of thumbnail jobs
6309 * (T307982) Updated wikimedia/parsoid from v0.14.0 to v0.14.1.
6310 * (T308471) SECURITY: Escape welcomeuser message passed to showSuccessPage().
6311 * (T308473) SECURITY: Escape contributions-title msg for use within page title.
6312 * (T311272) Call parent constructor of AddSite maintenance script first.
6313 * MediaWiki: Don't eagerly initialize action name.
6314 * Updated wikimedia/shellbox from v2.0.0 to v2.1.1.
6315 * (T311384, CVE-2022-27776) Updated guzzlehttp/guzzle from 7.2.0 to 7.4.5.
6316 * (T289926) Avoid passing null to trim() in SkinTemplate.
6317 * (T311473) rollbackEdits: Pass user identity to RollbackPage.
6318 * (T307282) Avoid passing null to strcasecmp(), for PHP 8.1.
6319 * (T311551) ShellboxClientFactory::getUrl(): Check if $this->key is null.
6320 * (T311552) ChangesListSpecialPage: Don't pass null to FormatJson::decode().
6321 * (T311569) FileBackend::isStoragePath() Handle being passed null.
6322 * (T311544) Pass int to ApiUsageException::newWithMessage()'s $httpCode param.
6323 * (T311678) SpecialEditWatchlist: Prevent passing null to strtolower().
6324 * (T281741) ChangeTags: Fix adding CSS classes for hidden tags.
6325 * (T296642) changetags: Fix management of a '0' tag.
6326 * (T311554) ChangeTags: Return early in formatSummaryRow() if $tags === null.
6327 * (T303033) Handle null in ChangeTags::modifyDisplayQuery.
6328 * Updated wikimedia/common-passwords from 0.3.0 to 0.4.0.
6330 == MediaWiki 1.37.2 ==
6332 This is a security and maintenance release of the MediaWiki 1.37 branch.
6334 === Changes since MediaWiki 1.37.1 ===
6335 * (T298261) Fix support for Composer 2.2.
6336 * (T298283) composer.json: Add wikimedia/composer-merge-plugin to allow-plugins.
6337 * Update doctrine/dbal (3.0.0 => 3.1.5).
6338 * (T296898) Add entry point name to disabled Session exception if possible.
6339 * (T298564) MemcachedClient: Add support for IPv6.
6340 * (T297543, CVE-2022-28202) SECURITY: properly escape output used within
6341 galleries and Special:RevisionDelete.
6342 * (T289956) WatchAction: Fix bug that prevents showing proper success
6343 message in the noscript fallback mode.
6344 * (T268847) Suppress deprecation warnings from libxml_disable_entity_loader().
6345 * (T283275) Fix PHP 8.0 failure of RefreshSecondaryDataUpdateTest.
6346 * (T283275) Fix PHP 8.0 failure of WikiExporterFactoryTest.
6347 * (T275673) objectcache: Avoid getCurrentTime() call in MapCacheLRU::has().
6348 * (T275673) objectcache: split up MapCacheLRU::getAge() to avoid conditional
6350 * Fix the json schema and the extension processor for Parsoid extension modules.
6351 * (T299696) update.php: Avoid passing null to substr.
6352 * (T195807, T256401) Fix signature of DatabasePostgres::buildGroupConcatField.
6353 * In PHP 8.1 don't throw exceptions from mysqli.
6354 * (T289926) SiteConfiguration: Don't pass null to str_replace().
6355 * (T264735) Fix deprecation warning from CURLPIPE_HTTP1.
6356 * (T260735) Stop using is_resource() where possible.
6357 * (T289879) Apply ReturnTypeWillChange to various implementations of built in
6359 * (T299312) Implement __serialize/__unserialize for PHP 8.1 support.
6360 * ExtensionRegistry: Add process cache for lazy attributes.
6361 * (T301041) ApiPageSet: Add "missing": true to missing revisions.
6362 * Allow ParsoidModules extension schema to register services.
6363 * (T300462) SpecialUndelete: Do not show empty comments as deleted.
6364 * (T297708) Allow setting max execution time to several special pages.
6365 * (T205349) LinkCache: Try invalidating cache before throwing.
6366 * (T302540) composer.json: Add ext-calendar to require.
6367 * (T302540) composer.json: Add ext-simplexml to require-dev.
6368 * (T302540) composer.json: Add various PHP extensions to suggests.
6369 * Upgrading symfony/polyfill-php80 (v1.23.1 => v1.25.0).
6370 * (T304008) Don't re-check "Move subpages" on Special:MovePage after a warning.
6371 * (T293576) listFiles: Display file name instead of version.
6372 * (T303871) Fix @since of Title::getId().
6373 * (T303560) Installer: Check correct PCRE_CONFIG_NEWLINE value.
6374 * wrapOldPasswords: add \n to two output calls.
6375 * (T297571, CVE-2022-28201) Title::newMainPage() goes into an infinite recursion
6376 loop if it points to a local interwiki.
6377 * (T297731, CVE-2022-28203) Requesting Special:NewFiles on a wiki with many file
6378 uploads with actor as a condition can result in a DoS.
6379 * (T297754, CVE-2022-28204) Special:WhatLinksHere can result in a DoS when a
6380 page is used on a extremely large number of other pages.
6382 == MediaWiki 1.37.1 ==
6384 This is a security and maintenance release of the MediaWiki 1.37 branch.
6386 === Changes since MediaWiki 1.37.0 ===
6387 * (T296112) Allow inserting new sections named '0'.
6388 * Fix path for ZhConversion.php.
6389 * nukeNS: don't run purgeRedundantText() after every change.
6390 * (T286779, T297031) installer: Fix Postgres mistakes in using changeField
6392 * (T225888) RollbackAction: fix missing pagetitle.
6393 * (T297322, CVE-2021-44858, CVE-2021-44857) SECURITY: Fix permissions checks in
6395 * (T297574, CVE-2021-45038) SECURITY: Fix permissions check in action=rollback.
6396 * (T34716, T297416) SECURITY: Require 'read' right for most actions.
6397 * (T271037, CVE-2021-44856) SECURITY: Fix use of EditFilterMergedContent hook
6398 when changing content model.
6400 == MediaWiki 1.37.0 ==
6402 === Changes since MediaWiki 1.37.0-rc.2 ===
6403 * Remove justinrainbow/json-schema from vendor.
6404 * Updated pear/mail_mime from 1.10.9 to 1.10.11.
6405 * Update deprecated Guzzle Psr7 function calls.
6406 * (T281972) UserIdentityValue: Correct @since tags.
6407 * Updated wikimedia/parsoid from v0.14.0-a19 to v0.14.0.
6408 * Localisation updates.
6409 * Tweak error message for missing composer dependencies.
6411 == MediaWiki 1.37.0-rc.2 ==
6413 === Changes since MediaWiki 1.37.0-rc.1 ===
6414 * (T295173) Re-add wikimedia/normalized-exception to vendor.
6415 * Remove wikimedia/testing-access-wrapper, psr/simple-cache, psr/http-factory
6417 * (T295191) ApiQuerySiteinfo: Fix "rightsinfo"/"url" when $wgRightsPage is set.
6418 * (T212428) Allow populateContentTables to continue when there are bad blobs.
6420 == MediaWiki 1.37.0-rc.1 ==
6422 === Changes since MediaWiki 1.37.0-rc.0 ===
6423 * (T294043) checkStorage: pass no parameters to WikiRevision::getContent().
6424 * (T292763, CVE-2021-44854) SECURITY: Do not cache private wiki completion
6426 * (T293783) ApiQueryImageInfo: don't show empty comments as deleted.
6427 * (T294316) Revert "Mark ApiClientLogin/ApiLogin as requiring write mode".
6428 * (T294796) JobQueueRedis: Replace deprecated zSize with zCard.
6429 * Remove duplicate settings from DefaultSettings.
6430 * (T278037) NoLocalSettings: Pass an EmptyBagOStuff to TemplateParser.
6432 == MediaWiki 1.37.0-rc.0 ==
6434 == Upgrading notes for 1.37 ==
6435 Don't forget to always back up your database before upgrading!
6437 See the file UPGRADE for more detailed per-version upgrade instructions from the
6438 oldest supported upgrading version, MediaWiki 1.27.
6440 Some specific notes for MediaWiki 1.37 upgrades are below:
6441 * (T280806) Deprecated methods of fetching API tokens have been removed. This
6442 may cause older bots and scripts to fail. Most queries are trivially
6443 updateable to using new methods. See the Action API changes section below
6444 for more information.
6446 For notes on 1.36.x and older releases, see HISTORY.
6448 === Configuration changes for system administrators in 1.37 ===
6449 * (T242768) The PasswordCannotMatchUsername password policy has been removed,
6450 please use PasswordCannotBeSubstringInUsername instead. If you have not
6451 customised your password policies, there will be nothing to do here.
6453 ==== New configuration ====
6454 * $wgBrowserFormatDetection - This setting allows the enabling or disabling
6455 of automatic detection of possible phone numbers in a webpage in iOS Safari.
6456 * $wgParserEnableLegacyMediaDOM - This setting defaults to true, and enables
6457 the legacy media HTML structure in the output from the Parser. The
6458 alternative modern HTML structure for media is described at
6459 https://www.mediawiki.org/wiki/Parsing/Media_structure
6460 In a future release of MediaWiki this option will default to false,
6461 so it's a good idea to test this setting on your wiki early and report
6464 ==== Changed configuration ====
6465 * $wgContentHandlerTextFallback - This migration setting, which defines how to
6466 react if a plain text version of a non-text Content object is requested using
6467 ContentHandler::getContentText(), is deprecated.
6468 * $wgActions – This setting lets sysadmins over-ride which actions can be used.
6469 It has been re-worked to support injecting dependencies into Action sub-
6470 classes as part of wider work on dependency injection. Previously, $wgActions
6471 was an array where the keys were the names of actions, and the values had the
6472 following impacts (for a given key 'Foo'):
6473 - `true`: use the class 'FooAction' unless for a specific page
6474 WikiPage::getActionOverrides() wants to override that action
6475 - a string: use the class with that name, and do not allow over-riding on a
6477 - `false`: the action is disabled
6478 - a callable: use the Action instance returned by invoking that callback, and
6479 do not allow overriding on a per-page basis
6480 - an object: use that specific Action instance, and do not allow overr-iding
6481 on a per-page basis.
6482 As part of T253078, values can now be arrays that are not callables, which are
6483 treated as ObjectFactory specs, allowing for services to be injected.
6484 Additionally, the distinction between values that allow per-page overrides and
6485 those that do not was removed - all actions can now be overridden on a per-
6486 page basis using WikiPage::getActionOverrides().
6487 * $wgShellboxUrl – This setting, new in 1.36 to configure the novel Shellbox
6488 encapsulation system, is now deprecated; use $wgShellboxUrls as a mapping of
6489 service => URL instead.
6490 * $wgIncludejQueryMigrate – This setting, introduced in 1.29 to on whether to
6491 provide a migration layer for jQuery, has now switched its default value from
6492 true to false. This may break gadgets that depended on methods that were
6493 removed in jQuery 3 in 2017. See T280944 for more information.
6494 * A number of settings have been renamed. The former configuration variable
6495 names are deprecated, but will be used as the fall back if they are still set,
6496 and remain temporarily available for extensions which might try to read them:
6497 - $wgFileBlacklist is now $wgProhibitedFileExtensions
6498 - $wgMimeTypeBlacklist is now $wgMimeTypeExclusions
6499 - $wgEnableUserEmailBlacklist is now $wgEnableUserEmailMuteList
6500 - $wgShortPagesNamespaceBlacklist is now $wgShortPagesNamespaceExclusions
6501 * $wgMimeTypeExclusions - As well as being renamed, this configuration array now
6502 also prohibits the RFC 4329 form of JavaScript, 'application/javascript', as
6503 well as previous MIME types.
6504 * $wgFragmentMode - This setting, which determines the encoding of section IDs,
6505 has now switched its default value from legacy-first to html5-first: both the
6506 HTML5 anchor and the legacy percent-encoding-style anchor will still be
6507 generated for section titles, but references to them will use the HTML5
6508 version, resulting in human-readable fragments.
6510 ==== Removed configuration ====
6511 * $wgLegacyJavaScriptGlobals, deprecated in 1.36.
6512 * (T274695) $wgAjaxEditStash, deprecated in 1.36.
6513 * $wgShowDBErrorBacktrace, deprecated and non-functional since 1.32.
6514 * $wgShowSQLErrors, deprecated and non-functional since 1.32.
6515 * $wgLangObjCacheSize, without deprecation; the LanguageFactory service now
6516 always retains at most 10 objects in its LRU-cache.
6517 * $wgDjvuToXML, without deprecation; the tool it enables is obsolete and
6518 abandoned upstream. Use $wgDjvuDump to use that tool instead.
6520 === New user-facing features in 1.37 ===
6521 * (T161934) MediaWiki now supports JPEG2000 files, to a limited extent.
6523 === External library changes in 1.37 ===
6525 ==== New external libraries ====
6526 * Added symfony/polyfill-php80 1.23.1.
6527 * Added whatwg-fetch 3.6.2.
6528 * Added wikimedia/normalized-exception 1.0.1.
6530 ==== Changed external libraries ====
6531 * Updated OOjs from v5.0.0 to v6.0.0
6532 * Updated OOjs-Router from v0.2.0 to v0.3.0
6533 * Updated OOUI from v0.41.3 to v0.42.0
6534 * Updated WVUI from v0.1.0 to v0.3.0
6535 * Updated cssjanus/cssjanus from v1.3.0 to v2.1.0.
6536 * Updated pear/mail_mime from 1.10.9 to 1.10.11.
6537 * Updated psr/container from v1.0.0 to v1.1.1.
6538 * Updated wikimedia/minify from v2.2.2 to v2.2.4.
6539 * Updated wikimedia/object-factory from v3.0.0 to v3.0.2.
6540 * Updated wikimedia/parsoid from v0.13.1 to v0.14.1.
6541 * Updated wikimedia/relpath from v2.1.1 to v3.0.0.
6542 * Updated wikimedia/remex-html from v2.3.1 to v2.3.2.
6543 * Updated wikimedia/shellbox from v1.0.4 to v2.1.1.
6544 * Updated wikimedia/wait-condition-loop from v2.0.1 to v2.0.2.
6545 * Updated zordius/lightncandy from v1.2.5 to v1.2.6.
6546 * Updated guzzlehttp/guzzle from 7.2.0 to 7.4.5.
6547 * Updated wikimedia/common-passwords from 0.3.0 to 0.4.0.
6549 ===== Changed development-only external libraries =====
6550 * Updated qunit from 2.10.0 to 2.16.0.
6552 ==== Removed external libraries ====
6553 * The pimple/pimple development-only library has been removed.
6555 === Action API changes in 1.37 ===
6556 * (T280806) The API methods for fetching tokens which were deprecated in
6557 MediaWiki 1.24 have been removed. action=query&meta=tokens&type= should be
6558 used instead. Please note some token types no longer exist, and you should
6559 just use type=csrf for those instead.
6560 - action=query&prop=info&intoken ->
6561 action=query&meta=tokens&type=csrf
6562 - action=tokens&type= ->
6563 action=query&meta=tokens&type=
6564 - action=query&list=recentchanges&rctoken ->
6565 action=query&meta=tokens&type=csrf
6566 - action=query&prop=revisions&rvtoken=rollback ->
6567 action=query&meta=tokens&type=rollback
6568 - action=query&meta=userinfo&uiprop=preferencestoken ->
6569 action=query&meta=tokens&type=csrf
6570 - action=query&list=users&ustoken=userrights ->
6571 action=query&meta=tokens&type=userrights
6573 === Languages updated in 1.37 ===
6574 MediaWiki supports over 350 languages. Many localisations are updated regularly.
6575 Below only new and removed languages are listed, as well as changes to languages
6576 because of Phabricator reports.
6578 * (T280435) LRM and RLM characters were removed from names of languages with
6579 parentheses in Names.php
6580 * (T283422) Add namespace name translations and change the autonym of
6581 the Kinyarwanda language to "Ikinyarwanda".
6582 * (T283423) Change the autonym of the Lombard language from "lumbaart"
6584 * (T279619) Added language support for Dagbani (dag).
6585 * (T282085) Added language support for Malay in Arabic (Jawi) script (ms-arab).
6586 * (T283053) Added language support for Ojibwe (ojb).
6587 * (T283480) Added language support for Wallisian (wls, Fakaʻuvea).
6588 * (T284002) Added language support for Paiwan (pwn).
6589 * (T284044) Added language support for Carpathian Romani (rmc).
6590 * (T286460) Added language support for Gun (guw, Gungbe).
6591 * (T287345) Added language support for Baoulé (bci).
6592 * (T290126) Added language support for Kildin Sami (sjd).
6593 * (T290408) Added language support for Pite Sami (sje).
6594 * (T25216) Started the renaming of the language code for Norman from nrm to
6597 === Breaking changes in 1.37 ===
6598 * The Revision class, emitting deprecation warnings since 1.35, was removed
6599 entirely. As part of this, the following hooks that included a Revision object
6601 - ArticleRevisionUndeleted - use RevisionUndeleted
6602 - ArticleRollbackComplete - use RollbackComplete
6603 - DiffRevisionTools - use DiffTools
6604 - DiffViewHeader - use DifferenceEngineViewHeader
6605 - HistoryRevisionTools - use HistoryTools
6606 - NewRevisionFromEditComplete - use RevisionFromEditComplete
6607 - PageContentInsertComplete - use PageSaveComplete
6608 - PageContentSaveComplete - use PageSaveComplete
6609 - ParserFetchTemplate - use BeforeParserFetchTemplateRevisionRecord
6610 - RevisionInsertComplete - use RevisionRecordInserted
6611 - TitleMoveComplete - use PageMoveComplete
6612 - TitleMoveCompleting - use PageMoveCompleting
6613 - UndeleteShowRevision - no replacement
6614 - UserRetrieveNewTalks - no replacement
6615 … the following methods and variables have been removed:
6616 - Article::$mRevision
6617 - Article::getRevisionFetched()
6618 - ContribsPager::tryToCreateValidRevision()
6619 - EditPage::$mBaseRevision
6620 - EditPage::getBaseRevision()
6621 - LinksUpdate::getRevision()
6622 - LinksUpdate::setRevision()
6623 - PageArchive::getArchivedRevision()
6624 - PageArchive::getPreviousRevision()
6625 - PageArchive::getRevision()
6626 - Parser::$mRevisionObject
6627 - Parser::fetchCurrentRevisionOfTitle()
6628 - Parser::getRevisionObject()
6629 - Parser::statelessFetchRevision()
6630 - ParserOptions::getCurrentRevisionCallback()
6631 - ParserOptions::setCurrentRevisionCallback()
6632 - Title::countAuthorsBetween()
6633 - Title::getFirstRevision()
6634 - User::getNewMessageLinks()
6635 - User::getNewMessageRevisionId()
6636 - User::setNewtalk()
6637 - WikiPage::getOldestRevision()
6638 - WikiPage::getRevision()
6639 - WikiPage::getUndoContent()
6640 - WikiPage::updateIfNewerOn()
6641 … and the following methods no longer accept Revision objects as parameters:
6642 - CategoryMembershipChange::__construct()
6643 - ContentHandler::getUndoContent()
6644 - DerivedPageDataUpdater::prepareUpdate()
6645 - DifferenceEngine::getRevisionHeader()
6646 - Linker::buildRollbackLink()
6647 - Linker::generateRollback()
6648 - Linker::getRevDeleteLink()
6649 - Linker::getRollbackEditCount()
6650 - Linker::revComment()
6651 - Linker::revUserLink()
6652 - Linker::revUserTools()
6653 - WikiPage::doDeleteUpdates()
6654 - WikiPage::doEditUpdates()
6655 - WikiPage::hasDifferencesOutsideMainSlot()
6656 - WikiPage::onArticleEdit()
6657 - WikiPage::prepareContentForEdit()
6658 - WikiPage::updateRevisionOn()
6659 The following methods return arrays that formerly included a 'revision'
6660 key that would emit deprecation warnings when accessed and return a
6661 Revision object. The Revision object has been removed from the arrays,
6662 and the 'revision-record' key should be used to get the relevant
6663 RevisionRecord instead:
6664 - PageUpdater::doCreate()
6665 - PageUpdater::doModify()
6666 - Parser::statelessFetchTemplate()
6667 - WikiPage::doEditContent()
6668 Finally, the ParserOptions `templateCallback` option is a callback that is
6669 called in Parser::fetchTemplateAndTitle() and should return an array - the
6670 'revision' key to that array used to be a Revision object and was used if
6671 no 'revision-record' was returned - is now ignored.
6672 * Previously, the classes RevisionTestModifyableContent and
6673 RevisionTestModifyableContentHandler were loaded for use in tests, but were
6674 only used within the tests for the since-removed Revision class. This content
6675 and content handler class were removed without deprecation.
6676 * WANObjectCache::HOLDOFF_NONE, deprecated since 1.35, was removed. Use
6677 WANObjectCache::HOLDOFF_TTL_NONE instead.
6678 * Calling ResourceLoader::makeVersionQuery() without $modules parameter,
6679 deprecated since MediaWiki 1.34, is no longer supported.
6680 * LocalFile::recordUpload2(), deprecated since 1.35, was removed.
6681 * The following methods and fields in the Language class, deprecated since 1.35,
6686 - ::findVariantLink()
6688 - ::updateConversionTable()
6689 * The following methods in the Parser class have been removed after having been
6693 * (T273354) When an edit is prevented by an 'EditFilterMergedContent' hook
6694 handler without changing the status, the edit form will now be displayed.
6695 * User::clearNotification() which had been deprecated in 1.35 has been removed.
6696 Use WatchlistManager::clearTitleUserNotification() instead.
6697 * User::getNewtalk() which had been deprecated in 1.35 has been removed. Use
6698 TalkPageNotificationManager::userHasNewMessages() instead.
6699 * The Autopromote class, deprecated since 1.35, was removed. Use
6700 UserGroupManager instead.
6701 * The CachedAction, SpecialCachedPage, CacheHelper, and ICacheHelper classes,
6702 all emitting deprecation warnings since 1.36, have been removed.
6703 * The hooks BeforeHttpsRedirect, CanIPUseHTTPS and UserRequiresHTTPS, deprecated
6704 in 1.35, were removed.
6705 * The TitleArrayFromResult hook, deprecated in 1.36, was removed.
6706 * The deprecated "es6-promise" alias ResourceLoader module has been removed. Use
6707 the "es6-polyfills" module directly intead.
6708 * The deprecated "mediawiki.legacy.protect" ResourceLoader module, deprecated
6709 since 1.36, has been removed. Use "mediawiki.action.protect" instead.
6710 * The JavaScript alias $j for references to jQuery, deprecated since 1.23, has
6711 been removed. Use $ instead.
6712 * The AuthenticationProvider interface and the SessionProvider class no longer
6713 extend the PSR LoggerAwareInterface concept, so they can't be typehinted as
6714 LoggerAwareInterface.
6715 * User::getGrantName(), emitting deprecation warnings since 1.36, has been
6716 removed. Use MWGrants::grantName() instead.
6717 * The following ApiBase methods, deprecated since 1.35, have been removed:
6718 - ApiBase::explodeMultiValue
6719 - ApiBase::parseMultiValue
6720 - ApiBase::validateLimit
6721 - ApiBase::validateTimestamp
6722 * The User::idCacheByName() public static field was removed without deprecation.
6723 Instead of using it, get a UserIdentity by name from the UserIdentityLookup
6725 * IDatabase::upsert() and IDatabase::replace() now only accept a single unique
6726 key. Previously, a warning was issued if there were multiple unique keys
6728 * The MediaWiki:Autoblock_whitelist block exemption control was moved in 1.36 to
6729 MediaWiki:Block-autoblock-exemptionlist. The backward-compatibility of reading
6730 the old MediaWiki:Autoblock_whitelist page has now been dropped.
6731 * The following overridable methods in File hierarchy have changed signatures:
6732 - File::deleteFile() - now accepts UserIdentity instead of User
6733 - File::getDescription() - now accepts Authority instead of User
6734 - File::userCan() - now accepts Authority instead of User
6735 - LocalFile::deleteOldFile() - now accepts UserIdentity instead of User
6736 * The following global methods, each deprecated since 1.36, have been removed:
6737 - wfAppendToArrayIfNotDefault()
6739 - wfConfiguredReadOnlyReason()
6741 - wfGetPrecompiledData()
6743 * The following deprecated methods of the Title class have been removed:
6744 - ::nameOf(), deprecated in 1.36
6745 - ::getPreviousRevisionID(), deprecated in 1.34
6746 - ::getNextRevisionID(), deprecated in 1.34
6747 - ::getEarliestRevTime(), deprecated in 1.35
6748 * UploadBase::stashFile(), deprecated since 1.28, was removed.
6749 * wfGetRusage(), deprecated since 1.35, has been removed.
6750 * The following CLI options were removed from tests/phpunit.php:
6754 The following options (inherited from Maintenance) were also removed:
6763 The following options were changed to environment variables:
6764 - wiki => PHPUNIT_WIKI
6765 - use-normal-tables => PHPUNIT_USE_NORMAL_TABLES
6766 - use-filebackend => PHPUNIT_USE_FILEBACKEND
6767 - use-bagostuff => PHPUNIT_USE_BAGOSTUFF
6768 - use-jobqueue => PHPUNIT_USE_JOBQUEUE
6769 This is so that we can use the default PHPUnit entry point (T90875).
6770 * The PHPUNIT_REUSE_DB / --reuse-db option was removed from the phpunit.php
6771 runner. It had been broken for at least three years already. The original use
6772 case was speeding up tests on Oracle, but Oracle support was dropped several
6774 * The MediaWikiPHPUnitTest__endTestHook and MediaWikiPHPUnitTest__startTestHook
6775 PHPUnit hooks were removed. MediaWikiHooksPHPUnitExtension was also removed.
6776 * EntryPoint::getTextFormatters() was made private without a deprecation period;
6777 it had no known external callers.
6778 * DatabaseBlock::chooseBlock(), deprecated since 1.35, was removed.
6779 * SpecialPageFactory::getRestrictedPages(), deprecated since 1.36, was removed.
6780 * SpecialBlock::validateTarget(), deprecated since 1.36, was removed.
6781 * The PatchFileLocation trait was removed without deprecation.
6782 * ActorMigrationBase::getExistingActorId() and ::getNewActorId(), emitting
6783 deprecation warnings since 1.36, were removed.
6784 * Hook handlers implementing the MediaWikiServicesHook hook are now prohibited
6785 from having services injected. This is because by definition, this hook runs
6786 before the service container is fully initialized.
6787 * The protected property LocalFile::$metadata was removed without deprecation.
6788 * WatchedItem::getUser(), emitting deprecation warnings since 1.36, has been
6790 * AuthManager::singleton(), emitting deprecation warnings since 1.36, has been
6792 * The AugmentPageProps class was removed without deprecation. It had no known
6794 * Html::infobox(), deprecated since 1.36, was removed.
6795 * ParserOptions::__construct() now requires that the first parameter is a
6796 UserIdentity object - passing `null` used to fallback to the global
6797 $wgUser but was deprecated since 1.36.
6798 * ParserOptions::newCanonical() no longer supports the first parameter being
6799 null (or omitted entirely), which would fallback to the global $wgUser but
6800 was deprecated since 1.35.
6801 * The SkinTemplatePreventOtherActiveTabs hook, deprecated in 1.35, was removed
6803 * The SkinTemplateTabAction hook, deprecated in 1.35, was removed entirely.
6804 * The SkinTemplateBuildNavUrlsNav_urlsAfterPermalink hook, deprecated in 1.35,
6805 was removed entirely.
6806 * The SkinTemplateToolboxEndHook, deprecated in 1.35, was removed entirely.
6807 * The following methods of RevisionStore class, formerly emitting deprecation
6808 warnings, were removed:
6809 - ::newMutableRevisionFromArray()
6810 - ::loadRevisionFromPageId()
6811 - ::loadRevisionFromTitle()
6812 - ::loadRevisionFromTimestamp()
6813 - ::listRevisionSizes()
6814 * LogEntry::getPerformer(), deprecated since 1.36, was removed along with
6815 methods in sub-classes: DatabaseLogEntry, ManualLogEntry, RCDatabaseLogEntry.
6816 * Skin::getRelevantUser() now returns an instance of UserIdentity, and not
6817 necessarily a User object. There is no known usages in MediaWiki ecosystem
6818 that were not satisfied with UserIdentity.
6819 * Direct construction of MergeHistory class, deprecated since 1.35, is no longer
6820 supported. Use MergeHistoryFactory instead. MergeHistory::checkPermissions,
6821 deprecated since 1.36, was removed.
6822 * Skin::generateDebugHTML(), deprecated since 1.35, was removed. Call
6823 MWDebug::getHTMLDebugLog() directly.
6824 * The ApiTestCase class no longer interacts with the global $wgUser.
6825 Previously, the global variable was set at the start of each test, and in
6826 ApiTestCase::doApiRequest() if a performer was specified $wgUser was
6827 updated to match, and if no performer was specified $wgUser was used
6828 instead. Now, $wgUser is not updated, and if no performer is specified
6829 the reusable TestUser object for the sysop is relied on. Extensions
6830 or skins that rely on the global $wgUser variable (which has been
6831 deprecated since 1.35) should instead retrieve the acting user from the
6832 relevant context source.
6833 * SkinTemplate::makeArticleUrlDetails(), deprecated since 1.35, was removed.
6834 * Skin::makeNSUrl(), deprecated since 1.35, was removed.
6835 * Skin::getRevisionId(), deprecated since 1.34, was removed. Use
6836 OutputPage::getRevisionId() instead.
6837 * Skin::isRevisionCurrent(), deprecated since 1.34, was removed. Use
6838 OutputPage::isRevisionCurrent() instead.
6839 * AbstractBlock::parseTarget(), deprecated since 1.36, was removed.
6840 * The ArticleEditUpdates hook, deprecated since 1.35, was removed.
6841 * The `@stable to extend` class CentralIdLookup has following changes:
6842 - The protected ::checkAudience() method now returns an Authority instead of a
6844 - A number of its `@stable to override` methods now accept an Authority
6845 instead of a User instance as the $audience parameter.
6846 - A number of methods now accept a UserIdentity instead of their User
6848 - The ::localUserFromCentralId() method now returns UserIdentity and not
6849 necessarily a User object.
6850 All extensions that extend this class or use this method were updated to be
6851 ready to the new behavior.
6852 * WatchedItemStoreInterface::enqueueWatchlistExpiryJob(), deprecated since 1.36,
6854 * ResultWrapper is now abstract. It cannot be directly constructed (T286694).
6855 * The SecondaryDataUpdates hook, deprecated in 1.32, was removed entirely.
6856 * Content::getDeletionUpdates(), was removed. Use
6857 ContentHandler::getDeletionUpdates() instead.
6858 * Content::getSecondaryDataUpdates(), was removed. Use
6859 ContentHandler::getSecondaryDataUpdates() instead.
6860 * wfDiff(), deprecated since 1.25, has been removed.
6861 * Language::$mLangObjCache, deprecated since 1.35, was removed.
6862 * Language::$transformData, deprecated since 1.35, was removed.
6863 * Language::transformUsingPairFile() was marked @internal. Its deprecated
6864 parameters are no longer supported.
6865 * SpecialMute::getTarget(), unused outside of the SpecialMute class, was
6867 * The Skin::setupSkinUserCss() method, deprecated in 1.32, was removed. Please
6868 use skin registration instead.
6869 * The ResourceLoaderSkinModule `legacy`, `content` and `content-thumbnails`
6870 features were deprecated. Skins should instead select from the features
6871 listed on [[mw:Manual:ResourceLoaderSkinModule]].
6872 * ParserCache::getKey() and ::getEtag(), deprecated since 1.36, were removed.
6873 * The BaseTemplateToolbox hook, deprecated since 1.35, was removed.
6874 * Previously a capitalize-all-nouns class was added to the body element of
6875 languages where nouns must be capitalized. This class is no longer added to
6876 the body tag and must be provided by skins.
6877 * The SkinTemplateOutputPageBeforeExec hook, deprecated since 1.35, was removed.
6878 * Calling Message::toString() without a parameter, which triggered deprecation
6879 warnings since 1.36, is no longer supported. You can instead use the explicit
6880 formatting methods directly, such as Message::text() and Message::escaped().
6881 * Article::getContentObject(), deprecated since 1.32, was removed.
6882 * Article::delete(), Article::confirmDelete() and ImagePage::delete() were
6883 removed. The logic responsible for building the form is being
6884 moved to DeleteAction, while the actual deletion logic will be moved to a
6886 * WikiImporter::debugRevisionHandler(), unused and for debug only, was removed.
6887 * Content::preloadTransform() now emits deprecation warnings. Instead, please
6888 use ContentTransformer::preloadTransform(). Extensions defining a content
6889 model should override ContentHandler::preloadTransform().
6890 * Content::preSaveTransform() now emits deprecation warnings. Instead, please
6891 use ContentTransformer::preSaveTransform() instead. Extensions defining
6892 a content model should override ContentHandler::preSaveTransform().
6893 * Constructing WikiPage objects from Title instances that cannot exist, emitting
6894 deprecation warnings since 1.36, now throws an exception. Additionally,
6895 WikiPage now implements ProperPageIdentity, rather than just PageIdentity.
6896 * The Skin::bottomScripts() method is deprecated. Please instead use
6897 OutputPage::getBottomScripts().
6898 * LinksUpdate::getTriggeringUser() now returns ?UserIdentity instead of ?User.
6899 * The LESS mixin `.box-shadow()` (from mediawiki.mixins.less), deprecated since
6900 1.36, was removed. Use CSS property `box-shadow` unprefixed for all basic
6901 supported browsers instead.
6902 * The LESS mixin `.flex()` now no longer tries to support the 2009 version of
6903 the Flexbox specification; support for the 2012 and modern standard versions
6905 * The StorageAwareness::ATTR_SYNCWRITES, StorageAwareness::QOS_SYNCWRITES_*,
6906 StorageAwareness::ATTR_LOCALITY, and StorageAwareness::QOS_LOCALITY_*
6907 constants were removed.
6909 === Deprecations in 1.37 ===
6910 * JobQueue::getWiki(), deprecated in 1.33, now emits deprecation warnings.
6911 * AbstractBlock::getTargetAndType() and ::getTarget() now emit deprecation
6912 warnings. Use ::getTargetName() and ::getTargetUserIdentity() together with
6914 * Passing a UserIdentity to WatchlistManager::clearAllUserNotifications() and
6915 WatchlistManager::clearTitleUserNotifications() is now deprecated. Pass an
6917 * Passing LinkTarget to WatchlistManager::clearTitleUserNotifications() and
6918 WatchlistManager::getTitleNotificationTimestamp(). Pass PageIdentity instead.
6919 * The User class methods ::isWatched(), ::isTempWatched(), ::removeWatch(), and
6920 ::addWatch() have been deprecated. Use corresponding methods in
6921 WatchlistManager instead.
6922 * Multiple WatchAction methods have been deprecated in lieu of WatchlistManager:
6923 - ::doWatchOrUnwatch() use WatchlistManager::setWatch()
6924 - ::doWatch() -> WatchlistManager::addWatch()
6925 - ::doUnwatch() -> WatchlistManager::removeWatch()
6926 * WatchAction::getWatchToken() now emits deprecation warnings. Instead use
6927 CsrfTokenSet::getToken().
6928 * Action::getHookContainer() has been marked as internal. Actions that require
6929 access to a hook container should have one injected instead.
6930 * The ::getTitle() and ::setTitle() methods in Parser have been deprecated.
6931 Use ::getPage() and ::setPage() instead.
6932 * Title::isWatchable() has been deprecated. Use WatchlistManager::isWatchable()
6934 * Methods and classes related to the primary database, previously referred to as
6935 'master', have been deprecated, with the new ones replacing them as follows:
6936 - The DBMasterPos and MySQLMasterPos classes have been respectively renamed to
6937 DBPrimaryPos and MySQLPrimaryPos.
6938 - LocalRepo::getMasterDB() -> ::getPrimaryDB()
6939 - ForeignDBRepo::getMasterDB() -> ::getPrimaryDB()
6940 - JobQueueDB::getMasterDB() -> ::getPrimaryDB()
6941 - ForeignDBViaLBRepo::getMasterDB() -> ::getPrimaryDB()
6942 - DBFileJournal::getMasterDB() -> ::getPrimaryDB()
6943 - ILoadBalancer::getMasterPos() -> ::getPrimaryPos()
6944 - IDatabase::getMasterPos() -> ::getPrimaryPos()
6945 - ILoadBalancer::finalizeMasterChanges() -> ::finalizePrimaryChanges()
6946 - ILoadBalancer::approveMasterChanges() -> ::approvePrimaryChanges()
6947 - ILoadBalancer::beginMasterChanges() -> ::beginPrimaryChanges()
6948 - ILBFactory::beginMasterChanges() -> ::beginPrimaryChanges()
6949 - ILoadBalancer::commitMasterChanges() -> ::commitPrimaryChanges()
6950 - ILBFactory::commitMasterChanges() -> ::commitPrimaryChanges()
6951 - IDatabase::getTopologyRootMaster() -> ::getTopologyRootPrimary()
6952 - IDatabase::masterPosWait() -> ::primaryPosWait()
6953 - ILoadBalancer::runMasterTransactionIdleCallbacks() ->
6954 ::runPrimaryTransactionIdleCallbacks()
6955 - ILoadBalancer::runMasterTransactionListenerCallbacks() ->
6956 ::runPrimaryTransactionListenerCallbacks()
6957 - ILoadBalancer::rollbackMasterChanges() -> ::rollbackPrimaryChanges()
6958 - ILBFactory::rollbackMasterChanges() -> ::rollbackPrimaryChanges()
6959 - ILoadBalancer::flushMasterSnapshots() -> ::flushPrimarySnapshots()
6960 - ILoadBalancer::hasMasterConnection() -> ::hasPrimaryConnection()
6961 - ILoadBalancer::hasMasterChanges() -> ::hasPrimaryChanges()
6962 - ILBFactory::hasMasterChanges() -> ::hasPrimaryChanges()
6963 - ILoadBalancer::lastMasterChangeTimestamp() -> ::lastPrimaryChangeTimestamp()
6964 - ILoadBalancer::hasOrMadeRecentMasterChanges() ->
6965 ::hasOrMadeRecentPrimaryChanges()
6966 - ILBFactory::hasOrMadeRecentMasterChanges() ->
6967 ::hasOrMadeRecentPrimaryChanges()
6968 - ILoadBalancer::pendingMasterChangeCallers() ->
6969 ::pendingPrimaryChangeCallers()
6970 - ILoadBalancer::forEachOpenMasterConnection() ->
6971 ::forEachOpenPrimaryConnection()
6972 - ILoadBalancer::waitForMasterPos() -> ::waitForPrimaryPos()
6973 - Database::assertIsWritableMaster() -> ::assertIsWritablePrimary()
6974 - RevDelList::reloadFromMaster() -> ::reloadFromPrimary()
6975 - ExternalStoreDB::getMaster() -> ::getPrimary()
6976 - DatabaseMysqlBase::getMasterServerInfo() -> ::getPrimaryServerInfo()
6977 - MWExceptionHandler::rollbackMasterChangesAndLog() ->
6978 ::rollbackPrimaryChangesAndLog()
6979 * wfGetLB(), deprecated since 1.27, now emits deprecation warnings.
6980 * wfLocalFile(), deprecated since 1.34, now emits deprecation warnings.
6981 * wfFindFile(), deprecated since 1.34, now emits deprecation warnings.
6982 * wfIncrStats(), deprecated in 1.36, now emits deprecation warnings.
6983 * wfCanIPUseHTTPS() is now deprecated, and always returns true.
6984 * The UserLoadFromDatabase hook has been deprecated. It had no known uses.
6985 * The following methods in ApiPageSet have been deprecated:
6986 - ::getTitles(), use ::getTargets() instead.
6987 - ::getGoodTitles(), use ::getGoodPages() instead.
6988 - ::getMissingTitles(), use ::getMissingPages() instead.
6989 - ::getGoodAndMissingTitles(), use ::getGoodAndMissingPages() instead.
6990 - ::getRedirectTitles(), use ::getRedirectTargets() instead.
6991 - ::getSpecialTitles(), use ::getSpecialPages() instead.
6992 * The following methods from the User class, deprecated in 1.35, now each emit
6993 deprecation warnings:
6997 - ::isCreatableName()
6998 - ::getCanonicalName()
6999 - ::addAutopromoteOnceGroups()
7000 - ::getEffectiveGroups()
7001 - ::getAutomaticGroups()
7002 - ::getFormerGroups()
7005 * The following methods in User were deprecated:
7006 - ::idFromName() - use UserIdentityLookup::getUserIdentityByName() instead.
7007 - ::resetIdByNameCache() - in tests, reset service container. No replacement
7008 needed in production code.
7009 * Use of ActorMigration for any table except revision, deprecated in 1.34, now
7010 emits deprecation warnings. Instead of getInsertValues(), use
7011 ActorNormalization::acquireActorId(). Instead of getWhere() and getJoin(),
7012 do your own join on the actor table.
7013 * DatabasePostgres::remappedTableName() and its dependent constructor parameter
7014 'keywordTableMap' are deprecated. Reserved identifiers that are used as table
7015 names should be quoted where necessary.
7016 * LinkCache::singleton(), deprecated since 1.28, now emits deprecation warnings.
7017 * MessageCache::singleton(), deprecated since 1.34, now emits deprecation
7019 * LockManagerGroup::singleton() and ::destroySingletons(), deprecated since
7020 1.34, now emit deprecation warnings.
7021 * HtmlFileCacheUpdate::newFromTitles() is now deprecated and emitting warnings.
7022 Use newFromPages() instead.
7023 * SessionProvider ::setLogger(), ::setManager(), ::setConfig(), and
7024 ::setHookContainer() were deprecated. Use ::init() to inject dependencies, or
7025 override ::postInitSetup() to do any custom post-initialization configuration.
7026 * AbstractAuthenticationProvider ::setLogger(), ::setManager(), ::setConfig(),
7027 and ::setHookContainer() now emit deprecation warnings. Use ::init() to inject
7028 dependencies, or override ::postInitSetup() to do any custom post-
7029 initialization configuration.
7030 * User::isLoggedIn(), deprecated since 1.36, now emits deprecation warnings. Use
7031 the method it wraps, User::isRegistered(), instead.
7032 * FileBackendGroup::singleton() and ::destroySingletons(), deprecated since
7033 1.35, now emit deprecation warnings.
7034 * The first parameter of User::getBlock() should now be an integer using the
7035 Authority::FOR_XXX constants. Providing a boolean is deprecated.
7036 * ApiBase::addBlockInfoToStatus() is deprecated for use by extensions. It is now
7037 marked as @internal and may be deleted in the future.
7038 It should not be necessary to call this method, Authority should be providing
7039 all relevant information via a PermissionStatus object.
7040 * JobQueueGroup::singleton() was deprecated - use
7041 MediaWikiServices::getJobQueueGroup() instead.
7042 * JobQueueGroup::destroySingletons() was deprecated. JobQueueGroups are now
7043 automatically destroyed after tests.
7044 * LinkCache::addGoodLinkObj() has been deprecated, since it is prone to
7045 corrupting the cache with invalid information. Use addGoodLinkObjFromRow()
7046 instead. PHPUnit tests must use LinkCacheTestTrait::addGoodLinkObject().
7047 * ContentHandler::getContentText() is now deprecated. Use Content::getText()
7049 * LinkCache::addLinkObj() has been deprecated, use PageStore::getPageForLink()
7051 * MediaWiki\User\UserNamePrefixSearch::search() previously accepted as its first
7052 parameter either the string 'public' or a UserIdentity object, to filter
7053 results for. It now expects an Authority object instead of UserIdentity, and
7054 providing just a UserIdentity will now trigger a deprecation warning.
7055 * User::getRights(), deprecated since 1.34, now emits deprecation warnings.
7056 * User::changeableGroups() and ::changeableByGroup() now emit deprecation
7057 warnings, use corresponding methods in UserGroupManager instead.
7058 * User::incEditCount() was deprecated in favor of the new method
7059 UserEditTracker::incrementUserEditCount().
7060 * RepoGroup::singleton(), ::destroySingleton() and ::setSingleton(), deprecated
7061 since 1.34, now emit deprecation warnings.
7062 * RecentChange::getPerformer(), deprecated since 1.36, now emits deprecation
7063 warnings. Use ::getPerformerIdentity() instead.
7064 * ContentHandler::cleanupHandlersCache(), deprecated since 1.35, now emits
7065 deprecation warnings.
7066 * Category::getTitle() was deprecated in favor of Category::getPage()
7067 * File::getUser() method now emits deprecation warnings, along with its over-
7068 rides in LocalFile and ForeignApiFile in favor of ::getUploader().
7069 * SpecialBlock::checkUnblockSelf(), deprecated in 1.36, now emits deprecation
7071 * (T284179) The mediawiki.viewport ResourceLoader module is deprecated. You can
7072 now just use MutationObserver or InterSectionObserver directly, which are
7073 widely available in all supported JavaScript browsers.
7074 * The following constructor options of DatabaseBlock class will now trigger
7075 deprecation warnings:
7076 - the 'byText' property with blocker's name,
7077 - the 'by' property with blocker's ID,
7078 For both of these, use the 'by' property with UserIdentity value instead.
7079 * The BeforeResetNotificationTimestamp hook was deprecated.
7080 * ArchivedFile::getUser() ::getRawUser() ::getRawUserText() were deprecated in
7081 favor of ::getUploader.() ::getRawDescription() was deprecated in favor of
7082 ::getDescription() with RAW audience parameter.
7083 * When calling LocalFile::newFromRow() or LocalFile::loadFromRow(), passing
7084 extra fields not requested by ::getQueryInfo() will now trigger deprecation
7085 warnings. This is to warn callers that deprefixing and automatic assignment of
7086 such fields will not be done in a future version.
7087 * JobSpecification::getTitle() was deprecated without providing a replacement.
7088 It wasn't used and job given the purpose of JobSpecification class it is not
7090 * The protected method File::getImageSize() is now deprecated.
7091 * BacklinkCache::get() was deprecated, use
7092 BacklinkCacheFactory::getBacklinkCache() instead.
7093 * Title::getBacklinkCache() now emits deprecation warnings. Instead, use the
7094 ::getBacklinkCache() method in the BacklinkCacheFactory service.
7095 * MediaHandler::getImageSize(), ::getMetadata(), and ::isMetadataValid() were
7096 deprecated and should no longer be overridden. Instead, sub-classes should
7097 override getSizeAndMetadata().
7098 * Deprecated File::getMetadata(). Instead use ::getMetadataArray(),
7099 ::getMetadataItem() and ::getMetadataItems().
7100 * Message::title() has been deprecated; use Message::page() instead.
7101 * BaseTemplate::getAfterPortlet(), BaseTemplate::renderAfterPortlet(), and the
7102 BaseTemplateAfterPortlet hook, which were deprecated in 1.35,
7103 now emit deprecation warnings.
7104 * The LocalFile::getHistory() hook is deprecated.
7105 * Previously the Skin templateDirectory option inside skin.json had to be
7106 relative to MediaWiki core. This should now be relative to the skin.
7107 * Calling WikiPage::prepareContentForEdit() without a UserIdentity is now
7109 * User::getEditTokenObject(), ::getEditToken(), and ::matchEditToken() were each
7110 deprecated. Use CsrfTokenRepository, which is available via IContextSource,
7111 instead. ::matchEditTokenNoSuffix() was deprecated without replacement.
7112 It was introduced to be able to provide custom error message if the token
7113 was submitted, but ending slashes were stripped by some ASCII mangling proxy.
7114 Use ::matchToken() instead, such proxies are much less common now and there's
7115 not much benefit in customising the error message.
7116 * ContentHandler::getForTitle(), deprecated since 1.35, now emits deprecation
7118 * User::listOptionKinds(), deprecated since 1.35, now emits deprecation
7120 * WikiPage::doEditContent(), deprecated since 1.32, now emits deprecation
7122 * CentralIdLookup::factory() and ::factoryNonLocal() now emit deprecation
7123 warnings; obtain an instance from MediaWikiServices instead.
7124 * The class RandomPage was renamed to SpecialRandomPage. The class RandomPage
7126 * BotPassword::invalidateAllPasswordsForCentralId() was deprecated.
7127 * BotPassword::removeAllPasswordsForCentralId() was deprecated.
7128 * The Title class members: $mTextform, $mUrlform, $mDbkeyform, $mNamespace,
7129 $mInterwiki, and $mFragment have been deprecated to not be used directly.
7130 Instead, their corresponding accessor methods should be used.
7131 * IDatabase::fetchObject(), ::fetchRow(), ::numRows(), ::numFields(),
7132 ::fieldName(), ::freeResult() and ::dataSeek() are deprecated. Use the
7133 corresponding methods in IResultWrapper instead.
7134 * ResultWrapper::unwrap(), DatabaseMysqlBase::fieldType() and
7135 DatabasePostgres::fieldType() each now emit deprecation warnings.
7136 * Sub-classes implementing Database::doQuery() should return either boolean or
7137 an IResultWrapper. To do otherwise will now trigger a deprecation warning.
7138 * User::getOptionKinds() and ::resetOptions(), both deprecated since 1.35,
7139 now emit deprecation warnings.
7140 * The following methods in MWNamespace, all deprecated since 1.34, now emit
7141 deprecation warnings:
7149 - ::hasTalkNamespace()
7150 - ::wantSignatures()
7152 - ::getSubjectNamespaces()
7153 - ::getTalkNamespaces()
7155 - ::hasGenderDistinction()
7156 - ::isNonincludable()
7157 - ::getNamespaceContentModel()
7158 - ::getRestrictionLevels()
7159 - ::getCategoryLinkType()
7160 * LogFormatter::styleRestricedElement() has been deprecated in favor of
7161 LogFormatter::styleRestrictedElement()
7162 * The following hooks related to user preferences were deprecated:
7163 - UserLoadOptions: use LoadUserOptions instead.
7164 - UserSaveOptions: use SaveUserOptions instead.
7165 - UserResetAllOptions: no replacement was provided, the hook is not used.
7166 * Title::isNamespaceProtected(), deprecated in 1.34, now emits deprecation
7168 * UserSelectQueryBuilder::userIds(), ::userNames(), and ::userNamePrefix() has
7169 been deprecated in favor of ::whereUserIds(), ::whereUserNames(), and
7170 ::whereUserNamePrefix().
7171 * Manually constructing a MovePage object, deprecated in 1.34, now emits
7172 deprecation warnings. Use MovePageFactory instead.
7173 * The following deletion-related methods were deprecated:
7174 - WikiPage::doDeleteArticleReal() (soft) - use DeletePage
7175 - WikiPage::doDeleteArticleBatched() (soft) - no replacement
7176 - WikiPage::isBatchedDelete() (soft) - use DeletePage
7177 - WikiPage::doDeleteUpdates() (hard) - no replacement
7178 - WikiPage::getDeletionUpdates() (hard) - no replacement
7179 - Title::isBigDeletion (soft) - no replacement
7180 * Relying on PermissionManager or Authority to check for big deletions
7181 was deprecated. This is now automatically checked if you use
7182 DeletePage::deleteIfAllowed(). (T288759)
7183 * The userCan hook now emits deprecation warnings. Use the
7184 getUserPermissionsErrors or getUserPermissionsErrorsExpensive hooks instead.
7185 * Parser::$mUser public access, and the methods ParserOptions::getUser() and
7186 Parser::getUser() each now emit deprecation warnings.
7187 * The following methods in the Title class have been deprecated in favor of the
7188 corresponding methods in the new RestrictionStore service (with different
7189 names where indicated):
7190 - ::areCascadeProtectionSourcesLoaded()
7191 - ::areRestrictionsCascading()
7192 - ::areRestrictionsLoaded()
7193 - ::getAllRestrictions()
7194 - ::getCascadeProtectionSources()
7195 - ::getFilteredRestrictionTypes()
7196 -> ::listAllRestrictionTypes()
7197 - ::getRestrictionExpiry()
7198 - ::getRestrictionTypes()
7199 -> ::listApplicableRestrictionTypes()
7200 - ::getRestrictions()
7201 - ::isCascadeProtected()
7203 - ::isSemiProtected()
7204 - ::loadRestrictionsFromRows()
7205 * The following Title methods have been deprecated with no direct public
7207 - ::deleteTitleProtection()
7208 - ::getTitleProtection()
7209 - ::flushRestrictions()
7210 - ::loadRestrictions()
7211 * User::isAllowUsertalk() now emits deprecation warnings. Use User::getBlock()
7212 and AbstractBlock::isUsertalkEditAllowed() instead.
7213 * Classes used by Preprocessor_DOM have been merged with classes used by
7214 Preprocessor_Hash, as Preprocessor_DOM was removed in 1.35.
7215 - PPDPart has been merged into PPDPart_Hash
7216 - PPDStack has been merged into PPDStack_Hash
7217 - PPDStackElement has been merged into PPDStackElement_Hash
7218 * By default, the global variable $wgUser is now an instance of the new class
7219 StubGlobalUser rather than User, and the first time it is used it will emit
7220 deprecation warnings (the $wgUser variable was deprecated in 1.35). For
7221 extensions that read from this variable, please use a relevant ContextSource
7222 instead, falling back to RequestContext::getMain() if none is available.
7223 * Collation::singleton() and ::factory() were deprecated; obtain an instance of
7224 the CollationFactory from MediaWikiServices instead.
7225 * Title::getDefaultNamespace() has been deprecated to be removed because there
7226 are no known callers/consumers.
7227 * With removal of the stub threshold feature, the following methods now emit
7228 deprecation warnings:
7229 - LinkRenderer::setStubThreshold() and ::getStubThreshold() - no replacement.
7230 - LinkRendererFactory::createForUser() - calling ::create() is now sufficient
7231 - ParserOptions::setStubThreshold() and ::getStubThreshold() - no replacement.
7232 - User::getStubThreshold() - no replacement.
7233 * The ArticleDelete and ArticleDeleteComplete hooks were deprecated. Use
7234 PageDelete and PageDeleteComplete instead.
7235 * The ArticleUndeleteLogEntry hook was deprecated without replacement.
7236 * The following LESS mediawiki.mixins have been deprecated:
7239 - .transform-origin()
7241 - .transition-transform()
7242 * The `UndeleteForm::undelete` hook was deprecated. A new hook was
7243 introduced, `PageUndelete`, that provides handlers with more information and
7244 is also called for non-UI requests. The capability of replacing the
7245 PageArchive object has been removed, as that violates the laws of nature.
7247 === Other changes in 1.37 ===
7248 * WatchlistManager::addWatch() and WatchlistManager::addWatchIgnoringRights(),
7249 which replace User::addWatch(), now call the WatchArticle and
7250 WatchArticleComplete hooks.
7251 * WatchlistManager::removeWatch() and
7252 WatchlistManager::removeWatchIgnoringRights(), which replace
7253 User::removeWatch(), now call the UnwatchArticle and UnwatchArticleComplete
7255 * The overridable postInitSetup() method was added to the
7256 AbstractAuthenticationProvider class. A provider can override postInitSetup()
7257 to do any custom post-initialization configuration.
7258 * The overridable postInitSetup() method was added to the SessionProvider
7259 class. A provider can override postInitSetup() to do any custom
7260 post-initialization configuration.
7261 * The protected getConfig() method was added to the SessionProvider class.
7262 Use SessionProvider::getConfig() to get a config.
7263 * The DBAccessBase class is deprecated. Classes that used to extend it
7264 should get a load balancer (factory) injected in the constructor instead.
7265 * ActorNormalization::acquireActorId() now requires IDatabase parameter.
7266 Not providing one emitted deprecation warnings since 1.36.
7267 * Anti-lock constants ALF_PRELOAD_LINK, ALF_NO_BLOCK_LOCK, ALF_NO_LINK_LOCK
7268 and ALF_PRELOAD_EXISTENCE have been removed. They're unused since 1.25.
7269 * (T278036) CSS class 'mw-htmlform-field-autoinfuse' used by some forms has been
7270 renamed to 'mw-htmlform-autoinfuse'.
7271 * User::newFromRow() does not accept pre-loaded user preferences under
7272 $data['user_properties'] anymore. This optimization was not used.
7273 * The following files change the letter case of the file names:
7274 - SpecialRandompage.php -> SpecialRandomPage.php
7275 - SpecialRandomredirect.php -> SpecialRandomRedirect.php
7276 - SpecialRandomrootpage.php -> SpecialRandomRootPage.php
7277 * Media files which are uploaded server side using the importImages.php
7278 maintenance script will now have the "mw-server-side-upload" change tag.
7279 * (T284917) The stub threshold feature has been removed.
7280 * Skin::getPoweredBy() and Skin::getCopyrightIcon() have been deprecated as they
7281 are only designed for use by skins extended BaseTemplate. You can move calls
7282 to instead use BaseTemplate::getPoweredByHTML() and ::getCopyrightIconHTML()
7284 * The SkinGetPoweredBy hook is deprecated. No replacement is provided.
7285 * HTMLTitleTextField didn't support interwiki titles well previously.
7286 Starting with 1.37, HTMLTitleTextField has a new parameter, 'interwiki',
7287 which can be used to control acceptance of interwiki titles. To provide
7288 a transitional period, the default value ('interwiki' => null) ensures
7289 MW will have the same behavior as before (logging a deprecation warning).
7290 In 1.38, the default behavior will change to "interwiki links aren't allowed".
7294 MediaWiki 1.37 requires PHP 7.3.19 or later, or PHP 7.4.3 or later, and the
7295 following PHP extensions:
7306 Support for PHP 8.0 is not yet complete.
7308 MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
7309 but support for them is somewhat less mature.
7311 The supported versions are:
7313 * MySQL 5.5.8 or later
7314 * PostgreSQL 9.4 or later
7315 * SQLite 3.8.0 or later
7317 == Online documentation ==
7318 Documentation for both end-users and site administrators is available on
7319 MediaWiki.org, and is covered under the GNU Free Documentation License (except
7320 for pages that explicitly state that their contents are in the public domain):
7322 https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
7325 A mailing list is available for MediaWiki user support and discussion:
7327 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
7329 A low-traffic announcements-only list is also available:
7331 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
7333 It's highly recommended that you sign up for one of these lists if you're
7334 going to run a public MediaWiki, so you can be notified of security fixes.
7337 There's usually someone online in #mediawiki on irc.libera.chat.
7341 == MediaWiki 1.36.4 ==
7343 This is a security and maintenance release of the MediaWiki 1.36 branch.
7345 === Changes since MediaWiki 1.36.3 ===
7346 * (T298261) Fix support for Composer 2.2.
7347 * (T298283) composer.json: Add wikimedia/composer-merge-plugin to allow-plugins.
7348 * Update doctrine/dbal (3.0.0 => 3.1.5).
7349 * (T296898) Add entry point name to disabled Session exception if possible.
7350 * (T298564) MemcachedClient: Add support for IPv6.
7351 * (T297543, CVE-2022-28202) SECURITY: properly escape output used within
7352 galleries and Special:RevisionDelete.
7353 * (T268847) Suppress deprecation warnings from libxml_disable_entity_loader().
7354 * (T283275) Fix PHP 8.0 failure of WikiExporterFactoryTest.
7355 * Fix the json schema and the extension processor for Parsoid extension modules.
7356 * (T299696) update.php: Avoid passing null to substr.
7357 * In PHP 8.1 don't throw exceptions from mysqli.
7358 * (T289926) SiteConfiguration: Don't pass null to str_replace().
7359 * (T264735) Fix deprecation warning from CURLPIPE_HTTP1.
7360 * (T260735) Stop using is_resource() where possible.
7361 * (T289879) Apply ReturnTypeWillChange to various implementations of built in
7363 * (T299312) Implement __serialize/__unserialize for PHP 8.1 support.
7364 * ExtensionRegistry: Add process cache for lazy attributes.
7365 * (T301041) ApiPageSet: Add "missing": true to missing revisions.
7366 * Allow ParsoidModules extension schema to register services.
7367 * (T297708) Allow setting max execution time to several special pages.
7368 * (T302540) composer.json: Add ext-calendar to require.
7369 * (T302540) composer.json: Add ext-simplexml to require-dev.
7370 * (T302540) composer.json: Add various PHP extensions to suggests.
7371 * Upgrading symfony/polyfill-php80 (v1.23.1 => v1.25.0).
7372 * (T304008) Don't re-check "Move subpages" on Special:MovePage after a warning.
7373 * (T293576) listFiles: Display file name instead of version.
7374 * (T303871) Fix @since of Title::getId().
7375 * (T303560) Installer: Check correct PCRE_CONFIG_NEWLINE value.
7376 * wrapOldPasswords: add \n to two output calls.
7377 * (T297571, CVE-2022-28201) Title::newMainPage() goes into an infinite recursion
7378 loop if it points to a local interwiki.
7379 * (T297731, CVE-2022-28203) Requesting Special:NewFiles on a wiki with many file
7380 uploads with actor as a condition can result in a DoS.
7382 == MediaWiki 1.36.3 ==
7384 This is a security and maintenance release of the MediaWiki 1.36 branch.
7386 === Changes since MediaWiki 1.36.2 ===
7387 * (T280363) mediawiki.page.ready: Introduce wikipage.indicators hook.
7388 * (T290697) Add symfony/polyfill-php80.
7389 * IcuCollation: Add some more icu to unicode version mappings.
7390 * ApiBase: Annotate deprecated constants individually.
7391 * PHPVersionCheck: Mark PHP 7.4.0 - 7.4.2 as buggy.
7392 * (T293044) installer: Fix 5th param to sourceFile() in DatabaseUpdater.
7393 * (T291127) Always encode spaces in cookie values as "%20".
7394 * Use LocalFile::getHookRunner instead of LocalFile::hookRunner.
7395 * (T293564) mediawiki.page.ready: Fire hook 'wikipage.indicators' with
7397 * HistoryBlobStub: add getLocation() to get $mOldId.
7398 * Fix checkStorage.php.
7399 * checkStorage: pass no parameters to WikiRevision::getContent().
7400 * (T292763, CVE-2021-44854) SECURITY: Do not cache private wiki completion
7402 * (T294316) Revert "Mark ApiClientLogin/ApiLogin as requiring write mode".
7403 * (T294796) JobQueueRedis: Replace deprecated zSize with zCard.
7404 * (T278037) NoLocalSettings: Pass an EmptyBagOStuff to TemplateParser.
7405 * (T212428, T267468) Allow populateContentTables to continue when there are
7407 * (T295191) ApiQuerySiteinfo: Fix "rightsinfo"/"url" when $wgRightsPage is
7409 * Update pear/mail_mime to 1.10.11.
7410 * Update deprecated Guzzle Psr7 function calls.
7411 * (T281972) Follow-Up: I10fbd4b6a: Update @since tags as those were backported.
7412 * Tweak error message for missing composer dependencies.
7413 * (T296112) Allow inserting new sections named '0'.
7414 * nukeNS: don't run purgeRedundantText() after every change.
7415 * (T286779, T297031) installer: Fix Postgres mistakes in using changeField
7417 * (T225888) RollbackAction: fix missing pagetitle.
7418 * (T297322, CVE-2021-44858, CVE-2021-44857) SECURITY: Fix permissions checks in
7420 * (T297574, CVE-2021-45038) SECURITY: Fix permissions check in action=rollback.
7421 * (T34716, T297416) SECURITY: Require 'read' right for most actions.
7422 * (T271037, CVE-2021-44856) SECURITY: Fix use of EditFilterMergedContent hook
7423 when changing content model.
7425 == MediaWiki 1.36.2 ==
7427 This is a security and maintenance release of the MediaWiki 1.36 branch.
7429 === Changes since MediaWiki 1.36.1 ===
7430 * Don't access MWServices prematurely in Maintenence.php.
7431 * (T283394) Mark ApiClientLogin/ApiLogin as requiring write mode.
7432 * Installer: Fix foundation.wikimedia.org link in config-pingback-help.
7433 * (T283273) Make postgres IRC channel point to libera.chat.
7434 * composer.json: Promote and pin monolog/monolog to require from require-dev.
7435 * (T287526) JavaScriptMinifer: Recognize `...` as a single token.
7436 * (T287526) Update wikimedia/minify to 2.2.4.
7437 * (T289108) ExtensionProcessor: Remove loaderScripts from extension.json
7439 * (T281549) Installer: Fix mediawiki-announce auto subscription code.
7440 * FormatJson: Optimize encode() for supported PHP versions.
7441 * (T290398) renameRestrictions.php: Update protected_titles as well.
7442 * (T290489) objectcache: Fix PHP warning for ReplicatedBagOStuff::setMulti.
7443 * $wgMimeTypeBlacklist - This configuration array now prohibits the RFC 4329
7444 form of JavaScript, 'application/javascript', as well as previous MIME types.
7445 * (T51097, T290273) resourceloader: Call getStyleFiles from
7446 FileModule::getFileHashes.
7447 * (T277788) parser: Avoid calling ParserOptions::getOption() too many times.
7448 * (T291244) Unserialize objects in ParserCache->mExtensionData as objects.
7449 * MysqlUpdater: Add updatelog entries for dropDefault.
7450 * (T290776) Fix $phase check in OutputHandler.
7451 * The wikimedia/parsoid library has been upgraded from v0.13.0 to v0.13.1.
7452 * (T285515, CVE-2021-41798) SECURITY: XSS vulnerability in Special:Search.
7453 * (T290379, CVE-2021-41799) SECURITY: ApiQueryBacklinks can cause a full
7455 * (T284419, CVE-2021-41800) SECURITY: fix PoolCounter protection of
7456 Special:Contributions.
7458 == MediaWiki 1.36.1 ==
7460 This is a security and maintenance release of the MediaWiki 1.36 branch.
7462 === Changes since MediaWiki 1.36.0 ===
7463 * (T283942) DatabaseInstaller.php: Only run core schema file if specified table
7464 doesn't already exist.
7465 * (T247223) Optimise MessageCache::isMainCacheable() for the single-message
7467 * (T283244) JavaScriptMinifer: Fix handling of "delete" as object property.
7468 * (T284391) Fix SkinModule to correctly prepend remote path on document root
7470 * (T235554) Disable DEFER_SET_LENGTH_AND_FLUSH headers to avoid HTTP errors.
7471 * (T278579) Don't send headers on ob_end_clean().
7472 * (T285287) MultiHttpClient: Replace PHP version check with defined().
7473 * (T280226, CVE-2021-35197) SECURITY: Prevent blocked users from purging pages.
7475 == MediaWiki 1.36.0 ==
7477 === Changes since MediaWiki 1.36.0-rc.0 ===
7478 * (T248481) rdbms: Use server time in
7479 DatabaseMysqlBase::getLagFromPtHeartbeat().
7480 * (T281549) WebInstaller: Don't show the announce-l subscribe checkbox for now.
7481 * (T264214) Follow-ups for UserGroupManager.
7482 * (T282280) resourceloader: Fix path-only URLs in wiki modules when script path
7484 * (T281972) UserIdentityValue: Introduce convenience static factory methods.
7485 * (T230428) Make page_is_redirect and page_is_new unsigned.
7486 * (T280292) Legacy feature should not load thumbnail style rules (only layout).
7487 * (T283247) Freenode -> Libera per wikimedia moving from freenode to libera.
7488 * (T280270) composer: Lock Parsoid version to specific 0.13.0 release.
7489 * (T142663) Add extension.json merge strategy "provide_default".
7490 * (T283540) HookContainer: Fix normalization of callback for static handler.
7491 * (T283464) registration: Fix array order for array_replace_recursive merge
7493 * (T283539) Interwiki: Fix calling "onInterwikiLoadPrefix" hook.
7494 * (T282594) Timeless: Re-branch to 40eb3dad1for REL1_36.
7496 == MediaWiki 1.36.0-rc.0 ==
7498 == Upgrading notes for 1.36 ==
7499 Don't forget to always back up your database before upgrading!
7501 See the file UPGRADE for more detailed per-version upgrade instructions from the
7502 oldest supported upgrading version, MediaWiki 1.27.
7504 Some specific notes for MediaWiki 1.36 upgrades are below:
7505 * MediaWiki 1.36 now requires the PHP internationalization extension (commonly
7506 referred to as Intl, ext-intl, or php-intl).
7507 * The MediaWiki:Autoblock_whitelist block exemption control has been moved to
7508 MediaWiki:Block-autoblock-exemptionlist. If you use this feature, please move
7509 the MediaWiki:Autoblock_whitelist page.
7510 * (T275334) $wgExtensionFunctions is sometimes used to change configuration
7511 settings. This is not safe; extension functions are run relatively late, some
7512 services are already initialized by that point and so they use the old
7513 configuration. Changes in 1.36 make this kind of breakage even more common.
7514 You can use the MediaWikiServices hook instead. (In the future there might be
7515 a dedicated hook for configuration changes.)
7517 For notes on 1.35.x and older releases, see HISTORY.
7519 === Configuration changes for system administrators in 1.36 ===
7520 The MediaWiki update script, maintenance/update.php, used to accept `--nopurge`
7521 as an option to prevent clearing caches stored in the database during upgrade.
7522 This is no longer encouraged, and the option has been removed.
7524 ==== New configuration ====
7525 * (T256001) $wgManualRevertSearchRadius – This setting controls a new feature
7526 that marks edits as reverts if they restore the page to an exact previous
7527 state. This configuration variable sets the maximum number of revisions of a
7528 page that will be checked against every new edit. Set this to 0 to disable the
7530 * (T244058) $wgOldRevisionParserCacheExpireTime — This setting was added to
7531 control caching of ParserOutput for old (non-current) revisions.
7532 * (T265263) $wgRememberMe - This setting configures the "remember me" checkbox
7533 on account log-in systems via RememberMeAuthenticationRequest.
7534 * (T157145) $wgSkinMetaTags – This setting lets sysadmins configure skins that
7535 support meta tags. These tags make sharing of MediaWiki pages on a variety of
7536 social platforms more contentful and thus useful.
7537 * (T280944) $wgIncludejQueryMigrate - This setting lets sysadmins disable the
7538 jQuery Migrate plugin. It has been enabled by default since MediaWiki 1.27.
7539 In future releases it will be disabled by default.
7541 ==== Changed configuration ====
7542 * $wgLogos – This setting selects the logo shown on the site. The default value
7543 for the site logo, which is shown in an install if you have not set one, will
7544 now be the new logo of MediaWiki.
7545 * (T274695) $wgAjaxEditStash — This setting, to disable the edit stashing
7546 feature when users start writing an edit summary, has been deprecated. In
7547 future releases, this feature will always be enabled.
7548 * $wgUploadStashScalerBaseUrl – This setting, to enable remote on-demand media
7549 scaling, was deprecated. Use the `thumbProxyUrl` setting in $wgLocalFileRepo
7551 * $wgSlaveLagWarning and $wgSlaveLagCritical – These settings have been renamed,
7552 to $wgDatabaseReplicaLagWarning & $wgDatabaseReplicaLagCritical respectively.
7553 The former configuration variable names are deprecated, but will be used as
7554 the fall back if they are still set, and remain temporarily available for
7555 extensions which try to read them.
7556 * $wgWANObjectCaches - The "coalesceKeys" option was removed without deprecation
7557 and replaced by a new "coalesceScheme" option, set to "hash_stop" by default.
7558 If you use Dynomite, then set the new "coalesceKeys" option to "hash_tag". The
7559 "cluster" and "mcrouterAware" options were also removed without deprecation.
7560 Use "broadcastRoutingPrefix" instead.
7562 ==== Removed configuration ====
7563 * $wgUseTwoButtonsSearchForm — This setting, deprecated in 1.35, has been
7565 * $wgAllowImageMoving — This setting, deprecated in 1.35, has been removed. Use
7566 group permission settings instead. For example, to prevent sysops from
7567 moving files, set `$wgGroupPermissions['sysop']['movefile'] = false;`
7568 * $wgExtNewTables, $wgExtNewFields, $wgExtNewIndexes, $wgExtPGNewFields,
7569 $wgExtPGAlteredFields, $wgExtModifiedFields — These settings were removed.
7570 They became obsolete after 1.17 overhauled the database updater, but were kept
7571 for backwards compatibility. The LoadExtensionSchemaUpdates hook should be
7573 * $wgParserConf - This setting, deprecated in 1.35, has been removed. The last
7574 use of this setting was for pre-processor configuration, which was deprecated
7575 in 1.34 and removed in 1.35.
7576 * $wgEnableRestAPI - This setting, ignored since 1.35, has been removed.
7577 * $wgPagePropsHaveSortkey – This temporary setting has been removed, along with
7578 the schema change upgrade path it controlled. If your site is still using it,
7579 meaning you have not yet applied the `pp_sortkey` schema change from 1.24, you
7580 must now apply it before upgrading.
7581 * The deprecated password policies PasswordCannotMatchBlacklist and
7582 PasswordNotInLargeBlacklist were removed. Please use
7583 PasswordCannotMatchDefaults and PasswordNotInCommonList respectively instead.
7585 === New user-facing features in 1.36 ===
7586 * The logo of MediaWiki has changed. This means that the "Powered By MediaWiki"
7587 button shown in the skin footer will be different.
7588 * All HTML5 named entities are now accepted in wikitext.
7589 * (T106263) The file description page's alternate sizes now include 2048px.
7591 === New developer features in 1.36 ===
7592 * Parser test files can now declare a dependency on a specific extension being
7593 loaded, not just on the presence of a certain extension tag hook. This is a
7594 better fit for extensions like TimedMediaHandler, which affect the output but
7595 don't register parser hooks. Use `extension:Foo` in the `!! hooks` section of
7596 your parser test file to declare a dependency on the `Foo` extension being
7598 * To expose code previously present in SpecialBlock/SpecialUnblock to other
7599 parts of the code, or to extensions, the new BlockUser and UnblockUser command
7600 objects were added. Use the BlockUserFactory and UnblockUserFactory services
7602 * The hook UsersPagerDoBatchLookupsHook takes now a \Wikimedia\Rdbms\IDatabase,
7603 instead of \Wikimedia\Rdbms\DBConnRef, as the first parameter.
7604 * MediaHandlers can now customize the formatting of the metadata they emit by
7605 over-riding MediaHandler::formatTag( $key, $value ). The default for unknown
7606 tags is numeric formatting; non-EXIF tags which are non-numeric should always
7607 use this method to specify the desired formatting.
7608 * The new 'title' type can be used to validate action API and REST API inputs.
7609 * The new ArticleParserOptions hook allows customizing the parser options used
7610 to parse wikitext for an article, based on user preferences, title, etc.
7611 * The new 'raw' type can be used to validate action API inputs. It bypasses the
7612 Unicode NFC normalization done on inputs of type 'string', so it more suitable
7613 when the input is binary or may contain deprecated Unicode sequences or
7614 characters (such as U+2001) that should be passed unmodified.
7615 * (T260330) A new abstraction for running shell commands has been introduced,
7616 called BoxedCommand. A BoxedCommand object can be obtained with
7617 MediaWikiServices::getInstance()->getCommandFactory()->createBoxed().
7618 * ResourceLoader modules can now mark themselves as ES6-only by setting
7619 `'es6' => true` in their module definition. ES6-only modules will not be
7620 executed in browsers that don't support ES6, such as IE11.
7622 === External library changes in 1.36 ===
7624 ==== New external libraries ====
7625 * Added wikimedia/minify 2.2.2.
7626 * Added wikimedia/request-timeout 1.1.0.
7627 * Added wikimedia/shellbox 1.0.4.
7629 * Added symfony/symfony/polyfill-php80 1.23.1.
7631 ==== Changed external libraries ====
7632 * Updated composer/semver from 1.5.1 to 3.2.4.
7633 * Updated guzzlehttp/guzzle from 6.5.4 to 7.2.0.
7634 * Updated jQuery from v3.4.1 to v3.6.0.
7635 * Updated jQuery Migrate from v3.1.0 to v3.3.2.
7636 * Updated jquery.client from 2.0.2 to 3.0.0.
7637 * Updated OOUI from 0.39.3 to 0.41.3.
7638 * Updated pear/mail_mime from 1.10.8 to 1.10.9.
7639 * Updated pear/net_smtp from 1.9.1 to 1.9.2.
7640 * Updated pimple/pimple from 3.3.0 to 3.3.1.
7641 * Updated wikimedia/at-ease from 2.0.0 to 2.1.0.
7642 * Updated wikimedia/cldr-plural-rule-parser from 1.0.0 to 2.0.0.
7643 * Updated wikimedia/common-passwords from 0.2.0 to 0.3.0.
7644 * Updated wikimedia/composer-merge-plugin from 1.4.1 to 2.0.1.
7645 * Updated wikimedia/html-formatter from 1.0.2 to 3.0.1.
7646 * Updated wikimedia/ip-set from 2.1.0 to 3.0.0.
7647 * Updated wikimedia/ip-utils from 1.0.0 to 3.0.2.
7648 * Updated wikimedia/less.php from 3.0.0 to 3.1.0.
7649 * Updated wikimedia/object-factory from 2.1.0 to 3.0.0.
7650 * Updated wikimedia/php-session-serializer from 1.0.7 to 2.0.0.
7651 * Updated wikimedia/remex-html from 2.2.0 to 2.2.2.
7652 * Updated wikimedia/utfnormal from 2.0.0 to 3.0.2.
7653 * Updated wikimedia/wait-condition-loop from 1.0.1 to 2.0.1.
7654 * Updated wikimedia/xmp-reader from 0.7.0 to 0.8.1.
7656 ===== Changed development-only external libraries =====
7657 * Updated composer/spdx-licenses from 1.5.3 to 1.5.4.
7658 * Updated doctrine/dbal from 2.10.2 to 3.0.0.
7659 * Updated doctrine/sql-formatter from 1.1.0 to 1.1.1.
7660 * Updated mediawiki/mediawiki-phan-config from 0.10.2 to 0.10.6.
7661 * Updated monolog/monolog from 1.25.3 to 2.2.0.
7662 * Updated nikic/php-parser from 4.4.0 to 4.10.2.
7663 * Updated psy/psysh from 0.10.4 to 0.10.5.
7664 * Updated seld/jsonlint from 1.7.1 to 1.8.3.
7665 * Updated symfony/yaml from ~3.4|~4.3|~5.0.5 to ~3.4|~5.1.
7666 * Updated wikimedia/testing-access-wrapper from 1.0.0 to 2.0.0.
7668 ==== Removed external libraries ====
7669 * The html5shiv library has been removed, as support for Internet Explorer 8 has
7671 * The wikimedia/avro suggested development-only library has been removed, as the
7672 support for logging in Avro format has been dropped.
7674 === Bug fixes in 1.36 ===
7675 * (T190285) ApiEditPage module used to switch 'undo' and 'undoafter' parameters,
7676 if it founds you reversed them (based on assumption that higher revision ID
7677 indicates a later revision). The assumption is not always true, and is
7678 hindering proper edit undoing in some cases, hence the logic has been removed.
7679 Reversing the parameters will now lead to edit conflict or undefined behavior.
7680 * (T263340) In history merging, pages with a content model that does not support
7681 redirects will now be recorded as deleted if no revision is being left in the
7682 source page (that's if all revisions of the page have been merged to another).
7684 === Action API changes in 1.36 ===
7685 * (T269636) `Access-Control-Max-Age` was added to the default list of headers
7686 allowed for cross-origin API requests ($wgAllowedCorsHeaders).
7687 * (T258108) Accounts with the 'bot' right no longer have pages automatically
7688 added to the watchlist when making API edits, regardless of their preferences.
7689 This is to reduce the size of the watchlist data in the database. To add API
7690 bot edits to the watchlist, explicitly set the 'watch' option.
7692 === Languages updated in 1.36 ===
7693 MediaWiki supports over 350 languages. Many localisations are updated regularly.
7694 Below only new and removed languages are listed, as well as changes to languages
7695 because of Phabricator reports.
7697 * (T258975) Added a Latin/Cyrillic script converter for the Talysh language.
7698 * (T245359) Split Bali script locale from "ban" (Balinese) (ban-bali).
7699 * (T264582) Added language support for Madurese (mad).
7700 * (T259330) Added language support for Mara (mrh).
7701 * (T263968) Added language support for Nias (nia).
7702 * (T270365) Added language support for Tyap (kcg).
7703 * (T276745) Added language support for Wayuu (guc).
7705 === Breaking changes in 1.36 ===
7706 * Grade C (non-JavaScript) support for Internet Explorer 8 has been dropped.
7707 * (T249459) wfIsBadImage(), deprecated in 1.34, has been removed.
7708 * (T176526) EditPage::getContextTitle() will now throw an exception if a context
7709 title was not set using setContextTitle(). Previously, this mis-use would only
7710 cause a deprecation warning to be emitted.
7711 * The DeferredStringifier class, deprecated since 1.31, was removed.
7712 * Multiple methods that fell back to the $wgUser global variable were
7713 individually hard deprecated previously. The following have now been removed:
7714 - ApiTestCase::doLogin
7715 - Article::doDeleteArticle
7716 - Article::doDeleteArticleReal
7717 - Article::getComment
7718 - Article::getCreator
7720 - Article::getUserText
7721 - Article::insertProtectNullRevision
7723 - File::recordUpload
7724 - ForeignDBFile::delete
7725 - ForeignDBFile::recordUpload
7727 - LocalFile::deleteOld
7728 - LocalFile::recordUpload
7729 - PageArchive::undelete
7730 - RecentChange::markPatrolled
7731 - Title::getUserPermissionsErrors
7732 - Title::quickUserCan
7734 - WebRequest::getLimitOffset
7735 - WikiPage::doDeleteArticle
7736 - WikiPage::insertProtectNullRevision
7737 * The SpecialPageFactory class, deprecated in 1.32, has been removed. Use the
7738 SpecialPageFactory service instead.
7739 * Multiple methods previously had optional User parameters, with fallbacks
7740 to the $wgUser global variable. Not passing a User to those methods was
7741 previously hard deprecated, and support for not passing a User has now
7743 - ArchivedFile::userCan
7745 - FileDeleteForm::__construct
7746 - FileDeleteForm::doDelete
7747 - LocalFileDeleteBatch::__construct
7748 - LogEventsList::getExcludeClause (only needed for the 'user' audience)
7749 - LogEventsList::userCan
7750 - LogEventsList::userCanBitfield
7751 - LogEventsList::userCanViewLogType
7752 - LogPage::addEntry (also accepts user id instead)
7753 - OldLocalFile::userCan
7755 - Title::getNotificationTimestamp (though the entire method is deprecated)
7756 - WikiPage::getComment (only needed for the FOR_THIS_USER audience)
7757 - WikiPage::getCreator (only needed for the FOR_THIS_USER audience)
7758 - WikiPage::getUser (only needed for the FOR_THIS_USER audience)
7759 - WikiPage::getUserText (only needed for the FOR_THIS_USER audience)
7760 * The following hooks have been removed:
7761 - APIQueryInfoTokens
7762 - APIQueryRecentChangesTokens
7763 - APIQueryRevisionsTokens
7764 - APIQueryUsersTokens
7765 - ApiTokensGetTokenTypes
7766 * LogEventsList::typeAction previously accepted an optional right parameter, and
7767 checked if the context user ($wgUser) had that right. Passing a right was hard
7768 deprecated in 1.35, and support for passing a right has now been removed.
7769 * WikiPage::doDeleteArticleReal previously accepted an optional user as its
7770 fifth parameter, and fell back to $wgUser if not user was provided. The
7771 signature changed to have the user as the second parameter, and the old
7772 signature was hard deprecated in 1.35. Support for the old signature has now
7774 * User::addNewUserLogEntry, deprecated since 1.27, was removed.
7775 * As part of refactoring the EditPage class, EditPage::setPreloadedContent,
7776 which had no known callers was removed entirely. Additionally, the following
7777 public methods were made private:
7778 - ::extractSectionTitle
7779 - ::getSummaryInputWidget
7780 - ::noSuchSectionPage
7782 * EditPage::matchSpamRegex and ::matchSummarySpamRegex, deprecated in 1.35,
7783 were removed. Use the SpamChecker service instead.
7784 * The global function `wfWaitForSlaves`, deprecated in 1.27 and hard-deprecated
7785 in 1.35, has been removed. Use LBFactory::waitForReplication() instead.
7786 * Calling Action::factory() with null as the first parameter, rather than a
7787 string, was deprecated in 1.35 and support was now removed.
7788 * Calling Action::factory() with an object that wasn't an Article as the second
7789 parameter was deprecated in 1.35 and support was now removed.
7790 * The global variable $wgMemc, deprecated since 1.35, has been removed. Usage
7791 should generally be migrated to WANObjectCache, or if you really need the
7792 internal object, use ObjectCache::getLocalClusterInstance instead.
7793 * The preprocessDump.php maintenance script was removed.
7794 * CategoryFinder, which was deprecated in 1.31 and hard-deprecated in 1.35,
7796 * GenderCache::singleton(), which was deprecated in 1.28 and hard-deprecated
7797 in 1.35, has been removed.
7798 * Sanitizer::escapeId(), deprecated in 1.30, has been removed.
7799 * Direct invocation of Parser::__construct() (instead of via a ParserFactory)
7800 now throws an exception; support has also been removed for several
7801 deprecated variants on the arguments passed to Parser::__construct.
7802 Direct invocation of Parser::__construct was deprecated in 1.34.
7803 * Parser::setFunctionTagHook(), deprecated in 1.35, has been removed.
7804 * The following properties of Parser, deprecated in 1.35, have been made
7806 - $mTagHooks - use Parser::getTags()
7807 - $mFunctionHooks - use Parser::getFunctionHooks()
7808 - $mOutput - use Parser::getOutput()
7809 - $mPreprocessor - use Parser::getPreprocessor()
7810 * The ParserBeforeTidy hook, deprecated in 1.35, has been removed.
7811 * The ParserBeforeTidy, ParserBeforeStrip, and ParserAfterStrip hooks,
7812 deprecated in 1.35, have been removed.
7813 * All methods of MWTidy except for MW::tidy() have been removed. These were each
7814 either marked as @internal or deprecated in 1.35.
7815 * (T248062) Mixins `.background-image-svg()` and `.background-image-svg-quick()`
7816 (provided by mediawiki.mixins.less), which have been deprecated since 1.35,
7817 have now been removed. MediaWiki no longer supports any browser which would
7818 require this SVG-fallback PNG support, so you can simply use the regular CSS
7819 `background-image:` declaration instead.
7820 * The ResourceLoader module `mediawiki.legacy.oldshared` and its file
7821 'oldshared.css', deprecated since 1.35 has been removed (T248357).
7822 * `ResourceLoader::__construct` now requires a Config parameter. The optional
7823 nature of this parameter was deprecated in 1.34.
7824 * The LinkBegin and LinkEnd hooks, deprecated in 1.28, have been removed. You
7825 can instead use the HtmlPageLinkRendererBegin and HtmlPageLinkRendererEnd
7826 hooks, respectively.
7827 * The EmailUser hook passes its fifth param, $error, by reference, to allow
7828 hook handlers to add error messages, indicate that they have sent the email
7829 instead of core, etc. Setting the parameter to something other than a
7830 Status object, true, false, an empty string, an array, or a MessageSpecifier,
7831 object, which had been deprecated in 1.29, is no longer supported, and now
7832 results in an MWException being thrown.
7833 * Skin::getDynamicStylesheetQuery(), deprecated in 1.32, has been removed. You
7834 should use action=raw&ctype=text/css directly.
7835 * Skin::makeI18nUrl(), deprecated in 1.35, has been removed.
7836 * The following User methods, deprecated and moved to BlockManager in 1.34, were
7838 - ::isDnsBlacklisted
7840 - ::isLocallyBlockedProxy
7841 - ::trackBlockWithCookie
7842 * Support for v1 of the parser tests file format has been removed; it was
7843 deprecated in 1.35. (T174199)
7844 * SpecialUnblockUser::processUIUnblock() now returns a Status object instead of
7845 an array of messages or a boolean value. This function was also marked as
7846 @internal and is no longer safe to call it publicly.
7847 * mw.Title.getDotExtension() from the 'mediawiki.Title' module was removed
7848 without deprecation. You should use mw.Title.getExtension() and prepend the
7850 * Profiler::getTemplated and Profiler::setTemplated, deprecated in 1.34, have
7852 * DatabaseMysqlBase now requires MySQL version 5.6.4+ when "lagDetectionMethod"
7853 is set to "pt-heartbeat".
7854 * Removed HookContainer::getOriginalHooksForTest() without deprecation. This
7855 method was introduced in 1.35 for internal use, and appears unused outside of
7857 * ParserCache::__construct() now requires three parameters.
7858 * Message->getFormat(), deprecated in 1.29, has been removed.
7859 * Support for passing Article to ParserCache::get, deprecated in 1.35, has been
7861 * ParserCache::singleton(), deprecated in 1.30, has been removed.
7862 * DatabaseBlock::deleteIfExpired and ::fromMaster, deprecated in 1.35, have been
7864 * Some deprecated AbstractBlock methods have been removed:
7865 - ::prevents, deprecated in 1.33
7866 - ::shouldTrackWithCookie, deprecated in 1.34
7867 - ::getBlocker, deprecated in 1.35
7868 - ::setBlocker, deprecated in 1.35
7869 - ::getBlockErrorParams, deprecated in 1.35
7870 * Multiple DatabaseBlock methods dealing with cookies, deprecated in 1.34,
7875 - ::getIdFromCookieValue
7876 - ::shouldTrackWithCookie
7877 * The public static callback function SpecialUnblock::processUIUnblock has been
7878 removed. This method was for internal use only, and appears unused outside of
7880 * ChangeTags::truncateTagDescription, deprecated in 1.35, has been removed.
7881 * Deprecated null fallbacks in PasswordReset constructor have been removed.
7882 * User::isEveryoneAllowed and User::getAllRights, deprecated in 1.34, has been
7884 * The following methods of the UserGroupMembership class, deprecated in 1.35,
7887 - ::newFromRow - use UserGroupManager::newGroupMembershipFromRow
7888 - ::selectFields - use UserGroupManager::getQueryInfo
7889 - ::delete - use UserGroupManager::removeUserFromGroup
7890 - ::insert - use UserGroupManager::addUserToGroup
7891 - ::purgeExpired - use UserGroupManager::purgeExpired
7892 - ::getMembershipsForUser - use UserGroupManager::getUserGroupMemberships
7893 - ::getMembership - use UserGroupManager::getUserGroupMemberships
7894 * The public static callback function SpecialBlock::validateTargetField has been
7895 removed. This method was for internal use only, and appears unused outside of
7897 * The public static callback function SpecialUploadStash::tryClearStashedUploads
7898 has been removed. This method was for internal use only, and appears unused
7899 outside of MediaWiki core.
7900 * SpecialComparePages::showDiff() ::revOrTitle(), ::checkExistingTitle(), and
7901 ::checkExistingRevision() were marked as @internal to allow for breaking
7902 changes. They are no longer safe to call. The methods were unused outside of
7904 * Each special page within core now uses service injection via it constructor.
7905 When extending these special pages, a call to the grandparent constructor
7906 (`SpecialPage::__construct()`) in the sub-class would now break the derived
7907 special page, as the fallback code in the parent constructor cannot set the
7908 services as needed. Be sure to call the parent constructor when extending
7909 core special pages. Extending core's special pages is not part of the stable
7910 interface, and should generally be avoided.
7911 * Language::getExtraUserToggles and ::viewPrevNext, deprecated in 1.34, have
7913 * StreamFile::send404Message and ::parseRange, deprecated in 1.34, have been
7915 * SVGMetadataExtractor class, deprecated in 1.34, has been removed.
7916 * ProcessCacheLRU class, deprecated in 1.32, has been removed.
7917 * wfForeignMemcKey(), deprecated in 1.35, has been removed.
7918 * LoadBalancer::safeWaitForMasterPos(), deprecated in 1.34, has been removed.
7919 * JobQueue::factory() now requires its `idGenerator` option. The optional
7920 nature of this option was deprecated in 1.35.
7921 * ApiFeedRecentChanges::getFeedObject has been changed to private, and appears
7922 unused outside of MediaWiki core.
7923 * Skin::subPageSubtitle() has been changed to private method. Callers should
7924 use Skin::prepareSubtitle().
7925 * RevisionDeleter::checkRevisionExistence was removed without deprecation.
7926 It had no known callers.
7927 * wfForeignMemcKey() and wfMemcKey(), deprecated in 1.35, have been removed.
7928 * MediaWiki now also requires the php-intl extension.
7929 * BotPassword::save() now returns a Status object for the result rather than
7931 * The methods in CoreTagHooks have been marked @internal and type hints have
7932 been added. The methods appeared to be unused outside of MediaWiki core.
7933 * SquidPurgeClient and SquidPurgeClientPool, deprecated since 1.35, have been
7935 * Several methods on WikiPage will now throw an exception when called on a
7936 WikiPage instance that where constructed on a title that does not refer to a
7937 proper page (but rather a special page or interwiki link). The behavior was
7938 previously undefined and could in some cases lead to data corruption. Affected
7939 methods are: getId(), insertOn(), newPageUpdater(), doUpdateRestrictions(),
7940 doDeleteArticleReal(), doRollback(), and doEditContent().
7941 * The ParserTestRunner no longer invokes the ParserTestTables hook. Instead, it
7942 clones all database tables before running tests, like MediaWikiIntegrationTest
7943 does. If an extension was mis-using the hook to *exclude* tables from the
7944 clone, that will no longer occur, and tests may fail.
7945 * The following classes, which were only loaded for tests and had no uses found
7946 in public MediaWiki-related git, were removed:
7949 * Passing Title as a second parameter to RevisionStore::getPreviousRevision and
7950 getNextRevision, hard deprecated since 1.31, was prohibited.
7951 * (T275619) Maintenance::hasOption and Maintenance::getOption now behave as
7952 documented and are not altered by previous calls to these methods.
7953 * The internal class FirejailCommand was removed.
7954 * Command::execute() now returns a Shellbox\Command\UnboxedResult instead of a
7955 MediaWiki\Shell\Result. Any type hints should be updated.
7956 * WikiPage::$mIsRedirect was removed.
7957 * ObjectCache::detectLocalServerCache(), deprecated in 1.35, was removed.
7958 * The following functions from the Title class have been removed:
7959 - countRevisionsBetween
7961 * The PageProps class was converted to a service. PageProps::overrideInstance
7962 was removed, and MediaWikiServices::redefineService should be used
7964 * Support for creating a MediaWikiTitleCodec object without the InterwikiLookup
7965 and NamespaceInfo services, deprecated in 1.34, was removed. Note that the
7966 MediaWikiTitleCodec class is not @newable or @stable to create, and should
7967 be retrieved from MediaWikiServices instead.
7968 * The $wgContLang variable, deprecated in 1.32, was removed. You can instead use
7969 MediaWikiServices::getInstance()->getContentLanguage().
7970 * User::clearAllNotifications(), hard deprecated in 1.35, was removed. Use
7971 WatchlistManager::clearAllUserNotifications() instead.
7972 * DatabaseBlock::getBlocker can return any UserIdentity instance, not just User.
7973 * MediaWiki::triggerJobs(), deprecated in 1.34, was removed.
7974 * The following Article methods, deprecated in 1.35, were removed:
7984 - getAutoDeleteReason
7989 - getDeletionUpdates
7990 - getHiddenCategories
8001 - hasViewableContent
8004 - insertRedirectEntry
8013 - prepareContentForEdit
8014 - protectDescription
8015 - protectDescriptionLog
8016 - replaceSectionAtRev
8017 - replaceSectionContent
8019 - shouldCheckParserCache
8021 - triggerOpportunisticLinksUpdate
8022 - updateCategoryCounts
8026 - doUpdateRestrictions
8027 - updateRestrictions
8031 * The monolog-based logging system has dropped the Avro format. Because of this,
8032 the AvroFormatter class and the AvroValidator utility class have been removed
8033 without deprecation.
8034 * AbstractBlock::$mReason, deprecated in 1.34, was removed.
8035 Use AbstractBlock::getReasonComment and AbstractBlock::setReason instead.
8037 === Deprecations in 1.36 ===
8038 * (T278026) The DB_MASTER constant has been deprecated in favour of DB_PRIMARY.
8039 * (T245963) User::getGrantName() is now hard deprecated and will be removed in
8040 a subsequent release. Use MWGrants::grantName() instead.
8041 * wfIncrStats() is now deprecated. Use MediaWikiServices::getInstance()
8042 ->getStatsdDataFactory()->updateCount() instead.
8043 * WikiPage::doEditContent() is now deprecated. Use
8044 WikiPage::doUserEditContent() instead. Note that doEditContent() was also
8045 deprecated in 1.32 for unrelated reasons and doUserEditContent() is
8046 deprecated for other reasons, however, using doUserEditContent() is
8047 recommended over using doEditContent().
8048 * WikiPage::doUserEditContent() is now deprecated. Use
8049 PageUpdater::saveRevision instead. Note that the new method expects callers
8050 to take care of checking EDIT_MINOR against the minoredit right, and to apply
8051 the autopatrol right as appropriate.
8052 * LocalFile::recordUpload2, soft deprecated in 1.35, now emits deprecation
8053 warnings. Use ::recordUpload3 instead.
8054 * Constructing a new instance of the ParserOptions class without providing
8055 a User object, which falls back to the global $wgUser, is now deprecated.
8056 * The User class, which was marked as @newable in 1.35, is no longer newable,
8057 meaning that it is no longer safe to manually call the constructor via
8058 `new User`. Instead, use the UserFactory service. Additionally, the
8059 following static constructor methods were deprecated in favor of using the
8060 UserFactory service:
8063 - User::newFromActorId
8064 - User::newFromIdentity
8065 - User::newFromAnyId
8066 - User::newFromConfirmationCode
8067 * The following User methods have been hard deprecated in favor of the new
8068 UserEditTracker service:
8069 - User::getFirstEditTimestamp
8070 - User::getLatestEditTimestamp
8071 * The confusingly-named User->isLoggedIn() method has been deprecated in favour
8072 of the method it wraps, User->isRegistered().
8073 * Use of the `preprocessor=Preprocessor_DOM` option in parser test files has
8074 been deprecated. Preprocessor_DOM was removed in 1.35.
8075 * ParserOptions::setTidy() has been deprecated. It has had no effect since
8077 * Sanitizer::escapeIdReferenceList() has been deprecated; it will eventually
8078 be made private to the class, as it appears to have no uses outside the
8080 * Sanitizer::hackDocType() is deprecated; it will eventually be made private.
8081 * Skin::getIndicatorsHTML() is deprecated. The functionality can be retained
8082 by reimplementing the method using the raw indicators data from
8083 OutputPage::getIndicators.
8084 * Skin::makeVariablesScript() has been deprecated. Use
8085 ResourceLoader::makeInlineScript() instead.
8086 * SpecialPageFactory::getRestrictedPages() has been deprecated.
8087 Use SpecialPageFactory::getUsablePages() instead.
8088 * Title::nameOf() is deprecated; use Title::newFromID()->getPrefixedDBkey()
8090 * DatabaseBlock::insert, DatabaseBlock::update, DatabaseBlock::purgeExpired and
8091 DatabaseBlock::delete are deprecated. Use DatabaseBlockStore::insertBlock,
8092 DatabaseBlockStore::updateBlock, DatabaseBlockStore::purgeExpiredBlocks and
8093 DatabaseBlockStore::deleteBlock instead.
8094 * SpecialBlock::getTargetAndType and AbstractBlock::parseTarget are deprecated.
8095 Call BlockUtils::parseBlockTarget instead.
8096 * SpecialUnblock::processUnblock was deprecated - use UnblockUserFactory
8098 * Deprecated MediaWikiIntegrationtestCase::removeTemporaryHook() in favor of
8099 MediaWikiIntegrationtestCase::clearHook().
8100 * Skin::getSearchLink(), also exposed as 'searchaction' option in SkinTemplate,
8101 has been deprecated. Use Title or SpecialPage methods directly.
8102 * Skin::getAllowedSkins and ::getSkinNames have been deprecated. Use their
8103 respective equivalents in SkinFactory instead.
8104 * The RollbackComplete hook has been deprecated, use the PageSaveComplete hook
8106 * Skin::makeUrl() has been deprecated. Title methods should be used instead.
8107 * Skin::privacyLink(), Skin::disclaimerLink() and Skin::aboutLink() have been
8108 deprecated. Please use Skin::footerLink() instead.
8109 * Skin::getLogo() has been deprecated. Use ResourceLoaderSkinModule instead.
8110 * The module `mediawiki.toc.styles` has been replaced by
8111 ResourceLoaderSkinModule. If you are having problems styling table of contents
8112 ensure you have an updated skin.
8113 * Skin::mainPageLink() has been deprecated. Use LinkRenderer service instead.
8114 * BaseTemplate::getToolbox() method has been hard deprecated. The toolbox data
8115 is now available in a sidebar data array which you can get from any class
8116 that's extending QuickTemplate class.
8117 * Constructing a DefaultPreferencesFactory, LinkHolderArray or PasswordReset
8118 without a $hookContainer parameter is deprecated.
8119 * Autopromote class, soft deprecated since 1.35, now emits deprecation warnings.
8120 Use UserGroupManager instead.
8121 * SpecialBlock::canBlockEmail has been deprecated. Please use
8122 BlockPermissionChecker::checkEmailPermissions instead.
8123 * SpecialBlock::checkUnblockSelf has been deprecated. Please use
8124 BlockPermissionChecker::checkBlockPermissions instead.
8125 * SpecialBlock::parseExpiryInput was deprecated - use
8126 BlockUser::parseExpiryInput instead.
8127 * SpecialBlock::validateTarget has been deprecated, use BlockUtils instead.
8128 * SpecialBlock::validateTargetField has been deprecated for external use,
8129 use BlockUtils instead.
8130 * SpecialPage::getLanguageConverter has been deprecated, use
8131 LanguageConverterFactory::getLanguageConverter() directly.
8132 * ParserCache::getKey has been deprecated. Use ParserCache::getMetadata and
8133 ParserCache::makeParserOutputKey instead.
8134 * The PHPUnit4And6Compat class, used to provide compatibility with PHPUnit 4,
8135 was removed. MediaWiki support for PHPUnit 4 ended with the removal of HHVM
8137 * The PHPUnit6And8Compat class, used to provide compatibility with PHPUnit 6,
8138 was removed without deprecation. This class was introduced during the
8139 upgrade to PHPUnit 8, but never used.
8140 * MediaWikiIntegrationTestCase::assertType, hard-deprecated in 1.35 due to
8141 incompatibility with PHPUnit 8, was removed.
8142 * ParserCache::getETag has been deprecated, instead build suitable etag
8144 * The following functions from the Language class have been hard deprecated
8145 and will be removed in a subsequent release:
8148 - updateConversionTable
8150 * The following functions from the Title class have been hard deprecated:
8151 - getPreviousRevisionID
8153 - getEarliestRevTime
8154 * The following functions from the User class have been hard deprecated:
8157 * The mw.language.commafy client-side method has been deprecated, to match
8158 the deprecation of Language::commafy. Use mw.language.convertNumber
8160 * The "es6-promise" module has been deprecated. Use "es6-polyfills" instead.
8161 * Title::isDeleted() and Title::isDeletedQuick() have been deprecated. Please
8162 use Title::getDeletedEditsCount() and Title::hasDeletedEdits() instead.
8163 * Article::getContentObject, soft-deprecated since 1.32, was hard-deprecated.
8164 * WikiRevision::importUpload, soft-deprecated since 1.31, was hard-deprecated.
8165 * Html::infoBox() has been deprecated. There's no replacement.
8166 * Message::toString() without a $format parameter, soft-deprecated since 1.28,
8167 was hard-deprecated. Use explicit formatting methods instead, such as
8168 Message::text() and Message::escaped().
8169 * BagOStuff::makeKeyInternal() usage outside of BagOStuff has been deprecated.
8170 * BagOStuff::setDebug() is deprecated and calls to it are ignored. Debug logs
8171 are now unconditionally enabled.
8172 * The following global functions have been hard deprecated:
8173 - wfAppendToArrayIfNotDefault
8175 - wfClearOutputBuffers
8176 - wfConfiguredReadOnlyReason
8178 - wfGetPrecompiledData
8180 * BeforeParserFetchTemplateAndtitleHook has been deprecated; replace
8181 with the new BeforeParserFetchTemplateRevisionRecord hook. (The
8182 similar ParserFetchTemplateHook was deprecated in 1.35; the new hook
8184 * The InterwikiLoadPrefix hook has been deprecated; it is not compatible
8185 with future wikitext parsers (which need to enumerate all interwiki
8186 prefixes). In test cases please use $wgInterwikiCache instead.
8187 * WikiPage instances should no longer be constructed for titles that do not
8188 represent editable pages (e.g. special pages). WikiPages were always
8189 documented to represent "MediaWiki article and history".
8190 * Skin::getSkinStylePath() has been deprecated. Please replace usages with
8191 the direct path to the resources.
8192 * The second argument of EnhancedChangesList::getDiffHistLinks, $query, has
8194 * The ParserTestTables hook has been deprecated; it is no longer necessary
8195 after a ParserTestRunner refactoring.
8196 * The following classes have been hard deprecated: CachedAction,
8197 SpecialCachedPage, CacheHelper, ICacheHelper. They were unused in MediaWiki
8198 ecosystem, so no replacement was provided.
8199 * The ProtectionForm::buildForm hook has been deprecated. Please use the
8200 ProtectionFormAddFormFields hook instead.
8201 * RevisionStore::newMutableRevisionFromArray has been hard deprecated. Instead,
8202 MutableRevisionRecord should be constructed directly via constructor.
8203 * UserIdentity::getActorId() is deprecated. The actor ID should not be exposed
8204 to application logic. Storage layer code should use the ActorNormalization
8205 service for normalizing and denormalizing user names.
8206 * Constructing a UserIdentityValue with an actor ID as the third parameter is
8207 deprecated. The parameter should be omitted. Storage layer code should use
8208 the ActorNormalization service for normalizing and denormalizing user names.
8209 * Command::cgroup() is deprecated and no longer functional. $wgShellCgroup is
8210 now implemented as an Executor option.
8211 * Command::restrict() is deprecated. Instead use the new separate accessors.
8212 * MWTidy::tidy() is deprecated. Use MediaWikiServices::getTidy()-tidy() instead.
8213 * TidyDriverBase::supportsValidate() is deprecated; it has always returned
8215 * WatchedItem::getUser hard-deprecated in favor of ::getUserIdentity.
8216 * WatchedItemStoreInterface::enqueueWatchlistExpiryJob was hard deprecated in
8217 favor of the new method maybeEnqueueWatchlistExpiryJob that takes care of
8218 relevant configuration checks.
8219 * LogEntry::getPerformer() and its implementations have been hard-deprecated, in
8220 favor of ::getPerformerIdentity().
8221 * AuthManager::singleton(), deprecated in 1.35, is hard deprecated. Use
8222 MediaWikiServices::getAuthManager() instead.
8223 * User::clearNotification(), deprecated in 1.35, is hard deprecated. Use
8224 WatchlistManager::clearTitleUserNotification() instead.
8225 * Passing string to DatabaseBlock::setBlocker was deprecated. Only UserIdentity
8227 * DatabaseBlock constructor 'byText' option was deprecated in favour of 'by'
8228 option, which now accepts UserIdentity. Passing user ID is deprecated.
8229 * Parser::getUser was deprecated. Use Parser::getUserIdentity instead.
8230 * DatabaseBlock::isWhitelistedFromAutoblocks was deprecated. Use
8231 DatabaseBlock::isExemptedFromAutoblocks instead.
8232 * User::isIPRange(), deprecated in 1.35, is hard deprecated.
8233 Use the UserNameUtils service or IPUtils directly.
8234 * BaseTemplate::getFooterIcons(), deprecated in 1.35, is hard deprecated. Read
8235 footer icons from template data requested via $this->get('footericons').
8236 * `box-shadow()` LESS mixin from mediawiki.mixins is deprecated due to updated
8237 basic browser support. Use unprefixed property `box-shadow:` instead.
8238 * MergeHistory::checkPermissions was deprecated. Use ::probablyCanMerge or
8239 ::authorizeMerge instead.
8240 * User::isValidUserName(), deprecated in 1.35, is hard deprecated.
8241 Use the UserNameUtils service instead.
8242 * The TitleArrayFromResult hook has been deprecated.
8243 * The EditPageBeforeEditToolbar hook has been deprecated; it has become
8244 defunct after the classic edit toolbar was removed. Use one of the many
8245 other EditPage hooks instead.
8246 * Deprecated the class name MediaWiki\User\WatchlistNotificationManager; use
8247 MediaWiki\Watchlist\WatchlistManager instead. Deprecated the method
8248 MediaWikiServices->getWatchlistNotificationManager(); use
8249 MediaWikiServices->getWatchlistManager() instead.
8250 * The "ArticleEditUpdatesDeleteFromRecentchanges" hook, deprecated in 1.35, has
8251 been removed. Other hooks like "RecentChange_save" can be used instead.
8253 === Other changes in 1.36 ===
8254 * The 'tidy' key in ParserOptions (used in the parser cache) has been removed.
8255 It has had no effect since 1.35.
8256 * A future release of MediaWiki will make `{{=}}` a built-in parser function,
8257 for use when automatically escaping the `=` character in template arguments.
8258 A tracking category and parser warning have been added to this release when
8259 `{{=}}` is used and it expands to something other than `=`.
8260 * The implementation of TestFileReader::read has been changed to use Parsoid's
8261 parser test file parser. This should be compatible with existing code, but it
8262 only supports version 2 of the test file specification and may be more strict
8263 when parsing invalid input, including duplicate tests.
8264 * BeforeParserFetchTemplateRevisionRecord, a new hook, unifies and replaces the
8265 old BeforeParserFetchTemplateAndtitleHook and ParserFetchTemplateHook.
8266 * The SkinLessImportPaths attribute was added, allowing skins to add a directory
8267 to the import path for LESS stylesheets. Skins can use this to provide a
8268 custom version of mediawiki.skin.variables.less, setting skin-specific values
8269 for certain LESS variables.
8270 * The interaction between ContentHandler::getParserOutputForIndexing() and
8271 ContentHandler::getDataForSearchIndex() has been clarified (the latter should
8272 only be called with the result of the former). Extensions may override
8273 getParserOutputForIndexing() to skip generating HTML, which may improve
8274 indexing performance. (The default implementation still generates HTML, and
8275 getDataForSearchIndex() implementations can still rely on it if they do not
8276 over-ride getParserOutputForIndexing().)
8277 * Article::fetchContentObject, ::mContentObject, ::mContentLoaded,
8278 ::mRevIdFetched, all deprecated since 1.32, were removed.
8279 * Article::mParserOptions and ::setParserOptions were removed.
8280 * Article and ImagePage::getEmptyPageParserOutput, unused, were removed.
8281 * ParserCache's default serialization format was changed from PHP serialization
8282 to JSON serialization. In case some installed extension do not support JSON
8283 yet, $wgParserCacheUseJson can be used to revert back to PHP serialization.
8284 * PermissionManager::groupHasPermission, ::getGroupPermissions and
8285 ::getGroupsWithPermission were deprecated, use GroupPermissionsLookup
8287 * WatchedItemStoreInterface now accepts PageIdentity where it accepted
8288 LinkTarget, calling with LinkTarget was deprecated.
8289 * 'movable' attribute has been added to the 'namespaces' property of
8290 extension.json schema. Extensions that define namespaces can set it to
8291 `false` to disallow moving pages in the specified namespace. Extensions
8292 should either use this or NamespaceIsMovableHook, but not both. The hook
8293 overrides the attribute.
8297 MediaWiki 1.36 requires PHP 7.3.19 or later and the following PHP extensions:
8308 MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
8309 but support for them is somewhat less mature.
8311 The supported versions are:
8313 * MySQL 5.5.8 or later
8314 * PostgreSQL 9.4 or later
8315 * SQLite 3.8.0 or later
8317 == Online documentation ==
8318 Documentation for both end-users and site administrators is available on
8319 MediaWiki.org, and is covered under the GNU Free Documentation License (except
8320 for pages that explicitly state that their contents are in the public domain):
8322 https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
8325 A mailing list is available for MediaWiki user support and discussion:
8327 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
8329 A low-traffic announcements-only list is also available:
8331 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
8333 It's highly recommended that you sign up for one of these lists if you're
8334 going to run a public MediaWiki, so you can be notified of security fixes.
8337 There's usually someone online in #mediawiki on irc.libera.chat.
8341 MediaWiki 1.35 should mostly work on PHP 8.0/8.1, however it is not
8342 currently actively supported. Testing (on a development wiki!) is
8343 appreciated, and bugs with PHP 8.0/8.1 on MediaWiki 1.35 will be accepted.
8345 It is anticipated that in a later MediaWiki 1.35 point release, we can
8346 declare 1.35 as supporting PHP 8.0/8.1.
8348 PHP 8.0 workboard: https://phabricator.wikimedia.org/tag/php_8.0_support/
8349 PHP 8.1 workboard: https://phabricator.wikimedia.org/tag/php_8.1_support/
8350 PHP 8.2 workboard: https://phabricator.wikimedia.org/tag/php_8.2_support/
8351 PHP 8.3 workboard: https://phabricator.wikimedia.org/tag/php_8.3_support/
8353 == MediaWiki 1.35.14 ==
8355 This is a security and maintenance release of the MediaWiki 1.35 branch.
8357 === Changes since MediaWiki 1.35.13 ===
8358 * Localisation updates.
8359 * (T344912) mail: Encode period (ascii 46) if it appears in encoded email
8361 * (T347726, CVE-2023-51704) SECURITY: logging: Fix non-escaped messages
8364 == MediaWiki 1.35.13 ==
8366 This is a maintenance release of the MediaWiki 1.35 branch.
8368 === Changes since MediaWiki 1.35.12 ===
8369 * Tarball release to fix backport issues with patch for T341529.
8371 == MediaWiki 1.35.12 ==
8373 This is a security and maintenance release of the MediaWiki 1.35 branch.
8375 === Changes since MediaWiki 1.35.11 ===
8376 * Localisation updates.
8377 * (T333050, CVE-2023-45363) SECURITY: Fix infinite loop for
8378 self-redirects with variants conversion.
8379 * (T341434) WikiImporter: Improve error message output.
8380 * (T341737) ApiBase: Cast $id to string in filterIDs.
8381 * (T342632) ApiComparePages: Add help url.
8382 * (T347227) ImportReporter: Make callback functions public.
8383 * doc: Improve description of type in extension.schema.v1.json.
8384 * (T340221, CVE-2023-45360) SECURITY: XSS via
8385 'youhavenewmessagesmanyusers' and 'youhavenewmessages' messages.
8386 * (T341529, CVE-2023-45362) SECURITY: diff-multi-sameuser
8387 ("X intermediate revisions by the same user not shown") ignores username
8389 * (T341565, CVE-2023-3550) SECURITY: Stored XSS when uploading crafted XML
8390 file to Special:Upload (non-standard configuration).
8392 == MediaWiki 1.35.11 ==
8394 This is a security and maintenance release of the MediaWiki 1.35 branch.
8396 === Changes since MediaWiki 1.35.10 ===
8397 * Localisation updates.
8398 * (T333990) composer.json: Explicitly pin psr/http-message to 1.0.1.
8399 * (T335203, CVE-2023-29197) SECURITY: Upgrading guzzlehttp/psr7
8401 * (T269636) Add Access-Control-Max-Age to $wgAllowedCorsHeaders.
8402 * (T322944) Add Authorization to default $wgAllowedCorsHeaders.
8403 * (T332889, CVE-2023-36675) SECURITY: Fix escaping in BlockLogFormatter.
8404 * (T297917) objectcache: avoid use of ctype_digit() in
8405 WANObjectCache::adaptiveTTL().
8406 * (T330464) Work around argument corruption bug in XMLReader::open.
8407 * (T313157) IndexPager: Also protect against $offset being 0.
8408 * (T335612, CVE-2023-36674) SECURITY: Move badFile lookup to Linker.
8410 == MediaWiki 1.35.10 ==
8412 This is a security and maintenance release of the MediaWiki 1.35 branch.
8414 === Changes since MediaWiki 1.35.9 ===
8415 * Localisation updates.
8416 * (T324895) MWCallbackStream: Add explicit $stream property.
8417 * Remove /images .htaccess rules that are no longer relevent.
8418 * Disable php in .htaccess of images directory as a hardening measure.
8419 * (T322583) Include missing message parameter in message.
8420 * Fix phan error when Excimer is enabled.
8421 * (T274966) tests: Make pass on php8.0.
8422 * (T323373) Parser: Fix extractSections() behavior for PHP >= 8.0.
8423 * (T326021) Add matrix: to $wgUrlProtocols.
8424 * api/en.json: api-help-datatype-expiry add missing 'may'.
8425 * (T225218) Wait until the recent changes are updated.
8426 * (T328222) Pass empty string to strlen() if schema is null for
8428 * (T317329) OutputPage: Fix undefined ['host'] in ImagePreconnect code.
8429 * (T289926) SpecialRevisionDelete: Set default of '' for wpReason.
8430 * (T155582, T328503) Fix XML dumps for content types with non-string
8432 * (T295958, T278847) MediaWiki-Docker: Switch PHP images to PHP7.4.
8433 * (T314099) revisiondelete: Replace dynamic property Status::$itemStatuses.
8434 * (T329198) ParamValidator: Improve paramvalidator-help-multi-max message.
8435 * (T292348) WikiImporter: do not fail if upload entry in dump lacks 'text'
8437 * (T329484) API: Fix query+allimages user parameter description.
8438 * (T330529) SpecialEditTags: Set default of '' for wpReason.
8439 * (T330526) htmlform: Handle null from HTMLFormField::getDefault in
8441 * (T285159, CVE-2023-29141) SECURITY: Do not apply autoblocks to untrusted
8444 == MediaWiki 1.35.9 ==
8446 This is a security and maintenance release of the MediaWiki 1.35 branch.
8448 === Changes since MediaWiki 1.35.8 ===
8449 * Localisation updates.
8450 * (T319000) WebInstaller: Don't try and run trim() on null.
8451 * (T320864) When calling mail(), use an array for headers.
8452 * (T311567) In ManualLogEntry, cast the comment to string.
8453 * (T323082) Upgrading wikimedia/xmp-reader (0.7.0 => 0.8.5).
8454 * Language: Handle ronna and quetta.
8455 * (T304515) LCStoreStaticArray: atomically replace the cache file.
8456 * (T324890, T324891, T324901) Parser: Allow dynamic properties on PHP 8.2.
8457 * (T322637) SECURITY: sqlite should not create DB file world-readable.
8459 == MediaWiki 1.35.8 ==
8461 This is a security and maintenance release of the MediaWiki 1.35 branch.
8463 === Changes since MediaWiki 1.35.7 ===
8464 * Localisation updates.
8465 * (T311568) UploadBase::setTempFile() handle $tempPath being passed as null.
8466 * (T311559) SpecialListFiles: user parameter isn't always present.
8467 * (T311561) ImageListPager: Don't call htmlspecialchars() on null.
8468 * (T311920) SpecialBlockList: Prevent passing null to trim().
8469 * (T311921) SpecialUserrights: Don't pass null to str_replace.
8470 * (T311570) SpecialWithoutInterwiki: Don't pass null through to
8471 Title::capitalize().
8472 * (T311574, T311576) SpecialLinkSearch: Don't pass null through to the parser.
8473 * (T312519, T312520) Parser::extensionSubstitution() Don't run substr() on null.
8474 * (T287564) populateInterwiki: Include not null columns iw_api/iw_wikiid.
8475 * (T312302) SpecialRedirect: Don't pass null to explode.
8476 * RemoveInvalidEmails: Fix quoting for postgres.
8477 * (T312678) import: UploadSourceAdapter::stream_read() don't pass null to
8479 * (T312300) SpecialDiff: Don't pass null to explode().
8480 * (T312680) parser: Fix CoreParserFunctions::urlencode() null coalescence $arg.
8481 * (T289926) Handle null passed to wfShorthandToInteger() and Html::element().
8482 * (T289926) Ensure that strlen() does not get passed a (valid) null.
8483 * (T312301) SpecialDiff: Don't pass null to trim().
8484 * Hooks: Use more meaningful name for SkinAfterPortlet hook parameter.
8485 * (T289926) Ensure we don't pass null to mb_strlen.
8486 * (T312305, T311572, T311571, T311578) HtmlForm: Null coalescence in trim()
8488 * (T289926) site: Consistently return null from Site::getDomain().
8489 * (T307304, T289879) filebackend,jobqueue: Add signature for
8490 FilterIterator::accept().
8491 * (T312183) rdbms: Adapt hasOrMadeRecentPrimaryChanges test mock for PHP 8.1.
8492 * Add application/vnd.ms-opentype to MIME list.
8493 * Allow composer/installers plugin in composer.json.
8494 * (T313663) Make HandlerTestTrait compatible with php8.1.
8495 * (T313663) [php8.1] Change override of $wgResourceBasePath for CSP tests.
8496 * Change type hints for BatchRowIterator and NotRecursiveIterator for
8497 compatibility with PHP 8.1.
8498 * (T313663) [php8] Don't use strlen on potentially null string.
8499 * (T313663) [php8.1] Suppress test warning about providing null.
8500 * (T313663) Parser will use current timestamp instead of null if passed a
8501 RevisionRecord that does not have a timestamp.
8502 * (T313663) Add explicit null check for $sha in FileBackend [php8.1].
8503 * (T313663) LogFormatter: Cast argument of ctype_digit to string [php8.1].
8504 * (T289879, T289926) Get rid of warnings on PHP 8.1.
8505 * rdbms: fix some PHP 8 warnings in Database/LoadBalancer/LBFactory.
8506 * (T313663) Avoid testing strlen on null in ApiQuerySiteinfo [php 8.1 compat].
8507 * Fix a couple deprecation warnings in the installer under PHP 8.1.
8508 * (T313663) Use default timezone UTC for SpecialWatchlistTest [php 8.1].
8509 * (T314096) Migrate use of ${var}-style string interpolation.
8510 * (T313663, T313662) Make default value for optional args {{PAGESINCAT:..}} be
8512 * (T314225) SpecialCategories: Null coalescene $par.
8513 * (T314099) User: Allow dynamic properties on PHP 8.2.
8514 * (T314404) SpecialGoToInterwiki: Null coalescene $par.
8515 * (T314397) SpecialBlock: Better handle null in getTargetUserTitle.
8516 * (T314099) phpunit: Fix trivial dynamic property usages in tests.
8517 * (T314405) UploadStash: Check if us_prop is set in the fileMetadata.
8518 * (T314550) SpecialMergeHistory: Set timestamp to '' if no mergepoint.
8519 * (T314551) SpecialMergeHistory: Set defaults for target and dest parameters.
8520 * api: Add rel=nofollow to help examples.
8521 * (T314824) tests: Update parser test after i18n change.
8522 * (T263927) Add autocomplete HTML attribute to common auth form fields.
8523 * (T307613) Validate length of user email on Special:ChangeEmail/
8524 Special:CreateAccount.
8525 * (T314906, T314907) SpecialBlock: Set defaults for wpPageRestrictions and
8526 wpNamespaceRestrictions.
8527 * (T315309) ImportStreamSource::newFromURL() Prevent passing null to fwrite.
8528 * (T315892) composer.json: Pin phpunit to 8.5.28.
8529 * (T229092) MigrateActors.php: ignore duplicate creations of actors.
8530 * (T313049) Bump wikimedia/parsoid to v0.12.3.
8531 * (T317750) session: Fix broken SessionTest case due to PHPUnit dependency
8533 * (T318460) SpecialChangeEmail: Set default for returntoquery.
8534 * (T316304, CVE-2022-41767) SECURITY: reassignEdits doesn't update results
8535 in an IP range check on Special:Contributions.
8536 * (T309894, CVE-2022-41765) SECURITY: HTMLUserTextField exposes existence
8539 == MediaWiki 1.35.7 ==
8541 This is a security and maintenance release of the MediaWiki 1.35 branch.
8543 === Changes since MediaWiki 1.35.6 ===
8544 * Localisation updates.
8545 * (T289879) Type hints for ArrayAccess.
8546 * (T304783) TemplateParser: avoid warnings when called by NoLocalSettings.
8547 * Rebuilt vendor with composer 2.3.3.
8548 * (T289879) Address some deprecations for PHP 8.1.
8549 * Fix old_name in UserLogoutComplete hook.
8550 * (T286260, T307979) objectcache: normalize $exptime to a TTL in
8551 APCUBagOStuff/WinCacheBagOStuff.
8552 * MediaSearchWidget should declare an explicit dependency on mediawiki.user
8554 * (T288423) WikiImporter: Replace deprecated WikiRevision::setText.
8555 * (T309377, CVE-2022-29248, T311384, CVE-2022-27776) Updating guzzlehttp/guzzle
8557 * (T308471) SECURITY: Escape welcomeuser message passed to showSuccessPage().
8558 * (T311272) Call parent constructor of AddSite maintenance script first.
8559 * MediaWiki: Don't eagerly initialize action name.
8560 * (T289926) Avoid passing null to trim() in SkinTemplate.
8561 * (T307282) Avoid passing null to strcasecmp(), for PHP 8.1.
8562 * (T311552) ChangesListSpecialPage: Don't pass null to FormatJson::decode().
8563 * (T311569) FileBackend::isStoragePath() Handle being passed null.
8564 * (T311544) Pass int to ApiUsageException::newWithMessage()'s $httpCode param.
8565 * (T311678) SpecialEditWatchlist: Prevent passing null to strtolower().
8566 * (T281741) ChangeTags: Fix adding CSS classes for hidden tags.
8567 * (T296642) changetags: Fix management of a '0' tag.
8568 * (T311554) ChangeTags: Return early in formatSummaryRow() if $tags === null.
8569 * (T303033) Handle null in ChangeTags::modifyDisplayQuery.
8571 == MediaWiki 1.35.6 ==
8573 This is a security and maintenance release of the MediaWiki 1.35 branch.
8575 === Changes since MediaWiki 1.35.5 ===
8576 * (T298261) Fix support for Composer 2.2.
8577 * (T298283) composer.json: Add wikimedia/composer-merge-plugin to allow-plugins.
8578 * Update doctrine/dbal (3.0.0 => 3.1.5).
8579 * (T298564) MemcachedClient: Add support for IPv6.
8580 * (T297543, CVE-2022-28202) SECURITY: properly escape output used within
8581 galleries and Special:RevisionDelete.
8582 * (T268847) Suppress deprecation warnings from libxml_disable_entity_loader().
8583 * (T283275) Fix PHP 8.0 failure of WikiExporterFactoryTest.
8584 * (T274966) Upgrading wikimedia/html-formatter (1.0.2 => 2.0.1).
8585 * Fix the json schema and the extension processor for Parsoid extension modules.
8586 * (T299696) update.php: Avoid passing null to substr.
8587 * In PHP 8.1 don't throw exceptions from mysqli.
8588 * (T289926) SiteConfiguration: Don't pass null to str_replace().
8589 * (T264735) Fix deprecation warning from CURLPIPE_HTTP1.
8590 * (T260735) Stop using is_resource() where possible.
8591 * (T289879) Apply ReturnTypeWillChange to various implementations of built in
8593 * (T299312) Implement __serialize/__unserialize for PHP 8.1 support.
8594 * ExtensionRegistry: Add process cache for lazy attributes.
8595 * (T301041) ApiPageSet: Add "missing": true to missing revisions.
8596 * Allow ParsoidModules extension schema to register services.
8597 * (T297708) Allow setting max execution time to several special pages.
8598 * Upgrading wikimedia/object-factory (v2.1.0 => v2.2.0).
8599 * (T302540) composer.json: Add ext-calendar to require.
8600 * (T302540) composer.json: Add ext-simplexml to require-dev.
8601 * (T302540) composer.json: Add various PHP extensions to suggests.
8602 * Upgrading symfony/polyfill-php80 (v1.23.1 => v1.25.0).
8603 * (T303871) Add Title::getId() as an alias for ::getArticleId().
8604 * (T304008) Don't re-check "Move subpages" on Special:MovePage after a warning.
8605 * (T293576) listFiles: Display file name instead of version.
8606 * (T303560) Installer: Check correct PCRE_CONFIG_NEWLINE value.
8607 * wrapOldPasswords: add \n to two output calls.
8608 * (T304993) Make editcontentmodel a part of editpage grant.
8609 * (T297571, CVE-2022-28201) Title::newMainPage() goes into an infinite recursion
8610 loop if it points to a local interwiki.
8611 * (T297731, CVE-2022-28203) Requesting Special:NewFiles on a wiki with many file
8612 uploads with actor as a condition can result in a DoS.
8614 == MediaWiki 1.35.5 ==
8616 This is a security and maintenance release of the MediaWiki 1.35 branch.
8618 === Changes since MediaWiki 1.35.4 ===
8619 * (T290697) Add symfony/polyfill-php80.
8620 * IcuCollation: Add some more icu to unicode version mappings.
8621 * ApiBase: Annotate deprecated constants individually.
8622 * PHPVersionCheck: Mark PHP 7.4.0 - 7.4.2 as buggy.
8623 * (T293044) installer: Fix 5th param to sourceFile() in DatabaseUpdater.
8624 * (T291127) Always encode spaces in cookie values as "%20".
8625 * Use LocalFile::getHookRunner instead of LocalFile::hookRunner.
8626 * HistoryBlobStub: add getLocation() to get $mOldId.
8627 * Fix checkStorage.php.
8628 * checkStorage: pass no parameters to WikiRevision::getContent().
8629 * (T292763, CVE-2021-44854) SECURITY: Do not cache private wiki completion
8631 * (T294316) Revert "Mark ApiClientLogin/ApiLogin as requiring write mode".
8632 * (T250068) resources: Upgrade jQuery from 3.4.1 to 3.6.0.
8633 * (T250068) resources: Upgrade jquery-migrate from 3.1.0 (patched) to 3.3.2
8635 * (T294796) JobQueueRedis: Replace deprecated zSize with zCard.
8636 * (T212428, T267468) Allow populateContentTables to continue when there are
8638 * (T295191) ApiQuerySiteinfo: Fix "rightsinfo"/"url" when $wgRightsPage is
8640 * Update pear/mail_mime to 1.10.11.
8641 * Update deprecated Guzzle Psr7 function calls.
8642 * Tweak error message for missing composer dependencies.
8643 * (T296112) Allow inserting new sections named '0'.
8644 * nukeNS: don't run purgeRedundantText() after every change.
8645 * (T225888) RollbackAction: fix missing pagetitle.
8646 * (T297322, CVE-2021-44858, CVE-2021-44857) SECURITY: Fix permissions checks in
8648 * (T297574, CVE-2021-45038) SECURITY: Fix permissions check in action=rollback.
8649 * (T34716, T297416) SECURITY: Require 'read' right for most actions.
8650 * (T271037, CVE-2021-44856) SECURITY: Fix use of EditFilterMergedContent hook
8651 when changing content model.
8653 == MediaWiki 1.35.4 ==
8655 This is a security and maintenance release of the MediaWiki 1.35 branch.
8657 === Changes since MediaWiki 1.35.3 ===
8658 * (T283394) Mark ApiClientLogin/ApiLogin as requiring write mode.
8659 * (T283273) Make postgres IRC channel point to libera.chat.
8660 * (T289108) ExtensionProcessor: Remove loaderScripts from extension.json
8662 * (T281549) Installer: Fix mediawiki-announce auto subscription code.
8663 * FormatJson: Optimize encode() for supported PHP versions.
8664 * (T290398) renameRestrictions.php: Update protected_titles as well.
8665 * $wgMimeTypeBlacklist - This configuration array now prohibits the RFC 4329
8666 form of JavaScript, 'application/javascript', as well as previous MIME types.
8667 * (T51097, T290273) resourceloader: Call getStyleFiles from
8668 FileModule::getFileHashes.
8669 * (T277788) parser: Avoid calling ParserOptions::getOption() too many times.
8670 * (T285515, CVE-2021-41798) SECURITY: XSS vulnerability in Special:Search.
8671 * (T290379, CVE-2021-41799) SECURITY: ApiQueryBacklinks can cause a full
8673 * (T284419, CVE-2021-41800) SECURITY: fix PoolCounter protection of
8674 Special:Contributions.
8676 == MediaWiki 1.35.3 ==
8678 This is a security and maintenance release of the MediaWiki 1.35 branch.
8680 === Changes since MediaWiki 1.35.2 ===
8681 * (T259685) SQLite compatibility with ZeroConf VisualEditor was fixed in 1.35.2.
8682 * (T196906, T242751) Fix the test MonologSpiTest::testDefaultChannel.
8683 * (T279964) Parser: Trim trailing whitespace as the last step in pre-save
8685 * (T278026) rdbms: Add DB_PRIMARY to replace DB_MASTER.
8686 * (T252853) Update updateSearchIndex.php to 2006+ standards.
8687 * (T276945) Define a batch size in maintenance/manageJobs.php.
8688 * (T276945) Implement JobQueueDB::getAllAbandonedJobs.
8689 * (T269676) authevents: strval() variables passed to status when logging.
8690 * (T280944) $wgIncludejQueryMigrate - This setting allows the jQuery Migrate
8691 plugin to be disabled. It has been enabled by default since MediaWiki 1.27.
8692 * (T281584) apihelp-query+iwlinks-param-prop: s/interlanguage/interwiki/.
8693 * (T281635) Delete maintenance/cleanupAncientTables.php.
8694 * (T282133) RedisConnectionPool: Suppress phan issue.
8695 * (T281549) WebInstaller: Don't show the announce-l subscribe
8696 checkbox temporarily.
8697 * (T278266) Fix annoying E_NOTICE about undefined 'alt' index in
8698 Skin#makeFooterIcon.
8699 * (T264214) UserRightsProxy::addGroup has to be allowed to update the
8700 old group as well, which is used for granting interwiki rights.
8701 * (T269776, T278266) getFooterIcons should not return empty arrays.
8702 * (T274966) Skip AvroFormatterTest::testSchemaNotAvailable on PHP 8.0.
8703 * phpunit: fail on warnings.
8704 * (T283247) Freenode -> Libera per wikimedia moving from
8706 * (T243124) Make phpunit:unit accept extension*.json to populate the classes.
8707 * (T142663) Add extension.json merge strategy "provide_default".
8708 * (T283540) HookContainer: Fix normalization of callback for static handler.
8709 * (T283464) Fix array order for array_replace_recursive merge strategy.
8710 * (T247223) Optimise MessageCache::isMainCacheable() for the single-message
8712 * (T278579) Don't send headers on ob_end_clean().
8713 * (T280226, CVE-2021-35197) SECURITY: Prevent blocked users from purging
8716 == MediaWiki 1.35.2 ==
8718 This is a security and maintenance release of the MediaWiki 1.35 branch.
8720 MediaWiki 1.35.2 supports Composer 2.0. It is recommended to make sure your
8721 libraries are up to date on Composer 1.x, before running Composer 2.x.
8723 While normally running update.php isn't required for point releases,
8724 it is recommended to run it for 1.35.2 so that iwlinks.iwl_prefix is
8725 updated to take 32 characters.
8727 === Changes since MediaWiki 1.35.1 ===
8728 * (T270450) The confusingly-named User->isLoggedIn() method has been deprecated
8729 in favour of the method it wraps, User->isRegistered().
8730 * Upgrade pimple/pimple from 3.3.0 to 3.3.1 for PHP 8.0 support.
8731 * Upgrade seld/jsonlint from 1.7.1 to 1.8.3 for PHP 8.0 support.
8732 * Upgrade doctrine/dbal from 2.10.4 to 3.0.0 for PHP 8.0 support.
8733 * (T270734) Fix display of Special:Preferences URL in password reset email.
8734 * (T252774, T271441) resourceloader: Give SkinModule 'features' option an
8736 * (T271441) Unknown features shouldn't break style output.
8737 * (T264986) Make use of CURLMOPT_MAX_HOST_CONNECTIONS conditional on having
8739 * DefaultSettings.php: Update $wgPingback documentation.
8740 * Fix docs for LanguageConverter::translate.
8741 * (T272250) Don't rely on implicit string->int cast in comparison.
8742 * (T272327) Exif::isSlong: Cast input to float so PHP 8.0 abs() doesn't whine.
8743 * (T272328) UploadBase: Don't call MimeAnalyzer if mTempPath is null.
8744 * Remove nonfunctional default sampling for WANObjectCache metrics.
8745 * (T258851) Prevent service injection to LoadExtensionSchemaUpdates hook.
8746 * (T270852) Hooks: Map dash character to underscore when generating hook names.
8747 * (T271551, T270145) Fix fetching ipblock-exempt within
8748 BlockManager::getUserBlock.
8749 * PHPVersionCheck: The PHP Group only supports PHP >= 7.3.0.
8750 * (T248925) Set empty closures in DatabaseTest to fix PHP 8 tests.
8751 * (T34217) rdbms: Remove outdated MySQL 4 references and fix doc URLs.
8752 * (T248925) Special:Contributions reports negative namespace error on PHP 8.
8753 * (T248925) objectcache: Fix non-numeric string check in HashBagOStuff for
8755 * (T248925) Fix CacheTime::getCacheExpiry for PHP 8.
8756 * (T259685) Allow REST API POST handlers to opt out of mandatory SQLite locking.
8757 * (T91820, T259685) MWLBFactory: rename magic HTTP header for opting out of
8759 * (T272326) Fix DeprecationHelperTest on PHP 8.
8760 * Upgrade wikimedia/less.php from 3.0.0 to 3.1.0 for PHP 8.0 support.
8761 * (T236639) OutputPage: Make $wgDebugRedirects work again.
8762 * (T274648) registration: Allow reusing cached metadata between wikis.
8763 * CdnCacheUpdate: Send full URL instead of path to Curl for purge.
8764 * Upgrade monolog/monolog from 1.25.3 to 2.2.0 for PHP 8.0 support.
8765 * FileBackend: Do not use SOCKET_ENOENT on windows.
8766 * (T275441) ApiQueryUserInfo: Allow all uiprops to be requested at once.
8767 * (T275261) Escape wikitext in the title in invalid title error messages.
8768 * (T275242) Extend iwlinks.iwl_prefix to VARBINARY(32) on MySQL.
8769 * (T246594, T270228) PHPVersionCheck: Complain about known-bad versions above
8771 * (T275824) Upgrade wikimedia/composer-merge-plugin from 1.4.1 to 2.0.1 for
8772 Composer 2.0 support.
8773 * (T269293) Record all used options in metadata.
8774 * Allow usage of Composer 2.0 to install MediaWiki's dependencies.
8775 * (T259872) skins: Call headElement() after getTemplateData() in SkinMustache.
8776 * (T277009, CVE-2021-30158) SECURITY: Allow blocked users to access
8777 Special:ResetTokens.
8778 * (T272412) Add "Account data" section to user preferences.
8779 * (T268310) Add list of thumbnail urls to LocalFilePurgeThumbnails hook.
8780 * (T277520) registration: Allow specifying immovable namespaces in
8782 * (T275619) Maintenance::hasOption and Maintenance::getOption now behave as
8783 documented and are not altered by previous calls to these methods.
8784 * (T254688) Remove page inner join from subquery in SpecialWhatLinksHere.
8785 * (T122124) signup: added help message for security.
8786 * (T278014, CVE-2021-30154) SECURITY: Escape mediastatistics-header-* messages
8787 on Special:NewFiles.
8788 * (T278058, CVE-2021-30157) SECURITY: Escape rcfilters-filter-* messages on
8790 * (T277414) HTMLFormField: Use non namespaced class name rather than
8792 * (T268673) maintenance: Don't create SearchUpdate in rebuildtextindex.php
8793 for page_namespace below 0.
8794 * (T246594, T270228) Mark ParserOptionsTests skipped on PHP 7.4.0-7.4.8.
8795 * (T268230) Switch to new MediaWiki logo by Serhio Magpie.
8796 * (T271735) Expand config-pingback-help, link to privacy policy in
8798 * Fix documentation of user-global in $wgRateLimits.
8799 * BackupDumper: Add -o as shortcode for --output.
8800 * (T235554) Disable DEFER_SET_LENGTH_AND_FLUSH headers to avoid HTTP errors.
8801 * (T270713, CVE-2021-30152) SECURITY: Allow user to only apply protection they
8802 have right to do so via action=protect.
8803 * (T272386, CVE-2021-30159) SECURITY: Non-admin deleted enwiki page in fast
8805 * (T270988, CVE-2021-30155) SECURITY: ContentModelChange: Check that user can
8807 * (T279451, CVE-2021-30458) SECURITY: Parsoid comment fostering allows for
8808 inserting mostly arbitrary <meta> tags.
8810 == MediaWiki 1.35.1 ==
8812 This is a security and maintenance release of the MediaWiki 1.35 branch.
8814 While normally running update.php isn't required for point releases,
8815 it is recommended to run it for 1.35.1 so that sites.site_language is
8816 updated to take 35 characters.
8818 Watchlist Expiry is no longer considered experimental, but is off by default.
8819 To enable it, set $wgWatchlistExpiry = true; in your LocalSettings.php.
8821 === Changes since MediaWiki 1.35.0 ===
8822 * (T263929) purgeList.php Fix all-namespaces option to match one used in code.
8823 * (T248719) ParserCache::get - fix wfDeprecated call.
8824 * (T261430) WatchlistExpiryWidget: Move focus to expiry dropdown after hitting
8826 * Preload mediawiki.watchstar.widgets before api request.
8827 * (T261030) ApiEditPage: Show existing watchlist expiry if status is not being
8829 * (T264502) Fix PHP 8 compat with strcspn() $length parameter exceeding string.
8830 * (T248925) Remove final modifier on private function.
8831 * (T264683) Remove ipb_anon_only from ipb_address_unique index addition.
8832 * (T261415) Add days left messages to changes-lists' clock icons.
8833 * Fix order of wfDeprecated parameters in ExternalStoreDB::getSlave.
8834 * (T261260) Preload class used in HeaderCallback.
8835 * (T260868, T260009) Normalize WatchedItem expiry field.
8836 * (T264683) Remove doTable check from (Mysql|Sqlite)Updater::indexHasFields.
8837 * (T264534) ApiPageSet: Avoid infinite loop when merging redirects.
8838 * (T196906) Empty Monolog loggers are now real blackholes.
8839 * (T258649) WatchAction: avoid UPDATE when old and new watch period is
8841 * Parser: Adjust typehint to show that getTitle can return null.
8842 * (T263592) media: Fix case of FlashPixVersion in
8843 FormatMetadata::makeFormattedData().
8844 * (T265223) BaseTemplate: Guard against passing zero arg to array_merge().
8845 * (T264965) Fix base path handling for MessagePosterModule registration.
8846 * (T252183) Fix Database::getTempTableWrites for multi table DDLs.
8847 * (T182546) Fix switch/case indentation per mediawiki coding conventions.
8848 * Flip Yoda conditionals.
8849 * (T263213) Move SkinTemplate::getFooterLinks() to Skin.
8850 * build: Updating mediawiki/mediawiki-codesniffer to 33.0.0.
8851 * (T267105) Make ImageBuilder::checkMissingImage public.
8852 * Updating guzzlehttp/guzzle (6.5.4 => 6.5.5).
8853 * (T266681) Support new style hook registration on install and update.
8854 * (T266980) Fix unsetting of copyright icon in FooterIcons.
8855 * upload.js: Don't assume that warnings array will include 'code' key.
8856 * upload.js: Fix typo in upload API.
8857 * (T264333, T190988, T266903) Pass along ignorewarnings param to all
8858 individual chunks being uploaded.
8859 * (T267558) importTextFiles.php: Replace deprecated WikiRevision:setText().
8860 * (T266418) composer.json: add requirement for composer-plugin-api ^1.1.
8861 * (T261431) Add ARIA attributes to watchlink and its notification.
8862 * (T258877) Change invalid 'Content-Encoding: none' header.
8863 * Fix trailing ; in patch-sites-site_language-35.sql.
8864 * (T248852) wfAssembleUrl: Handle empty query field in URL bits.
8865 * (T268846) Updating wikimedia/testing-access-wrapper (1.0.0 => 2.0.0).
8866 * (T268887) migrateComments: Cast array keys back to string before passing
8868 * (T266619) Introduce new $wgThumbPath config.
8869 * (T269178) MemcachedClient: Cast Resource to integer.
8870 * (T263925) Use the old HookContainer to set up the post-reset services.
8871 * Change "site cache" to just "cache" in the right-purge message.
8872 * [UploadedFileStreamTest] Skip test with chmod.
8873 * (T269710) Updating composer/semver (1.5.1 => 1.7.2).
8874 * (T269710) Updating mediawiki/mediawiki-codesniffer (33.0.0 => 34.0.0).
8875 * (T260631, T260633), BotPassword::save() now returns a Status object for the
8876 result rather than a bool. The length of the bot password grants and
8877 restriction fields are now validated, and an error will be thrown if it
8878 would be truncated by the database.
8879 * (T265778) Fix English/*nix specific error messages in FSFileBackend.
8880 * (T267543) Split dropping of image.img_user_timestamp.
8881 * [FileTest] Do not assume /tmp exists on windows.
8882 * Clean up temp files correctly after unit tests.
8883 * Skip undo related phpunit tests when diff3 is missing.
8884 * (T269964) rdbms: Remove outer parentheses in insert query for Postgres.
8885 * (T263911) In MWExceptionHandler::report(), catch all throwables.
8886 * (T268894, CVE-2020-35474) SECURITY: Use Html::element in
8887 ChangeListSpecialPage for sanity.
8888 * (T268917) Use Xml::element in SpecialUserrights for sanity.
8889 * (T268938, CVE-2020-35478, CVE-2020-35479) SECURITY: Pass escaped html
8890 to LogFormatter::makePageLink for sanity.
8891 * (T268938) Fixed mixed escaping in Language::translateBlockExpiry.
8892 * (T263911) UserOptionsManager: don't differentiate anons caches.
8893 * (T261260) HeaderCallback: pre-cache request ID.
8894 * Parsoid updated to v0.12.1.
8895 * (T205908, CVE-2020-35477) SECURITY: Unable to change visibility of log
8896 entries when MediaWiki:Mainpage uses Special:MyLanguage.
8897 * (T120883, CVE-2020-35480) SECURITY: Divergent behavior for contributions
8898 and user pages of hidden users and missing users.
8899 * (T270145) Fix condition that can lead to using APCOND_BLOCKED in
8900 $wgAutopromote to cause an OOM in PHP.
8902 == MediaWiki 1.35.0 ==
8904 === Changes since MediaWiki 1.35.0-rc.3 ===
8905 * (T261258) Remove checks for ancient ImageMagick versions in BitmapHandler.
8906 * (T260232) Don't include null page ids in query list for category dumps.
8907 * (T260009) Check existing watchitem when saving action=watch.
8908 * (T259055) Correct success messages for action=watch.
8909 * mediawiki.page.ready: Simpler tablesorter/makeCollapsible call.
8910 * mediawiki.page.ready: Fix skin override config flags, wrong way round.
8911 * (T262175, T248512) Remove requirement for ApiWatchlistTrait to be in ApiBase.
8912 * (T259053, T260434) Watchlist: Fix updateWatchLink removing css class when
8914 * (T261901, T261476) mediawiki.notification: Don't close notif when clicking
8916 * (T251506) Sanitizer: Truncate IDs to a reasonable length.
8917 * (T259452) Parsoid updated to v0.12.0.
8918 * (T261970) watch.ajax: Add expiry support to watchpage.mw event.
8919 * (T262900) Fix failure of rebuildLocalisationCache.php due to ResourceLoader
8921 * (T263014) Hard deprecate File::userCan() with $user=null.
8922 * (T262547) Use localized success message after watching via action=watch.
8923 * (T201491) Fix typo 'Watchlst' in `apihelp-edit-param-watchlistexpiry`.
8924 * (T261081) Installer: consistently reset Language objects.
8925 * (T250449, T250450) Installer: consistently reset Language objects.
8926 * Explicitly wrap some XML calls in libxml_disable_entity_loader().
8927 * (T262934) Ensure dropdown label is always on its own line.
8928 * (T246855) resourceloader: Use a local HookRunner.
8929 * (T263604) Have findBadBlobs.php require Maintenance.php rather than
8931 * (T263606) Set fake time, to avoid flaky tests.
8932 * (T261325) Add FindMissingActors script.
8933 * (T262364) shell: Don't blacklist /run/firejail.
8934 * (T263655) NewPagesPager: Ignore nonexistent namespaces.
8935 * Update specialPageAliases and magicWords for Egyptian Arabic (arz).
8936 * (T261347) ParserOutput: don't throw on bad editsection.
8937 * (T232568, CVE-2020-25813) SpecialUserrights: If a viewer lacks `hideuser`,
8938 ignore hidden users.
8939 * (T255918, CVE-2020-25812) SECURITY: Unescaped message used in HTML on
8940 Special:Contributions.
8941 * (T256171, CVE-2020-25815) SECURITY: Unescaped message used in HTML within
8943 * (T258763, CVE-2020-17367, CVE-2020-17368) SECURITY: Prevent invoking
8944 firejail's --output functionality.
8945 * (T86738, CVE-2020-25814) SECURITY: mediawiki.jqueryMsg: Sanitize URLs and
8947 * (T115888, CVE-2020-25828) SECURITY: mediawiki.js: Escape HTML in
8948 mw.message( ... ).parse().
8949 * (T260485, CVE-2020-25869) SECURITY: ActorMigration: Load user from the correct
8951 * (T260485, CVE-2020-25869) SECURITY: ensure actor ID from correct wiki is used.
8952 * Add Finnish special page aliases.
8953 * Fix GuzzleHttpRequest request headers.
8954 * Fix description for pruneFileCache.php.
8955 * emptyUserGroup.php: handle more than 5000 users.
8956 * Make ApiSandbox copyable URL absolute.
8957 * (T261087) Add a link from a deleted page to that page's logs.
8959 == MediaWiki 1.35.0-rc.3 ==
8961 === Changes since MediaWiki 1.35.0-rc.2 ===
8962 * (T258662) mediawiki.visibleTimeout: Update the nextVisibleTimeoutId value.
8963 * Ensure Parsoid doesn't throw when <ref> is used w/o Cite installed.
8964 * Remove maintenance/createCommonPasswordCdb.php.
8965 * (T260468) Increase "sites.site_global_key" to varbinary(64).
8966 * (T183759) Fix shell edge-cases in Windows.
8967 * (T257879) Drop PHP 7.2 support; require 7.3.19.
8968 * (T251661, CVE-2020-25827) SECURITY: User::pingLimiter: add user-global
8970 * (T246991) User: enforce pingLimiter() expiry time.
8971 * (T256831) Rest: Handle Uri constructor exception.
8972 * (T259094) Fix RequestFromGlobalsTest failing in Travis CI.
8973 * (T256831, T261344) Rest: Use try/catch to handle URIs with embedded colon.
8975 == MediaWiki 1.35.0-rc.2 ==
8977 === Changes since MediaWiki 1.35.0-rc.1 ===
8978 * (T259693) uuid: Fix filenames on Windows.
8979 * Remove Gruntfile.js and package-lock.json from the tarball.
8980 * firejail: Strengthen by copying from Wikimedia's profile.
8981 * (T260059) ResourceLoaderOOUIImageModule: loadOOUIDefinition() may return
8983 * (T30162, T245387) The installer supports using a Postgres server running
8984 on a custom port other than 5432.
8985 * (T260201) Support private wikis in Parsoid zero configuration mode.
8986 * Fix bad use of `|=` PHP bit operation where `= … ||` bool is intended.
8987 * (T259212) SpecialBlock: Show error if a block could not be inserted or found.
8988 * (T255842) UserOptionsManager: fix options reset.
8989 * (T258649) WatchAction: avoid unnecessary UPDATEs when expiry is unchanged.
8990 * (T250851) Allow skins to override mediawiki.page.ready initialisation.
8991 * (T250851) mediawiki.page.ready: Allow skins to disable search lazy load.
8992 * (T253135, T255632) Update language in watchlist expiry.
8993 * Use IPset in MWRestrictions::checkIP.
8994 * (T259564) Fix race condition on edit page.
8995 * (T260759) Hide watchlist expiry label in edit form.
8996 * mime: Fix docs of MIME_EXTENSIONS, they're arrays, not space-separated.
8997 * (T260031) Add application/font-sfnt to MimeMap for ttf files.
8998 * (T259379) WatchedItemStore: Cache single WatchedItems with preexisting expiry.
8999 * Add a maintenance script to create bot passwords.
9000 * (T201269) Add Traditional Chinese zh-hant as fallback for Amis (ami).
9001 * Improve wfParseUrl docs.
9002 * (T251038) Add multi index fields in ImageListPager for unique paginate.
9003 * (T259916) Guard against 'Widget not found' error.
9005 == MediaWiki 1.35.0-rc.1 ==
9007 === Changes since MediaWiki 1.35.0-rc.0 ===
9008 * (T252136) Fix RecentChanges watchlist filters when WatchlistExpiry is off.
9009 * (T258662) Update time period for watchlist expiry pop-up.
9010 * (T258443) Fix expiry dropdown not getting disabled on edit page.
9011 * (T259398) Add license information for promise-polyfill.
9012 * Remove executable bit from scripts without shebang.
9013 * (T256526) Fix bold of watched items on Special:RecentChangesLinked.
9014 * (T259060) Edit page expiry dropdown should keep state after
9016 * (T259009) Translate expiry period in pop-up message for watchlist expiry.
9017 * (T258310) Add watchlist clock icon to RecentChanges.
9018 * (T259362) Permit temporary table writes on replica DB connections.
9019 * (T250214) Add UI support in Special:EditWatchlist for watchlist expiry.
9020 * (T72470) Disable wgLegacyJavaScriptGlobals by default.
9021 * (T130906) Add Edge to MediaWiki:Clearyourcache.
9022 * (T257279) Add mediawiki.ui Less variable deprecation note.
9023 * (T249521) Fixed reassignEdits.php to work with anonymous users.
9024 * (T259448) Fix Circular dependency when creating service in
9025 DBLoadBalancerFactory.
9026 * (T257259) Default to using watchlist expiry of old page when moving pages.
9028 == MediaWiki 1.35.0-rc.0 ==
9030 == Upgrading notes for 1.35 ==
9031 1.35 requires PHP 7.3.19 or above (up from 7.2.9). (T257879)
9033 1.35 has several database changes since 1.34, and will not work without schema
9034 updates. Note that due to changes to some very large tables like the revision
9035 table, the schema update may take quite long (minutes on a medium sized site,
9036 many hours on a large site).
9038 Don't forget to always back up your database before upgrading!
9040 MediaWiki 1.35 is the next LTS after 1.31, and will be supported for around 3
9043 MediaWiki has a lot of both soft and hard deprecations, and code removed. As
9044 always, make sure your versions of extensions match the MediaWiki version,
9045 and updates may be required to any custom extensions.
9047 See the file UPGRADE for more detailed upgrade instructions, including
9048 important information when upgrading from versions prior to 1.11.
9050 Some specific notes for MediaWiki 1.35 upgrades are below:
9051 * (T259685) When using SQLite as the database backend for MediaWiki,
9052 Zeroconf (zero-configuration) VisualEditor/Parsoid only works with
9053 MediaWiki 1.35.2 and above. It is still recommended to use
9054 MySQL/MariaDB rather than SQLite when using VisualEditor.
9056 For notes on 1.34.x and older releases, see HISTORY.
9058 === Configuration changes for system administrators in 1.35 ===
9060 * (T72470) $wgLegacyJavaScriptGlobals is now false by default. This feature
9061 will be completely removed in a later MediaWiki release.
9063 ==== New configuration ====
9064 * $wgDiffEngine — This can be used to specify the difference engine to use,
9065 rather than MediaWiki choosing the first of $wgExternalDiffEngine, wikidiff2,
9066 or php that is usable.
9067 * $wgSearchMatchRedirectPreference — This configuration setting controls whether
9068 users can set a new preference, search-match-redirect, which decides if search
9069 should redirect them to exact matches is available. By default, this is set to
9070 false, which maintains the previous behaviour without preference bloat. Change
9071 your site's default by setting $wgDefaultUserOptions['search-match-redirect'].
9072 * $wgPoolCounterConf['SpecialContributions'] — Per-user concurrency in the use
9073 of SpecialContributions can now be limited by setting this appropriately.
9074 * $wgPasswordPolicy — PasswordCannotBeSubstringInUsername is a new password
9075 policy check. Similar to the existing PasswordCannotMatchUsername check, this
9076 check ensures that a user's (case-insensitive) password cannot be a part of
9077 their username. e.g. password = MyPass, username = ThisUsersPasswordIsMyPass.
9078 * $wgLogos — This new configuration setting combines the now-deprecated $wgLogo
9079 and $wgLogoHD settings into a single, associative array. It provides support
9080 for a new key, 'wordmark', for setting a horizontal wordmark to show next to
9081 the graphical logo. To do this, set 'wordmark' to an array with 'src' set to
9082 the path of the wordmark image, and 'width' and 'height' for its dimensions
9083 in pixels. $wgLogos inherits the existing support provided by its predecessor
9084 settings: '1x' mapping to the path of the logo as a 135x135px raster image
9085 (equivalent to $wgLogo), and '1.5x', '2x', and 'svg' operating as before for
9086 $wgLogoHD. If $wgLogos is unset, $wgLogo and $wgLogoHD values are read for
9087 temporary backwards compatibility. (T232140)
9088 * $wgWatchlistExpiry — (EXPERIMENTAL) This enables the new watchlist expiry
9089 feature. The database table (watchlist_expiry) for this is created regardless
9090 of this setting, but all other aspects of the expiry feature are controlled
9091 by it. Enabling in production is discouraged for the time being. A future
9092 MediaWiki 1.35 release will advertise this feature once it is stable.
9093 * $wgWatchlistPurgeRate — This sets the chance of expired watchlist items being
9094 purged on each page edit. Only has effect if $wgWatchlistExpiry is true.
9095 * $wgWatchlistExpiryMaxDuration — This is the maximum definite relative duration
9096 for watchlist expiries. Only has effect if $wgWatchlistExpiry is true.
9097 * $wgImgAuthPath – This can be used to override the path prefix used when
9098 handling img_auth.php requests. (T235357)
9099 * $wgAllowedCorsHeaders — This is a list of headers which can be used in a
9100 cross-site API request.
9101 * $wgHTTPMaxTimeout and $wgHTTPMaxConnectTimeout — These allow site
9102 administrators to limit the timeouts used by the HTTP client libraries.
9103 This only affects callers using HttpRequestFactory and the deprecated
9104 wrappers in the Http class.
9105 * $wgCdnMaxageStale — This controls the Cache-Control s-maxage header for page
9106 views when PoolCounter lock contention indicates that a stale cache entry
9108 * $wgForceHTTPS — This makes the HTTP to HTTPS redirect be unconditional and
9109 suppresses various hacks needed to support mixed HTTP/HTTPS wikis. We
9110 recommend this be set to true on pure HTTPS wikis.
9111 * $wgCookieSameSite — This setting allows login cookies to be sent with
9112 SameSite=None. This is required for cross-site CentralAuth auto-login after
9114 * $wgUseSameSiteLegacyCookies — This adds a compatibility hack to
9115 SameSite=None cookies for browsers which implemented an incompatible draft
9116 version of the specification.
9118 ==== Changed configuration ====
9119 * $wgResourceLoaderMaxage (T235314) — This configuration array controls the
9120 max-age for HTTP caching through the Cache-Control header. It has uses the
9121 "versioned" key for urls that do have a version parameter, and the
9122 "unversioned" key for urls without a version parameter. The sub keys for
9123 "client" and "server" are no longer supported in MediaWiki 1.35.
9124 * $wgEnableOpenSearchSuggest — This boolean variable is deprecated and no longer
9125 used. The OpenSearch API is now always enabled.
9126 * $wgAuthManagerConfig and $wgAuthManagerAutoConfig — These can now use the
9127 'services' option in provider specifications.
9128 * $wgVirtualRestConfig['modules']['parsoid'] —
9129 - The defaults have been updated. If you were relying on the default values,
9130 you may need to update your configuration.
9131 - The 'URL' parameter, previously allowed for backwards-compatibility, has
9132 been deprecated. Use 'url' instead.
9133 * $wgXmlDumpSchemaVersion — Default is now set to XML_DUMP_SCHEMA_VERSION_11, so
9134 dumps use the new dump format by default. Consumers of XML dumps should not
9135 be affected if they ignore any unknown tags they encounter. Also, the format
9136 is effectively unchanged for revisions that only contain the main slot. The
9137 --schema-version option can be used with the dumpBackup.php script to set the
9138 dump format. (T238921)
9139 * $wgParserConf — This configuration is now deprecated. It has been
9140 effectively constant since 2008, and is ignored by core code.
9141 Configure the ParserFactory service in order to customize the Parser used.
9142 * $wgAutoloadAttemptLowercase — This has been deprecated, and the default value
9144 * $wgAllowImageMoving — This configuration setting is now deprecated. Instead,
9145 use $wgGroupPermissions; e.g., to revoke sysops' ability to move images use
9146 $wgGroupPermissions['sysop']['movefile'] = false.
9147 * $wgAllowImageTag — This configuration is now deprecated; future parsers will
9148 not support direct use of the HTML <img> tag in wikitext.
9149 * $wgUseTwoButtonsSearchForm — This has been deprecated. If you maintain a skin
9150 that relies on this and wishes to let system administrators change it, you
9151 should convert it to a config variable specific to your skin. If you're using
9152 it to configure your wiki, you should check individual skins to see whether
9153 they have local skin config for the feature and use that.
9154 * $wgPasswordPolicy — The deprecated policy 'PasswordCannotBePopular' has been
9155 removed. Use PasswordNotInCommonList instead which covers many more passwords.
9156 * Backwards compatibility for using an associative array
9157 (e.g. [ '127.0.0.1' => 'bad-ip' ]) for $wgProxyList has been removed. This
9158 was deprecated since 1.30. Please convert these arrays to indexed/sequential
9159 ones (e.g. [ '127.0.0.1' ]).
9160 * $wgShellRestrictionMethod — This now defaults to 'autodetect', which will
9161 enable sandboxing for shell commands using firejail, if it's installed. To
9162 disable restrictions, set it to false.
9163 * $wgLegacyJavaScriptGlobals – This deprecated setting now default to false,
9164 instead of true, ahead of its planned removal.
9166 ==== Removed configuration ====
9167 * $wgSysopEmailBans — This setting, deprecated in 1.34, was removed. To let
9168 sysops block email access, use $wgGroupPermissions['sysop']['blockemail'].
9169 * $wgDBWindowsAuthentication — This setting had no effect anymore after support
9170 for SQL Server was removed in 1.34. (T230418)
9171 * $wgProfileOnly — This setting, deprecated in 1.23, was removed. The profiler
9172 output should instead be configured via $wgProfiler['output'].
9173 * $wgProfileLimit — This setting, deprecated in 1.25, was removed.
9174 Set $wgProfiler['threshold'] instead.
9175 * $wgDebugTimestamps — This setting was removed. It affected the text output
9176 produced via $wgDebugComments, if enabled.
9177 * $wgSkipSkin — This setting, deprecated in 1.23, was removed. To disable a
9178 skin from being shown, use $wgSkipSkins.
9179 * $wgUseSquid, $wgSquidServers, $wgSquidServersNoPurge, and $wgSquidMaxage —
9180 These, deprecated in 1.34, have been removed. Use $wgUseCdn, $wgCdnServers,
9181 $wgCdnServersNoPurge, or $wgCdnMaxAge instead.
9182 * $wgDisableCounters — This, deprecated in 1.25, was removed. The feature that
9183 it controlled was already removed in 1.26, but the variable remained existent
9184 with a value of `false` for backward-compatibility.
9185 * $wgMaxGeneratedPPNodeCount — This setting was removed. It only affected
9186 Preprocessor_DOM, which was deprecated in 1.34 and removed in this release.
9187 * $wgFixArabicUnicode and $wgFixMalayalamUnicode — These, deprecated in 1.33,
9188 were removed. The fixes are now always enabled for their respective languages.
9189 * $wgAllowTitlesInSVG — This, unused and deprecated since 1.34, was removed.
9190 * $wgEnablePartialBlocks — This setting, deprecated when it was added in 1.33,
9191 was removed. Partial blocks are now always enabled.
9192 * $wgLocalInterwiki — This setting, deprecated in 1.23, has been removed.
9193 * $wgContentHandlerUseDB — This setting, deprecated in 1.34, has been removed.
9194 * $wgMultiContentRevisionSchemaMigrationStage — This setting must no longer
9195 be set locally. If the migration stage was set to anything other than
9196 SCHEMA_COMPAT_NEW locally, update.php must be run after removing the setting.
9197 Usage of the setting in code is deprecated. The setting will be removed
9199 * $wgEnableRestAPI — This setting is no longer obeyed by MediaWiki core, and
9200 should not be set set locally. Usage of the setting in code is deprecated; it
9201 is now set true by default. The setting will be removed completely in 1.36.
9202 * $wgObjectCaches — The 'slaveOnly' option for SqlBagOStuff, deprecated in 1.34,
9203 was removed. Use 'replicaOnly' instead.
9205 === New user-facing features in 1.35 ===
9206 * (T204618) Whitelisted the aria-hidden HTML attribute for all elements in
9208 * (T13456) Special:EditPage, Special:PageHistory, Special:PageInfo, and
9209 Special:Purge have been created as shortcuts for each action.
9210 Special:EditPage/Foo redirects to title=foo&action=edit, with PageHistory,
9211 PageInfo, and Purge corresponding to action= history, info, and purge
9212 respectively. When linked to, its subpage is used as the target. Otherwise,
9213 it displays a basic interface to allow the end user to specify the target
9215 * (T139221) The generated table of contents is now a navigation landmark role
9216 for assistive technologies.
9217 * (T245931) interwiki map API doesn't report foreign language if
9218 $wgInterwikiMagic=false
9219 * The form at ?action=watch has a new dropdown list to support expiry dates for
9220 watchlist items (if $wgWatchlistExpiry is true).
9222 === New developer features in 1.35 ===
9223 * A Docker based local development develpoment environment configuration is
9224 included (T238224) and DEVELOPERS.md has been added with usage documentation
9225 and links to further help.
9226 * If CSP is enabled, extensions can now add additional sources using the
9227 ContentSecurityPolicy::addDefaultSource, ::addStyleSrc and ::addScriptSrc
9228 methods (e.g. $context->getOutput()->getCSP()->addDefaultSrc( 'example.com' ))
9229 * Extensions can now specify classes and namespaces to be autoloaded by the
9230 test autoloader, by setting the "TestAutoloadNamespaces" and
9231 "TestAutoloadClasses" properties in extension.json. (T196090)
9232 * (T250977) extension.json now allows "SearchMappings" which maps the canonical
9233 name of the search engine (used in wgSearchType and wgSearchTypeAlternatives)
9234 to a specification using the ObjectFactory specification. This allows
9235 extensions to register Search Engines using namespaced classes.
9236 * Added getters for OutputPage's robot, index and follow policies;
9237 getRobotPolicy() returns the entire policy as a string in the form
9238 <index policy>,<follow policy> while getIndexPolicy() and getFollowPolicy()
9239 return their respective policies as a string.
9240 * The ResourceLoaderSiteModulePages and ResourceLoaderSiteStylesModulePages
9241 hooks were added to allow changing which wiki pages these modules contain.
9242 * The SkinFactory now allows skins to be specified as an ObjectFactory spec,
9243 allowing the construction of skins with services injected.
9244 * ContentHandlerFactory for most ContentHandler static methods. It has been
9245 added to the constructors for many classes to improve SOLID / GRASP.
9246 * FileDeleteForm's constructor now accepts a user as the second parameter.
9247 Support for not passing a user has also been hard-deprecated and will be
9249 * The ParserPreSaveTransformComplete hook was added.
9250 * The ParserBeforePreprocess hook was added.
9251 * The ResourceLoaderSkinModule class now has a "legacy" feature that loads
9252 the stylesheets previously part of the "mediawiki.legacy.shared" and
9253 "mediawiki.legacy.commonPrint" module.
9254 Those modules are now deprecated and no longer loaded by skins.
9255 For skins needing to retain these styles, you will need to load these
9256 styles via a module using the ResourceLoaderSkinModule class.
9257 See Vector and Monobook for examples.
9258 * ParserOutput now has methods addExtraCSPStyleSrc, addExtraCSPDefaultSrc
9259 addExtraCSPScriptSrc for parser tags/functions to be able to add sources
9260 to the Content Security Policy.
9261 * The HtmlCacheUpdater service was added to unify the logic of purging CDN cache
9262 and HTML file cache to simplify callers and make them more consistent.
9263 * The MultiHttpClient code will fallover to non-curl if curl_multi* is blocked.
9264 * Preferences which use HTMLTitlesMultiselectField can make use of
9265 MultiTitleFilter class for saving title text to/from article IDs in user
9267 * OutputPage::addHtmlClasses() was added to allow injecting CSS classes on
9268 to the <html> element on page load.
9269 * The SkinAddFooterLinks hook is added to allow extensions to add items to skin
9270 footers. Previously this had to be done via SkinTemplateOutputPageBeforeExec.
9271 Doing so using that hook is now hard deprecated.
9272 * A new BlockPermissionChecker service was introduced for checking
9273 block-related permissions.
9274 * The support of 'database' type of extensions has been added to allow 3d party
9275 databases like Percona be used as storage. See T226857, T253248.
9276 * Three new return parameters have been added to the
9277 EditPageGetCheckboxesDefinition hook. Handlers of this hook are no longer
9278 restricted to defining checkboxes. See the documentation of
9279 EditPage::getCheckboxesDefinition() for more details.
9280 * New flag File::RENDER_TMP was added in order to allow
9281 File::generateAndSaveThumb and File::trasform to render a thumbnail without
9282 saving it to the storage.
9284 === External library changes in 1.35 ===
9286 ==== New external libraries ====
9287 * Added wikimedia/ip-utils 1.0.0.
9288 * Added wikimedia/parsoid 0.12.3.
9289 * Added wikimedia/services 2.0.1.
9290 * Added taylorhakes/promise-polyfill v8.1.3.
9291 * Added vuejs v2.6.11.
9292 * Added vuex v3.1.3.
9293 * Added symfony/symfony/polyfill-php80 1.25.0.
9295 ===== New development-only external libraries =====
9296 * Added doctrine/dbal 3.1.5.
9297 * Added doctrine/sql-formatter 1.1.0.
9298 * Added pimple/pimple 3.3.1.
9300 ==== Changed external libraries ====
9301 * pear/mail_mime was upgraded from 1.10.2 to 1.10.11.
9302 * wikimedia/less.php was upgraded from 1.8.0 to 3.1.0.
9303 * Updated oojs from 3.0.0 to 5.0.0.
9304 * Updated OOUI from 0.35.1 to 0.39.3.
9305 * zordius/lightncandy was upgraded from 0.23.0 to 1.2.5.
9306 * Updated jQuery from v3.3.1 to v3.6.0.
9307 * Updated jQuery Migrate from v3.0.1 to v3.3.2.
9308 * Updated wikimedia/assert from 0.2.2 to 0.5.0.
9309 * Updated pear/net_smtp from 1.8.1 from to 1.9.1.
9310 * Updated psr/log from 1.0.2 to 1.1.3.
9311 * Updated jquery.i18n from 1.0.5 to 1.0.7.
9312 * Updated guzzlehttp/guzzle from 6.3.3 to 6.5.8.
9313 * Updated wikimedia/xmp-reader from 0.6.3 to 0.8.5.
9314 Fixes error log spam with too-large XMP data, and adds support for GPano tags.
9315 * Updated wikimedia/base-convert from v2.0.0 to v2.0.1.
9316 * Updated composer/semver from 1.5.0 to 1.7.2.
9317 * Updated wikimedia/remex-html from 2.1.0 to 2.2.0.
9318 * Replaced wikimedia/password-blacklist 0.1.4 with wikimedia/common-passwords
9320 * Updated wikimedia/composer-merge-plugin from 1.4.1 to 2.0.1.
9321 * Updated wikimedia/html-formatter from 1.0.2 to 2.0.1.
9322 * Updated wikimedia/object-factory from 2.1.0 to 2.2.0.
9324 ===== Changed development-only external libraries =====
9325 * Updated symfony/yaml from 3.4.28 to 5.0.5.
9326 * Updated nikic/php-parser from 3.1.5 to 4.4.0.
9327 * Updated php-parallel-lint/php-console-highlighter from v0.3.2 to v0.5.
9328 * Updated php-parallel-lint/php-parallel-lint from v0.9.2 to v1.2.0.
9329 * Updated psy/psysh from 0.9.9 to 0.10.4.
9330 * Updated monolog/monolog from 1.24.0 to 2.2.0.
9331 * Upgrade mediawiki-codesniffer from 28.0.0 to 38.0.0.
9332 * Updated composer/spdx-licenses from 1.5.1 to 1.5.3.
9333 * Updated monolog/monolog from 1.25.2 to 1.25.3.
9334 * Updated qunit from 2.9.1 to 2.10.0.
9335 * Updating wikimedia/testing-access-wrapper from 1.0.0 to 2.0.0.
9336 * Updated seld/jsonlint from 1.7.1 to 1.8.3.
9338 ==== Removed external libraries ====
9339 * phpunit/php-invoker (dev-only).
9340 Removing this unbreaks development on Windows systems, in exchange for losing
9341 time limits in running unit tests.
9342 * The jquery.getAttrs module was removed.
9344 === Action API changes in 1.35 ===
9345 * The 'suggest' parameter of action=opensearch has been deprecated.
9346 The API behaves the same with and without this parameter.
9347 It was previously used by $wgEnableOpenSearchSuggest to partially
9348 disable the API if set to false. Specifically, it would deny internal
9349 frontend requests carrying this parameter, whilst accepting other requests.
9350 * Integer-type parameters are now validated for syntax rather than being
9351 interpreted in surprising ways. For example, the following will now return a
9353 - "1.9" (formerly interpreted as "1")
9354 - " 1" (formerly interpreted as "1")
9355 - "1e1" (formerly interpreted as "1" or "10", depending on the PHP version)
9356 - "1foobar" (formerly interpreted as "1")
9357 - "foobar" (formerly intepreted as "0")
9358 parameters. Ranges should be assumed to be enforced.
9359 * Many user-type parameters now accept a user ID, formatted like "#12345".
9360 * The 'assert' parameter used by all API modules now supports the value 'anon'.
9361 When specified, the API will return the 'assertanonfailed' error if the user
9363 * action=edit now supports the 'baserevid' parameter for edit conflict
9364 detection, as an alternative to 'basetimestamp'. Note that self-conflicts
9365 will continue to be ignored if 'basetimestamp' is set, but not if only
9367 * A new module was added to change the content model of existing pages.
9368 Use action=changecontentmodel. Unlike Special:ChangeContentModel, the api
9369 module does not work for pages that do not already exist.
9370 * If $wgWatchlistExpiry is true, the following API changes are made:
9371 - action=watch accepts a new 'expiry' parameter analagous to the expiry
9372 accepted by action=userrights, action=block, etc., except it must be no
9373 greater than $wgWatchlistExpiryMaxDuration, or an infinity value.
9374 - action=query&list=watchlistraw returns pages' watchlist expiry dates.
9375 * (T249526) action=login will now return Failed rather than NeedToken on
9378 === Action API internal changes in 1.35 ===
9379 * The Action API now uses the Wikimedia\ParamValidator library for parameter
9380 validation, which brings some new features and changes. For the most part
9381 existing module code should work as it did before, but see subsequent notes
9383 - The values for all ApiBase PARAM_* constants have changed. Code should have
9384 been using the constants rather than hard-coding the values.
9385 - Several ApiBase PARAM_* constants have been deprecated, see the in-class
9386 documentation for details. Use the equivalent ParamValidator constants
9388 - The value returned for 'upload'-type parameters has changed from
9389 WebRequestUpload to Psr\Http\Message\UploadedFileInterface.
9390 * Validation of 'user'-type parameters is more flexible. PARAM constants exist
9391 to specify the type of "user" allowed and to request UserIdentity objects
9392 rather than name strings. The default is to accept all types (name, IP,
9393 range, and interwiki) that were formerly accepted.
9394 * Maximum limits are no longer ignored in "internal mode".
9395 * The $paramName to ApiBase::handleParamNormalization() should now include the
9397 * (T245931) meta=siteinfo&siprop=interwikimap no longer reports language or
9398 extralanglink when $wgInterwikiMagic is false.
9400 === Languages updated in 1.35 ===
9401 MediaWiki supports over 350 languages. Many localisations are updated regularly.
9402 Below only new and removed languages are listed, as well as changes to languages
9403 because of Phabricator reports.
9405 * The default targets for the ISBN search from Special:BookSources in English
9406 have been updated for better international suppport. They will now be
9407 BetterWorldBooks.com, OpenLibrary.org and Worldcat.org.
9408 * (T237672) Changed the Moroccan Arabic language (ary) to the Arabic script.
9409 * (T201269) Added language support for Amis (ami).
9410 * (T248299) Added language support for Inari Sami (smn).
9411 * (T251369) Added language support for Ladin (lld).
9412 * (T251369) Added language support for Seediq (trv), also known as Taroko.
9413 * (T254854) Added language support for Southern Altay (alt).
9415 === Breaking changes in 1.35 ===
9416 * MediaWiki no longer supports PHP 7.2; use PHP 7.3.19+ (T228346, T257879).
9417 * ResourceLoader::getLessVars(), deprecated in 1.32, was removed.
9418 Use ResourceLoaderModule::getLessVars() instead.
9419 * The jquery.tabIndex module, deprecated in 1.34, has been removed.
9420 * The mediawiki.RegExp module alias, deprecated in 1.34, was removed.
9421 Use the mediawiki.util module instead.
9422 * The easy-deflate.inflate module, unused since 1.32, was removed.
9423 * The easy-deflate.deflate module was removed. Use the mediawiki.deflate
9425 * The mediawiki.notify module was removed. The mw.notify() shortcut is now
9426 available by default, without any dependency.
9427 * (T219604) The "jquery.ui.*" and "jquery.effects.*" module aliases,
9428 deprecated in 1.34, have been removed. Use "jquery.ui" instead.
9429 * (T235457) The "user.tokens" module has been removed.
9430 Use "user.options" instead.
9431 * (T251855) The mw.Map#exists method in JavaScript no longer supports checking
9432 multiple keys. This affects mw.config.exists() and mw.user.tokens.exists().
9433 * The internal variable $constructorOptions for the Parser & SpecialPageFactory,
9434 exposed only for integration purposes, are now each replaced by a const called
9435 CONSTRUCTOR_OPTIONS. This was a breaking change made without deprecation.
9436 * ObjectCache::getWANInstance, deprecated in 1.34, was removed.
9437 Use MediaWikiServices::getMainWANObjectCache instead.
9438 * ObjectCache::newWANCacheFromParams, deprecated in 1.34, was removed.
9439 Construct WANObjectCache directly instead, or use MediaWikiServices.
9440 * (T231366) The ProfilerOutputDb class and profileinfo.php entry point,
9441 deprecated in 1.34, was removed.
9442 * SiteConfiguration->localVHosts, deprecated in 1.25, was removed.
9443 Use $wgLocalVirtualHosts instead.
9444 * The $wgContLanguageCode read-only variable was removed.
9445 It has been a non-configurable copy of $wgLanguageCode since MW 1.8 (2006).
9446 Use $wgLanguageCode directly instead.
9447 * ApiQueryUserInfo::getBlockInfo, deprecated in 1.34, was removed. Use
9448 ApiBlockInfoTrait::getBlockDetails instead.
9449 * Password::equals(), deprecated in 1.33, was removed. Use Password::verify().
9450 * QuickTemplate::setRef(), deprecated in 1.31, was removed. Use set().
9451 * The mediawiki.ui.text module, deprecated in 1.28 and unused, was removed.
9452 * AbstractBlock::mReason, deprecated in 1.34, is no longer public.
9453 * The GetBlockedStatus and UserIsHidden, deprecated in 1.34, has been removed.
9454 Instead, use the GetUserBlock hook.
9455 * As part of work to replace the Parser, a large number of breaking changes have
9456 been made, principally in related methods and properties being removed or made
9458 - disableCache(), deprecated in 1.28.
9459 - serializeHalfParsedText() and the helpers unserializeHalfParsedText(),
9460 isValidHalfParsedText(), and StripState::getSubState() and
9461 StripState::merge(), all deprecated in 1.31. The helper functions
9462 LinkHolderArray::mergeForeign() and LinkHolderArray::getSubArray()
9464 - getConverterLanguage(), deprecated in 1.32. Use getTargetLanguage() instead.
9465 - A large set of methods exposed only for historical reasons, deprecated in
9466 1.34, have now been removed or made private:
9467 - areSubpagesAllowed()
9471 - doDoubleUnderscore()
9476 - getVariableValue()
9477 - initialiseVariables()
9478 - makeKnownLinkHolder()
9479 - maybeDoSubpageLink()
9480 - parseLinkParameter()
9481 - replaceExternalLinks()
9482 - replaceInternalLinks()
9483 - replaceInternalLinks2()
9484 - replaceLinkHoldersText().
9490 - incrementIncludeSize(), setTransparentTagHook(), replaceTransparentTags(),
9491 and $mTransparentTagHooks have been removed without deprecation.
9492 - The following constants have been made private without deprecation:
9496 - The following properties have been removed without deprecation:
9497 - ::$mDefaultStripList
9500 - The following properties have been made private without deprecation:
9501 - ::$mFunctionSynonyms
9502 - ::$mFunctionTagHooks
9506 - ::$mImageParamsMagicArray
9509 - ::$mConf (deprecated in 1.34)
9510 - ::$mExtLinkBracketedRegex
9516 - ::$mForceTocPosition
9519 - ::$mLangLinkLanguages
9520 - ::$currentRevisionCache
9523 - Parser::getTitle() will now throw a TypeError if $mTitle is uninitialized.
9524 This use pattern was deprecated in 1.34.
9525 - ContentHandler::makeParserOptions(), deprecated in 1.32, was removed. Use
9526 WikiPage::makeParserOptions() or ParserOptions::newCanonical() instead.
9527 - The ParserAfterUnstrip hook, believed to be unused, was removed without
9529 - Preprocessor_DOM and related classes, deprecated in 1.34, have been removed.
9530 Consequently, the related ParserOptions::getMaxGeneratedPPNodeCount() and
9531 ::setMaxGeneratedPPNodeCount() have been removed without deprecation.
9532 - The support for the old signature for ParserFactory::__construct, which was
9533 deprecated in 1.34, has been removed.
9534 - Parser::getDefaultPreprocessorClass(), deprecated in 1.34, has been removed.
9535 * MediaWikiTestCase::prepareServices(), deprecated in 1.32, has been removed
9536 * The method ContentHandler::getSlotDiffRendererInternal is replaced with
9537 ContentHandler::getSlotDiffRendererWithOptions. This breaks consumers which
9538 call parent::getSlotDiffRendererInternal (no instances of which are known).
9539 * TextContent::getHighlightHtml, deprecated since 1.24, has been removed. Use
9540 TextContent::getHtml instead.
9541 * ExtensionRegistry::load(), deprecated in 1.34, was removed. Instead, use
9542 ExtensionRegistry::queue().
9543 * MWMessagePack class, deprecated in 1.34, was removed.
9544 * The cdb.php maintenance script was removed. Use the 'cdb' command from the
9545 wikimedia/cdb library instead.
9546 * User::addNewUserLogEntryAutoCreate, deprecated in 1.27, was removed.
9547 * FileBasedSiteLookup class, deprecated in 1.33, was removed.
9548 * The wfGlobalCacheKey global function, deprecated in 1.30, was removed.
9549 * The APCBagOStuff class was removed. MediaWiki requires PHP 7.2+ (support
9550 for HHVM was dropped) and these versions of PHP only support apcu. The default
9551 "apc" entry in $wgObjectCaches now refers to APCUBagOStuff.
9552 * Database::bufferResults(), deprecated in 1.34, has been removed.
9553 * CannotReplaceActiveServiceException, ContainerDisabledException,
9554 DestructibleService, NoSuchServiceException, SalvageableService,
9555 ServiceAlreadyDefinedException, ServiceContainer and ServiceDisabledException
9556 in the global namespace, deprecated in 1.33, were removed. Use the classes in
9557 the MediaWiki\\Services namespace instead.
9558 * The following methods in the Interwiki class were removed: ::fetch(),
9559 ::isValidInterwiki(), ::invalidateCache(), and ::getAllPrefixes().
9560 * The UsersMultiselectWidget config 'allowArbitrary' is now false by default. To
9561 accept arbitrary entries, pass in true for this config.
9562 * OutputPage::parse() and OutputPage::parseInline(), deprecated in 1.32, have
9563 been removed. Use ::parseAsContent() or ::parseAsInterface(), as
9565 * WikiPage::selectFields, deprecated in 1.31, was removed. Use ::getQueryInfo.
9566 * The remaining static methods for MagicWord, deprecated in 1.32, were removed.
9567 These were MagicWord::get(), ::getSubstIDs(), ::getDoubleUnderscoreArray(),
9568 ::getVariableIDs(), and ::getCacheTTL(). Instead, use MagicWordFactory (via
9570 * ApiBase::checkTitleUserPermissions no longer accepts a User as the third
9571 parameter. Passing a user was deprecated in 1.33.
9572 * Sanitizer::setupAttributeWhitelist() and Sanitizer::attributeWhitelist(),
9573 deprecated in 1.34, have been removed. They should not have been public.
9574 * Passing a sequential array as the second parameter to
9575 Sanitizer::validateAttributes() has been deprecated; use an associative
9576 array where keys are the allowed attributes.
9577 * The $warnCallback parameter to Sanitizer::removeHTMLtags, deprecated since
9578 its introduction in 1.28, has been removed.
9579 * SpecialRecentChanges::filterByCategories(), deprecated in 1.31, was removed.
9580 * The `ArticleContentViewCustom` hook, deprecated in 1.32, was removed.
9581 * AuthManager::callLegacyAuthPlugin, deprecated in 1.33, was removed.
9582 * wfGetMessageCacheStorage was removed without deprecation.
9583 * Title::moveSubpages, deprecated in 1.34, was removed. Use the MovePage class
9584 and MovePage::moveSubpages instead.
9585 * Article::doEditContent, deprecated in 1.29, was removed. Instead, use
9586 WikiPage::doEditContent.
9587 * CommentStore::newKey, deprecated in 1.31, was removed.
9588 * EditPage::$hookError was changed from public to private.
9589 * Title::isValidMoveOperation, ::moveTo, and ::isValidMoveTarget, deprecated
9590 in 1.25, were removed. Use the MovePage class and its methods instead.
9591 * Title::getUserCaseDBKey(), deprecated in 1.33, was removed. Use ::getDBkey().
9592 * StringUtils::explodeMarkup() was removed without deprecation.
9593 * AjaxResponse methods that were unused have been removed without deprecation:
9599 * ApiDelete::delete and ::deleteFile, both of which were protected methods,
9600 have been made private to allow a signature change.
9601 * HistoryPager::revLink, ::curLink, ::lastLink, and ::diffButtons, which had
9602 no visibilities defined, have been made private to allow signature changes.
9603 * SpecialNewpages::revisionFromRcResult, which previously was protected, has
9604 been made private to allow a signature change.
9605 * DifferenceEngine::$mOldRev and $mNewRev, deprecated for public access in
9606 1.32, have been removed.
9607 * DifferenceEngine::revisionDeleteLink, which was previosuly protected, has
9608 been made private to allow a signature change.
9609 * DifferenceEngine::getParserOutput, which is protected, has had a breaking
9610 signature change: the second parameter must be a RevisionRecord object,
9611 rather than a Revision object.
9612 * WikiPage::setLastEdit, which was previously protected, has been made
9613 private to allow a signature change.
9614 * Skin::getSkinNameMessages() deprecated in 1.34, has been removed.
9615 * Skin::escapeSearchLink() deprecated in 1.34, has been removed, use
9616 Skin::getSearchLink() instead.
9617 * Skin::shouldPreloadLogo() deprecated in 1.32, has been removed.
9618 * Revision::loadFromId and RevisionStore::loadRevisionFromId have been
9620 * OutputPage::parserOptions doesn't accept an $options parameter anymore.
9621 * MessageCache::getParserOptions previously did not have a visibility set.
9622 It has been made private.
9623 * SpecialUndelete::showDiff previously did not have a visibilty set. It
9624 hav been made private to allow a signature change.
9625 * The Skin no longer loads the "mediawiki.legacy.shared" or
9626 "mediawiki.legacy.commonPrint" modules. The legacy shared styles must now
9627 be loaded by the skin explicitly, either inherited via the
9628 "mediawiki.skinning.*" modules, or by making your skin's main styles
9629 module use the ResourceLoaderSkinModule class with the "legacy" attribute.
9630 See Vector and Monobook for examples.
9631 * Passing an ApiMain to the constructor of ApiResult is no longer supported.
9632 This was deprecated in 1.25.
9633 * ResourceLoaderWikiModule::invalidateModuleCache has been declared to
9634 be @internal as part of a signature change. No known uses exist outside
9636 * The ArticleAfterFetchContentObject hook, deprecated in 1.32, was removed.
9637 Use ArticleRevisionViewCustom to control output.
9638 * DatabaseBlock::isValid, deprecated in 1.33, was removed.
9639 * HTMLUserTextField and HTMLUsersMultiselectField previously implied
9640 required=true when exists=true. Form fields that use exists=true should also
9641 set required=true if they are required.
9642 * In DatabaseUpdater, the following methods are no longer public: dropTable(),
9643 modifyTable(), modifyField(), runMaintenance(), copyFile(), appendLine().
9644 In PostgresUpdater, the following methods are no longer public:
9645 addPgEnumValue(), addPgIndex(), addPgExtIndex(). This change was made without
9646 deprecation due to immediate danger of data corruption and loss, see T157651.
9647 Extensions should instead use dropExtensionTable(),
9648 modifyExtensionExtensionTable(), modifyExtensionField(), addExtensionUpdate().
9649 The addExtensionUpdate() method can still be used to access any of the
9650 protected methods on DatabaseUpdater.
9651 * ResourceLoader no longer provides the (always-true) variables for wgEnableAPI
9652 and wgEnableWriteAPI; they were deprecated in MediaWiki 1.31 and removed from
9653 the PHP environment in MediaWiki 1.32.
9654 * The wfSetupSession global function, deprecated in 1.27, was removed. Use the
9655 persist() method of the right MediaWiki\Session\SessionManager object instead.
9656 * The wfIsHHVM global function, deprecated in 1.34, was removed.
9657 * GenderCache::doTitlesArray no longer accepts string values in its $titles
9658 array parameter. Use Title objects (or other LinkTarget) instead.
9659 * Unused CommentStore::MAX_COMMENT_LENGTH has been removed.
9660 * User::checkTemporaryPassword() and User::checkPassword(), deprecated in 1.27,
9661 were removed. Use AuthManager instead.
9662 * All constants and class functions now have explicit visibility modifiers. This
9663 means, per [[mw:Stable interface policy]], that these should now be considered
9664 stable. This also helps MW align with PSR 2 and PSR 12. This was done based on
9665 audits of the corpus of skins and extensions hosted in Gerrit. If you find any
9666 that you need to be less restrictive (i.e. public or protected), please report
9667 these so that we can re-evaluate or suggest workarounds.
9668 * BaseTemplate::msgWiki(), deprecated in 1.33, was removed. Use ->msg() or
9670 * QuickTemplate::msgWiki(), deprecated in 1.33, was removed. Use ->msg()
9672 * WebInstaller::getErrorBox() and ::getWarningBox(), deprecated in 1.34,
9673 were removed. Use Html::errorBox() or ::warningBox() instead.
9674 * SpecialVersion::getExtensionCredits() and SpecialVersion::getSkinCredits()
9675 have become private without deprecation.
9676 * As part of the migration to a new hook system (T240307), the following classes
9677 now require an additional HookContainer constructor parameter:
9681 - ClassicInterwikiLookup
9682 - ContentHandlerFactory
9683 - ContentSecurityPolicy
9684 - DefaultOptionsManager
9685 - DerivedPageDataUpdater
9686 - FullSearchResultWidget
9691 - LinkRendererFactory
9697 - PageHandlerFactory
9702 - RevisionStoreFactory
9704 - SearchEngineConfig
9705 - SearchEngineFactory
9709 - SpecialPageFactory
9711 - UserOptionsManager
9712 - WatchedItemQueryService
9714 * The following classes now require setHookContainer() to be called after
9716 - AuthenticationProvider
9717 - ResourceLoaderModule
9719 * The parameters to ChronologyProtector::getTouched() and
9720 ILBFactory::getChronologyProtectorTouched() were changed without backwards
9722 * The deprecated $blacklist parameter to wfIsBadImage() has been removed.
9723 * SpecialBlock::checkUnblockSelf no longer accepts an integer representing
9724 an user ID as part of ongoing refactoring of SpecialBlock class.
9725 * User::setInternalPassword() and User::setPassword(), deprecated in 1.27, have
9726 been removed. Use User::changeAuthenticationData() instead.
9727 * User::selectFields(), deprecated in 1.31, has been removed. Use
9728 User::getQueryInfo() instead.
9729 * The "legacy" serialization type in RESTBagOStuff, deprecated in 1.34,
9731 * The populateContentModel.php maintenance script was removed. It has
9732 been replaced by the populateContentTables.php script.
9733 * The findHooks.php maintenance script, for the old hooks system, was removed.
9734 * (T257278) Calling MediaWiki\Shell\Command::restrict() will now overwrite
9735 any previous restrictions rather than adding to them, making it possible to
9736 disable the default restrictions.
9738 === Deprecations in 1.35 ===
9739 * The PHPUnit4And6Compat class, used to provide compatibility with PHPUnit 4, is
9740 now deprecated. MediaWiki support for PHPUnit 4 ended with the removal of HHVM
9742 * LockManagerGroup::getDefault() and LockManagerGroup::getAny() are deprecated.
9743 They seem to be unused. Just use get() directly, and catch any exception.
9744 * AbstractBlock::getPermissionsError and AbstractBlock::getBlockErrorParams are
9745 deprecated. Use BlockErrorFormatter::getMessage instead.
9746 * The IP class is deprecated. Please instead use the Wikimedia\IPUtils class
9747 from the new wikimedia/ip-utils library instead. Additionally, the RE_IP_*
9748 constants are also deprecated. RE_IP_BYTE can be replaced with a class
9749 constant on the IPUtils class, while the others will eventually be made
9751 * The following Language methods are deprecated: getFallbackFor,
9752 getFallbacksFor, getFallbacksIncludingSiteLanguage. Use the corresponding new
9753 methods on the LanguageFallback class: getFirst, getAll, and
9754 getAllIncludingSiteLanguage.
9755 * FileJournal::factory is deprecated. Use the constructor directly instead.
9756 * AbstractBlock methods setBlocker(), getBlocker() are deprecated and will
9757 become internal implementation of DatabaseBlock.
9758 * Title::countRevisionsBetween has been deprecated and moved into RevisionStore.
9759 * FileBackendGroup::singleton() is deprecated. Use MediaWikiServices instead.
9760 * FileBackendGroup::destroySingleton() is deprecated. Test frameworks should
9761 instead reset MediaWikiServices between test runs.
9762 (MediaWikiIntegrationTestCase does this automatically.)
9763 * GenderCache::singleton(), deprecated in 1.28, is hard deprecated. Use
9764 MediaWikiServices::getGenderCache() instead.
9765 * MediaWikiIntegrationTest::setContentLang() has been deprecated. Use
9766 setMwGlobals( 'wgLanguageCode', 'xxx' ) to set a different site language
9767 code, or setService( 'ContentLanguage', $myObj ) to set a specific Language
9768 object. Service resets and $wgContLang will be handled automatically.
9769 * MediaWikiIntegrationTest::assertType() has been deprecated, as part of the
9770 work to move to PHPUnit 8; PHPUnit's assertInternalType() was deprecated, and
9771 will be removed in PHPUnit 9. MediaWikiIntegrationTest::assertTypeOrValue(),
9772 a wrapper for assertType(), has been removed immediately, without deprecation.
9773 * AbstractBlock::getReason is deprecated, since reasons are actually stored as
9774 CommentStoreComments, and getReason returns a string with no caller control
9775 over language or formatting. Instead use AbstractBlock::getReasonComment,
9776 which returns the CommentStoreComment.
9777 * The global function wfGetRusage() is deprecated and will now always call the
9778 getrusage() function without checking for its existence.
9779 * The properties User::mBlock, User::mBlockedby and User::mHideName are
9780 deprecated. Instead, use User::getBlock to get the block, then use
9781 AbstractBlock::getByName or AbstractBlock::getHideName.Use the GetUserBlock
9782 hook to set, unset or modify a block, including hiding or unhiding a user.
9783 * Directly calling the MergeHistory constructor is deprecated. Instead, use the
9784 new MergeHistoryFactory class.
9785 * Language::factory() and Language::getParentLanguage() are deprecated, and so
9786 is directly calling the Language constructor. Use the new LanguageFactory
9788 * Language::classFromCode() is deprecated. There is no reason it should be used
9789 outside the Language class itself.
9790 * Language::clearCaches() is deprecated. Instead, reset all services and set
9791 Language::$mLangObjCache = [].
9792 * The following functions from Language class are deprecated in favour of
9793 respective functions in LanguageConverter:
9795 - autoConvertToAllVariants
9802 - convertCategoryKey
9804 - getPreferredVariant
9807 - getExtraHashOptions
9808 - updateConversionTable
9809 * Language::classFromCode() is hard deprecated and should be removed in 1.36
9810 * Language::getConverter() is deprecated and should be removed in 1.36
9811 * Language::MESSAGES_FALLBACKS, Language::STRICT_FALLBACKS were deprecated.
9812 Use LanguageFallback::MESSAGES and LanguageFallback::STRICT respectively
9813 * Language::$mLangObjCache is deprecated and should be removed in 1.36. Use
9814 MediaWikiServices instead to get a LanguageFactory.
9815 * Language::getMessagesFor(), getMessageFor(), and getMessageKeysFor() are
9816 deprecated. Use LocalisationCache's getItem(), getSubitem(), and
9817 getSubitemList() methods directly.
9818 * OutputPage::getCSPNonce() is deprecated, use OutputPage::getCSP()->getNonce()
9820 * DerivedPageDataUpdater::prepareUpdate accepted as its second parameter an
9821 optional array of options. Specifying the value of the `oldrevision` key of
9822 the array to be a Revision object, rather than a RevisionRecord object, is
9823 hard deprecated. The same applies to the options parameter in
9824 WikiPage::doEditUpdates.
9825 * Skin::makeI18nUrl() and makeNSUrl() have been deprecated, no longer used.
9826 * Title::countAuthorsBetween and Title::getAuthorsBetween were hard deprecated.
9827 Use respective methods in RevisionStore instead.
9828 * Remove deprecated SkinCopyrightFooter &$forContent parameter
9829 * The following Language class static variables have been replaced with
9830 constants and deprecated: $mWeekdayMsgs, $mWeekdayAbbrevMsgs, $mMonthMsgs,
9831 $mMonthGenMsgs, $mMonthAbbrevMsgs, $mIranianCalendarMonthMsgs,
9832 $mHebrewCalendarMonthMsgs, $mHebrewCalendarMonthGenMsgs,
9833 $mHijriCalendarMonthMsgs and $durationIntervals.
9834 * As part of dropping security support for IE 6 and IE 7,
9835 WebRequest::checkUrlExtension() has been deprecated, and now always returns
9837 * The following ApiBase::PARAM_* constants have been deprecated in favor of
9838 equivalent ParamValidator constants: PARAM_DFLT, PARAM_ISMULTI, PARAM_TYPE,
9839 PARAM_MAX, PARAM_MAX2, PARAM_MIN, PARAM_ALLOW_DUPLICATES, PARAM_DEPRECATED,
9840 PARAM_REQUIRED, PARAM_SUBMODULE_MAP, PARAM_SUBMODULE_PARAM_PREFIX, PARAM_ALL,
9841 PARAM_EXTRA_NAMESPACES, PARAM_SENSITIVE, PARAM_DEPRECATED_VALUES,
9842 PARAM_ISMULTI_LIMIT1, PARAM_ISMULTI_LIMIT2, PARAM_MAX_BYTES, PARAM_MAX_CHARS.
9843 * ApiBase::explodeMultiValue() is deprecated. Use
9844 ParamValidator::explodeMultiValue() instead.
9845 * ApiBase::parseMultiValue() is deprecated. No replacement is provided;
9846 generally this sort of thing should be handled by fully validating the
9848 * ApiBase::validateLimit() and ApiBase::validateTimestamp() are deprecated.
9849 Use ApiParamValidator::validateValue() with an appropriate settings array
9851 * ContentHandler (use ContentHandlerFactory):
9856 - getAllContentFormats
9857 - protected $handler (not need anymore)
9858 - cleanupHandlersCache (not need anymore)
9859 * (T212738) The $wgVersion global is deprecated; instead, use MW_VERSION.
9860 * $wgMemc is deprecated, use MediaWikiServices::getLocalServerObjectCache()
9862 * ObjectCache::detectLocalServerCache() is deprecated, instead use
9863 MediaWikiServices::getLocalServerObjectCache() or
9864 ObjectCache::makeLocalServerCache().
9865 * ImagePage::getImageLimitsFromOptions() is deprecated. Use static function
9866 MediaFileTrait::getImageLimitsFromOptions() instead.
9867 * As part of work to replace the Parser, alongside the breaking changes listed
9868 above, a large number of deprecations changes been made, to simplify the API
9869 or because they will not be supported in replacement:
9870 - Parser::doBlockLevels() (and BlockLevelPass class has been marked @internal)
9871 - Parser::setFunctionTagHook()
9872 - Parser::attributeStripCallback()
9873 - Parser::fetchTemplate() - use Parser::fetchTemplateAndTitle() instead.
9874 - Parser::enableOOUI() - use $parser->getOutput()->enableOOUI() instead.
9875 - LinkHolderArray has been deprecated for public usage and will be
9876 internal part of parser.
9877 - The following parser-related hooks have been deprecated:
9878 - InternalParseBeforeSanitize
9879 Use an alternative hook which doesn't expose internal half-parsed state,
9880 like ParserBeforeInternalParse or ParserAfterTidy
9881 - ParserFetchTemplate
9882 Use BeforeParserFetchTemplateAndTitle
9883 - ParserSectionCreate
9884 No replacement; <section> tag wrapping will be done by core in future.
9885 - BeforeParserrenderImageGallery
9886 No replacement; MediaHandler provides for customizable media rendering
9888 Use ParserAfterTidy instead to avoid exposing internal half-parsed state
9890 No replacement; stripping is no longer supported.
9892 No replacement; stripping is no longer supported.
9893 - The accessor/mutator methods Parser::Options(), Parser::OutputType(), and
9894 Parser::Title() have been deprecated; use the appropriate Parser::get* or
9895 Parser::set* methods instead.
9896 - Parser::firstCallInit() has been deprecated. The parser is initialized
9897 fully on construction and so ::firstCallInit() no longer has any effect
9898 when manually invoked.
9899 - ParserOptions::setAllowExternalImages(), ::setAllowExternalImagesFrom(),
9900 and ::setEnableImageWhitelist() have been deprecated. Future parsers
9901 will not allow per-parser configuration of image filtering; use
9902 site configuration instead.
9903 - ParserOptions::getTidy() and ParserOptions::setTidy() have been deprecated.
9904 These options no longer have any effect.
9905 - Most methods of MWTidy, except for MWTidy::tidy(), have been deprecated;
9906 tidiness is always enabled and not configurable.
9907 - Version 1 of the parserTests file format has been deprecated. You'll need to
9908 update your parser tests to version 2, which uses Remex tidy on all test
9909 output by default. Support for parser tests with Remex tidy off will later
9910 be removed entirely.
9911 - $wgParser — This global variable, soft deprecated in 1.32, has now been hard
9912 deprecated. Use MediaWikiServices::getInstance()->getParser() instead.
9914 * The signature of DefaultPreferencesFactory::__construct has been changed:
9915 - LanguageConverter $languageConverter has been added.
9916 and its usage with old arguments is hard deprecated.
9917 * The public usage of the following properties of LanguageConverter have been
9918 deprecated as there is no reason they should be used outside the
9919 LanguageConverter class and will be changed from public to private:
9927 - mVarSeparatorPattern
9928 changed from public to protected:
9930 * The ArticleEditUpdatesDeleteFromRecentchanges hook has been deprecated. Please
9931 use the RecentChange_save hook or similar instead.
9932 * The ArticleEditUpdates hook has been deprecated. Please
9933 use the RevisionDataUpdates hook or similar instead.
9934 * The SkinTemplatePreventOtherActiveTabs and SkinTemplateTabAction hooks have
9935 been hard deprecated. Please use the SkinTemplateNavigation__Universal hook
9937 * ResourceLoaderFileModule::compileLessFile() has been deprecated, use
9938 ResourceLoaderFileModule::compileLessString() instead
9939 * The SquidPurgeClient and SquidPurgeClientPool classes have been deprecated.
9940 Use MultiHttpClient or HtmlCacheUpdater instead.
9941 * MimeAnalyzer::getExtensionsForType() and ::getTypesForExtensions() were
9942 deprecated in favor of MimeAnalyzer::getExtensionsFromMimeType() and
9943 ::getMimeTypesFromExtension(), respectively. The new methods return arrays
9944 rather than strings.
9945 * Calling Action::factory and Action constructor with WikiPage has been
9946 hard deprecated. Caller must provide an Article instance.
9947 * ApiTestCase::doLogin, soft deprecated in 1.31, was hard deprecated.
9948 * WebRequest::getLimitOffset is hard deprecated. Instead, use
9949 ::getLimitOffsetForUser and pass a User object.
9950 * PageArchive::getPreviousRevision is hard deprecated. Instead, use the new
9951 ::getPreviousRevisionRecord method.
9952 * PageArchive::getArchivedRevision is hard deprecated. Instead, use the new
9953 ::getArchivedRevisionRecord method.
9954 * PageArchive::undelete is hard deprecated. Instead, use ::undeleteAsUser
9955 and pass a User object.
9956 * PageArchive::getRevision is hard deprecated.
9957 * EditPage::getBaseRevision was hard deprecated. Instead, use the new
9958 ::getExpectedParentRevision method.
9959 * The public variable EditPage::$mBaseRevision was hard deprecated.
9960 * FileDeleteForm previously did not accept a user parameter in its constructor,
9961 instead relying on the global $wgUser. A user parameter has been added,
9962 and //not// providing a user is deprecated. There are no known callers
9963 outside of mediawiki core.
9964 * AuthManager::singleton() has been deprecated. Use
9965 MediaWikiServices::getInstance()->getAuthManager() instead.
9966 * ContribsPager::tryToCreateValidRevision is hard deprecated. Instead, use
9967 ContribsPager::tryCreatingRevisionRecord.
9968 * The following functions all accept an optional user parameter. Not passing a
9969 user is hard deprecated, and support for calling them without passing a user
9970 will be removed in 1.36:
9971 - Title::getNotificationTimestamp (note however that the method is deprecated
9972 in its entirely in favor of the new WatchlistNotificationManager service)
9974 - LogEventsList::userCan
9975 - LogEventsList::userCanBitfield
9976 - LogEventsList::userCanViewLogType
9978 - FileDeleteForm::doDelete
9979 - OldLocalFile::userCan
9980 - ArchivedFile::userCan
9982 * The following functions all accept an optional audience parameter and
9983 an optional user parameter. If the audience is FOR_THIS_USER and no
9984 user is passed, they fallback to $wgUser. Not passing a user when
9985 one is needed is deprecated
9986 - LogEventsList::getExcludeClause
9987 - WikiPage::getComment
9988 - WikiPage::getCreator
9990 - WikiPage::getUserText
9991 * UploadBase::checkWarnings now accepts a User parameter; not providing a
9992 user is soft deprecated.
9993 * Article::insertProtectNullRevision and WikiPage::insertProtectNullRevision
9994 were hard deprecated. Instead, use WikiPage::insertNullProtectionRevision.
9995 * Article::doDeleteArticle, Article::doDeleteArticleReal, and
9996 WikiPage::doDeleteArticle are all deprecated. Instead, use
9997 WikiPage::doDeleteArticleReal.
9998 * Article::getComment is deprecated. Instead, use WikiPage::getComment.
9999 * Article::getCreator is deprecated. Instead, use WikiPage::getCreator.
10000 * Article::updateRevisionOn() and ::updateIfNewerOn(), and
10001 WikiPage::updateIfNewerOn() are deprecated. Instead, use
10002 WikiPage::updateRevisionOn().
10003 * Article::getUser is deprecated. Instead, use WikiPage::getUser.
10004 * Article::getUserText is deprecated. Instead, use WikiPage::getUserText.
10005 * Article::prepareContentForEdit is hard deprecated. Instead, use
10006 WikiPage::prepareContentForEdit.
10007 * WikiPage::prepareContentForEdit previously accepted either a Revision or a
10008 RevisionRecord object as its optional second parameter. Passing a Revision
10009 is now hard deprecated.
10010 * Article::getUndoContent and WikiPage::getUndoContent are hard deprecated.
10011 Instead, use ContentHandler::getUndoContent.
10012 * Passing Revision objects to ContentHandler::getUndoContent is hard deprecated.
10013 Instead, pass the associated Content objects, as well as whether the undo is
10014 from the current revision.
10015 * Article::doDeleteUpdates and ::doEditUpdates are deprecated. Instead,
10016 use WikiPage::doDeleteUpdates and ::doEditUpdates.
10017 * WikiPage::doEditUpdates previously accepted a Revision object as its first
10018 parameter. It now accepts RevisionRecord objects, and passing Revision
10019 objects is deprecated.
10020 * Article::getRevisionFetched is deprecated. Instead, use the
10021 fetchRevisionRecord method, which has been converted from protected to
10023 * LocalFileDeleteBatch was migrated to a new constructor signature with the
10024 user as the second parameter. Support for the old signature is hard
10025 deprecated, and once removed the user parameter will be required. At the
10026 same time, a number of file-deletion related methods were updated
10027 - File::delete is hard deprecated in favor of the new ::deleteFile
10028 - LocalFile::delete is hard deprecated in favor of the new ::deleteFile
10029 - LocalFile::deleteOld is hard deprecated in favor of the new ::deleteOldFile
10030 - ForeignDBFile::delete is hard deprecated in favor of the new ::deleteFile
10031 * File::recordUpload (along with the respective methods in the LocalFile and
10032 ForeignDBFile classes) is hard deprecated, and LocalFile::recordUpload2 is
10033 soft deprecated. Use the new LocalFile::recordUpload3, which has a different
10034 signature and requires that a User parameter is passed.
10035 * The SpecialPageFactory class was moved from the MediaWiki\Special namespace
10036 to the MediaWiki\SpecialPage namespace. The old location remains as a
10038 * Title::userCan, ::quickUserCan, and ::getUserPermissionsErrors, which
10039 were deprecated in 1.33, were hard deprecated. Instead, use
10040 PermissionManager::userCan, ::quickUserCan, and ::getPermissionErrors.
10041 * All methods of the old SpecialPageFactory, deprecated in 1.32, were hard
10042 deprecated. Instead, get a SpecialPageFactory from MediaWikiServices and
10044 * User::updateNewtalk now accepts as its optional third parameter a
10045 RevisionRecord object; passing a Revision is hard deprecated.
10046 * User::getNewMessageRevisionId and ::getNewMessageLinks were hard deprecated.
10047 * DifferenceEngine::getRevisionHeader now accepts a RevisionRecord as its
10048 first parameter; passing a Revision is hard deprecated.
10049 * WikiPage::doDeleteUpdates now accepts as its optional third parameter
10050 a RevisionRecord object; passing a Revision is hard deprecated.
10051 * WikiPage::onArticleEdit now accepts as its optional second parameter
10052 a RevisionRecord object; passing a Revision is hard deprecated.
10053 * Global $wgUser variable was soft deprecated.
10054 * The Revision class was soft deprecated entirely in 1.31. All methods
10055 have now been individually hard deprecated:
10056 - ::__construct - create MutableRevisionRecord objects instead
10057 - ::newFromId - use RevisionLookup::getRevisionById instead
10058 - ::newFromTitle - use RevisionLookup::getRevisionByTitle instead
10059 - ::newFromPageId - use RevisionStore::getRevisionByPageId instead
10060 - ::newFromArchiveRow - use RevisionFactory::newRevisionFromArchiveRow
10061 - ::newFromRow - use RevisionStore::newRevisionFromRow instead
10062 - ::loadFromPageId - use RevisionStore::getRevisionByPageId instead
10063 - ::loadFromTitle - use RevisionStore::getRevisionByTitle instead
10064 - ::loadFromTimestamp - use RevisionStore::getRevisionByTimestamp instead
10065 - ::getQueryInfo - use RevisionStore::getQueryInfo instead
10066 - ::getArchiveQueryInfo - use RevisionStore::getArchiveQueryInfo instead
10067 - ::getParentLengths - use RevisionStore::getRevisionSizes instead
10068 - ::getRevisionRecord - no replacement
10069 - ::getId - use RevisionRecord::getId instead
10070 - ::setId - use MutableRevisionRecord::setId instead
10071 - ::setUserIdAndName - use MutableRevisionRecord::setUser instead
10072 - ::getTextId - use SlotRecord::getContentAddress for retrieving an actual
10073 content address, or RevisionRecord::hasSameContent to compare content
10074 - ::getParentId - use RevisionRecord::getParentId instead
10075 - ::getSize - use RevisionRecord::getSize instead
10076 - ::getSha1 - use RevisionRecord::getSha1 instead
10077 - ::getTitle - use RevisionRecord::getPageAsLinkTarget instead
10078 - ::setTitle - the method was previously a no-op
10079 - ::getPage - use RevisionRecord::getPageId instead
10080 - ::getUser - use RevisionRecord::getUser and then User::getId instead
10081 - ::getUserText - use RevisionRecord::getUser and then User::getName instead
10082 - ::getComment - use RevisionRecord::getComment instead
10083 - ::isMinor - use RevisionRecord::isMinor instead
10084 - ::isUnpatrolled - use RevisionStore::getRcIdIfUnpatrolled instead
10085 - ::getRecentChange - use RevisionStore::getRecentChange instead
10086 - ::isDeleted - use RevisionRecord::isDeleted instead
10087 - ::getVisibility - use RevisionRecord::getVisibility instead
10088 - ::getContent - use RevisionRecord::getContent instead
10089 - ::getSerializedData - use SlotRecord::getContent for retrieving a
10090 content object, and Content::serialize for the serialized form
10091 - ::getContentModel - use SlotRecord::getModel instead
10092 - ::getContentFormat - use SlotRecord::getFormat instead, with a fallback
10093 to ContentHandler::getDefaultFormat
10094 - ::getContentHandler - use ContentHandlerFactory::getContentHandler instead
10095 - ::getTimestamp - use RevisionRecord::getTimestamp instead
10096 - ::isCurrent - use RevisionRecord::isCurrent instead
10097 - ::getPrevious - use RevisionLookup::getPreviousRevision instead
10098 - ::getNext - use RevisionLookup::getNextRevision instead
10099 - ::getRevisionText - use RevisionRecord::getContent instead
10100 - ::compressRevisionText - use SqlBlobStore::compressData instead
10101 - ::decompressRevisionText - use SqlBlobStore::decompressData instead
10102 - ::insertOn - use RevisionStore::insertRevisionOn instead
10103 - ::base36Sha1 - use SlotRecord::base36Sha1 instead
10104 - ::newNullRevision - use RevisionStore::newNullRevision
10105 - ::userCan - use RevisionRecord::userCanBitfield instead
10106 - ::userCanBitfield - use RevisionRecord::userCanBitfield instead
10107 - ::getTimestampFromId - use RevisionStore::getTimestampFromId instead
10108 - ::countByPageId - use RevisionStore::countRevisionsByPageId instead
10109 - ::countByTitle - use RevisionStore::countRevisionsByTitle instead
10110 - ::userWasLastToEdit - use RevisionStore::userWasLastToEdit instead
10111 - ::newKnownCurrent - use RevisionStore::getKnownCurrentRevision instead
10112 * The Revision method had a few methods that were previously protected and
10113 have been made private. They were:
10114 - ::getRevisionStore
10115 - ::getRevisionLookup
10116 - ::getRevisionFactory
10118 The $mRecord variable was also changed from protected to private.
10119 * Multiple hooks that include Revision objects were deprecated. The hooks, as
10120 well as suitable replacements, are noted below:
10121 - ArticleRevisionUndeleted (hard deprecated, use the RevisionUndeleted hook)
10122 - ArticleRollbackComplete (hard deprecated, use the RollbackComplete hook)
10123 - DiffRevisionTools (hard deprecated, use the DiffTools hook)
10124 - DiffViewHeader (hard deprecated, use the DifferenceEngineViewHeader hook)
10125 - HistoryRevisionTools (hard deprecated, use the HistoryTools hook)
10126 - NewRevisionFromEditComplete (hard deprecated, use the
10127 RevisionFromEditComplete hook).
10128 - PageContentInsertComplete (hard deprecated, use the PageSaveComplete hook)
10129 - PageContentSaveComplete (hard deprecated, use the PageSaveComplete hook)
10130 - RevisionInsertComplete (soft deprecated in 1.31, now hard deprecated)
10131 - TitleMoveCompleting (hard deprecated, use the PageMoveCompleting hook)
10132 - TitleMoveComplete (hard deprecated, use the PageMoveComplete hook)
10133 - UndeleteShowRevision (hard deprecated)
10134 * The following RevisionStore methods were deprecated:
10135 - ::loadRevisionFromTitle
10136 - ::loadRevisionFromTimestamp
10137 - ::loadRevisionFromPageId
10138 - ::listRevisionSizes
10139 * WikiPage::$mLastRevision was changed from protected to private.
10140 * RecentChange::markPatrolled was deprecated. Use ::doMarkPatrolled instead.
10141 * The JobRunner class has been converted to a service class.
10142 Direct construction is deprecated, use MediaWikiServices::getJobRunner.
10143 * JobRunner::setLogger has been deprecated, thus using JobRunner as a
10144 LoggerAwareInterface is deprecated as well. Rely on the logger passed in the
10145 constructor instead.
10146 * LogEventsList::typeAction accepts an optional right to check against as
10147 the fourth parameter. Specifying such a right is deprecated.
10148 * SkinTemplate::makeArticleUrlDetails has been deprecated, no longer used.
10149 * Passing a Revision object into CategoryMembershipChange constructor is
10150 deprecated. Pass a RevisionRecord instead.
10151 * The "mediawiki.legacy.oldshared" module has been deprecated.
10152 Skins and extensions that are using this should copy its necessary CSS rules
10153 to their own styles module. CologneBlue and Nostalgia skins serve as examples.
10154 * The "mediawiki.legacy.shared" module has been deprecated.
10155 Use the "mediawiki.skinning.*" modules, or ResourceLoaderSkinModule instead.
10156 * The following hooks, soft deprecated in 1.24, have been hard deprecated:
10157 - APIQueryInfoTokens
10158 - APIQueryRecentChangesTokens
10159 - APIQueryRevisionsTokens
10160 - APIQueryUsersTokens
10161 - ApiTokensGetTokenTypes
10162 * Calling Action::factory and Action constructor with any Page implementations
10163 other than Article is deprecated.
10164 * Action::page property is deprecated for direct access.
10165 Use Action::getArticle or Action::getWikiPage instead.
10166 * LESS `.background-image-svg()` mixin from 'mediawiki.mixins.less' is
10167 deprecated and should be removed in 1.36.
10168 * LESS `.background-image-svg-quick()` mixin from 'mediawiki.mixins.less' is
10169 deprecated and should be removed in 1.36.
10170 * The following methods were deprecated:
10171 - Title::getFirstRevision (hard deprecated)
10172 - Title::getEarliestRevTime
10173 - WikiPage::getOldestRevision (hard deprecated)
10174 - Article::getOldestRevision (hard deprecated)
10175 Use RevisionStore::getFirstRevision instead.
10176 * WikiPage::commitRollback and ::doRollback are declared to be internal
10177 in preparation for breaking changes. Neither method has any known
10178 callers outside of MediaWiki core. Both methods modify an array passed
10179 by reference ($resultDetails) - accessing the Revision objects added to
10180 that array (using the keys `current` and `target`) is also deprecated.
10181 * The following Linker methods previously accepted Revision objects as
10182 parameters. They now accept either Revision or RevisionRecord objects.
10183 Passing a Revision object is hard deprecated.
10187 - ::generateRollback
10188 - ::getRollbackEditCount
10189 - ::buildRollbackLink
10190 - ::getRevDeleteLink
10191 * WikiPage::hasDifferencesOutsideMainSlot previously accepted Revision
10192 objects for its two parameters. It now accepts RevisionRecord objects,
10193 and passing Revision objects is hard deprecated.
10194 * WikiPage::updateRevisionOn previously accepted Revision objects for its
10195 second parameter. It now accepts RevisionRecord objects, and passing
10196 Revision objects is hard deprecated.
10197 * The ParserGetVariableValueVarCache hook has been deprecated.
10198 * When using the ParserGetVariableValueSwitch hook, the following unusual
10199 uses have been deprecated: modifying the passed $magicWordId or failing to
10200 cache the returned value in $variableCache. The related
10201 MagicWordwgVariableIDs hook has been deprecated and renamed; use
10202 the GetMagicVariableIDs hook instead.
10203 * The following Parser properties have been deprecated:
10205 - ::$mFunctionHooks
10214 - ::$mGeneratedPPNodeCount
10215 - ::$mHighestExpansionDepth
10216 - ::$mDoubleUnderscores
10217 - ::$mExpensiveFunctionCount
10223 - ::$mRevisionObject
10225 - ::$mRevisionTimestamp
10230 * LinksUpdate::getRevision and ::setRevision are hard deprecated in favor
10231 of the new ::getRevisionRecord and ::setRevisionRecord methods.
10232 * A large number of exposed variables and methods of Article were deprecated as
10233 part of its planned removal:
10234 - Article::$mContext is deprecated; use getContext()/setContext() instead.
10235 - Article::__get(), ::__set() are hard deprecated, use the WikiPage properties
10237 - These Article methods were hard deprecated; use their WikiPage equivalents:
10240 - ::clearPreparedEdit,
10241 - ::commitRollback,
10242 - ::doDeleteArticleReal,
10246 - ::doUpdateRestrictions,
10249 - ::followRedirect,
10250 - ::getContentHandler,
10251 - ::getContentModel,
10252 - ::getContributors,
10253 - ::getDeletionUpdates,
10254 - ::getHiddenCategories,
10257 - ::getLinksTimestamp,
10259 - ::getRedirectTarget,
10260 - ::getRedirectURL,
10263 - ::hasViewableContent,
10265 - ::insertRedirect,
10266 - ::insertRedirectEntry,
10271 - ::lockAndGetLatest,
10272 - ::makeParserOptions,
10273 - ::pageDataFromId,
10274 - ::pageDataFromTitle,
10275 - ::prepareContentForEdit,
10276 - ::protectDescription,
10277 - ::protectDescriptionLog,
10278 - ::replaceSectionAtRev,
10280 - ::shouldCheckParserCache,
10281 - ::supportsSections,
10282 - ::triggerOpportunisticLinksUpdate,
10283 - ::updateCategoryCounts, and
10284 - ::updateRedirectOn.
10285 - Article::generateReason() was hard deprecated; instead, please use
10286 WikiPage::getAutoDeleteReason().
10287 - Article::replaceSectionContent() was hard deprecated, use
10288 Article::replaceSectionAtRev() instead.
10289 - Article::getRevision and WikiPage::getRevision were hard deprecated in favor
10290 of the new WikiPage::getRevisionRecord method.
10291 * A new UserNameUtils service was introduced. The following User methods
10292 were deprecated in favor of using the new service:
10299 * The signature of WikiPage::doDeleteArticleReal was changed to make the user
10300 the second parameter, and the suppression option the third parameter.
10301 Previously, the third parameter was unused. Using the old signature is
10303 * ApiQueryRevisions::getRollbackToken, which has been soft deprecated since
10304 1.24, accepted as its third parameter a Revision object. It now accepts
10305 a RevisionRecord, and passing a Revision is hard deprecated.
10306 * Passing Article to ParserCache::get() was deprecated
10307 * ParserOptions::newCanonical() with no first parameter, or null as the first
10308 parameter, which falls back to using global $wgUser, is hard deprecated.
10309 * Parser::fetchCurrentRevisionOfTitle, ::statelessFetchRevision, and
10310 ::getRevisionObject were hard deprecated in favor of the new
10311 ::fetchCurrentRevisionRecordOfTitle, ::statelessFetchRevisionRecord,
10312 and ::getRevisionRecordObject methods respectively.
10313 * ParserOptions::getCurrentRevisionCallback and ::setCurrentRevisionCallback
10314 were hard deprecated in favor of the new ::getCurrentRevisionRecordCallback
10315 and ::setCurrentRevisionRecordCallback methods respectively.
10316 * Parser::statelessFetchTemplate returns an array; accessing the Revision
10317 object returned (via the `revision` key to the array) is deprecated. Instead,
10318 use `revision-record` to retrieve the equivalent RevisionRecord.
10319 * WikiPage::doEditContent returns an array, and PageUpdater::getStatus returns
10320 a Status object with an array value. For both of those arrays, accessing the
10321 Revision object returned (via the `revision` key to the array) is deprecated.
10322 Instead, use `revision-record` to retrieve the equivalent RevisionRecord.
10323 * Page interface was deprecated. Use Article or WikiPage instead.
10324 * The following DatabaseBlock methods are deprecated because they are no longer
10325 needed in core: chooseBlock, fromMaster, deleteIfExpired.
10326 * wfGetScriptUrl() was deprecated. The script URL should be configured rather
10327 than detected. wfScript() can be used to get a configured script URL.
10328 * Action::factory() with null $action argument is hard deprecated
10329 * The following methods of the User class were deprecated: getDefaultOptions,
10330 getDefaultOption, getOptions, getOption, getBoolOption, getIntOption,
10331 setOption, listOptionKinds, getOptionKinds, resetOptions. Use corresponding
10332 methods in UserOptionsLookup or UserOptionsManager service classes instead.
10333 * UserRetrieveNewTalks hook was deprecated without replacement.
10334 * User::getNewtalk and ::setNewtalk were hard deprecated. Use service
10335 TalkPageNotificationManager instead.
10336 * EditPage::matchSpamRegex and ::matchSummarySpamRegex were hard deprecated in
10337 favor of the new SpamChecker service.
10338 * Title::getNotificationTimestamp, User::clearNotification, and
10339 User::clearAllNotifications were deprecated in favor of the new
10340 WatchlistNotificationManager service.
10341 * SpecialPage::setListed() and SpecialPage::listed() were deprecated. Subclass
10342 UnlistedSpecialPage to set listed as false, and use SpecialPage::isListed()
10344 * CategoryPage::getCategoryViewerClass() and ::setCategoryViewerClass() were
10346 * MWHttpRequest and its subclasses PhpHttpRequest, CurlHttpRequest and
10347 GuzzleHttpRequest now require the timeout and connectTimeout options to
10348 always be specified, otherwise a deprecation warning will be raised. Most
10349 callers should use HttpRequestFactory which always sets these options.
10350 * Linker::normaliseSpecialPage() has been deprecated, instead make use of
10351 LinkRenderer::normalizeTarget().
10352 * SkinTemplate::getPersonalToolsList() was soft deprecated.
10353 * ChangeTags::truncateTagDescription() has been deprecated.
10354 * The following methods of the User class are deprecated: getGroups,
10355 getGroupMemberships, getEffectiveGroups, getAutomaticGroups,
10356 addGroup, removeGroup, getFormerGroups, getAllGroups, getImplicitGroups,
10357 addAutopromoteOnceGroups. Use the new UserGroupManager service instead.
10358 * The following methods of the UserGroupMembership class were deprecated:
10359 selectFields, getMembershipsForUser, getMembership, insert, delete,
10360 newFromRow, initFromRow, purgeExpired.
10361 Use the new UserGroupManager service instead.
10362 * wfWaitForSlaves() has been hard deprecated. Use LBFactory::waitForReplication
10363 instead. It was soft deprecated in 1.27.
10364 * BaseTemplate::getAfterPortlet and ::renderAfterPortlet have been deprecated in
10365 favor of the Skin::getAfterPortlet method. Skin::getAfterPortlet does not wrap
10366 the result in a div, callers are responsible for that.
10367 The hook BaseTemplateAfterPortlet, called by both methods has been deprecated
10368 as well and is replaced by SkinAfterPortlet.
10369 * Autopromote class has been soft deprecated and it's methods moved into
10371 * SkinTemplateBuildNavUrlsNav_urlsAfterPermalink hook has been deprecated.
10372 Use SidebarBeforeOutput hook and get the revision id from the OutputPage
10374 * BaseTemplate::getToolbox() method has been soft deprecated. The toolbox data
10375 is now available in a sidebar data array which you can get from any class
10376 that's extending QuickTemplate class. The hook associated with this method,
10377 BaseTemplateToolbox, has been hard deprecated. To add items to the toolbox,
10378 use SidebarBeforeOutput hook instead.
10379 * The SkinTemplateOutputPageBeforeExec hook is deprecated.
10380 The page [[mw:Manual:Hooks/SkinTemplateOutputPageBeforeExec]] and T60137
10381 for recommendations for alternative approaches based on how developers
10382 previously used this hook.
10383 * SkinTemplateToolboxEnd hook has been deprecated. Use SidebarBeforeOutput hook
10385 * Using Skin::addToBodyAttributes() method to add body attributes has been
10386 deprecated. Use OutputPageBodyAttributes hook instead.
10387 * Installer::getDBTypes has been hard deprecated in favor of
10388 InstallerDBSupport::getDatabases
10389 * The hooks BeforeHttpsRedirect, CanIPUseHTTPS and UserRequiresHTTPS were
10390 deprecated, as part of a long-term plan to remove support for mixed
10392 * Skin::generateDebugHTML() has been hard deprecated. Call
10393 MWDebug::getHTMLDebugLog() directly.
10394 * ExternalStoreDB::getSlave(), soft deprecated in 1.34, was hard deprecated.
10395 Use ExternalStoreDB::getReplica() instead.
10396 * Less variables in mediawiki.ui/variables.less file that don't follow the
10397 standard variable naming scheme (compare WikimediaUI Base) including
10398 `@colorGray* variables have been deprecated. New variables are in place and
10399 aliases have been set. Replace occurrences and use the new variables instead.
10401 === Other changes in 1.35 ===
10402 * A new maintenance script is added (purgeExpiredWatchlistItems.php) with which
10403 to delete expired watchlist items. These items will also be deleted during
10404 wiki editing if $wgWatchlistPurgeRate is > 0. This maintenance script only
10405 has effect if $wgWatchlistExpiry is true. It is recommended that a cronjob or
10406 similar be set up to run it at least daily.
10407 * Title::purgeSquid is deprecated. Use MediaWikiServices::getHtmlCacheUpdater.
10408 * SpecialVersion::getExtLicenseFileName() has been deprecated, use
10409 MediaWiki\ExtensionInfo::getLicenseFileNames() instead.
10410 * SpecialVersion::getExtAuthorsFileName() has been deprecated, use
10411 MediaWiki\ExtensionInfo::getAuthorsFileName() instead.
10412 * Migration to the new content storage schema is complete, all backwards
10413 compatibility code and duplication in the database have been removed.
10414 The old schema was a 1:1 relationship modeled by
10415 revision.text_id -> text.old_id. The new schema is a n:m relationship,
10416 revision.rev_id <- slots.slot_revision_id|slots.slot_content_id ->
10417 content.content_id|content.content_address -> text.old_id. The same applies
10418 to the archive table.
10419 The following fields were removed:
10420 - revision.rev_text_id, replaced by content.content_address
10421 - revision.rev_content_model, replaced by content.content_model,
10422 referencing content_models.model_id
10423 - revision.rev_content_format, replaced by automatic detecting in
10425 - archive.ar_text_id, replaced by content.content_address
10426 - archive.ar_content_model, replaced by content.content_model,
10427 referencing content_models.model_id
10428 - archive.ar_content_format, replaced by automatic detecting in
10430 * Migration to normalized storage of edit comments and user names is
10431 progressing. The following fields were unused and have been removed:
10432 - revision.rev_comment,
10433 replaced by rev_comment_id referencing comment.comment_id.
10434 - revision.rev_user and rev_user_text,
10435 replaced by rev_actor referencing actor.actor_id.
10436 Note that archive.ar_user, archive.ar_user_text, and archive.ar_comment
10437 had already been removed in previous releases.
10438 * The printableversion has been marked as deprecated per T167956.
10439 * (T30162, T245387) The installer supports using a Postgres server running
10440 on a custom port other than 5432.
10442 == Compatibility ==
10443 MediaWiki 1.35 requires PHP 7.3.19 or later, and the following PHP extensions:
10453 MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
10454 but support for them is somewhat less mature.
10456 The supported versions are:
10458 * MySQL 5.5.8 or later
10459 * PostgreSQL 9.2 or later
10460 * SQLite 3.8.0 or later
10462 == Online documentation ==
10463 Documentation for both end-users and site administrators is available on
10464 MediaWiki.org, and is covered under the GNU Free Documentation License (except
10465 for pages that explicitly state that their contents are in the public domain):
10467 https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
10470 A mailing list is available for MediaWiki user support and discussion:
10472 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
10474 A low-traffic announcements-only list is also available:
10476 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
10478 It's highly recommended that you sign up for one of these lists if you're
10479 going to run a public MediaWiki, so you can be notified of security fixes.
10482 There's usually someone online in #mediawiki on irc.libera.chat.
10486 == MediaWiki 1.34.4 ==
10488 This is a maintenance release of the MediaWiki 1.34 branch.
10490 === Changes since MediaWiki 1.34.3 ===
10491 * Fixed issue relating to backporting of changes for T260485.
10493 == MediaWiki 1.34.3 ==
10495 This is a security and maintenance release of the MediaWiki 1.34 branch.
10497 === Changes since MediaWiki 1.34.2 ===
10498 * In the web installer, use secure session cookies.
10499 * Make UsersPager::requestedGroup public.
10500 * (T257407) Split patch-drop-user-fields.sql into patch per table.
10501 * (T257356) Split patch-drop-comment-fields.sql into patch per table.
10502 * (T257997) Undeprecate WebInstaller::getInfoBox().
10503 * Added $wgForceHTTPS, which makes the HTTP to HTTPS redirect be unconditional
10504 and suppresses various hacks needed to support mixed HTTP/HTTPS wikis. We
10505 recommend this be set to true on pure HTTPS wikis.
10506 * Added $wgCookieSameSite, which allows login cookies to be sent with
10507 SameSite=None. This is required for cross-site CentralAuth autologin after
10509 * Added $wgUseSameSiteLegacyCookies, which adds a compatibility hack to
10510 SameSite=None cookies for browsers which implemented an incompatible draft
10511 version of the specification.
10512 * (T257207) shell: Expand documentation in firejail.profile.
10513 * (T246135) Give the "remember me" checkbox a specific CSS class so skins
10514 like Minerva can only hide that checkbox.
10515 * (T256287) rdbms: improve DBConnRef domain selection exception message.
10516 * (T248191, T259123) phpunit: Acknowledge known dberror from
10517 SpecialPageFatalTest.
10518 * (T256394, T259123) Cleanup up excess commit() call in LocalRepoTest.
10519 * Fix runBatchedQuery.php for no result from select.
10520 * (T130906) Add Edge to MediaWiki:Clearyourcache.
10521 * (T249521) reassignEdits: Update script to use User::newFromName for anon
10523 * (T172060) GlobalFunctions: Use php_uname instead of posix_uname.
10524 * Use IPset in MWRestrictions::checkIP.
10525 * (T260031) Add application/font-sfnt to MimeMap for ttf files.
10526 * shell: Make ->restrict( RESTRICT_NONE ) actually work.
10527 * (T183759) Fixes shell edge-cases in Windows.
10528 * (T258390) Add CentralIdLookup::factoryNonLocal().
10529 * (T246991) User: Fix pingLimiter() to use makeGlobalKey() for global rate
10531 * (T232568, CVE-2020-25813) SECURITY: Special:UserRights exposes the existence
10533 * (T251661, CVE-2020-25827) SECURITY: User::pingLimiter: add user-global rate
10535 * (T246991) User: enforce pingLimiter() expiry time.
10536 * (T260232) don't include null page ids in query list for category dumps.
10537 * (T251506) Sanitizer: Truncate IDs to a reasonable length.
10538 * (T262900) Fix failure of rebuildLocalisationCache.php due to RL hook.
10539 * Explicitly wrap some XML calls in libxml_disable_entity_loader().
10540 * (T263455 T247285) Set EnableJavaScriptTest to true in
10541 includes/DevelopmentSettings.php.
10542 * (T232568, CVE-2020-25813) SECURITY: SpecialUserrights: If a viewer lacks
10543 `hideuser`, ignore hidden users.
10544 * (T255918, CVE-2020-25812) SECURITY: Unescaped message used in HTML on
10545 Special:Contributions.
10546 * (T256171, CVE-2020-25815) SECURITY: Unescaped message used in HTML within
10548 * (T258763, CVE-2020-17367, CVE-2020-17368) SECURITY: Prevent invoking
10549 firejail's --output functionality.
10550 * (T86738, CVE-2020-25814) SECURITY: mediawiki.jqueryMsg: Sanitize URLs and
10552 * (T115888, CVE-2020-25828) SECURITY: mediawiki.js: Escape HTML in
10553 mw.message( ... ).parse().
10554 * (T260485, CVE-2020-25869) SECURITY: ActorMigration: Load user from the correct
10556 * (T260485, CVE-2020-25869) SECURITY: ensure actor ID from correct wiki is used.
10558 == MediaWiki 1.34.2 ==
10560 This is a security and maintenance release of the MediaWiki 1.34 branch.
10562 === Changes since MediaWiki 1.34.1 ===
10563 * (T247017) PasswordReset performance improvements.
10564 * The MultiHttpClient code will fallover to non-curl if curl_multi* is blocked.
10565 * (T250568) Work around change in SimpleXMLElement behavior introduced in PHP
10567 * (T251789) Let $wgResourceLoaderMaxQueryLength=-1 fallback to default.
10568 * Remove some rotten and out of date documentation.
10569 * (T252311) Improvements to some older SQLite update patches.
10570 * (T240307) Minor fixes to extension.schema.v2.json and
10571 extension.schema.v1.json.
10572 * (T238043) cleanupUsersWithNoId.php: Handle missing fields.
10573 * (T199474) Set rc_patrolled to 2 for autopatrolled changes in
10574 rebuildrecentchanges.php.
10575 * (T229461) Update the change_tag table in rebuildrecentchanges.php.
10576 * (T249730) Password Reset Updates.
10577 * (T234450) Per-user concurrency in SpecialContributions can now be limited by
10578 setting $wgPoolCounterConf['SpecialContributions'] appropriately.
10579 * (T248947) SECURITY: img_auth.php may leak private extension images into the
10582 == MediaWiki 1.34.1 ==
10584 This is a security and maintenance release of the MediaWiki 1.34 branch.
10586 === Changes since MediaWiki 1.34.0 ===
10587 * (T211450) User: better error message when getActorId fails.
10588 * (T241340) Don't redefine MW_ENTRY_POINT in thumb.php if already defined.
10589 * (T236444) User: Allow newSystemUser() to create over anonymous actors.
10590 * (T238483) Fix NewPagesPager "hide registered users" option.
10591 * (T245072) mediawiki.language: Rename languageData back to languageNames.
10592 * Use proper SemVer comparison in CheckComposerLockUpToDate.
10593 * (T212738) Add the MW_VERSION constant, global $wgVersion is soft deprecated.
10594 * (T246127) Fix error when initialising updateCollation.php.
10595 * Update comment about PHP versions supported by The PHP Group.
10596 * (T247215) Fix output of RecountCategories::doWork().
10597 * Add check for page existence to view.php maintenance script.
10598 * (T245149) Fix fetching login token from action=query&meta=tokens on private
10600 * (T236509) SECURITY: Fix HTML escaping in UserGroupMembership::getLink().
10601 * (T232932) SECURITY: User content can redirect the logout button to different
10603 * (T246602) SECURITY: jquery.makeCollapsible allows applying event handler to
10606 == MediaWiki 1.34.0 ==
10608 === Changes since MediaWiki 1.34.0-rc.1 ===
10609 * $wgDiffEngine (T237049) – This configuration can be used to specify which
10610 difference engine to use. MediaWiki continues to default to automatically
10611 choosing the first of $wgExternalDiffEngine, wikidiff2, or php that is
10613 * (T231866) SqlBlobStore no longer needs Language object.
10614 * (T236735) WikiExporter: Remove unnecessary check for SCHEMA_COMPAT_WRITE_OLD
10616 * (T231673) Set MCR migration stage to SCHEMA_COMPAT_NEW.
10617 * (T229601) Make sure DBLoadBalancerFactory service is not disabled.
10618 * (T232866) Fix support for HTTP/2 in MultiHttpClient.
10619 * (T231866) LocalisationCache: Don't instantiate ResourceLoader.
10620 * (T227461) Stop calling deprecated Redis delete functions.
10621 * (T239561) Mark options as requiring parameters in addSite.php.
10622 * (T232866) Mimic CURLOPT_POST in GuzzleHttpRequest.
10623 * (T239734) Replace deprecated lSize with lLen in Redis code.
10624 * (T192134) SECURITY: Do not allow user scripts on Special:PasswordReset.
10625 * (T239428) ApiEditPage: Test for bad redirect targets.
10626 * (T233342) rdbms: Log debug message traces as 'exception.trace' instead of
10628 * (T226751) media: Log and fail gracefully on invalid EXIF coordinates.
10629 * (T240924) NewPagesPager: Fix namespace query conditions.
10630 * (T212067) Tests for an old PHP bug in parse_url.
10632 == MediaWiki 1.34.0-rc.1 ==
10634 === Changes since MediaWiki 1.34.0-rc.0 ===
10635 * (T231742) rdbms: Restore debug toolbar "Queries" feature.
10636 * (T231366) The ProfilerOutputDb class, 'profiling' table, and profileinfo.php
10637 entry point had been deprecated.
10638 * (T234361) localisation: Add debug message for backend of MessageCache.
10639 * (T234361) session: Add debug message for the used store class.
10640 * (T235559) Fix example Kask configuration in RESTBagOStuff class comment.
10641 * (T235137) Don't apply styling for Special:Contributions on other pages.
10642 * Upgrade mediawiki-codesniffer from 26.0.0 to 28.0.0 (dev-only).
10643 * (T219604) The "jquery.ui.*" and "jquery.effects.*" modules are now
10644 deprecated as aliases for the "jquery.ui" module.
10645 * (T235392) Deprecate setting Parser::mTitle to null.
10646 * Supporting commits for T235392 were also backported to prevent divergence
10647 from master (MediaWiki 1.35).
10648 * (T234581) The 'jquery.tabIndex' module is deprecated.
10649 * Fix docs for GetUserBlock hooks.
10650 * Parser: Hard deprecate getConverterLanguage.
10651 * (T236810) A number of public methods of Parser were exposed only for
10652 historical reasons and have been deprecated: doMagicLinks,
10653 doDoubleUnderscore, doHeadings, doAllQuotes, replaceExternalLinks,
10654 replaceInternalLinks, replaceInternalLinks2, getVariableValue,
10655 initialiseVariables, formatHeadings, testPst, testPreprocess, testSrvus,
10656 areSubpagesAllowed, maybeDoSubpageLink, splitWhitespace, createAssocArgs,
10657 armorLinks, makeKnownLinkHolder, getImageParams, parseLinkParameter,
10658 stripAltText, replaceLinkHolders, replaceLinkHoldersText, armorLinks,
10659 makeKnownLinkHolder, getImageParams, parseLinkParameter, stripAltText.
10660 * (T30798) $wgServer must now always be set in LocalSettings.php. This is most
10661 likely the case already for any wiki installed after 1.18. The autodetection
10662 system was informally deprecated since 1.18 and vulnerable to cache poisoning
10663 attacks. Older wikis may need to update their LocalSettings.php file.
10664 * (T232169) Hard deprecate $wgSysopEmailBans.
10665 * (T236628) Fix for ArticleRevisionViewCustom hook in DifferenceEngine.php.
10666 * (T181658) Do not insert page titles into querycache.qc_value.
10667 * ParamValidator has been flagged as unstable.
10668 * Hard deprecate Parser::disableCache().
10670 == MediaWiki 1.34.0-rc.0 ==
10672 == Upgrading notes for 1.34 ==
10673 1.34 has several database changes since 1.33, and will not work without schema
10674 updates. Note that due to changes to some very large tables like the revision
10675 table, the schema update may take quite long (minutes on a medium sized site,
10676 many hours on a large site).
10678 Don't forget to always back up your database before upgrading!
10680 See the file UPGRADE for more detailed upgrade instructions, including
10681 important information when upgrading from versions prior to 1.11.
10683 Some specific notes for MediaWiki 1.34 upgrades are below:
10685 * MediaWiki now requires PHP 7.2.9 or above.
10686 * MediaWiki no longer supports HHVM.
10688 For notes on 1.33.x and older releases, see HISTORY.
10690 === Configuration changes for system administrators in 1.34 ===
10692 In an effort to enforce best practices for passwords, MediaWiki will now warn
10693 users, and suggest that they change their password, if it is in the list of
10694 100,000 commonly used passwords that are considered bad passwords. If you want
10695 to disable this for your users, please add the following to your local settings:
10697 $wgPasswordPolicy['policies']['default']['PasswordNotInLargeBlacklist'] = false;
10699 ==== New configuration ====
10700 * $wgAllowExternalReqID (T201409) - This configuration setting controls whether
10701 MediaWiki accepts the request ID set by the incoming request via the
10702 `X-Request-Id` header. If set to `true`, that value will be used throughout
10703 the code as the request identificator. Otherwise, the sent header will be
10704 ignored and the request ID will either be taken from Apache's mod_unique
10705 module or will be generated by MediaWiki itself (depending on the set-up).
10706 * $wgEnableSpecialMute (T218265) - This configuration controls whether
10707 Special:Mute is available and whether to include a link to it on emails
10708 originating from Special:Email.
10709 * editmyuserjsredirect user right – users without this right now cannot edit JS
10710 redirects in their userspace unless the target of the redirect is also in
10711 their userspace. By default, this right is given to everyone.
10712 * (T226733) Add rate limiter to Special:ConfirmEmail.
10713 * $wgDiffEngine (T237049) – This configuration can be used to specify which
10714 difference engine to use. MediaWiki continues to default to automatically
10715 choosing the first of $wgExternalDiffEngine, wikidiff2, or php that is
10718 ==== Changed configuration ====
10719 * $wgUseCdn, $wgCdnServers, $wgCdnServersNoPurge, and $wgCdnMaxAge – These four
10720 CDN-related config variables have been renamed from being specific to Squid –
10721 they were previously $wgUseSquid, $wgSquidServers, $wgSquidServersNoPurge, and
10722 $wgSquidMaxage respectively. This aligns them with the related existing
10723 variable $wgCdnMaxageLagged. The previous configuration variable names are
10724 deprecated, but will be used as the fall back if they are still set.
10725 Note that wgSquidPurgeUseHostHeader has not been renamed, as it is deprecated.
10726 * (T27707) File type checks for image uploads have been relaxed to allow files
10727 containing some HTML markup in metadata. As a result, the $wgAllowTitlesInSVG
10728 setting is no longer applied and is now always true. Note that MSIE 7 may
10729 still be able to misinterpret certain malformed PNG files as HTML.
10730 * (T30798) $wgServer must now always be set in LocalSettings.php. This is most
10731 likely the case already for any wiki installed after 1.18. The autodetection
10732 system was informally deprecated since 1.18 and vulnerable to cache poisoning
10733 attacks. Older wikis may need to update their LocalSettings.php file.
10734 * Introduced $wgVerifyMimeTypeIE to allow disabling the MSIE 6/7 file type
10735 detection heuristic on upload, which is more conservative than the checks
10736 that were changed above.
10737 * $wgExternalDiffEngine — Setting this to a string value of 'wikidiff',
10738 'wikidiff2', or 'wikidiff3' will no longer work. This legacy behaviour was
10739 deprecated in MediaWiki 1.27, 1.32, and 1.27, respectively.
10740 * $wgSkipSkin — Setting this instead of $wgSkipSkins, deprecated in 1.23, is now
10742 * $wgLocalInterwiki — Setting this instead of $wgLocalInterwikis, deprecated in
10743 1.23, is now hard-deprecated.
10744 * $wgProfileOnly — Setting this, deprecated in 1.23, is now hard-deprecated.
10745 Instead, set the log file in $wgDebugLogGroups['profileoutput'].
10746 * $wgProxyList — Setting this to an array with IP addresses in the array keys,
10747 which was deprecated in 1.30, no longer works. Instead, $wgProxyList should be
10748 an array with IP addresses as the values, or a string path to a file
10749 containing one IP address per line.
10750 * $wgCookieSetOnAutoblock and $wgCookieSetOnIpBlock are now enabled by default.
10752 ==== Removed configuration ====
10753 * $wgWikiDiff2MovedParagraphDetectionCutoff — If you still want a custom change
10754 size threshold, please specify in php.ini, using the configuration variable
10755 wikidiff2.moved_paragraph_detection_cutoff.
10756 * $wgUseESI - This experimental setting, deprecated in 1.33, is now removed.
10757 * $wgDebugPrintHttpHeaders - The default of including HTTP headers in the
10758 debug log channel is no longer configurable. The debug log itself remains
10759 configurable via $wgDebugLogFile.
10760 * $wgMsgCacheExpiry - The MessageCache uses 24 hours as the expiry for values
10761 stored in WANObjectCache. This is no longer configurable.
10762 * $wgPasswordSalt – This setting, used for migrating exceptionally old, insecure
10763 password setups and deprecated since 1.24, is now removed.
10764 * $wgDBOracleDRCP - If you must use persistent connections, set DBO_PERSISTENT
10765 in the 'flags' field for servers in $wgDBServers (or $wgLBFactoryConf).
10766 * $wgMemCachedDebug - Set the cache "debug" field in $wgObjectCaches instead.
10767 * $wgActorTableSchemaMigrationStage has been removed. Extension code for
10768 MediaWiki 1.31+ finding it unset should treat it as being SCHEMA_COMPAT_NEW.
10770 === New user-facing features in 1.34 ===
10771 * Special:Mute has been added as a quick way for users to block unwanted emails
10772 from other users originating from Special:EmailUser.
10773 * (T207577) Special:NewSection has been created as a shortcut to creating a new
10774 section on a page. When linked to, its subpage is used as the target
10775 ([[Special:NewSection/Test]] redirects to creating a new section in "Test").
10776 Otherwise, it displays a basic interface to allow the end user to specify
10777 the target manually.
10778 * (T220447) Special:Contributions/newbies has been removed for performance and
10779 usefulness reasons. Use Special:RecentChanges?userExpLevel=newcomer instead.
10780 * Special:NewFiles/newbies has been removed for performance and usefulness
10781 reasons. Use Special:RecentChanges?userExpLevel=newcomer&namespace=6 instead.
10783 === New developer features in 1.34 ===
10784 * The ImgAuthModifyHeaders hook was added to img_auth.php to allow modification
10785 of headers in private wikis.
10786 * Language::formatTimePeriod now supports the new 'avoidhours' option to output
10787 strings like "5 days ago" instead of "5 days 13 hours ago".
10788 * (T220163) Added SpecialMuteModifyFormFields hook to allow extensions
10789 to add fields to Special:Mute.
10790 * (T100896) Skin authors can define custom OOUI themes using OOUIThemePaths.
10791 See <https://www.mediawiki.org/wiki/OOUI/Themes> for details.
10792 * (T229035) The GetUserBlock hook was added. Use this instead of
10794 * ObjectFactory is available as a service. When used as a service, the object
10795 specs can now specify needed DI services.
10796 * (T222388) Special pages can now be specified as an ObjectFactory spec,
10797 allowing the construction of special pages that require services to be
10798 injected in their constructor.
10799 * (T222388) API modules can now be specified as an ObjectFactory spec,
10800 allowing the construction of modules that require services to be injected
10801 in their constructor.
10802 * (T117736) The function signature of SpecialContributions::getForm::filters
10803 has changed. It now expects definitions of additional filter fields as array
10804 rather than string.
10806 === External library changes in 1.34 ===
10808 ==== Changed external libraries ====
10809 * Updated Mustache from 1.0.0 to v3.0.1.
10810 * Updated OOUI from v0.31.3 to v0.34.0.
10811 * Updated OOjs from v2.2.2 to v3.0.0.
10812 * Updated composer/semver from 1.4.2 to 1.5.0.
10813 * Updated composer/spdx-licenses from 1.4.0 to 1.5.1 (dev-only).
10814 * Updated mediawiki/codesniffer from 25.0.0 to 28.0.0 (dev-only).
10815 * Updated cssjanus/cssjanus from 1.2.1 to 1.3.0.
10816 * Updated wikimedia/at-ease from 1.2.0 to 2.0.0.
10817 * Updated wikimedia/remex-html from 2.0.1 to 2.1.0.
10818 * Updated monolog/monolog from 1.22.1 to 1.24.0 (dev-only).
10819 * Updated wikimedia/object-factory from 1.0.0 to 2.1.0.
10820 * Updated wikimedia/timestamp from 2.2.0 to 3.0.0.
10821 * Updated wikimedia/xmp-reader from 0.6.2 to 0.6.3.
10822 * Updated mediawiki/mediawiki-phan-config from 0.6.0 to 0.6.1 (dev-only).
10823 * Updated wikimedia/avro from 1.8.0 to 1.9.0 (dev-only).
10825 ==== Removed external libraries ====
10826 * The jquery.async module, deprecated in 1.33, was removed.
10828 === Bug fixes in 1.34 ===
10829 * (T222529) If a log entry or page revision is recorded in the database with an
10830 empty username, attempting to display it will log an error and return a "no
10831 username available" to the user instead of silently displaying nothing or
10834 === Action API changes in 1.34 ===
10835 * The 'recenteditcount' response property from action=query list=allusers,
10836 deprecated in 1.25, has been removed.
10837 * (T60993) action=query list=filearchive, list=alldeletedrevisions and
10838 prop=deletedrevisions no longer require the 'deletedhistory' user right.
10839 * In the response to queries that use 'prop=imageinfo', entries for
10840 non-existing files (indicated by the 'filemissing' field) now omit the
10841 following fields, since they are meaningless in this context:
10842 'timestamp', 'userhidden', 'user', 'userid', 'anon', 'size', 'width',
10843 'height', 'pagecount', 'duration', 'commenthidden', 'parsedcomment',
10844 'comment', 'thumburl', 'thumbwidth', 'thumbheight', 'thumbmime',
10845 'thumberror', 'url', 'sha1', 'metadata', 'extmetadata', 'commonmetadata',
10846 'mime', 'mediadtype', 'bitdepth'.
10847 Clients that process these fields should first check if 'filemissing' is
10848 set. Fields that are supported even if the file is missing include:
10849 'canonicaltitle', 'archivename' (deleted files only), 'descriptionurl',
10850 'descriptionshorturl'.
10851 * The 'blockexpiry' result property in list=users and list=allusers will now be
10852 returned in the same format used by the rest of the API: ISO 8601 for
10853 expiring blocks, and "infinite" for non-expiring blocks.
10855 === Action API internal changes in 1.34 ===
10856 * The exception thrown in ApiModuleManager::getModule has been changed
10857 from an MWException to an UnexpectedValueException, thrown by ObjectFactory.
10858 ApiModuleManager::getModule now also throws InvalidArgumentExceptions when
10859 ObjectFactory is presented with an invalid spec or incorrectly constructed
10861 * Added ApiQueryBlockInfoTrait.
10863 === Languages updated in 1.34 ===
10864 MediaWiki supports over 350 languages. Many localisations are updated regularly.
10865 Below only new and removed languages are listed, as well as changes to languages
10866 because of Phabricator reports.
10868 * (T152908) Added language support for N'Ko (nqo).
10870 === Breaking changes in 1.34 ===
10871 * The global functions wfSuppressWarnings and wfRestoreWarnings, deprecated in
10872 1.26, have been removed. Use Wikimedia\AtEase\AtEase::suppressWarnings() and
10873 Wikimedia\AtEase\AtEase::restoreWarnings() directly.
10874 * Preferences class, deprecated in 1.31, has been removed.
10875 * The following parts of code, deprecated in 1.32, were removed in favor of
10876 built-in PHP functions:
10878 * CryptRand service
10879 * Functions of the MWCryptRand class: singleton(), wasStrong() and generate().
10880 * Various Special Page PHP Classes were renamed (mostly casing changes):
10881 * SpecialAncientpages => SpecialAncientPages
10882 * SpecialConfirmemail => SpecialConfirmEmail
10883 * SpecialDeadendpages => SpecialDeadendPages
10884 * SpecialFewestrevisions => SpecialFewestRevisions
10885 * SpecialListredirects => SpecialListRedirects
10886 * SpecialLonelypages => SpecialLonelyPages
10887 * SpecialLongpages => SpecialLongPages
10888 * SpecialMIMEsearch => SpecialMIMESearch
10889 * SpecialMostcategories => SpecialMostCategories
10890 * SpecialMostinterwikis => SpecialMostInterwikis
10891 * SpecialMostlinked => SpecialMostLinked
10892 * SpecialMostlinkedcategories => SpecialMostLinkedCategories
10893 * SpecialMostlinkedtemplates => SpecialMostLinkedTemplates
10894 * SpecialMostrevisions => SpecialMostRevisions
10895 * SpecialNewimages => SpecialNewFiles
10896 * SpecialShortpages => SpecialShortPages
10897 * SpecialUncategorizedcategories => SpecialUncategorizedCategories
10898 * SpecialUncategorizedimages => SpecialUncategorizedImages
10899 * SpecialUncategorizedpages => SpecialUncategorizedPages
10900 * SpecialUncategorizedtemplates => SpecialUncategorizedTemplates
10901 * SpecialUnusedcategories => SpecialUnusedCategories
10902 * SpecialUnusedimages => SpecialUnusedImages
10903 * SpecialUnusedtemplates => SpecialUnusedTemplates
10904 * SpecialUnwatchedpages => SpecialUnwatchedPages
10905 * SpecialWantedcategories => SpecialWantedCategories
10906 * SpecialWantedtemplates => SpecialWantedTemplates
10907 * SpecialWithoutinterwiki => SpecialWithoutInterwiki
10908 * Language::setCode, deprecated in 1.32, was removed. Use Language::factory to
10909 create a new Language object with a different language code.
10910 * MWNamespace::clearCaches() has been removed. So has the $rebuild parameter
10911 to MWNamespace::getCanonicalNamespaces(), which was deprecated since 1.31.
10912 Instead, reset services, such as by calling $this->overrideMwServices() (if
10913 your test extends MediaWikiTestCase). Services will generally not pick up
10914 configuration changes from after they were created, so you must reset
10915 services after any configuration change. Even if your code works now, it is
10916 likely to break in future versions as more code is moved to services.
10917 * The ill-defined "DatabaseOraclePostInit" hook has been removed.
10918 * PreferencesFormLegacy and PreferencesForm classes, deprecated in 1.32, have
10920 * ObjectFactory class, deprecated in 1.31, has been removed.
10921 * HWLDFWordAccumudlator class, deprecated in 1.28, has been removed.
10922 * XMPInfo, XMPReader and XMPValidate, deprecated in 1.32, have been removed.
10923 * The RedirectSpecialPage::execute method could sometimes return a Title object.
10924 This behavior was removed, and the method now matches the parent signature
10925 (SpecialPage::execute) which is to return HTML string or void.
10926 To obtain the destination title, use RedirectSpecialPage::getRedirect.
10927 * The 'recenteditcount' response property from action API action=query
10928 list=allusers, deprecated in 1.25, has been removed.
10929 * SearchEngine::userNamespaces(), SearchEngine::namespacesAsText(),
10930 SearchEngine::create(), SearchEngine::getSearchTypes() and
10931 SearchEngine::getNearMatch(), methods deprecated in 1.27, have been removed.
10932 * FileRepo::streamFile(), deprecated in 1.26, has been removed.
10933 * User::randomPassword() method, deprecated in 1.27, have been removed.
10934 * MWNamespace::canTalk(), deprecated in 1.30, have been removed.
10935 * Parser class property $mUniqPrefix, deprecated in 1.26, has been removed.
10936 * wfArrayFilter() and wfArrayFilterByKey(), deprecated in 1.32, have been
10938 * wfMakeUrlIndexes() function, deprecated in 1.33, have been removed.
10939 * Method signatures in WatchedItemQueryServiceExtension have changed from taking
10940 User objects to taking UserIdentity objects. Extensions implementing this
10941 interface need to be changed accordingly.
10942 * User::getGroupPage() and ::makeGroupLinkHTML(), deprecated in 1.29, have been
10943 removed. Use UserGroupMembership::getGroupPage and ::getLink instead.
10944 * User::makeGroupLinkWiki(), deprecated in 1.29, has been removed. Use
10945 UserGroupMembership::getLink() instead.
10946 * SavepointPostgres, deprecated in 1.31, has been removed.
10947 * OutputPage::enableSectionEditLinks(), OutputPage::sectionEditLinksEnabled(),
10948 ParserOptions::getEditSection(), ParserOptions::setEditSection(), and
10949 ParserOutput::getEditSectionTokens, ::getTOCEnabled, ::setEditSectionTokens,
10950 and ::setTOCEnabled, deprecated in 1.31, have been removed.
10951 * EditPage::safeUnicodeInput() and ::safeUnicodeOutput(), deprecated in 1.30,
10953 * Four methods in OutputPage, deprecated in 1.32, have been removed. You should
10954 use OutputPage::showFatalError or throw a FatalError instead. The methods are
10955 ::showFileCopyError(), ::showFileRenameError(), ::showFileDeleteError(), and
10956 ::showFileNotFoundError().
10957 * ApiBase::truncateArray(), deprecated in 1.32, has been removed.
10958 * IcuCollation::getICUVersion(), deprecated in 1.32, has been removed. Use PHP's
10959 INTL_ICU_VERSION constant directly.
10960 * HTMLForm::setSubmitProgressive(), deprecated in 1.32, has been removed.
10961 * ResourceLoaderStartUpModules::getStartupModules() and ::getLegacyModules(),
10962 both deprecated in 1.32, have been removed.
10963 * BaseTemplate::msgHtml() and QuickTemplate::msgHtml(), deprecated in 1.32, have
10964 been removed. Use ->msg() or ->getMsg() instead.
10965 * WatchAction::getUnwatchToken(), deprecated in 1.32, has been removed. Instead,
10966 use WatchAction::getWatchToken() with action 'unwatch' directly.
10967 * Language::initEncoding(), ::recodeForEdit(), and recodeInput(), deprecated in
10968 1.28, have been removed.
10969 * PageArchive::getTextFromRow(), ::listAllPages(), and ::getLastRevisionText(),
10970 deprecated in 1.32, have been removed.
10971 * OutputPage::getModuleScripts(), ParserOutput::getModuleScripts(), deprecated
10972 in 1.33, have been removed.
10973 * User::getPasswordValidity(), deprecated in 1.33, has been removed.
10974 * ApiQueryBase::prepareUrlQuerySearchString(), deprecated in 1.33, has been
10976 * ChangeTags::purgeTagUsageCache(), deprecated in 1.33, has been removed.
10977 * JobQueueGroup::pushLazyJobs(), deprecated in 1.33, has been removed.
10978 * MediaWikiTestCase::stashMwGlobals(), deprecated in 1.32, has been removed.
10979 * SearchEngine::transformSearchTerm(), deprecated in 1.32, has been removed.
10980 * The Block typehint only refers to blocks stored in the database. It should be
10981 updated to AbstractBlock in cases where any type of block could be expected.
10982 * FileRepoStatus, deprecated in 1.25, has been removed.
10983 * The LegacyHookPreAuthenticationProvider class, deprecated since its creation
10984 in 1.27, has been removed.
10985 * IP::isValidBlock(), deprecated in 1.30, has been removed.
10986 * WikiPage::prepareContentForEdit now doesn't accept an integer for $revision,
10987 was deprecated in 1.25.
10988 * The jquery.byteLength module, deprecated in 1.31, was removed.
10989 Use the mediawiki.String module instead.
10990 * mw.language.specialCharacters, deprecated in 1.33, has been removed.
10991 Use require( 'mediawiki.language.specialCharacters' ) instead.
10992 * The jquery.colorUtil module was removed. Use jquery.color instead.
10993 * The jquery.checkboxShiftClick module was removed. The functionality
10994 is provided by mediawiki.page.ready instead (T232688).
10995 * The 'jquery.accessKeyLabel' module has been removed. This jQuery
10996 plugin now ships as part of the 'mediawiki.util' module bundle.
10997 * EditPage::submit(), deprecated in 1.29, has been removed. Use $this->edit()
10999 * HTMLForm::getErrors(), deprecated in 1.28, has been removed. Use
11000 getErrorsOrWarnings() instead.
11001 * SpecialPage::getTitle(), deprecated in 1.23, has been removed. Use
11002 SpecialPage::getPageTitle() instead.
11003 * jquery.ui.effect-bounce, jquery.ui.effect-explode, jquery.ui.effect-fold
11004 jquery.ui.effect-pulsate, jquery.ui.effect-slide, jquery.ui.effect-transfer,
11005 which are no longer used, have now been removed.
11006 * SpecialEmailUser::validateTarget(), ::getTarget() without a sender/user
11007 specified, deprecated in 1.30, have been removed.
11008 * BufferingStatsdDataFactory::getBuffer(), deprecated in 1.30, has been removed.
11009 * The constant DB_SLAVE, deprecated in 1.28, has been removed. Use DB_REPLICA.
11010 * The constants NS_IMAGE and NS_IMAGE_TALK, deprecated in 1.14, have been
11011 removed. Use NS_FILE and NS_FILE_TALK respectively.
11012 * Replacer, DoubleReplacer, HashtableReplacer and RegexlikeReplacer
11013 (deprecated in 1.32) have been removed. Closures should be used instead.
11014 * OutputPage::addWikiText(), ::addWikiTextWithTitle(), ::addWikiTextTitleTidy(),
11015 ::addWikiTextTidy(), ::addWikiTextTitle(), deprecated in 1.32, have been
11017 * The $wgUseKeyHeader configuration option and the OutputPage::getKeyHeader()
11018 method, deprecated in 1.32, have been removed.
11019 * WebInstallerOutput::addWikiText(), deprecated in 1.32, has been removed.
11020 * Parser::fetchFile(), deprecated in 1.32, has been removed. Use the method
11021 Parser::fetchFileAndTitle() instead.
11022 * The global function wfBCP47, deprecated in 1.31, has been removed.
11023 * wfCountDown() function, deprecated in 1.31, has been removed. Use
11024 \Maintenance::countDown() method instead.
11025 * OutputPage::wrapWikiMsg() no longer accepts an options parameter. This was
11026 deprecated since 1.20.
11027 * Skin::outputPage() no longer accepts a context. This was deprecated in 1.20.
11028 * Linker::link() no longer accepts a string for the query array, as was
11029 deprecated in 1.20.
11030 * PrefixSearch::titleSearch(), deprecated in 1.23, has been removed. Use the
11031 SearchEngine::defaultPrefixSearch or ::completionSearch() methods instead.
11032 * The UserRights hook, deprecated in 1.26, has been removed. Instead, use the
11033 UserGroupsChanged hook.
11034 * Skin::getDefaultInstance(), deprecated in 1.27, has been removed. Get the
11035 instance from MediaWikiServices instead.
11036 * The UserLoadFromSession hook, deprecated in 1.27, has been removed.
11037 * The wfResetSessionID global function, deprecated in 1.27, has been removed.
11038 Use MediaWiki\Session\SessionManager instead.
11039 * The wfGetLBFactory global function, deprecated in 1.27, has been removed.
11040 Use MediaWikiServices::getInstance()->getDBLoadBalancerFactory().
11041 * The internal method OutputPage->addScriptFile() will no longer silently drop
11042 calls that use an invalid path (i.e., something other than an absolute path,
11043 protocol-relative URL, or full scheme URL), and will instead pass them to the
11044 client where they will likely 404. This usage was deprecated in 1.24.
11045 * Database::reportConnectionError, deprecated in 1.32, has been removed.
11046 * APIEditBeforeSave hook, deprecated in 1.28, has been removed. Please see
11047 EditFilterMergedContent hook for an alternative way to use this feature.
11048 * API module methods getDescription(), getParamDescription(), & getExamples(),
11049 all deprecated in 1.25 and ignored, have been removed.
11050 * The API module method getDescriptionMessage(), deprecated in 1.30, has been
11052 * The JavaScript global variable wgLoadScript has been removed. Use
11053 mw.util.wikiScript( 'load' ) instead.
11054 * ResourceLoader no longer creates the 'mw.legacy' placeholder object. It has
11055 been unused since 1.16 and was deprecated in 1.22. To deprecate a property
11056 in JavaScript, use mw.log.deprecate() instead.
11057 * The 'user.groups' module, deprecated in 1.28, was removed.
11058 Use the 'user' module instead.
11059 * The ResourceLoaderContext::expandModuleNames method, deprecated in 1.33, was
11060 removed. Use ResourceLoader::expandModuleNames instead.
11061 * The ability to override User::$mRights has been removed. Use
11062 PermissionManager::addTemporaryUserRights() instead.
11063 * Previously, when iterating ResultWrapper with foreach() or a similar
11064 construct, the range of the index was 1..numRows. This has been fixed to be
11066 * The ChangePasswordForm hook, deprecated in 1.27, has been removed. Use the
11067 AuthChangeFormFields hook or security levels instead.
11068 * WikiMap::getWikiIdFromDomain(), deprecated in 1.33, has been removed.
11069 Use WikiMap::getWikiIdFromDbDomain() instead.
11070 * The config variables $wgHtml5, $wgJsMimeType, and $wgXhtmlDefaultNamespace,
11071 which were deprecated and ignored by core since 1.22, are no longer set to any
11072 value, and SkinTemplate no longer emits a 'jsmimetype' key. Any extensions not
11073 updated since 2013 to cope with this deprecation may now break.
11074 * (T222637) Passing ResourceLoaderModule objects to ResourceLoader::register()
11075 or $wgResourceModules is no longer supported.
11076 Use the 'class' or 'factory' option of the array format instead.
11077 * The parameter $lang of the functions generateTOC and tocList in Linker and
11078 DummyLinker must be in type Language when present. Other types are
11079 deprecated since 1.33.
11080 * The static properties mw.Api.errors and mw.Api.warnings, deprecated in 1.29,
11082 * ParserOption::getSpeculativeRevIdCallback(), deprecated in 1.28, has been
11084 * The UploadVerification hook, deprecated in 1.28, has been removed. Instead,
11085 use the UploadVerifyFile hook.
11086 * UploadBase:: and UploadFromChunks::stashFileGetKey() and stashSession(),
11087 deprecated in 1.28, have been removed. Instead, please use the getFileKey()
11088 method on the response from doStashFile().
11089 * LBFactory::setDomainPrefix() and LoadBalancer::setDomainPrefix(), deprecated
11090 in 1.33, have been removed. Use setLocalDomainPrefix() instead.
11091 * IDatabase::implicitGroupby(), deprecated in 1.30, has been removed.
11092 * IDatabase::doneWrites(), deprecated in 1.31, has been removed.
11093 Use IDatabase::lastDoneWrites() instead.
11094 * Database::reportConnectionError(), deprecated in 1.32, has been removed.
11095 * LoadBalancer::laggedSlaveUsed(), deprecated in 1.28, has been removed.
11096 Use LoadBalancer::laggedReplicaUsed() instead.
11097 * Database::getProperty(), deprecated in 1.28, has been removed.
11098 * IDatabase::getWikiId(), deprecated in 1.30, has been removed.
11099 Use IDatabase::getDomainID() instead.
11100 * (T191231) Support for using Oracle or MSSQL as database backends has been
11102 * MessageCache::destroyInstance() has been removed. Instead, call
11103 MediaWikiTestCase::resetServices().
11104 * SearchResult protected field $searchEngine is removed and no longer
11105 initialized after calling SearchResult::initFromTitle().
11106 * The UserIsBlockedFrom hook is only called if a block is found first, and
11107 should only be used to unblock a blocked user.
11108 * Parameters for index.php from PATH_INFO, such as the title, are no longer
11110 * The selectFields() methods on classes LocalFile, ArchivedFile, OldLocalFile,
11111 DatabaseBlock, and RecentChange, deprecated in 1.31, have been removed. Use
11112 the corresponding getQueryInfo() methods instead.
11113 * The following methods on Revision, deprecated since 1.31, have been removed.
11114 Use RevisionStore::getQueryInfo() or RevisionStore::getArchiveQueryInfo()
11116 * Revision::userJoinCond()
11117 * Revision::pageJoinCond()
11118 * Revision::selectFields()
11119 * Revision::selectArchiveFields()
11120 * Revision::selectTextFields()
11121 * Revision::selectPageFields()
11122 * Revision::selectUserFields()
11123 * User::setNewpassword(), deprecated in 1.27 has been removed.
11124 * The ObjectCache::getMainWANInstance and ObjectCache::getMainStashInstance
11125 functions, deprecated since 1.28, have been removed.
11126 * Language::$dataCache has been removed (without prior deprecation, for
11127 practical reasons). Use MediaWikiServices instead to get a LocalisationCache.
11129 === Deprecations in 1.34 ===
11130 * The MWNamespace class is deprecated. Use NamespaceInfo.
11131 * ExtensionRegistry->load() is deprecated, as it breaks dependency checking.
11132 Instead, use ->queue().
11133 * User::isBlocked() is deprecated since it does not tell you if the user is
11134 blocked from editing a particular page. Use User::getBlock() or
11135 PermissionManager::isBlockedFrom() or PermissionManager::userCan() instead.
11136 * User::isLocallyBlockedProxy and User::inDnsBlacklist are deprecated and moved
11137 to the BlockManager as private helper methods.
11138 * User::isDnsBlacklisted is deprecated. Use BlockManager::isDnsBlacklisted
11140 * The Config argument to ChangesListSpecialPage::checkStructuredFilterUiEnabled
11141 is deprecated. Pass only the User argument.
11142 * WatchedItem::getUser is deprecated. Use getUserIdentity.
11143 * Passing a Title as the first parameter to the getTimestampById method of
11144 RevisionStore is deprecated. Omit it, passing only the remaining parameters.
11145 * Title::getPreviousRevisionId and Title::getNextRevisionId are deprecated. Use
11146 RevisionLookup::getPreviousRevision and RevisionLookup::getNextRevision.
11147 * The Title parameter to RevisionLookup::getPreviousRevision and
11148 RevisionLookup::getNextRevision is deprecated and should be omitted.
11149 * MWHttpRequest::factory is deprecated. Use HttpRequestFactory.
11150 * The Http class is deprecated. For the request, get, and post methods, use
11151 HttpRequestFactory. For isValidURI, use MWHttpRequest::isValidURI. For
11152 getProxy, use (string)$wgHTTPProxy. For createMultiClient, construct a
11153 MultiHttpClient directly.
11154 * Http::$httpEngine is deprecated and has no replacement. The default 'guzzle'
11155 engine will eventually be made the only engine for HTTP requests.
11156 * RepoGroup::singleton(), RepoGroup::destroySingleton(),
11157 RepoGroup::setSingleton(), wfFindFile(), and wfLocalFile() are all
11158 deprecated. Use MediaWikiServices instead.
11159 * The getSubjectPage, getTalkPage, and getOtherPage of Title are deprecated.
11160 Use NamespaceInfo's getSubjectPage, getTalkPage, and getAssociatedPage.
11161 * MWMessagePack class, no longer used, has been deprecated in 1.34.
11162 * The Block class is separated into DatabaseBlock (for blocks stored in the
11163 database), and SystemBlock (for temporary blocks created by the system).
11164 SystemBlock should be used when creating any temporary blocks. Block is
11165 a deprecated alias for DatabaseBlock.
11166 * Parser::$mConf is deprecated. It will be removed entirely in a later version.
11167 Some context can be found at T224165.
11168 * Constructing Parser directly is deprecated. Obtain one from ParserFactory.
11169 * Title::moveSubpages is deprecated. Use MovePage::moveSubpages or
11170 MovePage::moveSubpagesIfAllowed.
11171 * The MWNamespace class is deprecated. Use MediaWikiServices::getNamespaceInfo.
11172 * (T62260) Hard deprecate Language::getExtraUserToggles() method.
11173 * Language::viewPrevNext function is deprecated, use
11174 PrevNextNavigationRenderer::buildPrevNextNavigation instead
11175 * User::trackBlockWithCookie and DatabaseBlock::clearCookie are deprecated. Use
11176 BlockManager::trackBlockWithCookie and BlockManager::clearCookie instead.
11177 * DatabaseBlock::setCookie, DatabaseBlock::getCookieValue,
11178 DatabaseBlock::getIdFromCookieValue and AbstractBlock::shouldTrackWithCookie
11179 are moved to internal helper methods for BlockManager::trackBlockWithCookie.
11180 * ResourceLoaderContext::getConfig and ResourceLoaderContext::getLogger have
11181 been deprecated. Inside ResourceLoaderModule subclasses, use the local methods
11182 instead. Elsewhere, use the methods from the ResourceLoader class.
11183 * The Profiler::setTemplated and Profiler::getTemplated methods have been
11184 deprecated. Use Profiler::setAllowOutput and Profiler::getAllowOutput
11186 * The ProfilerOutputDb class, 'profiling' table, and profileinfo.php entry
11187 point had been deprecated (T231366).
11188 * The Preprocessor_DOM implementation has been deprecated. It will be
11189 removed in a future release. Use the Preprocessor_Hash implementation
11191 * Sanitizer::attributeWhitelist() and Sanitizer::setupAttributeWhitelist()
11192 have been deprecated; they will be made private in the future.
11193 * SearchResult::termMatches() method is deprecated. It was unreliable because
11194 only populated by few search engine implementations. Use
11195 SqlSearchResult::getTermMatches() if really needed.
11196 * SearchResult::getTextSnippet( $terms ) the $terms param is being deprecated
11197 and should no longer be passed. Search engine implemenations should be
11198 responsible for carrying relevant information needed for highlighting with
11199 their own SearchResultSet/SearchResult sub-classes.
11200 * SearchResultSet::free() method is deprecated.
11201 * SearchEngine::$searchTerms protected field is deprecated. Moved to
11203 * The use of the $terms param in the ShowSearchHit and ShowSearchHitTitle
11204 hooks is highly discouraged as it's only populated by SearchDatabase search
11206 * Skin::escapeSearchLink() is deprecated. Use Skin::getSearchLink() or the skin
11207 template option 'searchaction' instead.
11208 * Skin::getRevisionId() and Skin::isRevisionCurrent() have been deprecated.
11209 Use OutputPage::getRevisionId() and OutputPage::isRevisionCurrent() instead.
11210 * LoadBalancer::haveIndex() and LoadBalancer::isNonZeroLoad() have
11212 * FileBackend::getWikiId() has been deprecated.
11213 Use FileBackend::getDomainId() instead.
11214 * User::getRights() and User::$mRights have been deprecated. Use
11215 PermissionManager::getUserPermissions() instead.
11216 * The LocalisationCacheRecache hook no longer allows purging of message blobs
11217 to be prevented. Modifying the $purgeBlobs parameter now has no effect.
11218 * SVGMetadataExtractor::getMetadata has been deprecated. Instead, you should
11219 use SVGReader->getMetadata() directly.
11220 * The following public properties on AbstractBlock are deprecated: $mReason,
11221 $mTimestamp, $mExpiry, $mHideName. Use the getters/setters instead.
11222 * The following public properties on DatabaseBlock are deprecated: $mAuto,
11223 $mParentBlockId. To check for an autoblock use DatabaseBlock::getType; to
11224 check for the parent ID, use DatabaseBlock::getParentBlockId.
11225 * SearchEngine::userHighlightPrefs() is deprecated, simply stop passing
11226 $contextlines and $contextchars to the SearchHighlighter methods, they will
11227 use proper defaults defined in SearchHighlighter::DEFAULT_CONTEXT_LINES and
11228 DEFAULT_CONTEXT_CHARS.
11229 * SearchUpdate constructor: passing a string as the title param and or a boolean
11230 or a string as the content will produce a deprecation warning.
11231 * SearchEngine::getTextFromContent() is deprecated, use getTextForSearchIndex()
11232 directly from the Content object.
11233 * SearchEngine::textAlreadyUpdatedForIndex() is deprecated, given the
11234 deprecation above this method is no longer needed/called and should not be
11235 implemented by SearchEngine implementation.
11236 * IDatabase::bufferResults() has been deprecated. Use query batching instead.
11237 * MessageCache::singleton() is deprecated. Use
11238 MediaWikiServices::getMessageCache().
11239 * ObjectCache::getWANInstance() is deprecated. Use
11240 MediaWikiServices::getMainWANObjectCache() instead.
11241 * ObjectCache::newWANCacheFromParams() is deprecated. Use
11242 MediaWikiServices::getMainWANObjectCache() instead.
11243 * Constructing MovePage directly is deprecated. Use MovePageFactory.
11244 * TempFSFile::factory() has been deprecated. Use TempFSFileFactory instead.
11245 * wfIsBadImage() is deprecated. Use the BadFileLookup service instead.
11246 * Building a new SearchResult is hard-deprecated, always call
11247 SearchResult::newFromTitle(). This class is being refactored into an abstract
11248 class. If you extend this class please be sure to override all its methods
11249 or extend RevisionSearchResult.
11250 * Skin::getSkinNameMessages() is deprecated and no longer used.
11251 * The mediawiki.RegExp module is deprecated; use mw.util.escapeRegExp() instead.
11252 * Specifying a SpecialPage object for the list of special pages (either through
11253 the SpecialPage_initList hook or by adding to $wgSpecialPages) is now
11255 * The 'jquery.tabIndex' module is deprecated.
11256 * WebInstaller::getWarningBox() and getErrorBox() are deprecated.
11257 Use Html::errorBox() or Html::warningBox() instead.
11258 * Use of ActorMigration with 'ar_user', 'img_user', 'oi_user', 'fa_user',
11259 'rc_user', 'log_user', and 'ipb_by' is deprecated. Queries should be adjusted
11260 to use the corresponding actor fields directly. Note that use with
11261 'rev_user' is *not* deprecated at this time.
11262 * Specifying both the class and factory parameters for
11263 ApiModuleManager::addModule is now deprecated. The ObjectFactory spec should
11265 * The UserIsHidden hook is deprecated. Use GetUserBlock instead, and add a
11266 system block that hides the user.
11267 * The GetBlockedStatus hook is deprecated. Use GetUserBlock instead, to add or
11269 * $wgContentHandlerUseDB is deprecated and should always be true.
11270 * StreamFile::send404Message() and StreamFile::parseRange() are now deprecated.
11271 Use HTTPFileStreamer::send404Message() and HTTPFileStreamer::parseRange()
11272 respectively instead.
11273 * Global variable $wgSysopEmailBans is deprecated; to allow sysops to ban
11274 users from sending emails, use
11275 $wgGroupPermissions['sysop']['blockemail'] = true;
11276 * ApiQueryBase::showHiddenUsersAddBlockInfo() is deprecated. Use
11277 ApiQueryBlockInfoTrait instead.
11278 * PasswordReset is now a service, its direct instantiation is deprecated.
11279 * RESTBagOStuff users should specify either "JSON" or "PHP" serialization type.
11280 * The global function wfIsHHVM() is deprecated and will now always return false
11281 regardless of the runtime environment. This is part of the continuing work to
11282 remove HHVM support from MediaWiki, which started in MediaWiki 1.31.
11283 * Language::getLocalisationCache() is deprecated. Use MediaWikiServices
11285 * The following Language methods are deprecated: isSupportedLanguage,
11286 isValidCode, isValidBuiltInCode, isKnownLanguageTag, fetchLanguageNames,
11287 fetchLanguageName, getFileName, getMessagesFileName, getJsonMessagesFileName.
11288 Use the new LanguageNameUtils class instead. (Note that fetchLanguageName(s)
11289 are called getLanguageName(s) in the new class.)
11290 * Using the Parser without initializing its $mTitle property to non-null has
11291 been deprecated. In a future release Parser::getTitle() will throw a
11292 TypeError if $mTitle is uninitialized.
11293 * A number of public methods of Parser were exposed only for historical
11294 reasons and have been deprecated: doMagicLinks, doDoubleUnderscore,
11295 doHeadings, doAllQuotes, replaceExternalLinks, replaceInternalLinks,
11296 replaceInternalLinks2, getVariableValue, initialiseVariables, formatHeadings,
11297 testPst, testPreprocess, testSrvus, areSubpagesAllowed, maybeDoSubpageLink,
11298 splitWhitespace, createAssocArgs, armorLinks, makeKnownLinkHolder,
11299 getImageParams, parseLinkParameter, stripAltText, replaceLinkHolders,
11300 replaceLinkHoldersText, armorLinks, makeKnownLinkHolder, getImageParams,
11301 parseLinkParameter, stripAltText.
11303 === Other changes in 1.34 ===
11304 * Added option to specify "Various authors" as author in extension credits using
11305 "..." as the only author name. If the "author" array contains more than one
11306 entry and "..." is one of the entries in the array, "..." will be parsed as
11307 "others" (version-poweredby-others i18n message) like previously.
11308 * (T232563) Browser support ("Grade C") for Internet Explorer 6 and 7
11309 was discontinued. Basic content and security features may no longer
11310 work correctly in these browsers.
11314 == MediaWiki 1.33.4 ==
11316 This is a security and maintenance release of the MediaWiki 1.33 branch.
11318 === Changes since MediaWiki 1.33.3 ===
11319 * (T247017) PasswordReset performance improvements.
11320 * The MultiHttpClient code will fallover to non-curl if curl_multi* is blocked.
11321 * (T250568) Work around change in SimpleXMLElement behavior introduced in PHP
11323 * Remove some rotten and out of date documentation.
11324 * (T252311) Improvements to some older SQLite update patches.
11325 * (T240307) Minor fixes to extension.schema.v2.json and
11326 extension.schema.v1.json.
11327 * rdbms: Add callback for atomic section cancellation.
11328 * (T191668) NameTableStoreTest::getCallCheckingDb simplification.
11329 * Make NameTableStore use LoadBalancer::getConnectionRef().
11330 * (T224949) NameTableStore: ensure consistency upon rollback.
11331 * (T199474) Set rc_patrolled to 2 for autopatrolled changes in
11332 rebuildrecentchanges.php.
11333 * (T229461) Update the change_tag table in rebuildrecentchanges.php.
11334 * (T234450) Per-user concurrency in SpecialContributions can now be limited by
11335 setting $wgPoolCounterConf['SpecialContributions'] appropriately.
11336 * (T248947) SECURITY: img_auth.php may leak private extension images into the
11339 == MediaWiki 1.33.3 ==
11341 This is a security and maintenance release of the MediaWiki 1.33 branch.
11343 === Changes since MediaWiki 1.33.2 ===
11344 * (T245072) mediawiki.language: Rename languageData back to languageNames.
11345 * Use proper SemVer comparison in CheckComposerLockUpToDate.
11346 * (T212738) Add the MW_VERSION constant, global $wgVersion is soft deprecated.
11347 * Update comment about PHP versions supported by The PHP Group.
11348 * (T247215) Fix output of RecountCategories::doWork().
11349 * Add check for page existence to view.php maintenance script.
11350 * (T236509) SECURITY: Fix HTML escaping in UserGroupMembership::getLink().
11351 * (T246602) SECURITY: jquery.makeCollapsible allows applying event handler to
11354 == MediaWiki 1.33.2 ==
11356 This is a security and maintenance release of the MediaWiki 1.33 branch.
11358 === Changes since MediaWiki 1.33.1 ===
11359 * (T217831) (T200653) PopulateContentTables: compute sha1 and length if needed.
11360 * Fix extra newlines in the installer.
11361 * (T236628) Fix for ArticleRevisionViewCustom hook in DifferenceEngine.php.
11362 * (T181658) Do not insert page titles into querycache.qc_value.
11363 * (T206013) Suppress errors when reading invalid XML file properties.
11364 * (T237931) Remove references to pg_attrdef.adsrc in Postgres code.
11365 * Use correct value for 'sslmode' in DatabasePostgres.
11366 * (T232866) Fix support for HTTP/2 in MultiHttpClient.
11367 * (T227461) Stop calling deprecated Redis delete functions.
11368 * (T239561) Mark options as requiring parameters in addSite.php.
11369 * (T219440) Skip flaky rollback test.
11370 * (T232866) Mimic CURLOPT_POST in GuzzleHttpRequest.
11371 * (T239734) Replace deprecated lSize with lLen in Redis code.
11372 * (T192134) SECURITY: Do not allow user scripts on Special:PasswordReset.
11373 * (T239428) ApiEditPage: Test for bad redirect targets.
11374 * (T233342) rdbms: Log debug message traces as 'exception.trace' instead of
11376 * (T226751) media: Log and fail gracefully on invalid EXIF coordinates.
11377 * (T212067) SECURITY: Work around PHP bug in parse_url.
11379 == MediaWiki 1.33.1 ==
11381 This is a security and maintenance release of the MediaWiki 1.33 branch.
11383 === Changes since MediaWiki 1.33.0 ===
11384 * A change that kept people with a database table prefix that didn't
11385 end with an underscore from updating was reverted.
11386 * (T207100) Updated LanguageTr for dotted and dotless I in PHP 7.3.
11387 * The ImgAuthModifyHeaders hook was added to img_auth.php to allow modification
11388 of headers in private wikis.
11389 * (T230317) Allow upgrading from MediaWiki before 1.15 where the valid_tag table
11391 * (T208897) MessageCache: Restore 'loadedLanguages' tracking for load().
11392 * (T228555) MessageCache: Fix isMainCacheable() logic for non-content languages.
11393 * (T200088) Remove title protection correctly for undeletions and imports.
11394 * (T230402) SECURITY: Add permission check for suppressed account to
11396 * Add helper for HTTPFileStreamer header syntax.
11397 * (T227461) ObjectCache: avoid using deprecated phpredis::delete() alias.
11398 * (T231386) SpecialRedirect::dispatchUser() should use a 302 http status code.
11399 * (T118799) Fix XMP parser errors due to trailing nullchar.
11400 * (T230618) Fix GROUP BY in ActiveUsersPager and RecentChangesUpdateJob for
11402 * (T230487) Handle changed defaults in Argon2PasswordTest::testPartialConfig().
11403 * (T233119) Improve documentation for the MinimumPasswordLengthToLogin policy.
11404 * (T227662) Split down patch-comment-table.sql and patch-actor-table.sql into
11405 separate files to help allieviate potential migration problems.
11407 === Upgrading notes for 1.33 ===
11408 1.33 has several database changes since 1.32, and will not work without schema
11409 updates. Note that due to changes to some very large tables like the revision
11410 table, the schema update may take quite long (minutes on a medium sized site,
11411 many hours on a large site).
11413 Don't forget to always back up your database before upgrading!
11415 See the file UPGRADE for more detailed upgrade instructions, including
11416 important information when upgrading from versions prior to 1.11.
11418 Some specific notes for MediaWiki 1.33 upgrades are below:
11420 * Some external link searches will not work correctly until update.php (or
11421 refreshExternallinksIndex.php) is run. These include searches for links using
11422 IP addresses, internationalized domain names, and possibly mailto links.
11423 * If you ran migrateActors.php using an older version of MediaWiki and want to
11424 run your wiki with $wgActorTableSchemaMigrationStage SCHEMA_COMPAT_READ_OLD,
11425 note that log_search rows needed to find revision deletions by target user
11426 were incorrectly deleted. See T215464 for details.
11427 * If revision deletions were performed when the wiki was configured with
11428 $wgActorTableSchemaMigrationStage SCHEMA_COMPAT_WRITE_BOTH and without
11429 migrateActors.php having been run, the log_search table may contain rows with
11430 empty values for "target_author_actor" which will prevent log searches for
11431 revision deletions by target user from finding those log entries. These rows
11432 may be corrected by (re-)running migrateActors.php.
11434 For notes on 1.32.x and older releases, see HISTORY.
11436 == MediaWiki 1.33.0 ==
11438 === Changes since MediaWiki 1.33.0-rc.0 ===
11439 * (T225558) Update installer link to PHP intl.
11440 * (T225901) Only attempt to deduplicate if there is data in archive and revision
11442 * (T225564) Fetch tag ID before calling undefineTag().
11443 * (T225496) Detect APC for MainCacheType in CLI installer.
11444 * Call unpack() with correct parameters in MimeAnalyzer.php for PHP 7.0 support.
11445 * (T212613) Style change tags correctly on Special:Newpages.
11446 * (T202211) Fix SQLite patch-(page|template)links-fix-pk.sql column order.
11448 == MediaWiki 1.33.0-rc.0 ==
11450 === Configuration changes for system administrators in 1.33 ===
11451 ==== New configuration ====
11452 * $wgEnablePartialBlocks – This enables the Partial Blocks feature, which gives
11453 accounts with block permissions the ability to block users, IPs, and IP ranges
11454 from editing specific pages, while allowing them to edit the rest of the wiki.
11455 It is a temporary setting for gradual enablement, current default to `false`,
11456 and will be set to `true` and then removed once initial development completes.
11458 ==== Changed configuration ====
11459 * $wgChangeTagsSchemaMigrationStage (T193868) — This temporary setting, added in
11460 MediaWiki 1.32, now defaults to MIGRATION_NEW instead of MIGRATION_WRITE_BOTH.
11461 * $wgPasswordPolicy – There is a new password policy to check that the account's
11462 password is not in the large blacklist. This is enabled by default for the
11463 built-in user groups bureaucrat, sysop, interface-admin, and bot. To configure
11464 this for other user groups, set the `PasswordNotInLargeBlacklist` flag `true`.
11465 * $wgPasswordDefault – There is a new password type configuration using Argon2
11466 password hashing (which requires PHP 7.2 and above). It's designed to resist
11467 timing attacks, and (on systems with PHP 7.3+) GPU hacking; if you configure
11468 argon2 to be used, by default, it will automatically choose the best available
11469 algorithm depending on which version of PHP you have available. To use this,
11470 you can set `$wgPasswordDefault = 'argon2';`.
11471 * $wgActorTableSchemaMigrationStage now defaults to reading the new schema.
11472 update.php will back-populate the new database fields due to the changed
11473 setting, which may take some time on large wikis. You can avoid downtime by
11474 following a process like that described in T188327.
11476 ==== Removed configuration ====
11477 * $wgTagStatisticsNewTable (T199334) — This temporary setting, added in
11478 MediaWiki 1.32, has now been removed. When loading Special:Tags, MediaWiki
11479 will now always use the `change_tag_def` instead of the `change_tag` table.
11480 * $wgUseTidy, $wgTidyBin, $wgTidyConf, $wgTidyOpts, $wgTidyInternal, and
11481 $wgDebugTidy – These options, all deprecated since 1.26, have now all been
11482 removed, as MediaWiki now always tidies user output. The $wgTidyConfig setting
11483 remains only for experimental features and debugging, and should not be used.
11484 * $wgEnableParserCache – This setting has been deprecated since 1.26, has now
11485 been removed. If you still desire to disable the parser cache, instead you can
11486 set `$wgParserCacheType = CACHE_NONE;`.
11487 * $wgCommentTableSchemaMigrationStage – This temporary migration setting has now
11488 been removed. Code finding it unset should treat it as being MIGRATION_NEW.
11489 * $wgAuth – This old setting, deprecated in 1.27, has been removed as part of
11490 the removal of AuthPlugin.
11491 * $wgSitesCacheFile – This configuration was introduced in 1.25 with the intent
11492 to allow sites to configure a file in which to cache the SiteStore database
11493 table, but it was never used. SiteStore already caches its information by
11494 default using BagOStuff (e.g. Memcached or APC).
11495 * $wgClockSkewFudge – This setting was used by User.php to let sites adjust by
11496 how much MediaWiki would fudge when trying to minimize the chances of a
11497 user.user_touched database update to the "current" timestamp being before the
11498 value already there (e.g. due to clock skew between different servers). This
11499 is no longer a problem, because the code now ensures the timestamp is always
11500 higher than the previous one. The writes are guarded with CAS logic (check
11501 and set), which prevents updates that would overlap.
11502 * $wgDBmysql5 (T196185) - This experimental setting, deprecated in 1.31, has
11505 === New user-facing features in 1.33 ===
11506 * (T96041) __EXPECTUNUSEDCATEGORY__ on a category page causes the category
11507 to be hidden on Special:UnusedCategories.
11508 * (T210814) SVGs are now by default displayed in wiki language on image
11510 * Special:CreateAccount now warns the user if their chosen username has to be
11512 * (T205040) Multilingual images are now be displayed in the current parse
11513 language where available.
11514 * Special:ActiveUsers will no longer filter out users who became inactive since
11515 the last time the active users query cache was updated.
11516 * (T215675) RecentChange and ManualLogEntry implement new Taggable interface.
11517 * (T215675) Added a hook, ManualLogEntryBeforePublish, to allow extensions
11518 to modify (example: add tags) log entries.
11520 === New developer features in 1.33 ===
11521 * The AuthManagerLoginAuthenticateAudit hook has a new parameter for
11522 additional information about the authentication event.
11523 * TextContent::getText() was introduced as a replacement for
11524 Content::getNativeData() for text-based content models.
11525 * (T214706) LinksUpdate::getAddedExternalLinks() and
11526 LinksUpdate::getRemovedExternalLinks() were introduced.
11527 * (T213893) Added 'MaintenanceUpdateAddParams' hook
11528 * (T219655) The MarkPatrolled hook has a new parameter for the tags
11529 associated with this entry in the patrol log.
11530 * (T212472) Extensions can now specify platform abilities they require to work,
11531 limited to shell access for now.
11534 === External library changes in 1.33 ===
11535 ==== New external libraries ====
11536 * Added wikimedia/password-blacklist 0.1.4.
11537 * Added guzzlehttp/guzzle 6.3.3.
11539 ==== Changed external libraries ====
11540 * Updated OOUI from v0.29.2 to v0.31.3.
11541 * Updated OOjs Router from pre-release to v0.2.0.
11542 * Updated moment from v2.19.3 to v2.24.0.
11543 * Updated wikimedia/xmp-reader from 0.6.0 to 0.6.2.
11544 * Updated wikimedia/scoped-callback from 2.0.0 to 3.0.0.
11545 * Updated jquery-client from 2.0.1 to 2.0.2.
11546 * Updated pear/net_smtp from 1.8.0 to 1.8.1.
11547 * Updated cssjanus/cssjanus from 1.2.0 to 1.3.0.
11548 * Updated wikimedia/php-session-serializer from 1.0.6 to 1.0.7.
11550 ==== Removed external libraries ====
11551 * (T219403) jquery.ui.spinner, deprecated since 1.31, was removed.
11554 === Developer library changes in 1.33 ===
11555 ==== New developer libraries ====
11556 * Added jakub-onderka/php-console-highlighter 0.3.2 explicitly (dev-only).
11557 * Added mediawiki/mediawiki-phan-config 0.5.0 (dev-only).
11559 ==== Changed developer libraries ====
11560 * Updated wikimedia/ip-set from 1.3.0 to 2.0.1.
11561 * The deprecated IPSet\IPSet alias was removed, Wikimedia\IPSet must be
11563 * Updated psy/psysh from 0.9.6 to 0.9.9 (dev-only).
11564 * Updated nikic/php-parser from 3.1.3 to 3.1.5 (dev-only).
11565 * Updated mediawiki/mediawiki-codesniffer from 22.0.0 to 25.0.0 (dev-only).
11566 * Updated qunitjs from 2.6.2 to 2.9.1.
11568 ==== Removed developer libraries ====
11569 * The jetbrains/phpstorm-stubs repository was removed in favour of the minimal
11570 stubs we need, which are kept in the new `.phan/internal_stubs` directory
11574 === Bug fixes in 1.33 ===
11575 * (T164211) Special:UserRights could sometimes fail with a
11576 "conflict detected" error when there weren't any conflicts.
11577 * (T216029) Chrome redirects to Special:BadTitle after editing a section with
11578 a non-Latin name on a page with non-Latin characters in title.
11579 * (T222385) resourceloader: Use AND instead of OR for upsert conds in
11580 saveFileDependencies().
11582 === Action API changes in 1.33 ===
11583 * (T198913) Added 'ApiOptions' hook.
11584 * The JSON formatversion=2 is no longer experimental.
11585 * Internal API errors (those with code beginning "internal_api_error") will
11586 include the exception class name in a data field named "errorclass".
11587 * Class names are not guaranteed to remain stable, and in particular database
11588 exceptions will now include the "Wikimedia\Rdbms\" prefix in the class name.
11589 * The code including an exception class name is deprecated. In the future,
11590 all internal errors will use code "internal_api_error".
11591 * (T212356) When using action=delete on pages with many revisions, the module
11592 may return a boolean-true 'scheduled' and no 'logid'. This signifies that the
11593 deletion will be processed via the job queue.
11594 * action=setnotificationtimestamp will now update the watchlist asynchronously
11595 if entirewatchlist is set, so updates may not be visible immediately
11596 * Block info will be added to "blocked" errors from more modules.
11597 * (T216245) Autoblocks will now be spread by action=edit and action=move.
11598 * action=query&meta=userinfo has a new uiprop, 'latestcontrib', that returns
11599 the date of user's latest contribution.
11600 * (T25227) action=logout now requires to be posted and have a csrf token.
11602 === Action API internal changes in 1.33 ===
11603 * A number of deprecated methods for API documentation, intended for overriding
11604 by extensions, are no longer called by MediaWiki, and will emit deprecation
11605 notices if your extension attempts to use them:
11606 * ApiBase::getDescription() (deprecated in 1.25)
11607 * ApiBase::getParamDescription() (deprecated in 1.25)
11608 * ApiBase::getExamples() (deprecated in 1.25)
11609 * ApiBase::getDescriptionMessage() (deprecated in 1.30)
11610 Additionally, the 'APIGetDescription' and 'APIGetParamDescription' hooks have
11611 been removed, as their only use was to let extensions override values returned
11612 by getDescription() and getParamDescription(), respectively.
11613 * API error codes may only contain ASCII letters, numbers, underscore, and
11614 hyphen. Methods such as ApiBase::dieWithError() and
11615 ApiMessageTrait::setApiCode() will throw an InvalidArgumentException if
11617 * ApiBase::checkTitleUserPermissions() now takes an options array as its third
11618 parameter. Passing a User object or null is deprecated.
11619 * The api-feature-usage log channel now has log context. The text message is
11620 deprecated and will be removed in the future.
11622 === Languages updated in 1.33 ===
11623 MediaWiki supports over 350 languages. Many localisations are updated regularly.
11624 Below only new and removed languages are listed, as well as changes to languages
11625 because of Phabricator reports.
11627 * (T203908) Added language support for Eastern Pwo (kjp).
11628 * (T213717) Fixed a translation error on Goan Konkani (gom-deva) translations
11630 * (T212221) Added $digitTransformTable for Santali (sat).
11631 * (T216479) Added language support for Saisiyat (xsy).
11632 * (T219728) Added support for new Japanese era name "Reiwa"
11634 === Breaking changes in 1.33 ===
11635 * The parameteter $lang in DifferenceEngine::setTextLanguage must be of type
11636 Language. Other types are deprecated since 1.32.
11637 * Skin::doEditSectionLink requires type Language for the parameter $lang.
11638 The parameters $tooltip and $lang are mandatory. Omitting the parameters is
11639 deprecated since 1.32.
11640 * Language::truncate(), deprecated in 1.31, has been removed.
11641 * UtfNormal, deprecated in 1.25, was removed. Use UtfNormal\Validator directly
11643 * (T197179) In OOUI HTMLForm fields, the parameters 'notice', 'notice-messages',
11644 and 'notice-message', which were deprecated in 1.32, were removed. Instead,
11645 use 'help', 'help-message', and 'help-messages'.
11646 * (T197179) HTMLFormField::getNotices(), deprecated in 1.32, was removed.
11647 * The "Parsoid v1" compatibility mappings in ParsoidVirtualRESTService and
11648 RestbaseVirtualRESTService, deprecated since 1.26, have been removed.
11649 Use the RESTBase v1 or Parsoid v3 API instead.
11650 * ParserOptions defaults 'tidy' to true now, since the untidy modes of the
11651 parser are being deprecated and ParserOptions::getCanonicalOverrides()
11652 has always been true at any rate.
11653 * Support for disabling tidy and external tidy implementations has been removed.
11654 This was deprecated in 1.32. The pure PHP Remex tidy implementation is now
11655 used and no configuration is necessary.
11656 * A number of deprecated methods for API documentation, intended for overriding
11657 by extensions, are no longer called by MediaWiki, and will emit deprecation
11658 notices if your extension attempts to use them:
11659 * ApiBase::getDescription() (deprecated in 1.25)
11660 * ApiBase::getParamDescription() (deprecated in 1.25)
11661 * ApiBase::getExamples() (deprecated in 1.25)
11662 * ApiBase::getDescriptionMessage() (deprecated in 1.30)
11663 Additionally, the 'APIGetDescription' and 'APIGetParamDescription' hooks have
11664 been removed, as their only use was to let extensions override values returned
11665 by getDescription() and getParamDescription(), respectively.
11666 * The authentication hooks 'AbortAutoAccount' 'AbortNewAccount', 'AbortLogin',
11667 'LoginUserMigrated', 'UserCreateForm', and 'UserLoginForm', all deprecated by
11668 the creation of AuthManager in 1.27, have been removed. This also means that
11669 the FakeAuthTemplate and LoginForm classes are removed, that FakeAuthTemplate
11670 is no longer passed into LoginSignupSpecialPage->getFieldDefinitions(), and
11671 that LoginSignupSpecialPage->getBCFieldDefinitions() is removed.
11672 * The 'jquery.localize' module, deprecated in 1.32, has been removed. Instead,
11674 * The hooks LanguageGetSpecialPageAliases and LanguageGetMagic, deprecated since
11675 1.16, have now been removed. Instead, use $specialPageAliases or $magicWords
11676 respectively in a $wgExtensionMessagesFiles file.
11677 * The following methods of the Preferences class, deprecated in 1.31, have been
11679 * getSaveBlacklist()
11680 * loadPreferenceValues()
11681 * getOptionFromUser()
11682 * profilePreferences()
11683 * skinPreferences()
11684 * filesPreferences()
11685 * datetimePreferences()
11686 * renderingPreferences()
11687 * editingPreferences()
11689 * watchlistPreferences()
11690 * searchPreferences()
11691 * miscPreferences()
11692 * generateSkinOptions()
11696 * validateSignature()
11698 * getTimezoneOptions()
11700 * filterTimezoneInput()
11701 * getTimeZoneList()
11702 * mw.util.jsMessage(), deprecated in 1.20, was removed. Use mw.notify instead.
11703 * (T61113) User::EDIT_TOKEN_SUFFIX was removed. It was deprecated since 1.27.
11704 * The 'mediawiki.api' module aliases, deprecated in 1.32, have been removed.
11705 Specifically: mediawiki.api.category, mediawiki.api.edit,
11706 mediawiki.api.login, mediawiki.api.options, mediawiki.api.parse,
11707 mediawiki.api.upload, mediawiki.api.user, mediawiki.api.watch,
11708 mediawiki.api.messages, and mediawiki.api.rollback.
11709 * The 'jquery.byteLimit' module alias for 'jquery.lengthLimit',
11710 deprecated in 1.31, was removed.
11711 * Revision::fetchRevision(), deprecated in 1.28, was removed.
11712 * Class SquidUpdate, deprecated in 1.27, was removed.
11713 * Title->getSquidURLs(), deprecated in 1.27, was removed. Instead, use
11714 Title->getCdnUrls().
11715 * Title::escapeFragmentForURL(), deprecated in 1.30, was removed. Use
11716 Sanitizer::escapeIdForLink() or escapeIdForExternalInterwiki() instead.
11717 * Title->canTalk(), deprecated in 1.30, was removed. Instead, use
11718 Title->canHaveTalkPage().
11719 * Title's methods for site and user page related to CSS and JS, deprecated in
11720 1.31, were removed:
11721 * Title->isCssOrJsPage() — Use Title->isSiteConfigPage()
11722 * Title->isCssJsSubpage() – Use Title->isUserConfigPage()
11723 * Title->getSkinFromCssJsSubpage() – Use Title->getSkinFromConfigSubpage()
11724 * Title->isCssSubpage() – Use Title->isUserCssConfigPage()
11725 * Title->isJsSubpage() – Use Title->isUserJsConfigPage()
11726 * SiteSQLStore, deprecated in 1.27 and whose only method, ::newInstance(),
11727 would return the global SiteStore instance, has been removed. You can get to
11728 this via MediaWiki\MediaWikiServices::getInstance()->getSiteStore() directly.
11729 * Linker::formatSize, deprecated in 1.28, has been removed (with DummyLinker's).
11730 Instead, use Language->formatSize() with the relevant Language object.
11731 * Linker::formatTemplates, deprecated in 1.28, has been removed (along with the
11732 version in DummyLinker). You can use TemplatesOnThisPageFormatter directly.
11733 * EventRelayerGroup::singleton(), deprecated in 1.27, has been removed. You can
11734 use MediaWikiServices::getInstance()->getEventRelayerGroup() directly.
11735 * LinkCache->addLink(), deprecated in 1.27, has been removed. It is thought to
11736 be unused, and is distinct from OutputPage->addLink(), which remains.
11737 * JsonContent->getJsonData(), deprecated in 1.25, has been removed. Instead, use
11738 JsonContent->getData().
11739 * MWExceptionHandler::getLogId(), deprecated in 1.27, has been removed, as the
11740 exception ID is the same as the request ID, from WebRequest::getRequestId().
11741 * SearchEngine::getNearMatchResultSet(), deprecated in 1.27, has been removed.
11742 You can use SearchEngine::getNearMatcher() instead.
11743 * EmailNotification::updateWatchlistTimestamp, deprecated in 1.27, has been
11744 removed. Instead, use WatchedItemStore::updateNotificationTimestamp directly.
11745 * User::getGroupName() and ::getGroupMember(), both deprecated in 1.29, have
11746 been removed. Instead, please use UserGroupMembership::getGroupName() and
11747 UserGroupMembership::getGroupMemberName().
11748 * Backwards compatibility for setting wgSessionsInObjectCache to false or using
11749 wgSessionHandler, both of which were deprecated in 1.27 with the introduction
11750 of SessionManager, has been removed.
11751 * SessionManager::autoCreateUser, deprecated in 1.27, has been removed. Use
11752 MediaWiki\Auth\AuthManager::autoCreateUser instead.
11753 * The mw.libs.jpegmeta property, deprecated in 1.31, was removed.
11754 Use require( 'mediawiki.libs.jpegmeta' ) instead.
11755 * The mw.user.stickyRandomId() method, deprecated in 1.32, was removed.
11756 Use mw.user.getPageviewToken() instead.
11757 * Removed deprecated class property WikiRevision::$importer.
11758 * ResourceLoaderFileModule::readStyleFiles() now requires its $context
11760 * The ChangeList::insertArticleLink() method, that was deprecated in 1.27, has
11762 * MessageBlobStore::__construct() now requires its $rl parameter.
11763 * Second parameter to Sanitizer::escapeIdReferenceList() (deprecated in 1.31)
11765 * The 'jquery.xmldom' module has been removed.
11766 * The 'jquery.mockjax' module has been removed.
11767 * The 'jquery.hidpi' module, deprecated in 1.32, has been removed.
11768 * AuthPlugin and related code, deprecated in 1.27, has been removed. Extensions
11769 should instead use AuthManager. The following no longer exist:
11770 * The AuthPlugin class itself and the related AuthPluginUser class and i18n
11771 * The AuthPluginSetup and AuthPluginAutoCreate hooks
11772 * The transitional wrapper classes AuthPluginPrimaryAuthenticationProvider,
11773 AuthManagerAuthPlugin, and AuthManagerAuthPluginUser.
11774 * The $wgAuth configuration setting and its use in Setup.php and unit tests
11775 * (T217772) The 'wgAvailableSkins' mw.config key in JavaScript, was removed.
11776 * Language::markNoConversion, deprecated in 1.32, has been removed. Use
11777 LanguageConverter::markNoConversion instead.
11778 * BagOStuff::modifySimpleRelayEvent() method has been removed.
11779 * ParserOutput::getLegacyOptions, deprecated in 1.30, has been removed.
11780 Use ParserOutput::allCacheVaryingOptions instead.
11781 * CdnCacheUpdate::newSimplePurge, deprecated in 1.27, has been removed.
11782 Use CdnCacheUpdate::newFromTitles() instead.
11783 * Handling of multiple arguments by the Block constructor, deprecated in 1.26,
11785 * The translation of main page in Sardinian (sc) was changed from "Pàgina Base"
11786 to "Pàgina printzipale". Existing wikis using this content language need to
11787 move the main page or change the name through MediaWiki:Mainpage page.
11788 * wfSplitWikiID(), deprecated in 1.32, has been removed.
11789 * MessageBlobStore::getBlob(), deprecated in 1.27, has been removed.
11790 Use ::getBlobs() instead.
11791 * The .background-size() LESS mixin, deprecated in 1.27, has been removed.
11792 * ReadOnlyMode::clearCache() and ConfiguredReadOnlyMode::clearCache() have been
11793 removed. Use MediaWikiTestCase::overrideMwServices() instead.
11794 * Support for the 'aggregator' option of JobQueue (and thus $wgJobTypeConf) was
11795 removed. The JobQueueAggregator interface and JobQueueAggregatorRedis class
11796 have also been removed. They were experimentally developed for use by the
11797 Wikimedia Foundation, but were never used, with no known use cases. (Note that
11798 this does not affect JobQueueRedis which is still supported.)
11800 === Deprecations in 1.33 ===
11801 * The configuration option $wgUseESI has been deprecated, and is expected
11802 to be removed in a future release.
11803 * The configuration option $wgSquidPurgeUseHostHeader has been deprecated,
11804 and is expected to be removed in a future release.
11805 * The configuration options $wgFixArabicUnicode and $wgFixMalayalamUnicode,
11806 introduced in MW 1.17, have been deprecated. These fixes will always be
11807 applied for Arabic and Malayalam in the future. Please enable these on
11808 your local wiki (if you have them explicitly set to false) and run
11809 maintenance/cleanupTitles.php to fix any existing page titles.
11810 * The LegacyHookPreAuthenticationProvider class, deprecated since its creation
11811 in 1.27 as part of the AuthManager re-write, now emits deprecation warnings.
11812 This will help identify the issue if you added it to $wgAuthManagerConfig.
11813 * wfSplitWikiId() is now deprecated. Cache key generation should have the wiki
11814 domain ID as a key component and use makeGlobalKey().
11815 * (T202094) Title::getUserCaseDBKey() is deprecated; instead, please use
11816 Title::getDBkey(), which doesn't vary case.
11817 * User::getPasswordValidity() is now deprecated. User::checkPasswordValidity()
11818 returns the same information in a more useful format.
11819 * For Linker::generateTOC() and Linker::tocList(), passing strings or booleans
11820 as the $lang parameter was deprecated. The same applies to DummyLinker.
11821 * The PasswordPolicy 'PasswordCannotBePopular' has been deprecated. To
11822 follow best practices, it is reccommended to use 'PasswordNotInLargeBlacklist'
11823 instead which blacklists 100,000 commonly used passwords.
11824 * (T208862) Action::requiresUnblock() is now called from
11825 Title::getUserPermissionsErrors() and Title::userCan(). Previously, the method
11826 was only called in Action::checkCanExecute(). Actions should ensure that their
11827 requiresUnblock() returns the proper result (the default is `true`).
11828 * (T211608) The MediaWiki\Services namespace has been renamed to
11829 Wikimedia\Services. The old name is still supported, but deprecated.
11830 * (T155582) Content::getNativeData has been deprecated. Please use model-
11831 specific getters, such as TextContent::getText().
11832 * The class WebInstallerOutput is now marked as @private.
11833 * (T209699) The jquery.async module has been deprecated. JavaScript code that
11834 needs asynchronous behaviour should use Promises.
11835 * Password::equals() is deprecated, use verify().
11836 * BaseTemplate::msgWiki() and QuickTemplate::msgWiki() will be removed. Use
11837 other means to fetch a properly escaped message string or Message object.
11838 * (T126091) The 'ResourceLoaderTestModules' hook, which lets you declare QUnit
11839 testing code for your JavaScript modules, is deprecated. Instead, you can now
11840 use the new extension registration key 'QUnitTestModule'.
11841 * (T213426) The jquery.throttle-debounce module has been deprecated. JavaScript
11842 code that needs this behaviour should use OO.ui.debounce/throttle.
11843 * The mw.language.specialCharacters property from the
11844 'mediawiki.language.specialCharacters' module has been deprecated.
11845 Use require( 'mediawiki.language.specialCharacters' ) instead.
11846 * ChangeTags::purgeTagUsageCache() has been deprecated, and is expected to be
11847 removed in a future release.
11848 * Passing a User object or null as the third parameter to
11849 ApiBase::checkTitleUserPermissions() has been deprecated. Pass an array
11850 [ 'user' => $user ] instead.
11851 * (T211578) Block::prevents is deprecated. Use Block::isEmailBlocked,
11852 Block::isCreateAccountBlocked and Block::isUsertalkEditAllowed to get and set
11853 block properties; use Block::appliesToRight and Block::appliesToUsertalk to
11854 check block behaviour.
11855 * The api-feature-usage log channel now has log context. The text message is
11856 deprecated and will be removed in the future.
11857 * The FileBasedSiteLookup class has been deprecated. For a cacheable SiteLookup
11858 implementation, use CachingSiteStore instead.
11859 * Language::viewPrevNext function is deprecated, use
11860 SpecialPage::buildPrevNextNavigation instead
11861 * ManualLogEntry::setTags() is deprecated, use ManualLogEntry::addTags()
11862 instead. The setTags() method was overriding the tags, addTags() doesn't
11863 override, only adds new tags.
11864 * Block::isValid is deprecated, since it is no longer needed in core.
11865 * Calling Maintenance::hasArg() as well as Maintenance::getArg() with no
11866 parameter has been deprecated. Please pass the argument number 0.
11867 * ResourceLoaderContext::expandModuleNames has been deprecated.
11868 Use ResourceLoader::expandModuleNames instead.
11870 === Other changes in 1.33 ===
11871 * (T201747) Html::openElement() warns if given an element name with a space
11873 * The implementation of buildStringCast() in Wikimedia\Rdbms\Database has
11874 changed to explicitly cast. Subclasses relying on the base-class
11875 implementation should check whether they need to override it now.
11876 * BagOStuff::add is now abstract and must explicitly be defined in subclasses.
11877 * LinksDeletionUpdate is now a subclass of LinksUpdate. As a consequence,
11878 the following hooks will now be triggered upon page deletion in addition
11879 to page updates: LinksUpdateConstructed, LinksUpdate, LinksUpdateComplete.
11880 LinksUpdateAfterInsert is not triggered since deletions do not cause
11881 insertions into links tables.
11882 * Category::newFromID( $id )->getID() will now return $id without any
11883 validation, to avoid a mostly unnecessary DB query.
11884 * On Special:Version, the name for an extension can no longer be arbitrary
11885 html when no link is specified.
11889 == MediaWiki 1.32.6 ==
11891 This is a security and maintenance release of the MediaWiki 1.32 branch.
11893 === Changes since MediaWiki 1.32.5 ===
11894 * (T236628) Fix for ArticleRevisionViewCustom hook in DifferenceEngine.php.
11895 * (T181658) Do not insert page titles into querycache.qc_value.
11896 * (T206013) Suppress errors when reading invalid XML file properties.
11897 * (T237931) Remove references to pg_attrdef.adsrc in Postgres code.
11898 * Use correct value for 'sslmode' in DatabasePostgres.
11899 * (T232866) Fix support for HTTP/2 in MultiHttpClient.
11900 * (T227461) Stop calling deprecated Redis delete functions.
11901 * (T239561) Mark options as requiring parameters in addSite.php.
11902 * (T239734) Replace deprecated lSize with lLen in Redis code.
11903 * (T192134) SECURITY: Do not allow user scripts on Special:PasswordReset.
11904 * (T239428) ApiEditPage: Test for bad redirect targets.
11905 * (T233342) rdbms: Log debug message traces as 'exception.trace' instead of
11907 * (T226751) media: Log and fail gracefully on invalid EXIF coordinates.
11908 * (T212067) SECURITY: Work around PHP bug in parse_url.
11910 == MediaWiki 1.32.5 ==
11912 This is a maintenance release of the MediaWiki 1.32 branch.
11914 === Changes since MediaWiki 1.32.4 ===
11915 * Compute sha1 and length if needed in maintenance/populateContentTables.php.
11916 * Fix extra newlines in the installer.
11917 * Followup T230402, PermissionManager doesn't exist until 1.33, so fix the
11918 backported patches to use User::isAllowed() instead.
11920 == MediaWiki 1.32.4 ==
11922 This is a security and maintenance release of the MediaWiki 1.32 branch.
11924 === Changes since MediaWiki 1.32.3 ===
11925 * (T207100) Updated LanguageTr for dotted and dotless I in PHP 7.3.
11926 * The ImgAuthModifyHeaders hook was added to img_auth.php to allow modification
11927 of headers in private wikis.
11928 * (T230402) SECURITY: Add permission check for suppressed account to
11930 * (T208897) MessageCache: Restore 'loadedLanguages' tracking for load().
11931 * (T200088) Remove title protection correctly for undeletions and imports.
11932 * Add helper for HTTPFileStreamer header syntax.
11933 * (T118799) Fix XMP parser errors due to trailing nullchar.
11934 * (T233119) Improve documentation for the MinimumPasswordLengthToLogin policy.
11935 * Cache redirects from Special:Redirect.
11936 * (T231386) dispatchUser() should use a 302 http status code.
11937 * (T227662) Split down patch-comment-table.sql and patch-actor-table.sql into
11938 separate files to help allieviate potential migration problems.
11939 * Make SQLite's patch-add-3d.sql a no-op to prevent clobbering other database
11942 == MediaWiki 1.32.3 ==
11944 This is a maintenance release of the MediaWiki 1.32 branch.
11946 === Changes since MediaWiki 1.32.2 ===
11947 * (T225558) Update installer link to PHP intl.
11948 * (T225496) Detect APC for MainCacheType in CLI installer.
11949 * (T226766) Remove jetbrains/phpstorm-stubs from composer dev dependencies.
11950 * (T202211) Fix SQLite patch-(image|page|template)links-fix-pk.sql column order.
11952 == MediaWiki 1.32.2 ==
11954 This is a security and maintenance release of the MediaWiki 1.32 branch.
11956 === Changes since MediaWiki 1.32.1 ===
11957 * (T204423) Backport support for hyphenated DB names in JobQueueGroup.
11958 * (T216968) Return pageid as int in both list=iwbacklinks and
11959 list=langbacklinks.
11960 * (T215169) Fix for Database::update() with IGNORE option fails on PostgreSQL.
11961 * (T199474) Fix typo in rebuildrecentchanges.php resulting in rogue flags.
11962 * (T218608) SECURITY: Fix an issue that prevents Extension:OAuth working when
11963 $wgBlockDisablesLogin is true.
11964 * (T216029) Chrome redirects to Special:BadTitle after editing a section with
11965 a non-Latin name on a page with non-Latin characters in title.
11966 * Unbreak language related maintenance scripts that use StaticArrayWriter.
11967 * (T219728) Added support for new Japanese era name "Reiwa".
11968 * (T25227) SECURITY: action=logout now requires to be posted and have a csrf
11970 * Updated cssjanus/cssjanus from 1.2.0 to 1.3.0.
11971 * (T221045) Remove orphaned code from ConfigRepository.
11972 * (T222385) resourceloader: Use AND instead of OR for upsert conds in
11973 saveFileDependencies().
11974 * (T224374) Fix message parameters so that the message that says SQLite is
11975 out of date makes sense.
11976 * (T200471) Prevent LBFactorySimple breaking ExternalStorage, when trying to
11977 connect to external server with local database name.
11978 * (T197279) SECURITY: Fix reauth in Special:ChangeEmail.
11979 * (T208881) SECURITY: blacklist CSS var().
11980 * (T209794) SECURITY: rate-limit and prevent blocked users from changing email.
11981 * (T199540) SECURITY: API: Respect $wgBlockCIDRLimit in action=block.
11982 * (T212118) SECURITY: Fix cache mode for (un)patrolled recent changes query.
11983 * (T222036, T222038) SECURITY: Add permission check for user is permitted to
11985 * (T221739) SECURITY: resources: Patch jQuery 3.3.1 for CVE-2019-11358.
11987 == MediaWiki 1.32.1 ==
11989 === Changes since MediaWiki 1.32.0 ===
11990 * (T213577) rdbms: avoid transaction status errors from ping() in rollback().
11991 * rdbms: Pass required parameter.
11992 * rdbms: do not treat SAVEPOINT and RELEASE SAVEPOINT as write queries.
11993 * (T204531) rdbms: reduce LoadBalancer replication log spam.
11994 * (T213489) Avoid session double-start in Setup.php.
11995 * (T213717) Correct namespace 'Template' for gom-deva
11996 * (T198054) Fix login page crash caused by unknown language via ?uselang
11997 * (T215324) (T210937) list=users mistakenly reports user as missing.
11998 * (T209483) Add ILBFactory::redefineLocalDomain method. This is intended for
11999 use with scripts like addWiki.php to avoid mismatched domain errors.
12000 * (T208871) The hard-coded Google search form on the database error page was
12002 * (T204800) Fix Title::getFragmentForURL for bad interwiki prefix
12003 * (T215566) Fix installer being unable to determine if the database exists
12004 during a fresh installation.
12006 == MediaWiki 1.32.0 ==
12008 === Changes since MediaWiki 1.32.0-rc.2 ===
12009 * (T188327) Fix slow queries in migrateActors.php.
12010 * (T102320) Fix $magicWords for the Sanskrit language.
12012 === Changes since MediaWiki 1.32.0-rc.1 ===
12013 * Fix addition of ug_expiry column to user_groups table on MSSQL.
12014 * (T210307) Fix the cache timestamp for forced updates.
12015 * (T210621) User: Bypass repeatable-read when creating an actor_id.
12016 * (T197535) Extensions can now specify PHP versions and PHP extensions they
12018 * Updated wikimedia/ip-set from v1.2.0 to v1.3.0.
12019 * (T212356) When using action=delete on pages with many revisions, the module
12020 may return a boolean-true 'scheduled' and no 'logid'. This signifies that the
12021 deletion will be processed via the job queue.
12022 * (T64103) Dropped columns category.cat_hidden, site_stats.ss_admins, and
12023 recentchanges.rc_cur_time from the PostgreSQL schema.
12025 === Changes since MediaWiki 1.32.0-rc.0 ===
12026 * (T209885) Prevent populateSearchIndex.php from breaking once actor migration
12028 * (T210998) Properly set $wgLanguageCode in the generated LocalSettings.php
12029 if --lang is used with the command-line installer (install.php).
12031 === Configuration changes in 1.32 ===
12033 ==== New configuration ====
12034 * $wgJpegQuality – The quality of JPEG thumbnails is now configurable through
12035 this setting. The default is 80, which matches the quality of JPEG thumbnails
12036 previously generated by ImageMagick. The quality of JPEG thumbnails generated
12037 by GD was previously 95, but now uses the $wgJpegQuality setting as well.
12038 * $wgCookieSetOnIpBlock - This determines whether to set a cookie when an IP
12039 user is blocked. Doing so means that a blocked user, even after moving to a
12040 new IP address, will still be blocked.
12041 * $wgRawHtmlMessages – This new configuration setting is added for listing
12042 messages which are displayed as raw HTML.
12043 * $wgCSPHeader and $wgCSPReportOnlyHeader – You can now define a
12044 "Content Security Policy" for your wiki. This adds a defense-in-depth feature
12045 to stop an attacker who has found a bug in the parser allowing them to insert
12046 malicious attributes. Disabled by default. (T135963)
12047 * $wgGroupPermissions – A new user group, 'interface-admin', is added for
12048 controlling access to sitewide CSS/JS (and editing other users' CSS/JS). No
12049 other group has 'editsitecss', 'editusercss', 'editsitejs' or 'edituserjs'
12051 * $wgGrantPermissions – A new grant group, 'editsiteconfig', is added for
12052 granting the above rights.
12053 * $wgDBDefaultGroup – A default database group for use by maintenance scripts.
12054 * $wgResourceLoaderEnableJSProfiler – This new configuration setting lets you
12055 enable client-side profiling of JavaScript modules; it is off by default.
12056 * (T193868) $wgChangeTagsSchemaMigrationStage — This temporary configuration
12057 setting allows sysadmins to gradually migrate the database table schema for
12058 how change tags are stored.
12059 * (T199334) $wgTagStatisticsNewTable — This temporary configuration setting
12060 allows sysadmins to enable the caching of Special:Tags via the new
12061 change_tag_def table.
12063 ==== Changed configuration ====
12064 * $wgUseAjax – This setting, deprecated in 1.31, is now ignored.
12065 * $wgDefaultUserOptions – The default watchlist view time (watchlistdays) has
12066 been increased from 3 to 7 days. (T194414)
12067 * $wgGroupPermissions – The right to edit sitewide Javascript
12068 (e.g. MediaWiki:Common.js), CSS or JSON was separated from 'editinterface'
12069 and is available under 'editsitejs'/'editsitecss'/'editsitejson'. Having
12070 'editinterface' is still necessary to edit such pages.
12071 * $wgMultiContentRevisionSchemaMigrationStage now defaults to writing both the
12072 old and the new schema, but reading the new schema, so Multi-Content Revisions
12073 (MCR) are now functional by default. The new default value of the setting is
12074 SCHEMA_COMPAT_WRITE_BOTH | SCHEMA_COMPAT_READ_NEW.
12075 * $wgActorTableSchemaMigrationStage no longer accepts MIGRATION_WRITE_BOTH or
12076 MIGRATION_WRITE_NEW. It instead uses SCHEMA_COMPAT_WRITE_BOTH |
12077 SCHEMA_COMPAT_READ_OLD and SCHEMA_COMPAT_WRITE_BOTH | SCHEMA_COMPAT_READ_NEW
12078 for intermediate stages of migration.
12079 * $wgDBTableOptions – The default table options now use the binary charset. The
12080 default was already overridden in the installer-generated LocalSettings.php,
12081 and so is always set to binary after the installer UI option was removed. The
12082 default value is only used when the installer installs an extension.
12083 * $wgPopularPasswordFile — The location of the default popular passwords file
12084 has been moved to be in line with other non-PHP files used by libraries and
12086 * $wgEnableImageWhitelist is now disabled by default, as it opens up a hole for
12087 potential privacy leaks by administrators. You can check
12088 "MediaWiki:External image whitelist" on your wiki to see whether the feature
12089 was ever used, and whether it needs to be re-enabled.
12091 ==== Removed configuration ====
12092 * $wgEnableAPI and $wgEnableWriteAPI – These settings, deprecated in 1.31,
12093 have been removed. (T115414)
12094 * $wgSiteSupportPage – This setting, unused since 1.5, was removed.
12095 * $wgBrowserBlacklist – This setting, deprecated in 1.30, was removed.
12096 * $wgExperimentalHtmlIds – This setting, deprecated since 1.30, was removed.
12097 The 'html5-legacy' value for $wgFragmentMode is no longer accepted.
12098 * $wgPasswordSenderName - This setting, ignored since 1.23 by MediaWiki and
12099 most extensions, is no longer set. Instead, you can modify the system
12100 message `emailsender`.
12101 * $wgTidyConfig – The experimental Html5Internal and Html5Depurate tidy drivers
12102 were removed. RemexHtml, which is the default, should be used instead.
12103 * (T181318) The $wgStyleVersion setting and its appendage to various script and
12104 style URLs in OutputPage, deprecated in 1.31, was removed.
12105 * (T140807) The wgResourceLoaderLESSImportPaths configuration option was removed
12106 from ResourceLoader. Instead, use `@import` statements in LESS to import
12107 files directly from nearby directories within the same project.
12108 * (T140804) The wgResourceLoaderLESSVars configuration option, deprecated
12109 since 1.30, was removed. Instead, to expose variables from PHP to LESS, use
12110 the ResourceLoaderModule::getLessVars() method.
12111 * $wgResourceLoaderValidateStaticJS – This setting, unused since MediaWiki 1.18,
12113 * Two temporary variables for deploying the feature of filters on change lists,
12114 $wgStructuredChangeFiltersShowPreference introduced in MediaWiki 1.30 and
12115 $wgStructuredChangeFiltersOnWatchlist in 1.31, were removed.
12117 === New features in 1.32 ===
12118 * (T112474) Generalized the ResourceLoader mechanism for overriding modules
12119 using a particular page during edit previews.
12120 * (T12331) You can now log page creation events by setting $wgPageCreationLog
12122 * Added 'ApiParseMakeOutputPage' hook.
12123 * (T174313) Added checkbox on Special:ListUsers to display only users in
12124 temporary user groups.
12125 * (T152462) A cookie can now be set when an IP user is blocked to track that
12126 user if they move to a new IP address. This is disabled by default.
12127 * (T194950) Added 'ApiMaxLagInfo' hook.
12128 * SpecialPage::checkLoginSecurityLevel() will now preserve POST data when
12130 * FormSpecialPage::execute() will now call checkLoginSecurityLevel() if
12131 getLoginSecurityLevel() returns non-false.
12132 * The 'ImageBeforeProduceHTML' hook is now passed three new parameters, $parser,
12133 &$query and &$widthOption, allowing extensions even finer control over the
12134 resulting HTML code.
12135 * Added new 'ArticleShowPatrolFooter' hook, which allows extensions to determine
12136 if the [mark as patrolled] link should be shown at the footer of patrollable
12138 * The array of hidden options ($opts) passed to the 'SpecialSearchPowerBox' hook
12139 is now passed by reference, allowing extensions to modify or even unset it.
12140 * Added new 'OutputPageAfterGetHeadLinksArray' hook, allowing extensions to
12141 modify the return value of OutputPage#getHeadLinksArray in order to add,
12142 remove or otherwise alter the elements to be output in the page <head>.
12143 * (T28934) The 'HistoryPageToolLinks' hook allows extensions to append
12144 additional links to the subtitle of a history page.
12145 * The 'GetLinkColours' hook now receives an additional $title parameter,
12146 the Title object of the page being parsed, on which the links will be shown.
12147 * (T194731) DifferenceEngine supports multiple slots. Added SlotDiffRenderer to
12148 render diffs between two Content objects, and DifferenceEngine::setRevisions()
12149 to render diffs between two custom (potentially multi-content) revisions.
12150 Added GetSlotDiffRenderer hook which works like GetDifferenceEngine for slots.
12151 * Added a temporary action=mcrundo to the web UI, as the normal undo logic
12152 can't yet handle MCR and deadlines are forcing is to put off fixing that.
12153 This action should be considered deprecated and should not be used directly.
12154 * Extensions overriding ContentHandler::getUndoContent() will need to be
12155 updated for the changed method signature.
12156 * Added a new hook, 'UserGetRightsRemove', which can be used to remove rights
12157 from user. Unlike the 'UserGetRights' it will ensure that removed rights
12158 will not be reinserted.
12159 * (T197535) Extensions can now specify PHP versions and PHP extensions they
12162 === External library changes in 1.32 ===
12164 ==== New external libraries ====
12165 * Added pear/Net_SMTP v1.8.0.
12166 * Added wikimedia/xmp-reader v0.6.0.
12168 * Added cache/integration-tests v0.16.0 (dev-only).
12169 * Added giorgiosironi/eris v0.10.0 (dev-only).
12170 * Added seld/jsonlint v1.7.1 (dev-only).
12172 * Added EasyDeflate (unversioned).
12174 ==== Changed external libraries ====
12175 * Updated OOUI from v0.26.3 to v0.29.2.
12176 * Updated wikimedia/base-convert from v1.0.1 to v2.0.0.
12177 * Updated wikimedia/remex-html from v1.0.3 to v2.0.1.
12178 * Updated wikimedia/scoped-callback from v1.0.0 to v2.0.0.
12179 ** ScopedCallback objects can no longer be serialized.
12180 * Updated wikimedia/timestamp from v1.0.0 to v2.2.0.
12181 * Updated wikimedia/wrappedstring from v2.3.0 to v3.0.1.
12182 * oyejorge/less.php replaced with our fork wikimedia/less.php
12183 * Updated wikimedia/ip-set from v1.2.0 to v1.3.0.
12185 * Updated composer/spdx-licenses from v1.3.0 to v1.4.0 (dev-only).
12186 * Updated mediawiki/mediawiki-codesniffer from v18.0.0 to v22.0.0 (dev-only).
12187 * Updated psy/psysh from v0.8.11 to v0.9.6 (dev-only).
12189 * Updated CLDRPluralRuleParser from v0.1.0 to v1.3.2-pre.
12190 * Updated jquery from v3.2.1 to v3.3.1.
12191 * Updated jquery.client from v2.0.0 to v2.0.1.
12192 * Updated jquery.i18n from v1.0.4 to v1.0.5.
12193 * Updated mustache.js from v0.8.2-d9aa703 to v1.0.0.
12194 * Updated OOjs from v2.2.0 to v2.2.2.
12195 * Updated qunitjs from v2.4.0 to v2.6.2.
12196 * Updated sinonjs from v1.17.3 to v1.17.7.
12198 ==== Removed external libraries ====
12199 * pear/mail_mime-decode was removed.
12201 === Bug fixes in 1.32 ===
12202 * SpecialPage::execute() will now only call checkLoginSecurityLevel() if
12203 getLoginSecurityLevel() returns non-false.
12204 * (T43720, T46197) Improved page display title handling for category pages
12205 * (T65080) Fixed resetting options of some types via API action=options.
12207 === Action API changes in 1.32 ===
12208 * Added templated parameters.
12209 * A module can define a templated parameter like "{fruit}-quantity", where
12210 the actual parameters recognized correspond to the values of a multi-valued
12211 parameter. Then clients can make requests like
12212 "fruits=apples|bananas&apples-quantity=1&bananas-quantity=5".
12213 * action=paraminfo will return templated parameter definitions separately
12214 from normal parameters. All parameter definitions now include an "index"
12215 key to allow clients to maintain parameter ordering when merging normal and
12216 templated parameters.
12217 * It is now an error to submit too many values for a multi-valued parameter.
12218 This has generated a warning since MediaWiki 1.14.
12219 * Assertion failures from the 'assert' and 'assertuser' parameters will no
12220 longer use the action module's custom response format, for the few modules
12221 that use custom formatters that handle errors.
12222 * (T198935) User list preferences such as `email-blacklist` and similar
12223 extension preferences are no longer represented as arrays when returned by
12224 action=query&meta=userinfo&uiprop=options.
12225 * 'missingparam' errors will now use the prefixed parameter name in the code
12226 and error text, e.g. "noxxfoo" and "The 'xxfoo' parameter must be set" rather
12227 than "nofoo" and "The 'foo' parameter must be set".
12228 * action=query&prop=revisions now takes a 'rvslots' parameter to indicate the
12229 multi-content revision slots for which content should be returned. It also
12230 has a new rvprop, 'roles', to indicate which roles have slots. A deprecation
12231 warning will be issued if rvprop=content or rvprop=contentmodel are used
12233 * The rvcontentformat parameter to action=query&prop=revisions has been
12234 deprecated. Clients should be prepared to deal with the default format for
12236 * Use of the deprecated parameters rvexpandtemplates, rvgeneratexml, rvparse,
12237 rvdiffto, rvdifftotext, rvdifftotextpst, rvcontentformat, or the deprecated
12238 rvprop=parsetree is forbidden with the new 'rvslots' parameter.
12239 * action=query&prop=deletedrevisions, action=query&list=allrevisions, and
12240 action=query&list=alldeletedrevisions are changed similarly to
12241 &prop=revisions (see the three previous items).
12242 * (T174032) action=compare now supports multi-content revisions.
12243 * It has a 'slots' parameter to select diffing of individual slots. The
12244 default behavior is to return one combined diff.
12245 * The 'fromtext', 'fromsection', 'fromcontentmodel', 'fromcontentformat',
12246 'totext', 'tosection', 'tocontentmodel', and 'tocontentformat' parameters
12247 are deprecated. Specify the new 'fromslots' and 'toslots' to identify which
12248 slots have text supplied and the corresponding templated parameters for
12250 * The behavior of 'fromsection' and 'tosection' of extracting one section's
12251 content is not being preserved. 'fromsection-{slot}' and 'tosection-{slot}'
12252 instead expand the given text as if for a section edit. This effectively
12253 declines T183823 in favor of T185723.
12254 * (T198214) The 'disabletidy' parameter to action=parse has been
12255 deprecated; untidy output will not be supported by future wikitext
12257 * Added intestactionsdetail to action=query&prop=info to allow retrieving the
12258 reasons an action is not allowed.
12259 * Deprecated action=query&prop=info inprop=readable in favor of
12260 intestactions=read.
12261 * (T212356) When using action=delete on pages with many revisions, the module
12262 may return a boolean-true 'scheduled' and no 'logid'. This signifies that the
12263 deletion will be processed via the job queue.
12265 === Action API internal changes in 1.32 ===
12266 * Added 'ApiParseMakeOutputPage' hook.
12267 * Parameter names may no longer contain '{' or '}', as these are now used for
12268 templated parameters.
12269 * (T194950) Added 'ApiMaxLagInfo' hook.
12270 * The following methods now take a RevisionRecord rather than a Revision. No
12271 external callers are known.
12272 * ApiFeedContributions::feedItemAuthor()
12273 * ApiFeedContributions::feedItemDesc()
12274 * ApiQueryRevisionsBase::extractRevisionInfo()
12275 * The following deprecated methods have been removed:
12276 * ApiBase::profileIn() (deprecated in 1.25)
12277 * ApiBase::profileOut() (deprecated in 1.25)
12278 * ApiBase::safeProfileOut() (deprecated in 1.25)
12279 * ApiBase::profileDBIn() (deprecated in 1.25)
12280 * ApiBase::profileDBOut() (deprecated in 1.25)
12281 * ApiBase::dieUsage() (deprecated in 1.29)
12282 * ApiBase::dieUsageMsg() (deprecated in 1.29)
12283 * ApiBase::dieUsageMsgOrDebug() (deprecated in 1.29)
12284 * ApiBase::getErrorFromStatus() (deprecated in 1.29)
12285 * ApiBase::parseMsg() (deprecated in 1.29)
12286 * ApiBase::setWarning() (deprecated in 1.29)
12287 * ApiPageSet::getInvalidTitles() (deprecated in 1.26)
12288 * ApiQueryLogEvents::addLogParams() (deprecated in 1.25)
12289 * ApiUsageException::getCodeString() (deprecated in 1.29)
12290 * ApiUsageException::getMessageArray() (deprecated in 1.29)
12291 * Class UsageException, deprecated in 1.29, has been removed.
12292 * ApiErrorFormatter: Added getFormat() and newWithFormat(). In particular, you
12293 can now easily test $formatter->getFormat() === 'bc', and then call
12294 $formatter->newWithFormat( 'plaintext' ) to get a non-BC formatter.
12296 === Languages updated in 1.32 ===
12297 MediaWiki supports over 350 languages. Many localisations are updated regularly.
12298 Below only new and removed languages are listed, as well as changes to languages
12299 because of Phabricator reports.
12301 * (T193566) Added language support for Ambonese Malay (abs).
12302 * (T194047) Added language support for Shawiya, Latin script (shy-latn).
12303 * (T195940) Added language support for Batak Mandailing (btm).
12304 * (T137491) Added language support for Standard Moroccan Amazigh (zgh).
12305 * (T198132) Added language support for Manipuri (mni).
12306 * (T201276) Added language support for Western Armenian (hyw).
12307 * (T201583) Added language support for Mon (mnw).
12309 === Breaking changes in 1.32 ===
12310 * $wgRequestTime, deprecated in 1.25, was removed. Use
12311 $_SERVER['REQUEST_TIME_FLOAT'] or WebRequest::getElapsedTime() instead.
12312 * The MediaWikiI18N class, deprecated in 1.31, was removed.
12313 * QuickTemplate::setTranslator(), deprecated in 1.31, was removed. Use
12314 Skin::msg() instead.
12315 * wfInitShellLocale(), deprecated in 1.30, was removed.
12316 * wfShellExecDisabled(), deprecated in 1.30, was removed.
12317 * The type string for the parameter $lang of DateFormatter::getInstance,
12318 deprecated in 1.31, was removed.
12319 * The EDIT_TOKEN_SUFFIX constant deprecated in 1.27, was removed. Use
12320 MediaWiki\Session\Token::SUFFIX instead.
12321 * EditPage::isOouiEnabled() deprecated in 1.30, was removed.
12322 * mw.util.wikiGetlink(), deprecated in 1.23, was removed. Use mw.util.getUrl()
12324 * (T61113) The following methods and constants from the Revision class, which
12325 were deprecated in 1.25, have now been removed:
12326 * Revision::getRawUser()
12327 * Revision::getRawUserText()
12328 * Revision::getRawComment()
12329 * window.gM() from mediawiki.jqueryMsg, deprecated in 1.23, was removed. Use
12330 mw.msg() or mw.message() instead.
12331 * mw.util.escapeId(), deprecated in 1.30, was removed. Use
12332 mw.util.escapeIdForAttribute or mw.util.escapeIdForLink instead.
12333 * mw.util.updateTooltipAccessKeys(), deprecated in 1.24, was removed. Use
12334 jquery.accessKeyLabel instead.
12335 * The SqlDataUpdate class, deprecated in 1.28, has been removed.
12336 * The Html5Internal and Html5Depurate tidy driver classes were removed, along
12337 with the Balancer tidy implementation. Both implementations were experimental,
12338 and were replaced by RemexHtml.
12339 * (T179624) Job::insert() and ::batchInsert(), deprecated in 1.21, were both
12340 removed. Use JobQueueGroup::singleton()->push() instead.
12341 * The jquery.footHovzer module, for mediawiki.debug, was removed.
12342 * The es5-shim module, empty and deprecated since 1.29, was removed.
12343 * the dom-level2-shim module, empty and deprecated since 1.29, was removed.
12344 * the json module, empty and deprecated since 1.29, was removed.
12345 * The mediawiki.widgets.visibleByteLimit module alias, deprecated in 1.32, was
12346 removed. Use mediawiki.widgets.visibleLengthLimit instead.
12347 * The jquery.farbtastic module, unused since 1.18, was removed.
12348 * The 'jquery.expandableField' module, unused since 1.22, was removed.
12349 * The hooks 'PreferencesFormPreSave' and 'PreferencesGetLegend' may provide
12350 any HTMLForm object rather than PreferencesForm.
12351 * The non namespaced TimestampException class, deprecated in 1.29, was removed.
12352 Use Wikimedia\Timestamp\TimestampException instead.
12353 * The global functions codepointToUtf8, hexSequenceToUtf8, utf8ToHexSequence,
12354 utf8ToCodepoint, and escapeSingleString (deprecated in 1.25) were removed.
12355 The UtfNormal\Utils class from the utfnormal library should be used instead.
12356 * The deprecated UTF8_ and UNICODE_ constants were removed. The class constants
12357 from the UtfNormal\Constants class from the utfnormal library should be used
12358 * The protected methods PHPSessionHandler::returnSuccess() and returnFailure(),
12359 only needed for PHP5 compatibility, have been removed. It now uses the boolean
12360 values `true` and `false` respectively.
12361 * The $parserMemc global and wfGetParserCacheStorage(), deprecated since 1.30,
12362 were removed. Use the ParserCache class instead.
12363 * ScopedCallback (deprecated in 1.28) was removed. Use Wikimedia\ScopedCallback
12365 * Support for ResourceLoaderModule::getModifiedTime() and getModifiedHash(),
12366 deprecated since 1.26, was removed. Use getDefinitionSummary() instead.
12367 * (T195256) Skins are recommended not to rely on JavaScript for the "mw-jump"
12368 and "jump-to-nav" accessibility links. To this end, the "jquery.mw-jump"
12369 is no longer loaded by default. The Vector and MonoBook skins have made a
12370 minor change to implement the toggle feature with CSS instead. To restore
12371 prior functionality, either explicitly load "jquery.mw-jump" in your skin
12372 or refer to T195256 for details on how to make the same change.
12373 * Hook 'EditPageBeforeEditChecks' was removed;
12374 use 'EditPageGetCheckboxesDefinition' instead.
12375 * Linker::getLinkColour() and DummyLinker::getLinkColour(), deprecated since
12376 1.28, were removed. LinkRenderer::getLinkClasses() should be used instead.
12377 * Wikimedia\Rdbms\LoadBalancer::getLaggedSlaveMode(), deprecated in 1.28, has
12378 been removed. Use Wikimedia\Rdbms\LoadBalancer::getLaggedReplicaMode()
12380 * mw.widgets.CategoryMultiselectWidget now uses TagMultiselectWidget instead of
12381 CapsuleMultiselectWidget. The following methods may no longer be used:
12382 * setItemsFromData: Use setValue instead
12383 * getItemsData: Use getItems instead and get the data property
12384 * Two OutputPage methods, addMetadataLink() and getMetadataAttribute(), were
12385 removed. Use addLink() instead.
12386 * Another two OutputPage methods, setPageTitleActionText() and
12387 getPageTitleActionText(), were removed. They did nothing since 1.15 (almost
12388 ten years). Use setHTMLTitle() directly.
12389 * The return value of OutputPage::adaptCdnTTL() has been removed. The
12390 value returned was misleading and probably not what any caller would
12392 * All MagicWord static member variables have been removed. Use appropriate
12393 hooks or MagicWordFactory methods instead.
12394 * MagicWord::clearCache() has been removed. Instead, create a new
12395 MagicWordFactory, such as by calling
12396 resetServiceForTesting( 'MagicWordFactory' ) on a MediaWikiServices.
12397 * mw.util.init() has been removed. This function is not needed anymore and was
12398 a no-op function since 1.30.
12399 * SpecialPageFactory::resetList() is a no-op. Call overrideMwServices()
12401 * MediaWiki no longer supports a StartProfiler.php file. Instead, you can set
12402 $wgProfiler and $wgEnableProfileInfo.
12403 * The mw.loader.addSource() is now considered a private method, and no longer
12404 supports the `id, url` signature. Use the `Object` parameter instead.
12405 * The backwards-compatibility code in HTMLForm to add a drop-down control to an
12406 option that is not set to be a drop-down if the "mw-chosen" class is present,
12408 * Several collations were removed. They were workarounds for bugs in the ICU
12409 library and they are no longer needed (as of ICU 57.1):
12410 * 'uppercase-se' (NorthernSamiUppercaseCollation) - use 'uca-se' instead
12411 * 'xx-uca-et' (CollationEt) - use 'uca-et' instead
12412 * 'xx-uca-fa' (CollationFa) - use 'uca-fa' instead
12413 * LanguageCode::bcp47() now always returns a valid BCP 47 code. This means
12414 that some MediaWiki-specific language codes, such as `simple`, are mapped
12415 into valid BCP 47 codes (eg `en-simple`).
12416 * The hooks 'SpecialRecentChangesFilters' & 'SpecialWatchlistFilters' deprecated
12417 in 1.23 were removed. Instead, use 'ChangesListSpecialPageStructuredFilters'.
12418 The ChangesListSpecialPage code for these legacy hooks, and their use in
12419 SpecialRecentchanges.php and SpecialWatchlist, was also removed:
12420 * ChangesListSpecialPage->getCustomFilters()
12421 * ChangesListSpecialPage->getFilterGroupDefinitionFromLegacyCustomFilters()
12422 * ChangesListSpecialPage::customFilters
12423 * The global function wfUseMW, deprecated since 1.26, has now been removed. Use
12424 the "requires" property of static extension registration instead.
12425 * $wgSpecialPages no longer accepts array syntax, deprecated since 1.18.
12426 * The MailAddress constructor can no longer be called with a User object,
12427 behaviour which has been deprecated since 1.24.
12428 * LBFactory, deprecated since 1.28, has been removed. Instead, use
12429 Wikimedia\Rdbms\LBFactory.
12430 * The MimeMagic class, deprecated since 1.28 has been removed. Get a
12431 MimeAnalyzer instance from MediaWikiServices instead.
12432 * The '--tidy' option to maintenance/parse.php has been removed. Tidying
12433 the output is now the default. Use '--no-tidy' to bypass the tidy
12435 * The global function wfErrorLog, deprecated since 1.25, has now been removed.
12436 Use MWLoggerLegacyLogger::emit or UDPTransport.
12437 * The hooks 'SpecialRecentChangesQuery' & 'SpecialWatchlistQuery', deprecated in
12438 1.23, were removed. Instead, use ChangesListSpecialPageStructuredFilters or
12439 ChangesListSpecialPageQuery.
12440 * The global function wfUsePHP, deprecated since 1.30, has now been removed. To
12441 assert a newer version of PHP than MediaWiki does, use extension registration.
12442 * The hook 'ChangesListSpecialPageFilters', deprecated in 1.29, has now been
12443 removed. Use the 'ChangesListSpecialPageStructuredFilters' hook instead.
12444 * DeferredUpdates::setImmediateMode(), deprecated since 1.29, has been removed.
12445 * File / MediaHandler::getStreamHeaders(), deprecated since 1.30, was removed.
12446 * The hook 'DoEditSectionLink', deprecated since 1.25, has been removed. Use
12447 the hook 'SkinEditSectionLinks' instead.
12448 * The hook 'UserGetImplicitGroups', deprecated since 1.25, has been removed.
12449 * The global function wfRunHooks, deprecated since 1.25, has now been removed.
12451 * The hook 'UnknownAction', deprecated since 1.19, has now been removed.
12452 * The hook 'ParserLimitReport', deprecated since 1.22, has been removed. Use
12453 the hooks 'ParserLimitReportPrepare' and 'ParserLimitReportFormat' instead.
12454 * The following deprecated API methods have been removed:
12455 * ApiBase::profileIn() (deprecated in 1.25)
12456 * ApiBase::profileOut() (deprecated in 1.25)
12457 * ApiBase::safeProfileOut() (deprecated in 1.25)
12458 * ApiBase::profileDBIn() (deprecated in 1.25)
12459 * ApiBase::profileDBOut() (deprecated in 1.25)
12460 * ApiBase::dieUsage() (deprecated in 1.29)
12461 * ApiBase::dieUsageMsg() (deprecated in 1.29)
12462 * ApiBase::dieUsageMsgOrDebug() (deprecated in 1.29)
12463 * ApiBase::getErrorFromStatus() (deprecated in 1.29)
12464 * ApiBase::parseMsg() (deprecated in 1.29)
12465 * ApiBase::setWarning() (deprecated in 1.29)
12466 * ApiPageSet::getInvalidTitles() (deprecated in 1.26)
12467 * ApiQueryLogEvents::addLogParams() (deprecated in 1.25)
12468 * ApiUsageException::getCodeString() (deprecated in 1.29)
12469 * ApiUsageException::getMessageArray() (deprecated in 1.29)
12470 * Class UsageException, deprecated in 1.29, has been removed.
12471 * MediaWiki no longer has a 'JavaScript-powered' wikitext toolbar built in. The
12472 old "bulletin board style toolbar", known as "the 2006 wikitext editor", has
12473 been removed, and instead sysadmins will be required to choose one (or more)
12474 of the several extensions available for this purpose if they need the
12475 functionality. The MediaWiki "tarball" releases have included the replacement
12476 extension for this, the WikiEditor extension aka "the 2010 wikitext editor",
12477 for many years now. As part of this, several parts of MediaWiki have been
12478 removed or simplified:
12479 * The user option 'showtoolbar' (shown as "Show edit toolbar") is no longer
12480 available; if an extension adds a toolbar via the EditPageBeforeEditToolbar
12481 hook, it will be shown; extensions should provide a specific user preference
12482 to disable themselves as needed.
12483 * The public methods Language::getImageFile() and ::getImageFiles(), and the
12484 related specification of $imageFiles within individual languages' code file,
12485 as well as the referenced static media assets, all of which were only used
12486 inside MediaWiki itself for providing the icons for the old toolbar, have
12487 been removed without explicit deprecation.
12488 * The internal ResourceLoader module "mediawiki.toolbar", which is unused
12489 except by MediaWiki itself and back-compatibility code, has been removed.
12490 * The internal ResourceLoaderEditToolbarModule class has been removed.
12492 === Deprecations in 1.32 ===
12493 * HTMLForm::setSubmitProgressive() is deprecated. No need to call it. Submit
12494 button is already marked as progressive.
12495 * Skin::setupSkinUserCss() is deprecated. Adding of modules to load
12496 has been centralised to Skin::getDefaultModules(), which is now capable
12497 of queueing style modules as well.
12498 * OutputPage::addModuleScripts() and ParserOutput::addModuleScripts are
12499 deprecated. Use addModules() instead.
12500 * Overriding SearchEngine::{searchText,searchTitle,searchArchiveTitle}
12501 in extending classes is deprecated. Extend related doSearch* methods
12503 * The following 'mediawiki.api' plugin modules were merged into mediawiki.api
12504 and deprecated: mediawiki.api.category, mediawiki.api.edit,
12505 mediawiki.api.login, mediawiki.api.options, mediawiki.api.parse,
12506 mediawiki.api.upload, mediawiki.api.user, mediawiki.api.watch,
12507 mediawiki.api.messages, and mediawiki.api.rollback.
12508 * ApiBase::truncateArray() is deprecated. No replacement, as nothing is known
12510 * WatchAction::getUnwatchToken is deprecated. Use WatchAction::getWatchToken
12511 with the 'unwatch' action parameter instead.
12512 * IcuCollation::getICUVersion() is deprecated, as you can just use the PHP
12513 constant INTL_ICU_VERSION directly in all versions that MediaWiki supports.
12514 * Parser::fetchFile() is deprecated. Use ::fetchFileAndTitle() instead.
12515 * The ApiQueryContributions class has been renamed to ApiQueryUserContribs.
12516 * The XMPInfo, XMPReader, and XMPValidate classes have been deprecated in favor
12517 of the namespaced classes provided by the wikimedia/xmp-reader library.
12518 * SearchResultSet::{next,rewind} are deprecated. Calling code should
12519 use foreach on the SearchResultSet, or the extractResults method. Extending
12520 code should override extractResults.
12521 * Instantiating SearchResultSet directly is deprecated. SearchEngine
12522 implementations must subclass SearchResultSet for their purposes.
12523 * SearchResult::setExtensionData argument has been changed from accepting an
12524 array to accepting a Closure that returns the array when called.
12525 * Class CryptRand, everything in MWCryptRand except generateHex() and function
12526 MediaWikiServices::getInstance()->getCryptRand() are deprecated, use
12527 random_bytes() to generate cryptographically secure random byte sequences.
12528 * Parser::getConverterLanguage() is deprecated. Use ::getTargetLanguage()
12530 * Language::markNoConversion() is deprecated. It confused readers because
12531 it had unexpected behavior (only marking text if it looked like a URL)
12532 and was only used in a single place in the code. Use
12533 LanguageConverter::markNoConversion() instead.
12534 * (T197492) Language::truncate() was soft deprecated in 1.31 and is
12535 hard deprecated in this release. It has been split into two similar
12536 methods, Language::truncateForVisual() and Language::truncateForDatabase(),
12537 which measure length in characters and bytes, respectively. Use
12538 Language::truncateForVisual() when possible to provide equity to users
12539 of multibyte scripts.
12540 * (T176526) EditPage::getContextTitle() falling back to $wgTitle when the
12541 context title is unset is now deprecated; anything creating an EditPage
12542 instance should set the context title via ::setContextTitle().
12543 * The 'jquery.hidpi' module (polyfill for IMG srcset) is deprecated.
12544 * ResourceLoaderStartUpModule::getStartupModules() and ::getLegacyModules()
12545 are deprecated. These concepts are obsolete and have no replacement.
12546 * String type for $lang of DifferenceEngine::setTextLanguage is deprecated.
12547 * The following methods of OutputPage are now deprecated in favour
12548 of using showFatalError directly: OutputPage::showFileDeleteError()
12549 OutputPage::showFileNotFoundError(), OutputPage::showFileRenameError()
12550 OutputPage::showFileCopyError() and OutputPage::showUnexpectedValueError().
12551 * The Replacer, DoubleReplacer, HashtableReplacer, and RegexlikeReplacer
12552 classes are now deprecated. Use a Closure instead.
12553 * (T194263) ContentHandler::makeParserOptions() is deprecated. Use
12554 WikiPage::makeParserOptions() or ParserOptions::newCanonical() instead.
12555 * (T100681) Use of the Parsoid v1 API with the VirtualRESTService, deprecated in
12556 MediaWiki 1.26, is now hard-deprecated. All known clients were converted to
12557 the Parsoid v3 API in May 2015.
12558 * $input is deprecated in hook 'LogEventsListGetExtraInputs'. Use
12559 $formDescriptor instead.
12560 * SearchEngine::transformSearchTerm( $term ) should no longer be called prior
12561 to running searchText. This method was mainly implemented to support the
12562 'prefix' URI param in SpecialSearch, but there are no reasons to expose this
12563 logic as it should be handled internally by SearchEngine implementations
12564 supporting this feature. SearchEngine implementations should no longer
12565 override this methods.
12566 * SearchEngine::replacePrefixes( $query ) should no longer be called prior
12567 to running searchText/searchTitle.
12568 * (T199657) Messages for $wgFilterLogTypes labels should be no longer be in the
12569 'log-show-hide-[type]' format. Instead use 'logeventslist-[type]-log'.
12570 * Global functions wfArrayFilter() and wfArrayFilterByKey() are deprecated.
12571 use array_filter() directly.
12572 * The $wgShowSQLErrors global is deprecated and nonfunctional.
12573 Set $wgShowExceptionDetails and/or $wgShowHostnames instead.
12574 * The $wgShowDBErrorBacktrace global is deprecated and nonfunctional.
12575 Set $wgShowExceptionDetails instead.
12576 * Public access to the DifferenceEngine properties mOldid, mNewid, mOldRev,
12577 mNewRev, mOldPage, mNewPage, mOldContent, mNewContent, mRevisionsLoaded,
12578 mTextLoaded and mCacheHit is deprecated. Use getOldid() / getNewid() /
12579 getOldRevision() / getNewRevision() for the first four (note that the
12580 revision ones return a RevisionRecord, not a Revision), do your own lookup
12582 * The $wgExternalDiffEngine value 'wikidiff2' is deprecated. To use wikidiff2
12583 just enable the PHP extension, and it will be autodetected.
12584 * (T194731) DifferenceEngine properties mOldContent and mNewContent and methods
12585 setContent(), generateContentDiffBody(), generateTextDiffBody() and textDiff()
12586 are deprecated. To interact with a single slot, use a SlotDiffRenderer (and
12587 subclass it to customize diff rendering); to diff custom (e.g. unsaved)
12588 content, use setRevisions(). Subclassing DifferenceEngine should only be done
12589 to customize page-level diff properties (such as the navigation header).
12590 * The wfUseMW function, soft-deprecated in 1.26, is now hard deprecated.
12591 * All MagicWord static methods are now deprecated. Use the MagicWordFactory
12593 * PasswordFactory::init is deprecated. To get a password factory with the
12594 standard configuration, use
12595 MediaWikiServices::getInstance()->getPasswordFactory.
12596 * $wgContLang is deprecated, use
12597 MediaWikiServices::getInstance()->getContentLanguage() instead.
12598 * $wgParser is deprecated, use MediaWikiServices::getInstance()->getParser()
12600 * wfGetMainCache() is deprecated, use ObjectCache::getLocalClusterInstance()
12602 * wfGetCache() is deprecated, use ObjectCache::getInstance() instead.
12603 * All SpecialPageFactory static methods are deprecated. Instead, call the
12604 methods on a SpecialPageFactory instance, which may be obtained from
12606 * mw.user.stickyRandomId was renamed to the more explicit
12607 mw.user.getPageviewToken to better capture its function.
12608 * Passing Revision objects to ContentHandler::getUndoContent() is deprecated,
12609 Content object should be passed instead.
12610 * (T197179) Parameters 'notice', 'notice-messages', 'notice-message',
12611 previously used by OOUI HTMLForm fields, are now deprecated. Use
12612 'help', 'help-message', 'help-messages' instead.
12613 * (T197179) HTMLFormField::getNotices() is now deprecated.
12614 * The jquery.localize module is now deprecated. Use jquery.i18n instead.
12615 * The SecondaryDataUpdates hook was deprecated in favor of RevisionDataUpdates,
12616 or overriding ContentHandler::getSecondaryDataUpdates (T194038).
12617 * The WikiPageDeletionUpdates hook was deprecated in favor of
12618 PageDeletionDataUpdates, or overriding ContentHandler::getDeletionDataUpdates
12620 * Content::getSecondaryDataUpdates has been deprecated in favor of
12621 ContentHandler::getSecondaryDataUpdates() for overriding by extensions
12623 Application logic should call WikiPage::doSecondaryDataUpdates() (T194037).
12624 * Content::getDeletionUpdates has been deprecated in favor of
12625 ContentHandler::getDeletionUpdates() for overriding by extensions (T194038).
12626 Application logic should call WikiPage::doSecondaryDataUpdates() (T194037).
12627 * (T198214) Old Tidy-related configuration settings, which were soft-deprecated
12628 in MediaWiki 1.26, have now been hard deprecated. This affects $wgUseTidy,
12629 $wgTidyBin, $wgTidyConf, $wgTidyOpts, $wgTidyInternal, and $wgDebugTidy. Use
12630 $wgTidyConfig instead.
12631 * All Tidy configurations other than Remex have been hard deprecated;
12632 future parsers will not emit compatible output for these configurations.
12633 In particular, running MediaWiki with tidy disabled has been deprecated.
12634 * (T198214) OutputPage::addWikiText(), OutputPage::addWikiTextWithTitle(),
12635 and OutputPage::addWikiTextTitle() have been deprecated, since they
12636 can result in untidy output. In addition OutputPage::addWikiTextTidy()
12637 and OutputPage::addWikiTextTitleTidy() was deprecated to make naming new
12638 methods consistent. Use OutputPage::addWikiTextAsInterface() or
12639 OutputPage::addWikiTextAsContent() instead, which ensures the output is
12640 tidy and clarifies whether content-language specific postprocessing should
12641 be done on the text.
12642 * OutputPage::parse() and OutputPage::parseInline() have been deprecated
12643 due to untidy output and inconsistent handling of wrapper divs and
12644 interface/content language defaults. Use OutputPage::parseAsContent(),
12645 OutputPage::parseAsInterface(), or OutputPage::parseInlineAsInterface()
12647 * QuickTemplate::msgHtml() and BaseTemplate::msgHtml() have been deprecated
12648 as they promote bad practises. I18n messages should always be properly
12650 * Skin::getDynamicStylesheetQuery() has been deprecated. It always
12651 returns action=raw&ctype=text/css which callers should use directly.
12652 * Class LegacyFormatter is deprecated.
12653 * Use of CommentStore::insertWithTempTable() with 'img_description' is
12654 deprecated. Use CommentStore::insert() instead.
12655 * Language::setCode is deprecated as public function. Use Language::factory
12656 to create a new Language object with a different language code.
12657 * Several classes have been moved from the MediaWiki\Storage\ namespace to the
12658 MediaWiki\Revision\ namespace. The old class names are aliased for
12659 compatibility, but are deprecated. Classes are IncompleteRevisionException,
12660 MutableRevisionRecord, MutableRevisionSlots, RevisionAccessException,
12661 RevisionArchiveRecord, RevisionFactory, RevisionLookup, RevisionRecord,
12662 RevisionSlots, RevisionStore, RevisionStoreRecord, SlotRecord, and
12663 SuppressedDataException.
12664 * When using OOUI HTMLForm containing an 'info' field which uses the 'rawrow'
12665 option, it is now deprecated to give its contents (the 'default' option)
12666 as a string. They should be given as a OOUI\FieldLayout object instead.
12667 Notably, this affects fields defined in the 'GetPreferences' hook, because
12668 Special:Preferences uses an OOUI form now. (If possible, don't use 'rawrow'.)
12669 * In Skin::doEditSectionLink omitting the parameters $tooltip and $lang is
12670 deprecated. For the $lang parameter, types other than Language are
12672 * The $wgUseKeyHeader configuration option and the
12673 OutputPage::getKeyHeader() method have been deprecated; the relevant
12674 draft IETF spec expired without becoming a standard.
12675 * Deprecated API action=query&prop=info inprop=readable in favor of
12676 intestactions=read.
12678 === Other changes in 1.32 ===
12679 * (T198811) The following tables have had their UNIQUE indexes turned into
12680 proper PRIMARY KEYs for increased maintainability: interwiki, page_props,
12681 protected_titles and site_identifiers.
12682 * OOUI HTMLForm will now display help text inline after the input field,
12683 rather than in a popup. Previous behavior can be restored by using
12684 `'help-inline' => false`.
12685 * The archive table's ar_rev_id field is now unique.
12686 * Special:BotPasswords now requires reauthentication.
12687 * (T174023) Multi-Content Revision (MCR) capabilities were introduced into the
12688 storage layer and have basic support for display. No user interface exists
12689 yet for creating or managing content in slots beides the main slot. See
12690 <https://www.mediawiki.org/wiki/Multi-Content_Revisions> for more
12692 * The image_comment_temp database table has been removed. Since all access
12693 should be mediated by the CommentStore class, this change shouldn't affect
12695 * (T206147) Database::close() will no longer commit any open transactions.
12696 * (T64103) Dropped columns category.cat_hidden, site_stats.ss_admins, and
12697 recentchanges.rc_cur_time from the PostgreSQL schema.
12701 == MediaWiki 1.31.16 ==
12703 This is a security and maintenance release of the MediaWiki 1.31 branch.
12705 This is intended to be the final release of the MediaWiki 1.31 branch,
12706 and as such, 1.31 is now considered End of Life.
12708 === Changes since MediaWiki 1.31.15 ===
12709 * (T283273) Make postgres IRC channel point to libera.chat.
12710 * (T289108) ExtensionProcessor: Remove loaderScripts from
12711 extension.json schemas.
12712 * (T285515, CVE-2021-41798) SECURITY: XSS vulnerability in
12714 * (T290379, CVE-2021-41799) SECURITY: ApiQueryBacklinks can cause a full
12716 * (T284419, CVE-2021-41800) SECURITY: fix PoolCounter protection of
12717 Special:Contributions.
12719 == MediaWiki 1.31.15 ==
12721 This is a security and maintenance release of the MediaWiki 1.31 branch.
12723 === Changes since MediaWiki 1.31.14 ===
12724 * (T270988) Fixup issues in SpecialChangeContentModel.php.
12725 * (T278026) rdbms: Add DB_PRIMARY to replace DB_MASTER.
12726 * (T276945) Define a batch size in maintenance/manageJobs.php.
12727 * (T276945) Implement JobQueueDB::getAllAbandonedJobs.
12728 * (T281549) WebInstaller: Don't show the announce-l subscribe
12729 checkbox temporarily.
12730 * (T283247) Freenode -> Libera per wikimedia moving from
12731 freenode to libera.
12732 * (T280226, CVE-2021-35197) SECURITY: Prevent blocked users from
12735 == MediaWiki 1.31.14 ==
12737 This is a maintenance release of the MediaWiki 1.31 branch.
12739 === Changes since MediaWiki 1.31.13 ===
12740 * Make Title implement IDBAccessObject.
12742 == MediaWiki 1.31.13 ==
12744 This is a security and maintenance release of the MediaWiki 1.31 branch.
12746 === Changes since MediaWiki 1.31.12 ===
12747 * (T115436) resourceloader: CSSMin::getLocalFileReferences now strips
12749 * Updating php-parallel-lint/php-parallel-lint (0.9.2 => 1.0.0).
12750 * Updating mediawiki/codesniffer (19.1.0 => 19.4.0).
12751 * DefaultSettings.php: Update $wgPingback documentation.
12752 * PHPVersionCheck: The PHP Group only supports PHP >= 7.3.0.
12753 * (T275261) Escape wikitext in the title in invalid title error messages.
12754 * (T277009, CVE-2021-30158) SECURITY: Allow blocked users to access
12755 Special:ResetTokens.
12756 * pageExist.php: Output trailing newlines.
12757 * (T278058, CVE-2021-30157) SECURITY: Escape rcfilters-filter-* messages
12758 on ChangesList pages.
12759 * (T277414) HTMLFormField: Use non namespaced class name rather than
12761 * (T268230) Switch to new MediaWiki logo by Serhio Magpie.
12762 * (T271735) Expand config-pingback-help, link to privacy policy in
12764 * Fix documentation of user-global in $wgRateLimits.
12765 * BackupDumper: Add -o as shortcode for --output.
12766 * (T278014, CVE-2021-30154) SECURITY: Escape mediastatistics-header-*
12767 messages on Special:NewFiles.
12768 * (T270713, CVE-2021-30152) SECURITY: Allow user to only apply protection
12769 they have right to do so via action=protect.
12770 * (T272386, CVE-2021-30159) SECURITY: Non-admin deleted enwiki page in
12772 * (T270988, CVE-2021-30155) SECURITY: ContentModelChange: Check that user
12774 * (T276843, CVE-2021-20270, CVE-2021-27291) SECURITY:
12775 SyntaxHighlight_GeSHi: Various lexers have been disabled due to DoS
12778 == MediaWiki 1.31.12 ==
12780 This is a maintenance release of the MediaWiki 1.31 branch.
12782 === Changes since MediaWiki 1.31.11 ===
12783 * Fixed issues relating to User::isRegistered() not existing in 1.31.
12785 == MediaWiki 1.31.11 ==
12787 This is a security and maintenance release of the MediaWiki 1.31 branch.
12789 === Changes since MediaWiki 1.31.10 ===
12790 * Fix undefined $wgRedirectOnLogin.
12791 * (T251661, T265313) CentralIdLookup::factoryNonLocal can return null.
12792 * (T263592) media: Fix case of FlashPixVersion in
12793 FormatMetadata::makeFormattedData().
12794 * (T265223) BaseTemplate: Guard against passing zero arg to array_merge().
12795 * (T266418) composer.json: add requirement for composer-plugin-api ^1.1.
12796 * (T260631, T260633), BotPassword::save() now returns a Status object for the
12797 result rather than a bool. The length of the bot password grants and
12798 restriction fields are now validated, and an error will be thrown if it
12799 would be truncated by the database.
12800 * (T264536, T233012) SectionProfiler: Do not attempt to use null values as
12802 * (T269178) MemcachedClient: Cast Resource to integer.
12803 * (T268917, CVE-2020-35475) SECURITY: Use Xml::element in SpecialUserrights for
12805 * (T268938, CVE-2020-35479) SECURITY: BlockLogFormatter can output raw html.
12806 * (T205908, CVE-2020-35477) SECURITY: Unable to change visibility of log entries
12807 when MediaWiki:Mainpage uses Special:MyLanguage.
12808 * (T120883, CVE-2020-35480) SECURITY: Divergent behavior for contributions and
12809 user pages of hidden users and missing users.
12811 == MediaWiki 1.31.10 ==
12813 This is a maintenance release of the MediaWiki 1.31 branch.
12815 === Changes since MediaWiki 1.31.9 ===
12816 * Fixed issues relating to backporting of changes for T260485.
12818 == MediaWiki 1.31.9 ==
12820 This is a security and maintenance release of the MediaWiki 1.31 branch.
12822 === Changes since MediaWiki 1.31.8 ===
12823 * In the web installer, use secure session cookies.
12824 * (T257207) shell: Expand documentation in firejail.profile.
12825 * Added $wgForceHTTPS, which makes the HTTP to HTTPS redirect be unconditional
12826 and suppresses various hacks needed to support mixed HTTP/HTTPS wikis. We
12827 recommend this be set to true on pure HTTPS wikis.
12828 * Added $wgCookieSameSite, which allows login cookies to be sent with
12829 SameSite=None. This is required for cross-site CentralAuth autologin after
12831 * Added $wgUseSameSiteLegacyCookies, which adds a compatibility hack to
12832 SameSite=None cookies for browsers which implemented an incompatible draft
12833 version of the specification.
12834 * (T191537) Disable WebResponse setters for post-send processing.
12835 * (T198525) WebReponse: Use values altered in 'WebResponseSetCookie' hook.
12836 * Fix runBatchedQuery.php for no result from select.
12837 * (T130906) Add Edge to MediaWiki:Clearyourcache.
12838 * Use IPset in MWRestrictions::checkIP.
12839 * (T260031) Add application/font-sfnt to MimeMap for ttf files.
12840 * shell: Make ->restrict( RESTRICT_NONE ) actually work.
12841 * (T183759) Fixes shell edge-cases in Windows.
12842 * (T258390) Add CentralIdLookup::factoryNonLocal().
12843 * (T246991) User: Fix pingLimiter() to use makeGlobalKey() for global rate
12845 * (T251661, CVE-2020-25827) SECURITY: User::pingLimiter: add user-global rate
12847 * (T246991) User: enforce pingLimiter() expiry time.
12848 * (T260232) don't include null page ids in query list for category dumps.
12849 * (T251506) Sanitizer: Truncate IDs to a reasonable length.
12850 * Explicitly wrap some XML calls in libxml_disable_entity_loader().
12851 * (T263455 T247285) Set EnableJavaScriptTest to true in
12852 includes/DevelopmentSettings.php.
12853 * (T232568, CVE-2020-25813) SECURITY: Special:UserRights exposes the existence
12855 * (T258763, CVE-2020-17367, CVE-2020-17368) SECURITY: Prevent invoking
12856 firejail's --output functionality.
12857 * (T86738, CVE-2020-25814) SECURITY: mediawiki.jqueryMsg: Sanitize URLs and
12859 * (T115888, CVE-2020-25828) SECURITY: mediawiki.js: Escape HTML in
12860 mw.message( ... ).parse().
12861 * (T260485, CVE-2020-25869) SECURITY: ActorMigration: Load user from the correct
12863 * (T260485, CVE-2020-25869) SECURITY: ensure actor ID from correct wiki is used.
12865 == MediaWiki 1.31.8 ==
12867 This is a security and maintenance release of the MediaWiki 1.31 branch.
12869 === Changes since MediaWiki 1.31.7 ===
12870 * (T199809) Don't invalidate BotPasswords if a password reset email is sent.
12871 * (T247017) PasswordReset performance improvements.
12872 * (T250568) Work around change in SimpleXMLElement behavior introduced in PHP
12874 * Remove some rotten and out of date documentation.
12875 * (T252311) Improvements to some older SQLite update patches.
12876 * (T240307) Minor fixes to extension.schema.v2.json and
12877 extension.schema.v1.json.
12878 * (T199474) Set rc_patrolled to 2 for autopatrolled changes in
12879 rebuildrecentchanges.php.
12880 * (T229461) Update the change_tag table in rebuildrecentchanges.php.
12881 * (T206476) Call ob_start() before running tests.
12882 * (T234450) Per-user concurrency in SpecialContributions can now be limited by
12883 setting $wgPoolCounterConf['SpecialContributions'] appropriately.
12884 * (T248947) SECURITY: img_auth.php may leak private extension images into the
12887 == MediaWiki 1.31.7 ==
12889 This is a security and maintenance release of the MediaWiki 1.31 branch.
12891 === Changes since MediaWiki 1.31.6 ===
12892 * (T193565, T234022) Re-add DB domain sanity checks to LoadBalancer.
12893 * Use proper SemVer comparison in CheckComposerLockUpToDate.
12894 * (T212738) Add the MW_VERSION constant, global $wgVersion is soft deprecated.
12895 * Update comment about PHP versions supported by The PHP Group.
12896 * (T247215) Fix output of RecountCategories::doWork().
12897 * Add check for page existence to view.php maintenance script.
12898 * (T247580) Disable some broken Selenium tests.
12899 * (T236509) SECURITY: Fix HTML escaping in UserGroupMembership::getLink().
12900 * (T246602) SECURITY: jquery.makeCollapsible allows applying event handler to
12903 == MediaWiki 1.31.6 ==
12905 This is a security and maintenance release of the MediaWiki 1.31 branch.
12907 === Changes since MediaWiki 1.31.5 ===
12908 * (T181658) Do not insert page titles into querycache.qc_value.
12909 * (T206013) Suppress errors when reading invalid XML file properties.
12910 * (T237931) Remove references to pg_attrdef.adsrc in Postgres code.
12911 * Use correct value for 'sslmode' in DatabasePostgres.
12912 * (T232866) Fix support for HTTP/2 in MultiHttpClient.
12913 * (T227461) Stop calling deprecated Redis delete functions.
12914 * (T239561) Mark options as requiring parameters in addSite.php.
12915 * (T239734) Replace deprecated lSize with lLen in Redis code.
12916 * (T192134) SECURITY: Do not allow user scripts on Special:PasswordReset.
12917 * (T239428) ApiEditPage: Test for bad redirect targets.
12918 * (T233342) rdbms: Log debug message traces as 'exception.trace' instead of
12920 * (T226751) media: Log and fail gracefully on invalid EXIF coordinates.
12921 * (T212067) Work around PHP bug in parse_url.
12923 == MediaWiki 1.31.5 ==
12925 This is a maintenance release of the MediaWiki 1.31 branch.
12927 === Changes since MediaWiki 1.31.4 ===
12928 * Fix extra newlines in installer.
12929 * Followup T230402, PermissionManager doesn't exist until 1.33, so fix the
12930 backported patches to use User::isAllowed() instead.
12932 == MediaWiki 1.31.4 ==
12934 This is a security and maintenance release of the MediaWiki 1.31 branch.
12936 === Changes since MediaWiki 1.31.3 ===
12937 * (T207100) Updated LanguageTr for dotted and dotless I in PHP 7.3.
12938 * The ImgAuthModifyHeaders hook was added to img_auth.php to allow modification
12939 of headers in private wikis.
12940 * (T230402) SECURITY: Add permission check for suppressed account to
12942 * Add helper for HTTPFileStreamer header syntax.
12943 * (T118799) Fix XMP parser errors due to trailing nullchar.
12944 * (T233119) Improve documentation for the MinimumPasswordLengthToLogin policy.
12945 * (T202183) Give more specific error messages on Special:Redirect.
12946 * Cache redirects from Special:Redirect.
12947 * (T231386) dispatchUser() should use a 302 http status code.
12948 * (T227662) Split down patch-comment-table.sql and patch-actor-table.sql into
12949 separate files to help allieviate potential migration problems.
12950 * Make SQLite's patch-add-3d.sql a no-op to prevent clobbering other database
12953 == MediaWiki 1.31.3 ==
12955 This is a maintenance release of the MediaWiki 1.31 branch.
12957 === Changes since MediaWiki 1.31.2 ===
12958 * (T225558) Update installer link to PHP intl.
12959 * (T225496) Detect APC for MainCacheType in CLI installer.
12960 * (T226766) Remove jetbrains/phpstorm-stubs from composer dev dependencies.
12961 * (T202211) Fix SQLite patch-(image|page|template)links-fix-pk.sql column order.
12963 == MediaWiki 1.31.2 ==
12965 This is a security and maintenance release of the MediaWiki 1.31 branch.
12967 Required PHP version has been increased from 7.0.0 to 7.0.13.
12969 === Changes since MediaWiki 1.31.1 ===
12970 * (T204729) WatchedItemStore::countVisitingWatchersMultiple() shouldn't query
12971 all titles when asked for none.
12972 * (T205967) Fix syntax error typo in postgres database upgrade file.
12973 * (T200254) Add pear/Net_SMTP 1.7.3 to composer dependencies.
12974 * (T206765) Load installer i18n when running update.php.
12975 * (T109121) Remove deprecated pear/mail_mime-decode from composer suggested
12977 [Also in the bundled composer /vendor directory.]
12978 * Various PHP 7.2 and 7.3 compatibility fixes:
12979 * (T200595, T206974) Fix PHP 7.3 warnings of using "continue" in some
12980 scenarios instead of "break".
12981 * (T206976, T206977) Also in the bundled LocalisationUpdate and
12982 ParserFunctions extensions.
12983 * (T206979) Fix PHP 7.3 warnings of using "compact()" when some variables may
12985 * (T215632) FormatMetadata and UploadStash regexes fixed to be PHP
12987 * Fix PHP warnings "preg_replace(): [...] invalid range in character class.
12988 * Avoid PHP 7.2 warnings in DBConRefTest about count() on non-Countable.
12989 * Suppress "Headers already sent" in PHP 7.2 too.
12990 * (T206476) Output only to stderr in unit tests.
12991 * (T207112) Add session_write_close() calls to SessionManager tests.
12992 * oyejorge/less.php replaced with our fork wikimedia/less.php
12993 * (T209756) Updated wikimedia/ip-set from 1.2.0 to 1.3.0.
12994 * (T213489) Avoid session double-start in Setup.php.
12995 * (T206975) Switch to our fork of less.php.
12996 * (T207540) Include IP address in "Login for $1 succeeded" log entry.
12997 * (T201781) Database: Allow selectFieldValues() to accept SQL fragments.
12998 * (T205765) installer: Don't link to the obsolete "Extension Matrix" page.
12999 * (T206013) Update ImportableUploadRevisionImporter for interwiki usernames.
13000 * (T207541) Pass an email address, not a MailAddress, to mail().
13001 * (T207603) SECURITY: User JS may no longer be loaded with mime type
13002 text/javascript if there is no account associated with the username.
13003 * (T112937, T113042) SECURITY: Do not allow loading pages raw with a
13004 text/javascript MIME
13005 type if non-admins can edit the page.
13006 * (T17491) <ins>/<del> elements can be phrasing or flow.
13007 * (T200827) RemexCompatMunger: Don't call endTag() in case B/b
13008 * (T207088) Upgrade wikimedia/remex-html to 2.0.1.
13009 [Also in the bundled composer /vendor directory.]
13010 * (T194052) Updated wikimedia/base-convert from 1.0.1 to 2.0.0.
13011 [Also in the bundled composer /vendor directory.]
13012 * (T199494) Fix notices in maintenance/removeUnusuedAccounts.php.
13013 * Require ext-fileinfo in composer.json, per PHPVersionCheck.
13014 * (T176390) Bundled LocalisationUpdate extension: Handle exceptions from
13016 * (T208255) Completion search should not change the search query.
13017 * (T209870) Fix SQL syntax error in MS-SQL initialisation file for new wikis.
13018 * (T185049) LogFormatter: Fail softer when trying to link an invalid titles.
13019 * (T210998) Properly set $wgLanguageCode in the generated LocalSettings.php
13020 if --lang is used with the command-line installer (install.php).
13021 * (T211061) ImageListPager: Actor migration for buildQueryConds().
13022 * (T209335) Clarify the default sidebar 'Help' link is about MediaWiki itself.
13023 * Fix addition of ug_expiry column to user_groups table on MSSQL.
13024 * (T204767) Add join conditions to ActiveUsersPager.
13025 * (T210621) User: Bypass repeatable-read when creating an actor_id.
13026 * (T204531) rdbms: reduce LoadBalancer replication log spam.
13027 * (T195525) Fix db error outage page.
13028 * (T208871) The hard-coded Google search form on the database error page was
13030 * (T176097) Fix flaky MessageBlobStoreTest assertion failures.
13031 * (T209423) Update required PHP version to 7.0.13.
13032 * (T209885) Prevent populateSearchIndex.php from breaking once actor migration
13034 * (T216968) Return pageid as int in both list=iwbacklinks and
13035 list=langbacklinks.
13036 * (T215169) Fix for Database::update() with IGNORE option fails on PostgreSQL.
13037 * (T204423) Backport support for hyphenated DB names in JobQueueGroup.
13038 * (T199474) Fix typo in rebuildrecentchanges.php resulting in rogue flags.
13039 * (T218608) SECURITY: Fix an issue that prevents Extension:OAuth working when
13040 $wgBlockDisablesLogin is true.
13041 * (T216029) Chrome redirects to Special:BadTitle after editing a section with
13042 a non-Latin name on a page with non-Latin characters in title.
13043 * (T219728) Added support for new Japanese era name "Reiwa".
13044 * (T25227) SECURITY: action=logout now requires to be posted and have a csrf
13046 * Updated cssjanus/cssjanus from 1.2.0 to 1.3.0.
13047 * (T222385) resourceloader: Use AND instead of OR for upsert conds in
13048 saveFileDependencies().
13049 * (T224374) Fix message parameters so that the message that says SQLite is out
13050 of date makes sense.
13051 * SpecialPage::checkLoginSecurityLevel() will now preserve POST data when
13053 * FormSpecialPage::execute() will now call checkLoginSecurityLevel() if
13054 getLoginSecurityLevel() returns non-false.
13055 * (T197279) SECURITY: Fix reauth in Special:ChangeEmail.
13056 * (T208881) SECURITY: blacklist CSS var().
13057 * (T209794) SECURITY: rate-limit and prevent blocked users from changing email.
13058 * (T199540) SECURITY: API: Respect $wgBlockCIDRLimit in action=block.
13059 * (T212118) SECURITY: Fix cache mode for (un)patrolled recent changes query.
13060 * (T222036, T222038) SECURITY: Add permission check for user is permitted to
13062 * (T221739) SECURITY: resources: Patch jQuery 3.2.1 for CVE-2019-11358.
13064 == MediaWiki 1.31.1 ==
13066 This is a security and maintenance release of the MediaWiki 1.31 branch.
13068 === Changes since MediaWiki 1.31.0 ===
13069 * (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides
13071 * (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's
13073 * (T199029, CVE-2018-13258) SECURITY: Tarball was missing .htaccess files.
13074 * (T197229) Bundle Nuke extension, it was accidentally omitted.
13075 * (T193995) Fix undefined patchPath() method call in parser tests.
13076 * (T198687) Fix various selectFields methods to use the string 'NULL', not null.
13077 * Special:BotPasswords now requires reauthentication.
13078 * (T191608, T187638) Add 'logid' parameter to Special:Log.
13079 * (T193829) Indicate when a Bot Password needs reset.
13080 * (T198037) GitInfo: Don't try shelling out if it's disabled.
13081 * (T151415) Log email changes.
13082 * (T197206) Fix performance regression when multiple DB used without caching.
13083 * (T197030) PHPSessionHandler: Suppress headers warnings in initialize().
13084 * (T182377, T196793) Exif: Guard against uncountable tag values.
13085 * (T200861) Fix total breakage of SQLite web upgrade.
13086 * (T200864) Fix pingback over-reporting on non-MySQL databases
13087 * (T202550) Unbreak SpecialListusersHeaderForm and SpecialListusersHeader
13090 == MediaWiki 1.31.0 ==
13092 === Changes since MediaWiki 1.31.0-rc.2 ===
13093 * (T195783) Initialize PSR-4 namespaces at same stage as normal autoloader.
13094 * (T196092) Hide MySQL binary/utf-8 charset option in the installer.
13095 * (T196185) Don't allow setting $wgDBmysql5 in the installer.
13096 * (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported.
13097 * (T182366) UploadBase::checkXMLEncodingMissmatch() now works on PHP 7.1+
13098 * (T118683) Fix exception from &$user deref on HHVM in the TitleMoveComplete
13100 * (T196672) The mtime of extension.json files is now able to be zero
13101 * (T180403) Validate $length in padleft/padright parser functions.
13102 * (T143790) Make $wgEmailConfirmToEdit only affect edit actions.
13104 === Changes since MediaWiki 1.31.0-rc.0 ===
13105 * (T33223) Drop archive.ar_text and ar_flags.
13106 * Add default edit rate limit of 90 edits/minute for all users.
13107 * (T187645) Use codepoint as tiebreaker when getting first-letters in
13109 * (T191947) Don't shell during the installer if shelling out is disabled.
13110 * (T194319) Improve duplicate config setting exception as part of extension
13112 * (T195211) Don't require trailing slash in PSR-4 autoloader directory.
13113 * (T186565) Fix PHP Notice from `ob_end_flush()` in `FileRepo::streamFile()`.
13114 * Do not incorrectly hide namespace input field in the installer.
13115 * (T186456) Refactor checks looking for PEAR maik libraries to be clearer.
13117 === Important pre-upgrade notes for 1.31 ===
13118 * If you're using MySQL, SQLite, or MSSQL, are not using update.php to apply
13119 schema changes, and cannot have downtime to run migrateArchiveText.php and
13120 apply patch-drop-ar_text.sql manually, you'll have to apply a default value
13121 to the ar_text and ar_flags columns of the archive table or make those
13122 columns nullable before upgrading to MediaWiki 1.31.
13123 maintenance/archives/patch-nullable-ar_text.sql shows how to do this for
13126 === Configuration changes in 1.31 ===
13127 * $wgEnableAPI and $wgEnableWriteAPI are now deprecated and will be removed in
13128 a future version. The API is now considered to be stable, secure and
13130 * $wgUsejQueryThree was removed, as it is now the default. This was documented
13131 as a temporary variable during the migration period, deprecated since 1.29.
13132 * $wgLogoHD has been updated to support svg images and uses $wgLogo where
13133 possible for fallback images such as png.
13134 * (T44246) $wgFilterLogTypes will no longer ignore 'patrol' when user does not
13135 have the right to mark things patrolled.
13136 * Wikis that contain imported revisions or CentralAuth global blocks should run
13137 maintenance/cleanupUsersWithNoId.php.
13138 * The configuration settings $wgResourceLoaderMinifierStatementsOnOwnLine and
13139 $wgResourceLoaderMinifierMaxLineLength, deprecated since 1.27, were removed.
13140 * (T180921) $wgReferrerPolicy now supports having fallbacks for browsers that
13141 are not using the latest version of the Referrer Policy specification.
13142 * $wgFragmentMode is now set to [ 'legacy', 'html5' ] by default. This is a
13143 first step of migration to human-readable section IDs that will later result
13144 in 'html5' being the default mode.
13145 * CACHE_ACCEL now only supports APC(u) or WinCache. XCache support was removed
13146 as upstream is inactive and has no plans to move to PHP 7.
13147 * The old CategorizedRecentChanges feature, including its related configuration
13148 option $wgAllowCategorizedRecentChanges, has been removed.
13149 * (T188472) The 'comma' value for $wgArticleCountMethod is no longer supported
13150 for performance reasons, and installations with this setting will now work as
13151 if it was configured with 'any'.
13152 * (T185753) MediaWiki now defaults to using RemexHtml to tidy up user input,
13153 rather than being off by default. If you wish to disable HTML tidying
13154 entirely, set $wgTidyConfig to null; if you wish to use the old, deprecated
13155 Tidy external binary, both set $wgTidyConfig to null and $wgUseTidy to true.
13156 * $wgLogAutopatrol now defaults to false instead of true.
13157 * $wgValidateAllHtml was removed and will be ignored.
13158 * $wgScriptExtension, deprecated and ignored since 1.25, was removed. See the
13159 1.25 release notes for more information.
13160 * $wgUseAjax is now marked as deprecated, just like the deprecated AJAX
13161 framework that it enables. Some extensions mistakenly used this to check
13162 whether any AJAX functionality at all should be enabled, further making this
13163 problematic to retain.
13164 * $wgDBmysql5 is now deprecated, and will be removed in a future version. It
13165 has been marked as experimental ever since it was introduced.
13167 === New features in 1.31 ===
13168 * (T76554) User sub-pages named ….json are now protected in the same way that
13169 ….js and ….css pages are, so that configuration options can safely be placed
13171 * Wikimedia\Rdbms\IDatabase->select() and similar methods now support joins
13172 with parentheses for grouping.
13173 * As a first pass in standardizing dialog boxes across the MediaWiki product,
13174 Html class now provides helper methods for messageBox, successBox, errorBox
13175 and warningBox generation.
13176 * (T9240) Imports will now record unknown (and, optionally, known) usernames in
13177 a format like "iw>Example".
13178 * (T20209) Linker (used on history pages, log pages, and so on) will display
13179 usernames formed like "iw>Example" as interwiki links, as if by wikitext like
13180 [[iw:User:Example|iw>Example]].
13181 * (T111605) The 'ImportHandleUnknownUser' hook allows extensions to auto-create
13182 users during an import.
13183 * Added a hook, ParserOutputPostCacheTransform, to allow extensions to affect
13184 the ParserOutput::getText() post-cache transformations.
13185 * Added a hook, UploadForm:getInitialPageText, to allow extensions to alter the
13186 initial page text for file uploads.
13187 * (T181651) The info page for File pages now displays the file's base-16 SHA1
13188 hash value in the table of basic information.
13189 * Style tags with a 'data-mw-deduplicate' attribute will be deduplicated as a
13190 ParserOutput::getText() post-cache transformation. This may be disabled by
13191 passing 'deduplicateStyles' => false to that method.
13192 * The identity of the logged-in or IP "actor" for logged actions is being moved
13193 into a new actor table, with the rows in tables such as revision and logging
13194 referring to the actor ID instead of storing the user ID and name/IP in
13196 * This is currently gated by $wgActorTableSchemaMigrationStage. Most wikis
13197 can set this to MIGRATION_NEW and run maintenance/migrateActors.php as
13198 soon as any necessary extensions are updated.
13199 * Most code accessing rows for logged actions from the database should use
13200 the relevant getQueryInfo() methods to get the information needed to build
13201 the SQL query. The ActorMigration class may also be used to get feature
13202 -flagged information needed to access actor-related fields during the
13204 * Added Wikimedia\Rdbms\IDatabase::cancelAtomic(), to roll back an atomic
13205 section without having to roll back the whole transaction.
13206 * Wikimedia\Rdbms\IDatabase::doAtomicSection(), non-native ::insertSelect(),
13207 and non-MySQL ::replace() and ::upsert() no longer roll back the whole
13208 transaction on failure.
13209 * (T189785) Added a monthly heartbeat ping to the pingback feature.
13210 * The CLI installer (maintenance/install.php) learned to detect and include
13211 extensions. Pass --with-extensions to enable that feature.
13212 * (T184791) rc_patrolled now has three states: "0" for unpatrolled,
13213 "1" for manually patrolled and "2" for autopatrolled actions.
13214 * Extensions can now set their type to "editor" if they provide an editor or
13215 enhance the editing experience.
13216 * Extensions can use a PSR-4 autoloader by setting an "AutoloadNamespaces"
13217 property in extension.json. See the documentation at
13218 <https://mediawiki.org/wiki/Manual:Extension.json/Schema#AutoloadNamespaces>
13219 for more details and an example.
13220 * (T19099) Tabs which link to pages that don't exist (like those to uncreated
13221 discussion pages) now have a tooltip to indicate state, not just colour.
13223 === External library changes in 1.31 ===
13224 * pear/mail, pear/mail_mime and pear/mail_mime-decode have been moved from
13225 suggested to required. These packages now must be installed via composer
13226 and not via PEAR itself.
13228 ==== Upgraded external libraries ====
13229 * Updated jquery.chosen from v0.9.14 to v1.8.2.
13230 * Updated composer/spdx-licenses from 1.1.4 to 1.3.0 (development dependency).
13231 * Updated nikic/php-parser from 2.1.0 to 3.1.3 (development dependency).
13232 * Updated wikimedia/ip-set from 1.1.0 to 1.2.0.
13233 * Updated wikimedia/relpath from 2.0.0 to 2.1.1.
13234 * Updated wikimedia/running-stat from 1.1.0 to 1.2.0.
13235 * Updated wikimedia/wrappedstring from 2.2.0 to 2.3.0.
13236 * Updated mediawiki/at-ease from 1.1.0 to 1.2.0.
13237 * Updated wikimedia/php-session-serializer from 1.0.4 to 1.0.6.
13238 * Updated wikimedia/remex-html from 1.0.2 to 1.0.3.
13239 * Updated wikimedia/html-formatter from 1.0.1 to 1.0.2.
13241 ==== New external libraries ====
13242 * Added wikimedia/object-factory 1.0.0
13244 ==== Removed and replaced external libraries ====
13245 * (T17845) The deprecated 'jquery.badge' module was removed.
13246 * The deprecated 'jquery.autoEllipsis' module was removed. Use the CSS
13247 text-overflow property instead.
13248 * The deprecated 'jquery.placeholder' module was removed.
13249 * The deprecated 'jquery.appear' module was removed. Use the
13250 'mediawiki.viewport' module instead.
13251 * mediawiki/at-ease was replaced with wikimedia/at-ease.
13253 === Bug fixes in 1.31 ===
13254 * (T90902) Non-breaking space in header ID breaks anchor.
13255 * (T189375) CSSMin now allows quoted urls in `url()` syntax to start with a
13257 * (T2087, T10897, T87753, T174639) Whitespace created by category and language
13258 links is now stripped rather than leaving blank lines in odd places.
13259 * (T3780) Uploads with UTF-8 names now work on PHP7.1+ on Windows servers.
13260 * (T182366) UploadBase::checkXMLEncodingMissmatch() now works on PHP 7.1+
13262 === Action API changes in 1.31 ===
13263 * (T185058) The 'name' value to tgprop for action=query&list=tags has been
13264 removed. It has never made a difference in the output, the name was always
13265 returned regardless.
13266 * The 'watch' and 'unwatch' parameters for action=move have been removed. They
13267 were deprecated and also accidentally nonfunctional since 1.17 in 2010. Use
13268 'watchlist' instead.
13270 === Action API internal changes in 1.31 ===
13271 * ApiBase::getProfileDBTime, deprecated since 1.25, was removed.
13272 * ApiBase::getModuleProfileName, deprecated since 1.25, was removed.
13273 * ApiBase::getProfileTime, deprecated since 1.25, was removed.
13275 === Languages updated in 1.31 ===
13276 MediaWiki supports over 350 languages. Many localisations are updated
13277 regularly. Below only new and removed languages are listed, as well as
13278 changes to languages because of Phabricator reports.
13280 * (T180052) Mirandese (mwl) now supports gendered NS_USER/NS_USER_TALK.
13281 * (T182305) New language support: Nyungar (nys).
13282 * (T186359) New language support: Siberian Tatar [себертатар] (sty).
13283 * (T186635) New language support: Guianan Creole (gcr).
13284 * (T186647) New language support: Kumyk [къумукъ] (kum).
13285 * (T187750) New language support: Spanish formal address (es-formal).
13286 * (T187824) New language support: Hungarian formal address (hu-formal).
13287 * (T189127) New language support: Gorontalo (gor).
13289 === Breaking changes in 1.31 ===
13290 * MessageBlobStore::insertMessageBlob(), deprecated in 1.27, was removed.
13291 * The OutputPage class constructor now requires a context parameter.
13292 Instantiating without context was deprecated in 1.18.
13293 * The mw.page JavaScript singleton, deprecated in 1.30, was removed.
13294 * Article::getLastPurgeTimestamp(), WikiPage::getLastPurgeTimestamp(), and the
13295 related WikiPage::PURGE_* constants, deprecated in 1.29, were removed.
13296 * The Article::selectFields(), ::onArticleCreate(), ::onArticleDelete(), and
13297 ::onArticleEdit() methods, deprecated in 1.24, were removed.
13298 * Installer::locateExecutable() and ::locateExecutableInDefaultPaths() were
13299 removed. Use ExecutableFinder::findInDefaultPaths() instead.
13300 * The deprecated MW_DIFF_VERSION constant was removed.
13301 DifferenceEngine::MW_DIFF_VERSION should be used instead.
13302 * Due to significant refactoring, method ContribsPager::getUserCond() that had
13303 no access restriction has been removed.
13304 * The Block class will no longer accept usable-but-missing usernames for
13305 'byText' or ->setBlocker(). Callers should either ensure the blocker exists
13306 locally or use a new interwiki-format username like "iw>Example".
13307 * The following methods and constants from the WatchedItem class, which were
13308 deprecated in 1.27, have been removed:
13309 * WatchedItem::getTitle()
13310 * WatchedItem::fromUserTitle()
13311 * WatchedItem::addWatch()
13312 * WatchedItem::removeWatch()
13313 * WatchedItem::isWatched()
13314 * WatchedItem::duplicateEntries()
13315 * WatchedItem::IGNORE_USER_RIGHTS
13316 * WatchedItem::CHECK_USER_RIGHTS
13317 * WatchedItem::DEPRECATED_USAGE_TIMESTAMP
13318 * The $statementsOnOwnLine parameter of JavaScriptMinifier::minify was removed.
13319 $wgResourceLoaderMinifierStatementsOnOwnLine, the corresponding configuration
13320 variable, has been deprecated since 1.27 and was removed as well.
13321 * The $maxLineLength parameter of JavaScriptMinifier::minify was removed.
13322 $wgResourceLoaderMinifierMaxLineLength, the corresponding configuration
13323 variable, has been deprecated since 1.27 and was removed as well.
13324 * The HtmlFormatter class, deprecated in 1.27, was removed. The namespaced
13325 HtmlFormatter\HtmlFormatter class should be used instead.
13326 * The driver 'mysql' for MySQL, deprecated in MediaWiki 1.30, has been removed.
13327 The driver has been deprecated since PHP 5.5 and was removed in PHP 7.0. The
13328 default driver for MySQL has been 'mysqli' since MediaWiki 1.22.
13329 * The following properties of PreparedEdit were deprecated in 1.21 and have
13331 * PreparedEdit->newText
13332 * PreparedEdit->oldText
13333 * PreparedEdit->pst
13334 * ParserOutput objects which are generated using a non-default value for
13335 ParserOptions::setWrapOutputClass() can no longer be added to the parser
13337 * The following deprecated methods from the OutputPage class have been removed:
13338 * OutputPage::addExtensionStyle(); deprecated in 1.27
13339 * OutputPage::getExtStyle(); deprecated in 1.27
13340 * OutputPage::setETag(); deprecated in 1.28 (obsolete no-op)
13341 * OutputPage::setSquidMaxage(); deprecated in 1.27
13342 * OutputPage::readOnlyPage(); deprecated in 1.25
13343 * OutputPage::rateLimited(); deprecated in 1.25
13344 * Additionally, the protected OutputPage::$mExtStyles array, only accessed
13345 through the above and with no known uses, was removed.
13346 * The no-op method Skin::showIPinHeader(), deprecated in 1.27, was removed.
13347 * The following variables and methods in EditPage, deprecated in MediaWiki 1.30,
13349 * $isCssJsSubpage — use ::isUserConfigPage()
13350 * $isCssSubpage — use ::isUserCssConfigPage()
13351 * $isJsSubpage — use ::isUserJsConfigPage()
13352 * $isWrongCaseCssJsPage – use ::isWrongCaseUserConfigPage()
13353 * ::getSummaryInput() – use ::getSummaryInputWidget()
13354 * ::getSummaryInputOOUI() – use ::getSummaryInputWidget()
13355 * ::getCheckboxes() – use ::getCheckboxesWidget() or
13356 ::getCheckboxesDefinition()
13357 * ::getCheckboxesOOUI() – use ::getCheckboxesWidget() or
13358 ::getCheckboxesDefinition()
13359 * ResourceLoaderModule::getPosition(), deprecated in 1.29, has been removed.
13360 * In User, the cookie-related methods which were wrappers for the functions on
13361 the response object, and were deprecated in 1.27, have been removed:
13364 * ::setExtendedLoginCookie()
13365 Note that User::setCookies() remains, and is not deprecated.
13366 * Also in User, some auth-related methods which were deprecated in 1.27 have
13368 * ::getEditTokenTimestamp() – use MediaWiki\Session\Token::getTimestamp()
13369 * ::getPasswordFactory() – create a PasswordFactory directly
13370 * ::passwordChangeInputAttribs()
13371 * The global functions wfProfileIn and wfProfileOut, deprecated in 1.25, have
13373 * SpecialPageFactory::getList(), deprecated in 1.24, has been removed. You can
13374 use ::getNames() instead.
13375 * OpenSearch::getOpenSearchTemplate(), deprecated in 1.25, has been removed. You
13376 can use ApiOpenSearch::getOpenSearchTemplate() instead.
13377 * The global function wfBaseConvert, deprecated in 1.27, has been removed. Use
13378 Wikimedia\base_convert() directly.
13379 * Calling Database::begin() explicitly during an implicit transaction or when
13380 DBO_TRX is set results in an exception. Calling Database::commit() explicitly
13381 for an implicit transaction also results in an exception. Previously these
13382 were logged as errors. The startAtomic() and endAtomic() methods, or
13383 AtomicSectionUpdate should be used instead.
13384 * The global function wfOutputHandler() was removed, use the its replacement
13385 MediaWiki\OutputHandler::handle() instead. The global function was only
13386 sometimes defined. Its replacement is always available via the autoloader.
13387 * ChangeTags::listExtensionActivatedTags and ::listExtensionDefinedTags,
13388 deprecated in 1.28, have been removed. Use ::listSoftwareActivatedTags() and
13389 ::listSoftwareDefinedTags() instead.
13390 * Title::getTitleInvalidRegex(), deprecated in 1.25, has been removed. You can
13391 use MediaWikiTitleCodec::getTitleInvalidRegex() instead.
13392 * HTMLForm & VFormHTMLForm::isVForm(), deprecated in 1.25, have been removed.
13393 * The ProfileSection class, deprecated in 1.25 and unused, has been removed.
13394 * The ResourceLoaderGetLessVars hook, deprecated in 1.30, has been removed. Use
13395 ResourceLoaderModule::getLessVars() to expose local variables instead of
13397 * As part of work to modernise user-generated content clean-up, a config option
13398 and some methods related to HTML validity were removed without deprecation.
13399 The public methods MWTidy::checkErrors() and the path through which it was
13400 called, TidyDriverBase::validate(), are removed, as are the testing methods
13401 MediaWikiTestCase::assertValidHtmlSnippet() and ::assertValidHtmlDocument().
13402 The $wgValidateAllHtml configuration option is removed and will be ignored.
13403 * Execution of external programs using MediaWiki\Shell\Command now applies
13404 the RESTRICT_DEFAULT Firejail restriction by default.
13405 * The ResourceLoaderModule::getHashMtime() and ::getDefinitionMtime() methods,
13406 deprecated in 1.26, were removed.
13407 * The deprecated 'mediawiki.widgets.CategorySelector' module alias was removed.
13408 Use the 'mediawiki.widgets.CategoryMultiselectWidget' module directly.
13410 === Deprecations in 1.31 ===
13411 * The Revision class was deprecated in favor of RevisionStore, BlobStore, and
13412 RevisionRecord and its subclasses.
13413 * The global function wfBCP47 is deprecated in favour of LanguageCode::bcp47.
13414 * The global function wfCountDown is now deprecated in favor of
13415 Maintenance::countDown.
13416 * Several methods for returning lists of fields to select from the database
13417 have been deprecated in favor of similar methods that also return the tables
13418 to select from and the join conditions for those tables.
13419 * Block::selectFields() → Block::getQueryInfo()
13420 * RecentChange::selectFields() → RecentChange::getQueryInfo()
13421 * ArchivedFile::selectFields() → ArchivedFile::getQueryInfo()
13422 * LocalFile::selectFields() → LocalFile::getQueryInfo()
13423 * LocalFile::getCacheFields() with a prefix no longer works
13424 * LocalFile::getLazyCacheFields() with a prefix no longer works
13425 * OldLocalFile::selectFields() → OldLocalFile::getQueryInfo()
13426 * RecentChange::selectFields() → RecentChange::getQueryInfo()
13427 * Revision::userJoinCond() → Revision::getQueryInfo( [ 'user' ] )
13428 * Revision::selectUserFields() → Revision::getQueryInfo( [ 'user' ] )
13429 * Revision::pageJoinCond() → Revision::getQueryInfo( [ 'page' ] )
13430 * Revision::selectPageFields() → Revision::getQueryInfo( [ 'page' ] )
13431 * Revision::selectTextFields() → Revision::getQueryInfo( [ 'text' ] )
13432 * Revision::selectFields() → Revision::getQueryInfo()
13433 * Revision::selectArchiveFields() → Revision::getArchiveQueryInfo()
13434 * User::selectFields() → User::getQueryInfo()
13435 * WikiPage::selectFields() → WikiPage::getQueryInfo()
13436 * Revision::setUserIdAndName() was deprecated.
13437 * Access to TitleValue class properties was deprecated, the relevant getters
13438 should be used instead.
13439 * DifferenceEngine::getDiffBodyCacheKey() is deprecated. Subclasses should
13440 override DifferenceEngine::getDiffBodyCacheKeyParams() instead.
13441 * Use of Maintenance::error( $err, $die ) to exit script was deprecated. Use
13442 Maintenance::fatalError() instead.
13443 * Passing a ParserOptions object to OutputPage::parserOptions() is deprecated.
13444 * The RevisionInsertComplete hook is now deprecated; use instead the hook
13445 RevisionRecordInserted. RevisionInsertComplete is still called, but the second
13446 and third parameter will always be null. Hard deprecation is scheduled for
13448 * The following methods that get and set ParserOutput state are deprecated.
13449 Callers should use the new stateless $options parameter to
13450 ParserOutput::getText() instead.
13451 * ParserOptions::getEditSection()
13452 * ParserOptions::setEditSection()
13453 * ParserOutput::getEditSectionTokens()
13454 * ParserOutput::setEditSectionTokens()
13455 * ParserOutput::getTOCEnabled()
13456 * ParserOutput::setTOCEnabled()
13457 * OutputPage::enableSectionEditLinks()
13458 * OutputPage::sectionEditLinksEnabled()
13459 * The public ParserOutput state fields $mTOCEnabled and $mEditSectionTokens
13460 are also deprecated.
13461 * License::getLicenses has been deprecated; use License::getLines instead.
13462 * QuickTemplate::setRef() was deprecated in favour of QuickTemplate::set().
13463 Setting template variables by reference allowed violating the principle of
13464 data being immutable once added to the skin template. In practice, this method
13465 was not being used for that. Rather, setRef() existed as memory optimisation
13467 * QuickTemplate::setTranslator() and MediaWikiI18N::set() were deprecated in
13468 favour of Skin::msg() parameters.
13469 * MediaWikiI18N::translate() was deprecated in favour of Skin::msg() or
13471 * Passing false to ParserOptions::setWrapOutputClass() is deprecated. Use the
13472 'unwrap' transform to ParserOutput::getText() instead.
13473 * \ObjectFactory (no namespace) is deprecated, the namespaced class
13474 \Wikimedia\ObjectFactory from the wikimedia/object-factory library should be
13476 * CommentStore::newKey is deprecated. Instead, get an instance from
13478 * The following CommentStore methods have had their signatures changed to
13479 introduce a $key parameter, usage of the methods on instances retrieved from
13480 CommentStore::newKey will remain unchanged but deprecated:
13481 * CommentStore::getFields
13482 * CommentStore::getJoin
13483 * CommentStore::getComment
13484 * CommentStore::getCommentLegacy
13485 * CommentStore::insert
13486 * CommentStore::insertWithTemplate
13487 * The following methods in Title have been renamed, and the old ones are
13489 * Title::getSkinFromCssJsSubpage – use ::getSkinFromConfigSubpage
13490 * Title::isCssOrJsPage – use ::isSiteConfigPage
13491 * Title::isCssJsSubpage – use ::isUserConfigPage
13492 * Title::isCssSubpage – use ::isUserCssConfigPage
13493 * Title::isJsSubpage – use ::isUserJsConfigPage
13494 * The following methods related to caching of half-parsed HTML were deprecated:
13495 * Parser::serializeHalfParsedText()
13496 * Parser::unserializeHalfParsedText()
13497 * Parser::isValidHalfParsedText()
13498 * StripState::getSubState()
13499 * StripState::merge()
13500 * The DeferredStringifier class is deprecated, use Message::listParam() instead.
13501 * The type string for the parameter $lang of DateFormatter::getInstance is
13503 * Wikimedia\Rdbms\SavepointPostgres is deprecated.
13504 * The DO_MAINTENANCE constant is deprecated. RUN_MAINTENANCE_IF_MAIN should be
13506 * The function wfShellWikiCmd() has been deprecated, use
13507 MediaWiki\Shell::makeScriptCommand().
13508 * In the future, the hooks 'PreferencesFormPreSave' and 'PreferencesGetLegend'
13509 will be allowed to provide any HTMLForm object rather than PreferencesForm.
13511 === Other changes in 1.31 ===
13512 * Browser support for Internet Explorer 10 was lowered from Grade A to Grade C.
13513 * Browser support for Opera 12 and older was dropped entirely. Opera 15+
13514 continues at Grade A.
13515 * Multi-content-revision capability was introduced into the storage layer. See
13516 <https://mediawiki.org/wiki/Requests_for_comment/Multi-Content_Revisions>.
13517 * The "free" CSS class is now only applied to unbracketed URLs in wikitext.
13518 Links written using square brackets will get the class "text" not "free".
13519 * RFC 157418: Whitespace is trimmed from wikitext headings, wikitext list items,
13520 wikitext table captions, wikitext table headings, wikitext table cells. HTML
13521 headings, HTML list items, HTML table captions, HTML table headings, HTML
13522 table cells will not have this trimming behavior.
13524 == Compatibility ==
13525 MediaWiki 1.31 requires PHP 7.0.0 or later. Although HHVM 3.18.5 or later is
13526 supported, it is generally advised to use PHP 7.0.0 or later for long term
13529 MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
13530 but support for them is somewhat less mature. There is experimental support for
13531 Oracle and Microsoft SQL Server.
13533 The supported versions are:
13535 * MySQL 5.5.8 or later
13536 * PostgreSQL 9.2 or later
13537 * SQLite 3.3.7 or later
13538 * Oracle 9.0.1 or later
13539 * Microsoft SQL Server 2005 (9.00.1399)
13542 1.31 has several database changes since 1.30, and will not work without schema
13543 updates. Note that due to changes to some very large tables like the revision
13544 table, the schema update may take quite long (minutes on a medium sized site,
13545 many hours on a large site).
13547 Don't forget to always back up your database before upgrading!
13549 See the file UPGRADE for more detailed upgrade instructions, including
13550 important information when upgrading from versions prior to 1.11.
13552 For notes on 1.30.x and older releases, see HISTORY.
13554 == Online documentation ==
13555 Documentation for both end-users and site administrators is available on
13556 MediaWiki.org, and is covered under the GNU Free Documentation License (except
13557 for pages that explicitly state that their contents are in the public domain):
13559 https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
13562 A mailing list is available for MediaWiki user support and discussion:
13564 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
13566 A low-traffic announcements-only list is also available:
13568 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
13570 It's highly recommended that you sign up for one of these lists if you're
13571 going to run a public MediaWiki, so you can be notified of security fixes.
13574 There's usually someone online in #mediawiki on irc.freenode.net.
13579 == MediaWiki 1.30.2 ==
13581 This is a security and maintenance release of the MediaWiki 1.30 branch.
13583 === Changes since MediaWiki 1.30.1 ===
13584 * (T204729) WatchedItemStore::countVisitingWatchersMultiple() shouldn't query
13585 all titles when asked for none.
13586 * (T109121) Remove deprecated pear/mail_mime-decode from composer suggested
13588 * (T207540) Include IP address in "Login for $1 succeeded" log entry.
13589 * (T205765) Don't link to the obsolete "Extension Matrix" page in installer.
13590 * (T207603) SECURITY: User JS may no longer be loaded with mime type
13591 text/javascript if there is no account associated with the username.
13592 * (T113042) SECURITY: Do not allow loading pages raw with a text/javascript MIME
13593 type if non-admins can edit the page.
13594 * (T207541) Pass email address to mail().
13595 * Fix addition of ug_expiry column to user_groups table on MSSQL.
13596 * (T204531) rdbms: reduce LoadBalancer replication log spam.
13597 * (T213489) Avoid session double-start in Setup.php.
13598 * (T195525) Fix db error outage page.
13599 * (T208871) The hard-coded Google search form on the database error page was
13601 * (T216968) Return pageid as int in both list=iwbacklinks and
13602 list=langbacklinks.
13603 * (T218608) SECURITY: Fix an issue that prevents Extension:OAuth working when
13604 $wgBlockDisablesLogin is true.
13605 * (T25227) SECURITY: action=logout now requires to be posted and have a csrf
13607 * (T222385) resourceloader: Use AND instead of OR for upsert conds in
13608 saveFileDependencies().
13609 * (T224374) Fix message parameters so that the message that says SQLite is out
13610 of date makes sense.
13611 * SpecialPage::checkLoginSecurityLevel() will now preserve POST data when
13613 * FormSpecialPage::execute() will now call checkLoginSecurityLevel() if
13614 getLoginSecurityLevel() returns non-false.
13615 * (T197279) SECURITY: Fix reauth in Special:ChangeEmail.
13616 * (T208881) SECURITY: blacklist CSS var().
13617 * (T209794) SECURITY: rate-limit and prevent blocked users from changing email.
13618 * (T199540) SECURITY: API: Respect $wgBlockCIDRLimit in action=block.
13619 * (T212118) SECURITY: Fix cache mode for (un)patrolled recent changes query.
13620 * (T222036, T222038) SECURITY: Add permission check for user is permitted to
13622 * (T221739) SECURITY: resources: Patch jQuery 1.11.3 for CVE-2019-11358.
13624 == MediaWiki 1.30.1 ==
13626 This is a security and maintenance release of the MediaWiki 1.30 branch.
13628 === Changes since MediaWiki 1.30.0 ===
13629 * (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides
13631 * (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's
13633 * (T87572) Make FormatMetadata::flattenArrayReal() work for an associative
13635 * Updated composer/spdx-licenses from 1.1.4 to 1.3.0 (development dependency).
13636 * (T189567) the CLI installer (maintenance/install.php) learned to detect and
13637 include extensions. Pass --with-extensions to enable that feature.
13638 * (T190503) Let built-in web server (maintenance/dev) handle .php requests.
13639 * (T167507) selenium: Run Chrome headlessly.
13640 * selenium: Pass -no-sandbox to Chrome under Docker.
13641 * (T179190) selenium: Move logic for running tests from package.json to
13643 * (T192584) Stop incorrectly passing USE INDEX to RecentChange::newFromConds().
13644 * Add default edit rate limit of 90 edits/minute for all users.
13645 * (T186565) Fix PHP Notice from `ob_end_flush()` in `FileRepo::streamFile()`.
13646 * oojs/oojs-ui updated to remove an unnecessary dependancy.
13647 * (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported.
13648 * (T118683) Fix exception from &$user deref on HHVM in the TitleMoveComplete
13650 * (T196672) The mtime of extension.json files is now able to be zero
13651 * (T180403) Validate $length in padleft/padright parser functions.
13652 * (T143790) Make $wgEmailConfirmToEdit only affect edit actions.
13653 * (T193995) Fix undefined patchPath() method call in parser tests.
13654 * Special:BotPasswords now requires reauthentication.
13655 * (T191608, T187638) Add 'logid' parameter to Special:Log.
13656 * (T193829) Indicate when a Bot Password needs reset.
13657 * (T151415) Log email changes.
13658 * (T200861) Fix total breakage of SQLite web upgrade.
13659 * (T202550) Unbreak SpecialListusersHeaderForm and SpecialListusersHeader
13661 * (T190539) Explicitly require Postgres 9.1.
13662 * (T118420) Unbreak Oracle installer.
13664 == MediaWiki 1.30.0 ==
13666 === Changes since MediaWiki 1.30.0-rc.0 ===
13667 * Upgraded Moment.js from v2.15.0 to v2.19.3.
13668 * Add ip_changes to postgres/tables.sql.
13669 * Skip null shell parameters.
13670 * Add wfWaitForSlaves() to maintenance/migrateComments.php.
13671 * (T182245) Fix join conditions in ImageListPager.
13672 * (T178626) Revert #contentSub and #jump-to-nav margin changes.
13674 === MySQL version requirement in 1.30 ===
13675 As of 1.30, MediaWiki now requires MySQL 5.5.8 or higher (see Compatibility
13678 === Configuration changes in 1.30 ===
13679 * The "C.UTF-8" locale should be used for $wgShellLocale, if available, to avoid
13680 unexpected behavior when code uses locale-sensitive string comparisons. For
13681 example, the Scribunto extension considers "bar" < "Foo" in most locales
13682 since it ignores case.
13683 * $wgShellLocale now affects LC_ALL rather than only LC_CTYPE. See
13684 documentation of $wgShellLocale for details.
13685 * $wgShellLocale is now applied for all requests. wfInitShellLocale() is
13686 deprecated and a no-op, as it is no longer needed.
13687 * $wgJobClasses may now specify callback functions as an alternative to plain
13688 class names. This is intended for extensions that want control over the
13689 instantiation of their jobs, to allow for proper dependency injection.
13690 * $wgResourceModules may now specify callback functions as an alternative
13691 to plain class names, using the 'factory' key in the module description
13692 array. This allows dependency injection to be used for ResourceLoader modules.
13693 * $wgExceptionHooks has been removed.
13694 * (T163562) $wgRangeContributionsCIDRLimit was introduced to control the size
13695 of IP ranges that can be queried at Special:Contributions.
13696 * (T45547) $wgUsePigLatinVariant added (off by default).
13697 * (T152540) MediaWiki now supports a section ID escaping style that allows to
13698 display non-Latin characters verbatim on many modern browsers. This is
13699 controlled by the new configuration setting, $wgFragmentMode.
13700 * $wgExperimentalHtmlIds is now deprecated and will be removed in a future
13701 version, use $wgFragmentMode to migrate off it to a modern alternative.
13702 * $wgExternalInterwikiFragmentMode was introduced to control how fragments in
13703 sinterwikis going outside of current wiki farm are encoded.
13704 * (T120333) Soft-deprecated the use of PHP extension 'mysql' in favor of
13705 'mysqli'. This PHP extension was deprecated in PHP 5.5 and removed in PHP 7.0.
13706 MediaWiki auto-selects the 'mysqli' driver since MediaWiki 1.22, except if
13707 explicitly requested through the configuration parameter $wgDBservers.
13708 * $wgOOUIEditPage was removed, as it is now the default. This was documented as
13709 a temporary variable during the migration period.
13711 === New features in 1.30 ===
13712 * (T37247) Output from Parser::parse() will now be wrapped in a div with
13713 class="mw-parser-output" by default. This may be changed or disabled using
13714 ParserOptions::setWrapOutputClass().
13715 * (T163562) Added ability to search for contributions within an IP ranges
13716 at Special:Contributions.
13717 * Added 'ChangeTagsAllowedAdd' hook, enabling extensions to allow software-
13718 specific tags to be added by users.
13719 * Added a 'ParserOptionsRegister' hook to allow extensions to register
13720 additional parser options.
13721 * (T45547) Included Pig Latin, a language game in English, as a
13722 LanguageConverter variant. This allows English-speaking developers
13723 to develop and test LanguageConverter more easily. Pig Latin can be
13724 enabled by setting $wgUsePigLatinVariant to true.
13725 * Added RecentChangesPurgeRows hook to allow extensions to purge data that
13726 depends on the recentchanges table.
13727 * Added JS config values wgDiffOldId/wgDiffNewId to the output of diff pages.
13728 * (T2424) Added direct unwatch links to entries in Special:Watchlist (if the
13729 'watchlistunwatchlinks' preference option is enabled). With JavaScript
13730 enabled, these links toggle so the user can also re-watch pages that have
13731 just been unwatched.
13732 * Added $wgParserTestMediaHandlers, where mock media handlers can be passed to
13733 MediaHandlerFactory for parser tests.
13734 * Edit summaries, block reasons, and other "comments" are now stored in a
13735 separate database table. Use the CommentFormatter class to access them.
13736 ** This is currently gated by $wgCommentTableSchemaMigrationStage. Most wikis
13737 can set this to MIGRATION_NEW and run maintenance/migrateComments.php as
13738 soon as any necessary extensions are updated.
13739 * (T138166) Added ability for users to prohibit other users from sending them
13740 emails with Special:Emailuser. Can be enabled by setting
13741 $wgEnableUserEmailBlacklist to true.
13742 * (T67297) $wgBrowserBlacklist is deprecated, and changing it will have no
13743 effect. Instead, users using browsers that do not support Unicode will be
13744 unable to edit and should upgrade to a modern browser instead.
13746 === External library changes in 1.30 ===
13748 ==== Upgraded external libraries ====
13749 * Updated justinrainbow/json-schema from v3.0 to v5.2.
13750 * Updated mediawiki/mediawiki-codesniffer from v0.7.2 to v0.12.0.
13751 * Updated wikimedia/composer-merge-plugin from v1.4.0 to v1.4.1.
13752 * Updated wikimedia/relpath from v1.0.3 to v2.0.0.
13753 * Updated OOjs from v2.0.0 to v2.1.0.
13754 * Updated OOUI from v0.21.1 to v0.23.0.
13755 * Updated QUnit from v1.23.1 to v2.4.0.
13756 * Updated phpunit/phpunit from v4.8.35 to v4.8.36.
13757 * Upgraded Moment.js from v2.15.0 to v2.19.3.
13759 ==== New external libraries ====
13760 * The class \TestingAccessWrapper has been moved to the external library
13761 wikimedia/testing-access-wrapper and renamed \Wikimedia\TestingAccessWrapper.
13762 * Purtle, a fast, lightweight RDF generator.
13764 === Bug fixes in 1.30 ===
13765 * (T151633) Ordered list items use now Devanagari digits in Nepalese
13768 === Action API changes in 1.30 ===
13769 * (T37247) action=parse output will be wrapped in a div with
13770 class="mw-parser-output" by default. This may be changed or disabled using
13771 the new 'wrapoutputclass' parameter.
13772 * When errorformat is not 'bc', abort reasons from action=login will be
13773 formatted as specified by the error formatter parameters.
13774 * action=compare can now handle arbitrary text, deleted revisions, and
13775 returning users and edit comments.
13776 * (T164106) The 'rvdifftotext', 'rvdifftotextpst', 'rvdiffto',
13777 'rvexpandtemplates', 'rvgeneratexml', 'rvparse', and 'rvprop=parsetree'
13778 parameters to prop=revisions are deprecated, as are the similarly named
13779 parameters to prop=deletedrevisions, list=allrevisions, and
13780 list=alldeletedrevisions. Use action=compare, action=parse, or
13781 action=expandtemplates instead.
13783 === Action API internal changes in 1.30 ===
13784 * ApiBase::getDescriptionMessage() and the "apihelp-*-description" messages are
13785 deprecated. The existing message should be split between "apihelp-*-summary"
13786 and "apihelp-*-extended-description".
13787 * (T123931) Individual values of multi-valued parameters can now be marked as
13790 === Languages updated in 1.30 ===
13791 MediaWiki supports over 350 languages. Many localisations are updated
13792 regularly. Below only new and removed languages are listed, as well as
13793 changes to languages because of Phabricator reports.
13795 * Added: kbp (Kabɩyɛ / Kabiyè)
13796 * Added: skr (Saraiki, سرائیکی)
13797 * Added: tay (Tayal / Atayal)
13798 * Removed: tokipona (Toki Pona)
13800 ==== Pig Latin added ====
13801 * (T45547) Added Pig Latin, a made-up English variant (en-x-piglatin),
13802 for easier variant development and testing. Disabled by default. It can be
13803 enabled by setting $wgUsePigLatinVariant to true.
13805 === Other changes in 1.30 ===
13806 * The use of an associative array for $wgProxyList, where the IP address is in
13807 the key instead of the value, is deprecated (e.g. [ '127.0.0.1' => 'value' ]).
13808 Please convert these arrays to indexed/sequential ones (e.g. [ '127.0.0.1' ]).
13809 * mw.user.bucket (deprecated in 1.23) was removed.
13810 * LoadBalancer::getServerInfo() and LoadBalancer::setServerInfo() are
13811 deprecated. There are no known callers.
13812 * File::getStreamHeaders() was deprecated.
13813 * MediaHandler::getStreamHeaders() was deprecated.
13814 * Title::canTalk() was deprecated. The new Title::canHaveTalkPage() should be
13816 * MWNamespace::canTalk() was deprecated. The new MWNamespace::hasTalkNamespace()
13817 should be used instead.
13818 * The ExtractThumbParameters hook (deprecated in 1.21) was removed.
13819 * The OutputPage::addParserOutputNoText and ::getHeadLinks methods (both
13820 deprecated in 1.24) were removed.
13821 * wfMemcKey() and wfGlobalCacheKey() were deprecated. BagOStuff::makeKey() and
13822 BagOStuff::makeGlobalKey() should be used instead.
13823 * (T146304) Preprocessor handling of LanguageConverter markup has been improved.
13824 As a result of the new uniform handling, '-{' may need to be escaped
13825 (for example, as '-<nowiki/>{') where it occurs inside template arguments
13827 * (T163966) Page moves are now counted as edits for the purposes of
13828 autopromotion, i.e., they increment the user_editcount field in the database.
13829 * Two new hooks, LogEventsListLineEnding and NewPagesLineEnding, were added for
13830 manipulating Special:Log and Special:NewPages lines.
13831 * The OldChangesListRecentChangesLine, EnhancedChangesListModifyLineData,
13832 PageHistoryLineEnding, ContributionsLineEnding and
13833 DeletedContributionsLineEnding hooks have an additional parameter, for
13834 manipulating HTML data attributes of RC/history lines.
13835 EnhancedChangesListModifyBlockLineData can do that via the
13836 $data['attribs'] subarray.
13837 * (T130632) The OutputPage::enableTOC() method was removed.
13838 * WikiPage::getParserOutput() will now throw an exception if passed
13839 ParserOptions that would pollute the parser cache. Callers should use
13840 WikiPage::makeParserOptions() to create the ParserOptions object and only
13841 change options that affect the parser cache key.
13842 * Article::viewRedirect() is deprecated.
13843 * IP::isValidBlock() was deprecated. Use the equivalent IP::isValidRange().
13844 * DeprecatedGlobal no longer supports passing in a direct value, it requires a
13845 callable factory function or a class name.
13846 * The $parserMemc global, wfGetParserCacheStorage(), and
13847 ParserCache::singleton() are all deprecated. The main ParserCache instance
13848 should be obtained from MediaWikiServices instead. Access to the underlying
13849 BagOStuff is possible through the new ParserCache::getCacheStorage() method.
13850 * .mw-ui-constructive CSS class (deprecated in 1.27) was removed.
13851 * Sanitizer::escapeId() was deprecated, use escapeIdForAttribute(),
13852 escapeIdForLink() or escapeIdForExternalInterwiki() instead.
13853 * Title::escapeFragmentForURL() was deprecated, use one of the aforementioned
13854 Sanitizer functions or, if possible, Title::getFragmentForURL().
13855 * Second parameter to Sanitizer::escapeIdReferenceList() ($options) now does
13856 nothing and is deprecated.
13857 * mw.util.escapeId() was deprecated, use escapeIdForAttribute() or
13859 * MagicWord::replaceMultiple() (deprecated in 1.25) was removed.
13860 * WikiImporter now requires the second parameter to be an instance of the
13861 Config, class. Prior to that, the Config parameter was optional (a behavior
13862 deprecated in 1.25).
13863 * Removed 'jquery.mwExtension' module. (deprecated since 1.26)
13864 * mediawiki.ui: Deprecate greys, which are not part of WikimediaUI color palette
13866 * CdbReader, CdbWriter, CdbException classes (deprecated in 1.25) were removed.
13867 The namespaced classes in the Cdb namespace should be used instead.
13868 * IPSet class (deprecated in 1.26) was removed. The namespaced IPSet\IPSet
13869 should be used instead.
13870 * RunningStat class (deprecated in 1.27) was removed. The namespaced
13871 RunningStat\RunningStat should be used instead.
13872 * MWMemcached and MemCachedClientforWiki classes (deprecated in 1.27) were
13874 The MemcachedClient class should be used instead.
13875 * EditPage underwent some refactoring and deprecations:
13876 * EditPage::isOouiEnabled() is deprecated and will always return true.
13877 * EditPage::getSummaryInput() and ::getSummaryInputOOUI() are deprecated.
13878 Please use ::getSummaryInputWidget() instead.
13879 * EditPage::getCheckboxes() and ::getCheckboxesOOUI() are deprecated. Please
13880 use ::getCheckboxesWidget() instead.
13881 * Creating an EditPage instance without calling EditPage::setContextTitle()
13882 should be avoided and will be deprecated in a future release.
13883 * EditPage::safeUnicodeInput() and ::safeUnicodeOutput() are deprecated and
13885 * EditPage::$isCssJsSubpage, ::$isCssSubpage, and ::$isJsSubpage are
13886 deprecated. The corresponding methods from Title should be used instead.
13887 * EditPage::$isWrongCaseCssJsPage is deprecated. There is no replacement.
13888 * EditPage::$mArticle and ::$mTitle are deprecated for public usage. The
13889 getters ::getArticle() and ::getTitle() should be used instead.
13890 * Trying to control or fake EditPage context by overriding $wgUser,
13891 $wgRequest, $wgOut, and $wgLang is no longer supported and won't work. The
13892 IContextSource returned from EditPage::getContext() must be modified
13894 * Parser::getRandomString() (deprecated in 1.26) was removed.
13895 * Parser::uniqPrefix() (deprecated in 1.26) was removed.
13896 * Parser::extractTagsAndParams() now only accepts three arguments. The fourth,
13897 $uniq_prefix was deprecated in 1.26 and has now been removed.
13898 * (T172514) The following tables have had their UNIQUE indexes turned into
13899 proper PRIMARY KEYs for increased maintainability: categorylinks, imagelinks,
13900 iwlinks, langlinks, log_search, module_deps, objectcache, pagelinks,
13901 query_cache, site_stats, templatelinks, text, transcache, user_former_groups,
13903 * IDatabase::nextSequenceValue() is no longer needed by any database backends
13904 (formerly it was needed by PostgreSQL and Oracle), and is now deprecated.
13905 * (T146591) The lc_lang_key index on the l10n_cache table has been changed into
13907 * (T157227) bot_password.bp_user, change_tag.ct_log_id, change_tag.ct_rev_id,
13908 page_restrictions.pr_user, tag_summary.ts_log_id, tag_summary.ts_rev_id and
13909 user_properties.up_user have all been made unsigned on MySQL.
13910 * DB_SLAVE is deprecated. DB_REPLICA should be used instead.
13911 * wfUsePHP() is deprecated.
13912 * wfFixSessionID() was removed.
13913 * wfShellExec() and related functions are deprecated, use Shell::command(). This
13914 also slightly changes the behavior of how execution time limits are calculated
13915 when only some of defaults are overridden per-call. When in doubt, always
13916 override both wall clock and CPU time.
13917 * (T138166) SpecialEmailUser::getTarget() now requires a second argument, the
13918 sending user object. Using the method without the second argument is
13920 * (T67297) Browsers that don't support Unicode will have their edits rejected.
13921 * (T178450) The module 'jquery.badge' is deprecated and will be removed in a
13922 future release. For notifying the user of an event, the Notifications ("Echo")
13923 system should be used instead.
13924 * (T178451) SECURITY: Potential XSS when $wgShowExceptionDetails = false and
13925 browser sends non-standard url escaping.
13926 * (T165846) SECURITY: BotPassword login attempts weren't throttled.
13930 == MediaWiki 1.29.3 ==
13932 This is a security and maintenance release of the MediaWiki 1.29 branch.
13934 === Changes since 1.29.2 ===
13935 * (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides
13937 * (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's
13939 * (T180551) Fix LanguageSrTest for language converter
13940 * (T180552) Fix language converter parser test with self-close tags
13941 * (T180537) Remove $wgAuth usage from wrapOldPasswords.php
13942 * (T180485) InputBox: Have inputbox langconvert certain attributes
13943 * (T161732, T181547) Upgraded Moment.js from v2.15.0 to v2.19.3.
13944 * (T172927) Drop vendor from MW release branch
13945 * (T87572) Make FormatMetadata::flattenArrayReal() work for an associative array
13946 * Updated composer/spdx-licenses from 1.1.4 to 1.3.0 (development dependency).
13947 * (T189567) the CLI installer (maintenance/install.php) learned to detect and
13948 include extensions. Pass --with-extensions to enable that feature.
13949 * (T182381) Mask deprecated call in WatchedItemUnitTest
13950 * (T190503) Let built-in web server (maintenance/dev) handle .php requests.
13951 * The karma qunit tests would fail on some configuration due to headers already
13952 sent. Check headers_sent() before sending cpPosTime headers
13953 * (T167507) selenium: Run Chrome headlessly.
13954 * selenium: Pass -no-sandbox to Chrome under Docker
13955 * (T191247) Use MediaWiki\SuppressWarnings around trigger_error('') instead @
13956 * (T75174, T161041) Unit test ChangesListSpecialPageTest::testFilterUserExpLevel
13957 fails under SQLite.
13958 * (T192584) Stop incorrectly passing USE INDEX to RecentChange::newFromConds().
13959 * (T179190) selenium: Move test running logic from package.json to selenium.sh.
13960 * (T117839, T193200) PDFHandler: Fix for pdfinfo changes in poppler-utils 0.48.
13961 * Add default edit rate limit of 90 edits/minute for all users.
13962 * (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported.
13963 * (T196672) The mtime of extension.json files is now able to be zero
13964 * (T180403) Validate $length in padleft/padright parser functions.
13965 * (T143790) Make $wgEmailConfirmToEdit only affect edit actions.
13966 * (T194237) Special:BotPasswords now requires reauthentication.
13967 * (T191608, T187638) Add 'logid' parameter to Special:Log.
13968 * (T176097) resourceloader: Disable a flaky MessageBlobStoreTest case
13969 * (T193829) Indicate when a Bot Password needs reset.
13970 * (T151415) Log email changes.
13971 * (T118420) Unbreak Oracle installer.
13973 == MediaWiki 1.29.2 ==
13975 This is a security and maintenance release of the MediaWiki 1.29 branch.
13977 === Changes since 1.29.1 ===
13978 * (T166757) Avoid scoped lock errors in Category::refreshCounts() due to
13980 * (T175439) Unbreak Postgres Updater when setting defaults for a column.
13981 * (T160298) Remove use of implicitGroupBy() in ActiveUsersPager.
13982 * Fixed login button label to accept RawMessage.
13983 * Fixed case of SpecialRecentChanges class usage.
13984 * (T174255) Declare uploadCount property in importDump.php.
13985 * (T163646) Pass a string not an int to mysql_real_escape_string().
13986 * (T180143) Bump justinrainbow/json-schema development dependency to ~5.2.
13987 * Updated dev dependancy phpunit/phpunit from v4.8.35 to v4.8.36.
13988 * (T178451) SECURITY: Potential XSS when $wgShowExceptionDetails = false and
13989 browser sends non-standard url escaping.
13990 * (T165846) SECURITY: BotPassword login attempts weren't throttled.
13991 * (T128209) SECURITY: Reflected File Download from api.php.
13992 * (T134100) SECURITY: Do not reveal if user exists during login failure.
13993 * (T176247) SECURITY: Ensure Message::rawParams can't lead to XSS.
13994 * (T125163) SECURITY: Make anchor for headlines escape > and <.
13995 * (T180237) SECURITY: Protect vendor folder with .htaccess.
13996 * (T180231) SECURITY: Remove PHPUnit file with known RCE if exists in
13998 * (T124404) SECURITY: XSS in langconverter when regex hits pcre.backtrack_limit.
13999 * (T119158) SECURITY: Handle -{}- syntax in attributes safely.
14000 * (T180488) (T125177) "api.log contains passwords in plaintext" wasn't correctly
14001 fixed in all branches in the previous security release.
14003 == MediaWiki 1.29.1 ==
14005 This is a maintenance release of the MediaWiki 1.29 branch.
14007 The SpamBlacklist and PdfHandler extensions were missing from the generated
14010 === Changes since 1.29.1 ===
14011 * (T164999) Define mw.Upload.Dialog.static.name in mediawiki.Upload.Dialog.js.
14012 * (T172061) Fix fatal when passing a category to refreshLinks.php.
14014 == MediaWiki 1.29.0 ==
14016 === Configuration changes in 1.29 ===
14017 * Default cookie expiration time has been reduced to 30 days. Login cookie
14018 expiration time is kept at 180 days.
14019 * A new configuration variable has been added: $wgCookieSetOnAutoblock. This
14020 determines whether to set a cookie when a user is autoblocked. Doing so means
14021 that a blocked user, even after logging out and moving to a new IP address,
14022 will still be blocked.
14023 * The resetpassword right and associated password reset capture feature has
14025 * The $error parameter to the EmailUser hook should be set to a Status object
14026 or boolean false. This should be compatible with at least MediaWiki 1.23 if
14027 not earlier. Returning a raw HTML string is now deprecated.
14028 * The $message parameter to the ApiCheckCanExecute hook should be set to an
14029 ApiMessage. This is compatible with MediaWiki 1.27 and later. Returning a
14030 code for ApiBase::parseMsg() will no longer work.
14031 * ApiBase::$messageMap is no longer public. Code attempting to access it will
14032 result in a PHP fatal error.
14033 * $wgUserEmailUseReplyTo is now true by default to work around restrictive DMARC
14035 * Subpages are now enabled by default in the Template namespace. Set
14036 $wgNamespacesWithSubpages[NS_TEMPLATE] to false to keep the old behavior.
14037 * $wgRunJobsAsync is now false by default (T142751). This change only affects
14038 wikis with $wgJobRunRate > 0.
14039 * (T158474) "Unknown user" has been added to $wgReservedUsernames.
14040 * (T156983) $wgRateLimitsExcludedIPs now accepts CIDR ranges as well as single
14042 * $wgDummyLanguageCodes is deprecated. Additional language code mappings may be
14043 added to $wgExtraLanguageCodes instead.
14044 * (T161453) LocalisationCache will no longer use the temporary directory in it's
14045 fallback chain when trying to work out where to write the cache.
14046 * The user right 'editusercssjs' (deprecated in 1.16) was removed. Use
14047 'editusercss' and 'edituserjs' in $wgGroupPermissions and elsewhere instead.
14049 === New features in 1.29 ===
14050 * (T5233) A cookie can now be set when a user is autoblocked, to track that user
14051 if they move to a new IP address. This is disabled by default.
14052 * Added ILocalizedException interface to standardize the use of localized
14053 exceptions, largely so the API can handle them more sensibly.
14054 * Blocks created automatically by MediaWiki, such as for configured proxies or
14055 dnsbls, are now indicated as such and use a new i18n message when displayed.
14056 * Added new $wgHTTPImportTimeout setting. Sets timeout for
14057 downloading the XML dump during a transwiki import in seconds.
14058 * Parser limit report is now available in machine-readable format to JavaScript
14059 via mw.config.get('wgPageParseReport').
14060 * Added $wgSoftBlockRanges, to allow for automatically blocking anonymous edits
14061 from certain IP ranges (e.g. private IPs).
14062 * (T59603) Added new magic word {{PAGELANGUAGE}} which returns the language code
14063 of the page being parsed.
14064 * HTML5 form validation attributes will no longer be suppressed. Originally
14065 browsers had poor support for them, but modern browsers handle them fine.
14066 This might affect some forms that used them and only worked because the
14067 attributes were not actually being set.
14068 * Expiry times can now be specified when users are added to user groups.
14069 * Completely new user interface for the RecentChanges page, which
14070 structures filters into user-friendly groups. This has corresponding
14071 changes to how filters are registered by core and extensions.
14072 * The edit form now uses pretty OOjs UI buttons, checkboxes and summary input.
14073 Because this change can cause problems for extensions and on-wiki
14074 scripts depending on the exact HTML, the old version is still available
14075 and can be used by setting $wgOOUIEditPage = false; in LocalSettings.php.
14076 This will be removed later and OOjs UI will become the only option.
14077 To make testing easier, users can also force either mode by adding
14078 &ooui=true or &ooui=false to the action=edit URL.
14080 === External library changes in 1.29 ===
14082 ==== Upgraded external libraries ====
14083 * Updated QUnit from v1.22.0 to v1.23.1.
14084 * Updated cssjanus from v1.1.2 to v1.2.0.
14085 * Updated psr/log from v1.0.0 to v1.0.2.
14086 * Update Moment.js from v2.8.4 to v2.15.0.
14087 * Updated oyejorge/less.php from v1.7.0.10 to v1.7.0.14.
14088 * Updated monolog from v1.18.2 to 1.22.1.
14089 * Updated wikimedia/composer-merge-plugin from v1.3.1 to v1.4.0.
14090 * Updated OOjs from v1.1.10 to v2.0.0.
14091 * Updated jQuery from v1.11.3 to v3.2.1 (including jQuery Migrate v3.0.0).
14093 ==== New external libraries ====
14094 * Added wikimedia/timestamp v1.0.0.
14095 * Added wikimedia/remex-html v1.0.1.
14097 ==== Removed and replaced external libraries ====
14099 === Bug fixes in 1.29 ===
14100 * (T62604) Core parser functions returning a number now format the number
14101 according to the page content language, not wiki content language.
14102 * (T27187) Search suggestions based on jquery.suggestions will now correctly
14103 only highlight prefix matches in the results.
14104 * (T157035) "new mw.Uri()" was ignoring options when using default URI.
14105 * Special:Allpages can no longer be filtered by redirect in miser mode.
14106 * (T160519) CACHE_ANYTHING will not be CACHE_ACCEL if no accelerator is
14108 * (T109140) (T122209) SECURITY: Special:UserLogin and Special:Search allow
14109 redirect to interwiki links.
14110 * (T144845) SECURITY: XSS in SearchHighlighter::highlightText() when
14111 $wgAdvancedSearchHighlighting is true.
14112 * (T125177) SECURITY: API parameters may now be marked as "sensitive" to keep
14113 their values out of the logs.
14114 * (T150044) SECURITY: "Mark all pages visited" on the watchlist now requires a
14116 * (T156184) SECURITY: Escape content model/format url parameter in message.
14117 * (T151735) SECURITY: SVG filter evasion using default attribute values in DTD
14119 * (T161453) SECURITY: LocalisationCache will no longer use the temporary
14120 directory in it's fallback chain when trying to work out where to write the
14122 * (T48143) SECURITY: Spam blacklist ineffective on encoded URLs inside file
14123 inclusion syntax's link parameter.
14124 * (T108138) SECURITY: Sysops can undelete pages, although the page is protected
14127 === Action API changes in 1.29 ===
14128 * Submitting sensitive authentication request parameters to action=login,
14129 action=clientlogin, action=createaccount, action=linkaccount, and
14130 action=changeauthenticationdata in the query string is now an error. They
14131 should be submitted in the POST body instead.
14132 * The capture option for action=resetpassword has been removed
14133 * action=clearhasmsg now requires a POST.
14134 * (T47843) API errors and warnings may be requested in non-English languages
14135 using the new 'errorformat', 'errorlang', and 'errorsuselocal' parameters.
14136 * API error codes may have changed. Most notably, errors from modules using
14137 parameter prefixes (e.g. all query submodules) will no longer be prefixed.
14138 * ApiPageSet-using modules will report the 'invalidreason' using the specified
14140 * action=emailuser may return a "Warnings" status, and now returns 'warnings'
14141 and 'errors' subelements (as applicable) instead of 'message'.
14142 * action=imagerotate returns an 'errors' subelement rather than 'errormessage'.
14143 * action=move now reports errors when moving the talk page as an array under
14144 key 'talkmove-errors', rather than using 'talkmove-error-code' and
14145 'talkmove-error-info'. The format for subpage move errors has also changed.
14146 * action=revisiondelete no longer includes a "rendered" property on warnings
14147 and errors for each item. Use errorformat=wikitext if you're wanting parsed
14149 * action=rollback no longer returns a "messageHtml" property. Use
14150 errorformat=html if you're wanting HTML formatting of error messages.
14151 * action=upload now reports optional stash failures as an array under key
14152 'stasherrors' rather than a 'stashfailed' text string.
14153 * action=watch reports 'errors' and 'warnings' instead of a single 'error', and
14154 no longer returns a 'message' on success.
14155 * Added action=validatepassword to validate passwords for the account creation
14156 and password change forms.
14157 * action=purge now requires a POST.
14158 * There is a new `languagevariants` siprop for action=query&meta=siteinfo,
14159 which returns a list of languages with active LanguageConverter instances.
14160 * action=query&query=allpages will no longer filter redirects using a database
14161 query in miser mode. This may result in less results being returned than were
14164 === Action API internal changes in 1.29 ===
14165 * New methods were added to ApiBase to handle errors and warnings using i18n
14166 keys. Methods for using hard-coded English messages were deprecated:
14167 * ApiBase::dieUsage() was deprecated
14168 * ApiBase::dieUsageMsg() was deprecated
14169 * ApiBase::dieUsageMsgOrDebug() was deprecated
14170 * ApiBase::getErrorFromStatus() was deprecated
14171 * ApiBase::parseMsg() was deprecated
14172 * ApiBase::setWarning() was deprecated
14173 * ApiBase::$messageMap is no longer public. Code attempting to access it will
14174 result in a PHP fatal error.
14175 * The $message parameter to the ApiCheckCanExecute hook should be set to an
14176 ApiMessage. This is compatible with MediaWiki 1.27 and later. Returning a
14177 code for ApiBase::parseMsg() will no longer work.
14178 * UsageException is deprecated in favor of ApiUsageException. For the time
14179 being ApiUsageException is a subclass of UsageException to allow things that
14180 catch only UsageException to still function properly.
14181 * If, for some strange reason, code was using an ApiErrorFormatter instead of
14182 ApiErrorFormatter_BackCompat, note that the result format has changed and
14183 various methods now take a module path rather than a module name.
14184 * ApiMessageTrait::getApiCode() now strips 'apierror-' and 'apiwarn-' prefixes
14185 from the message key, and maps some message keys for backwards compatibility.
14186 * API parameters may now be marked as "sensitive" to keep their values out of
14189 === Languages updated in 1.29 ===
14191 MediaWiki supports over 350 languages. Many localisations are updated
14192 regularly. Below only new and removed languages are listed, as well as
14193 changes to languages because of Phabricator reports.
14195 * Based as always on linguistic studies on intelligibility and language
14196 knowledge by geography, language fallbacks have been expanded. When a
14197 translation is missing in the user's preferred interface language, the
14198 corresponding translation for the fallback language will be used instead.
14199 English will only be used as last resort when there are no translations.
14200 Some configurations (such as date formats and gender namespaces) have also
14201 been updated when using the fallback language's configuration was inadequate.
14202 The new or reinstated language fallbacks are (after cs ↔ sk in 1.28):
14203 ca ↔ oc; hsb ↔ dsb; io → eo; mdf → ru; pnt → el; roa-tara → it; rup → ro;
14204 sh → bs, sr-el, hr.
14205 * (T137376) New language support: Atikamekw (atj).
14206 * (T163600) New language support: Dinka (din).
14207 * (T155957) Talk Namespaces for Javanese language (jv) have been updated.
14209 ==== No fallback for Ukrainian ====
14210 * (T39314) The fallback from Ukrainian to Russian was removed. The Ukrainian
14211 language will now use the default fallback language: English. When a
14212 translation to Ukrainian is not available, an English string will be shown.
14214 === Other changes in 1.29 ===
14215 * Database::getSearchEngine() (deprecated in 1.28) was removed. Use
14216 SearchEngineFactory::getSearchEngineClass() instead.
14217 * $wgSessionsInMemcached (deprecated in 1.20) was removed. No replacement is
14218 required as all sessions are stored in Object Cache now.
14219 * MWHttpRequest::execute() should be considered to return a StatusValue; the
14220 Status return type is deprecated.
14221 * User::edits() (deprecated in 1.21) was removed.
14222 * Xml::escapeJsString() (deprecated in 1.21) was removed.
14223 * Article::getText() and Article::prepareTextForEdit() (deprecated in 1.21)
14225 * Article::getAutosummary() and WikiPage::getAutosummary() (deprecated in 1.21)
14227 * Hook ArticleViewCustom (deprecated in 1.21) was removed. Use
14228 ArticleContentViewCustom instead.
14229 * Hooks EditPageGetDiffText and ShowRawCssJs (deprecated in 1.21) were removed.
14230 * Class RevisiondeleteAction (deprecated in 1.25) was removed.
14231 * WikiPage::prepareTextForEdit() (deprecated in 1.21) was removed.
14232 * WikiPage::getText() (deprecated in 1.21) was removed.
14233 * Article::fetchContent() (deprecated in 1.21) was removed.
14234 * User::getPassword() (deprecated in 1.27) was removed.
14235 * User::getTemporaryPassword() (deprecated in 1.27) was removed.
14236 * User::isPasswordReminderThrottled() (deprecated in 1.27) was removed.
14237 * Class FSRepo (deprecated in 1.19) was removed.
14238 * WebRequest::checkSessionCookie() (deprecated in 1.27) was removed. Use
14239 \MediaWiki\Session\SessionManager::singleton()->getPersistedSessionId()
14241 * Class ImageGallery (deprecated in 1.22) was removed.
14242 Use ImageGalleryBase::factory instead.
14243 * Title::moveNoAuth() (deprecated in 1.25) was removed. Use MovePage class
14245 * Hook UnknownAction (deprecated in 1.19) was actually deprecated (it will now
14246 emit warnings). Create a subclass of Action and add it to $wgActions instead.
14247 * WikiRevision::getText() (deprecated since 1.21) is no longer marked
14249 * Linker::getInterwikiLinkAttributes() (deprecated since 1.25) was removed.
14250 * Linker::getInternalLinkAttributes() (deprecated since 1.25) was removed.
14251 * Linker::getInternalLinkAttributesObj() (deprecated since 1.25) was removed.
14252 * Linker::getLinkAttributesInternal() (deprecated since 1.25) was removed.
14253 * RedisConnectionPool::handleException (deprecated since 1.23) was removed.
14254 * The static properties mw.Api.errors and mw.Api.warnings, containing incomplete
14255 and outdated lists of errors/warnings returned by the API, are now deprecated.
14256 * wiki.phtml entry point was removed. Refer to index.php instead. If you want
14257 "wiki.phtml" URLs to continue to work, set up redirects. In Apache, this can
14258 be done by enabling mod_rewrite and adding the following rules to your
14263 RewriteRule ^/w/wiki\.phtml$ /w/index.php [R=301,L]
14264 * Hook ArticleAfterFetchContent (deprecated in 1.21) was removed.
14265 Use ArticleAfterFetchContentObject instead.
14266 * Hook ArticleInsertComplete (deprecated in 1.21) was removed.
14267 Use PageContentInsertComplete instead.
14268 * Hook ArticleSave (deprecated in 1.21) was removed.
14269 Use PageContentSave instead.
14270 * Hook ArticleSaveComplete (deprecated in 1.21) was removed.
14271 Use PageContentSaveComplete instead.
14272 * Hook EditFilterMerged (deprecated in 1.21) was removed.
14273 Use EditFilterMergedContent instead.
14274 * Hook EditPageGetPreviewText (deprecated in 1.21) was removed.
14275 Use EditPageGetPreviewContent instead.
14276 * Hook TitleIsCssOrJsPage (deprecated in 1.21) was removed.
14277 Use ContentHandlerDefaultModelFor instead.
14278 * Hook TitleIsWikitextPage (deprecated in 1.21) was removed.
14279 Use ContentHandlerDefaultModelFor instead.
14280 * Article::getContent() (deprecated in 1.21) was removed.
14281 * Revision::getText() (deprecated in 1.21) was removed.
14282 * Article::doEdit() and WikiPage::doEdit() (deprecated in 1.21) were removed.
14283 * Parser::replaceUnusualEscapes() (deprecated in 1.24) was removed.
14284 * Article::doEditContent() was marked as deprecated, to be removed in 1.30
14286 * ContentHandler::runLegacyHooks() was removed.
14287 * refreshLinks.php now can be limited to a particular category with
14288 --category=... or a tracking category with --tracking-category=...
14289 * User-like objects that are passed to SpecialUserRights and its subclasses are
14290 now required to have a getGroupMemberships() method. See UserRightsProxy for
14292 * User::$mGroups (instance variable) was marked private. Use User::getGroups()
14294 * User::getGroupName(), User::getGroupMember(), User:getGroupPage(),
14295 User::makeGroupLinkHTML(), and User::makeGroupLinkWiki() were deprecated.
14296 Use equivalent methods on the UserGroupMembership class.
14297 * Maintenance scripts and tests that call User::addGroup() must now ensure that
14298 User objects have been added to the database prior to calling addGroup().
14299 * Protected function UsersPager::getGroups() was removed, and protected function
14300 UsersPager::buildGroupLink() was changed from a static to an instance method.
14301 * The third parameter ($cache) to the UsersPagerDoBatchLookups hook was changed;
14302 see docs/hooks.txt.
14303 * User::crypt() (deprecated in 1.24) was removed.
14304 * User::comparePasswords() (deprecated in 1.24) was removed.
14305 * ArchivedFile::getUserText() (deprecated in 1.23) was removed.
14306 * HTMLFileCache::newFromTitle() (deprecated in 1.24) was removed.
14307 * BREAKING CHANGE: Internal signature changes to ChangesListSpecialPage
14308 and subclasses. It should only break if you call buildMainQueryConds
14309 (changed to buildQuery with new signature) or doMainQuery (new
14310 signature). Subclasses are likely to call at least doMainQuery
14311 (possibly both), but other classes might too, because they were
14313 Also, some related hooks were deprecated, but this is not yet a
14315 * Removed 'jquery.arrowSteps' module. (deprecated since 1.28)
14316 * The 'jquery.autoEllipsis' ResourceLoader module is now deprecated.
14317 * WikiRevision::$fileIsTemp was deprecated.
14318 * WikiRevision::$importer was deprecated.
14319 * WikiRevision::$user was deprecated.
14320 * Article::getLastPurgeTimestamp(), WikiPage::getLastPurgeTimestamp(), and the
14321 WikiPage::PURGE_* constants are deprecated, and the functions will always
14322 return false. They were a hack for an issue that has since been fixed.
14323 * Hook 'EditPageBeforeEditChecks' is now deprecated. Instead use the new hook
14324 'EditPageGetCheckboxesDefinition', or 'EditPage::showStandardInputs:options'
14325 if you don't actually care about checkboxes and just want to add some HTML
14327 * Selflinks are now rendered as href-less <a> tags with the class mw-selflink
14328 rather than <strong> tags. The old class name, "selflink", was deprecated
14329 and will be removed in a future release. (T160480)
14330 * (T156184) $wgRawHtml will no longer apply to internationalization messages.
14331 * Browser support for non-ES5 JavaScript browsers, including Android 2,
14332 Opera <12.10, and Internet Explorer 9, was lowered from Grade A to Grade C.
14333 * Removed wikibits global methods deprecated since MediaWiki 1.17 (T122755):
14334 is_gecko, is_chrome_mac, is_chrome, webkit_version, is_safari_win, is_safari,
14335 webkit_match, is_ff2, ff2_bugs, is_ff2_win, is_ff2_x11, opera95_bugs,
14336 opera7_bugs, opera6_bugs, is_opera_95, is_opera_preseven, is_opera,
14337 ie6_bugs, clientPC, changeText, killEvt, addHandler, hookEvent,
14338 addClickHandler, removeHandler, getElementsByClassName, getInnerText,
14339 setupCheckboxShiftClick, addCheckboxClickHandlers, mwEditButtons,
14340 mwCustomEditButtons, injectSpinner, removeSpinner, escapeQuotes,
14341 escapeQuotesHTML, jsMsg, addPortletLink, appendCSS, tooltipAccessKeyPrefix,
14342 tooltipAccessKeyRegexp, updateTooltipAccessKeys.
14343 * The ID of the <li> element containing the login link has changed from
14344 'pt-login' to 'pt-login-private' in private wikis.
14345 * The old, neglected "bulletin board style toolbar" in the edit form is now
14346 deprecated (T30856). This old code dates from 2006, and was replaced in the
14347 MediaWiki release tarball and in Wikimedia production by the WikiEditor
14348 extension in 2010. It is only shown to users if no other editor was
14349 installed, and leads to confusion.
14350 * (T92459) Loading ResourceLoader modules containing JavaScript through
14351 addModuleStyles() is deprecated and will log a warning server-side.
14355 == MediaWiki 1.28.3 ==
14357 This is a security and maintenance release of the MediaWiki 1.28 branch.
14359 === Changes since 1.28.2 ==
14360 * (T168856) Allow SVGs created by Dia to be uploaded.
14361 * (T157545) Add missing doUpdates() call to refreshLinks.php.
14362 * (T165714) (T100085) Better handling of jobs execution in post-connection
14364 * (T154425) (T154438) (T157679) Use AutoCommitUpdate instead of
14365 Database->onTransactionIdle.
14366 * (T154425) Make DeferredUpdates detect LBFactory transaction rounds.
14367 * (T149454) Restore erroneously removed realTableName call from
14369 * (T167798) Fix phrase search and highlighting for phrase queries.
14370 * (T151136) Provide credits information to callbacks in extension registration.
14371 * (T160462) Allow namespaces defined in extension.json to be overwritten
14373 * (T168337) Fix ErrorPageError to work from non-UI contexts.
14374 * (T143788) Backports for PHP 7.0 and 7.1 support.
14375 * (T175439) Unbreak Postgres Updater when setting defaults for a column.
14376 * (T160298) Remove use of implicitGroupBy() in ActiveUsersPager.
14377 * (T174255) Declare uploadCount property in importDump.php.
14378 * (T180231) SECURITY: Updated dev dependancy phpunit/phpunit from v4.8.24 to
14380 * (T178451) SECURITY: Potential XSS when $wgShowExceptionDetails = false and
14381 browser sends non-standard url escaping.
14382 * (T165846) SECURITY: BotPassword login attempts weren't throttled.
14383 * (T128209) SECURITY: Reflected File Download from api.php.
14384 * (T134100) SECURITY: Do not reveal if user exists during login failure.
14385 * (T176247) SECURITY: Ensure Message::rawParams can't lead to XSS.
14386 * (T125163) SECURITY: Make anchor for headlines escape > and <.
14387 * (T180237) SECURITY: Protect vendor folder with .htaccess.
14388 * (T180231) SECURITY: Remove PHPUnit file with known RCE if exists in
14390 * (T124404) SECURITY: XSS in langconverter when regex hits pcre.backtrack_limit.
14391 * (T119158) SECURITY: Handle -{}- syntax in attributes safely.
14393 == MediaWiki 1.28.2 ==
14395 Due to a packaging error, the wrong version of the SyntaxHighlight extension was
14396 included in the tarball version of MediaWiki 1.28.1. The version included had a
14397 serious security issue in it (T158689). There was also some minor code fixes in
14398 MediaWiki itself since 1.28.1, but none of them were security relevant.
14400 == MediaWiki 1.28.1 ==
14402 This is a security and maintenance release of the MediaWiki 1.28 branch.
14404 === Changes since 1.28.0 ===
14406 * $wgRunJobsAsync is now false by default (T142751). This change only affects
14407 wikis with $wgJobRunRate > 0.
14408 * Fix fatal from "WaitConditionLoop" not being found, experienced when a wiki
14409 has more than one database server setup.
14410 * (T152717) Better escaping for PHP mail() command,
14411 * (T154670) A missing method causing the MySQL installer to fatal in rare
14412 circumstances was restored.
14413 * (T154672) Un-deprecate ArticleAfterFetchContentObject hook.
14414 * (T158766) Avoid SQL error on MSSQL when using selectRowCount().
14415 * (T145635) Fix too long index error when installing with MSSQL.
14416 * (T156184) $wgRawHtml will no longer apply to internationalization messages.
14417 * (T160519) CACHE_ANYTHING will not be CACHE_ACCEL if no accelerator is
14419 * (T154872) Fix incorrect ar_usertext_timestamp index names in new 1.28
14421 * (T109140) (T122209) SECURITY: Special:UserLogin and Special:Search allow
14422 redirect to interwiki links.
14423 * (T144845) SECURITY: XSS in SearchHighlighter::highlightText() when
14424 $wgAdvancedSearchHighlighting is true.
14425 * (T125177) SECURITY: API parameters may now be marked as "sensitive" to keep
14426 their values out of the logs.
14427 * (T150044) SECURITY: "Mark all pages visited" on the watchlist now requires a
14429 * (T156184) SECURITY: Escape content model/format url parameter in message.
14430 * (T151735) SECURITY: SVG filter evasion using default attribute values in DTD
14432 * (T161453) SECURITY: LocalisationCache will no longer use the temporary
14433 directory in it's fallback chain when trying to work out where to write the
14435 * (T48143) SECURITY: Spam blacklist ineffective on encoded URLs inside file
14436 inclusion syntax's link parameter.
14437 * (T108138) SECURITY: Sysops can undelete pages, although the page is protected
14440 == MediaWiki 1.28 ==
14442 === Changes since 1.28.0-rc1 ===
14443 * (T148957) Replace wgShowExceptionDetails with wgShowDBErrorBacktrace on db
14445 * (T148956) Only apply wgDBschema to postgres/mssql.
14446 * (T145991) Introduce separate log action for deleting pages on move.
14447 * (T141474) (T110464) Bypass login page if no user input is required.
14449 === Changes since 1.28.0-rc0 ===
14450 * (T142210) The changes to move the parser "NewPP limit report" from a HTML
14451 comment to a machine-readable JavaScript config option 'wgPageParseReport'
14452 have been undone. They caused the human-readable limit report to be shown
14453 incompletely or not at all. ParserOutput::setLimitReportData() and
14454 getLimitReportData() behave as they did in MediaWiki 1.27 again.
14455 * (T149510) Value of {{DISPLAYTITLE:}} parser function will not be used for
14456 the text of subheadings on a category page when creating it. This wasn't
14458 * (T106793) MediaWiki will no longer try to perform a HTTP redirect to the
14459 canonical pretty URL when a non-pretty URL is used. It resulted in redirect
14460 loops in some clients and in some server configurations. This undoes a change
14461 made in MediaWiki 1.26.
14462 * (T149759) manifest_version: 2 was removed.
14464 === Configuration changes in 1.28 ===
14465 * $wgSend404Code now affects status code of action=history if the page is not
14467 * BREAKING CHANGE: $wgHTTPProxy is now *required* for all external requests
14468 made by MediaWiki via a proxy. Relying on the http_proxy environment
14469 variable is no longer supported.
14470 * The load.php entry point now enforces the existing policy of not allowing
14471 access to session data, which includes the session user and the session
14472 user's language. If such access is attempted, an exception will be thrown.
14473 * The number of internal PBKDF2 iterations used to derive the session secret
14474 is configurable via $wgSessionPbkdf2Iterations.
14475 * Upload dialog's file upload log comment can now be configured separately for
14476 local and foreign uploads.
14477 * $wgForeignUploadTargets now defaults to `[ 'local' ]`, where `'local'`
14478 signifies local uploads. A value of `[]` (empty array) now means that
14479 no upload targets are allowed, effectively disabling the upload dialog.
14480 * The deprecated $wgEditEncoding variable has been removed; it was only used
14481 for Esperanto language character conversion. You are now recommended to use
14482 input methods provided by the UniversalLanguageSelector extension.
14483 * When $wgPingback is true, MediaWiki will periodically ping
14484 https://www.mediawiki.org/beacon with basic information about the local
14485 MediaWiki installation. This data includes, for example, the type of system,
14486 PHP version, and chosen database backend. This behavior is off by default.
14487 * When $wgEditSubmitButtonLabelPublish is true, MediaWiki will label the button
14488 to store-to-database-and-show-to-others as "Publish page"/"Publish changes";
14489 if false, the default, they will be "Save page"/"Save changes".
14490 * The 'editcontentmodel' permission is now granted to all logged-in users
14492 instead of just administrators ('sysop'). Documentation for this feature is
14493 available at <https://www.mediawiki.org/wiki/Help:ChangeContentModel>.
14494 * $wgRevisionCacheExpiry is now set to one week by default instead of being
14496 * Magic links are now disabled by default, and can be re-enabled by modifying
14497 the value of $wgEnableMagicLinks. Their usage is discouraged, but if they are
14498 manually enabled, a tracking category will be added to help identify usage and
14499 make it easier to migrate away from. If you depend upon magic link
14500 functionality, it is requested that you comment on
14501 <https://www.mediawiki.org/wiki/Requests_for_comment/Future_of_magic_links>
14502 and explain your use case(s).
14503 * New config variable $wgCSPFalsePositiveUrls to control what URLs to ignore
14504 in upcoming Content-Security-Policy feature's reporting.
14506 === New features in 1.28 ===
14507 * User::isBot() method for checking if an account is a bot role account.
14508 * Added a new 'slideshow' mode for galleries.
14509 * Added a new hook, 'UserIsBot', to aid in determining if a user is a bot.
14510 * Added a new hook, 'ApiMakeParserOptions', to allow extensions to better
14511 interact with API parsing.
14512 * Added a new hook, 'UploadVerifyUpload', which can be used to reject a file
14513 upload. Unlike 'UploadVerifyFile' it provides information about upload comment
14514 and the file description page, but does not run for uploads to stash.
14515 * (T141604) Extensions can now provide a better error message when their
14516 maintenance scripts are run without the extension being installed.
14517 * (T8948) Numeric sorting in categories is now supported by setting
14518 $wgCategoryCollation to 'uca-default-u-kn' or 'uca-<langcode>-u-kn'. If you
14519 can't use UCA collations, a 'numeric' collation is also available. If
14520 migrating from another collation, you will need to run the updateCollation.php
14521 maintenance script.
14522 * Two new codes have been added to #time parser function: "xit" for days in
14523 current month, and "xiz" for days passed in the year, both in Iranian
14525 * mw.Api has a new option, useUS, to use U+001F (Unit Separator) when
14526 appropriate for sending multi-valued parameters. This defaults to true when
14527 the mw.Api instance seems to be for the local wiki.
14528 * After a client performs an action which alters a database that has replica
14529 databases, MediaWiki will wait for the replica databases to synchronize with
14530 the master database while it renders the HTML output. However, if the output
14531 is a redirect to another wiki on the wiki farm with a different domain,
14532 MediaWiki will instead alter the redirect URL to include a ?cpPosTime
14533 parameter that triggers the database synchronization when the URL is followed
14534 by the client. The same-domain case uses a new cpPosTime cookie.
14535 * Added new hooks, 'ApiQueryBaseBeforeQuery', 'ApiQueryBaseAfterQuery', and
14536 'ApiQueryBaseProcessRow', to make it easier for extensions to add 'prop' and
14537 'show' parameters to existing API query modules.
14539 === External library changes in 1.28 ===
14541 ==== Upgraded external libraries ====
14542 * Updated es5-shim from v4.1.5 to v4.5.8
14543 * Updated composer/semver from v1.4.1 to v1.4.2
14544 * Updated wikimedia/php-session-serializer from v1.0.3 to v1.0.4
14546 ==== New external libraries ====
14547 * Added wikimedia/scoped-callback v1.0.0
14548 * Added wikimedia/wait-condition-loop v1.0.1
14550 === Bug fixes in 1.28 ===
14551 * (T146496) action=history pages should return 404 HTTP error code if the page
14553 * (T137264) SECURITY: XSS in unclosed internal links
14554 * (T133147) SECURITY: Escape '<' and ']]>' in inline <style> blocks
14555 * (T133147) SECURITY: Require login to preview user CSS pages
14556 * (T132926) SECURITY: Do not allow undeleting a revision deleted file if it is
14558 * (T129738) SECURITY: Make $wgBlockDisablesLogin also restrict logged in
14560 * (T129738) SECURITY: Make blocks log users out if $wgBlockDisablesLogin is true
14561 * (T139670) Move 'UserGetRights' call before application of
14562 Session::getAllowedUserRights()
14564 === Action API changes in 1.28 ===
14565 * Added 'maxarticlesize' property to action=query&meta=siteinfo which contains
14566 the value of $wgMaxArticleSize.
14567 * Property 'modulemessages' from action=parse&prop=modules was removed
14568 (deprecated since 1.26).
14569 * The following response properties from action=login, deprecated in 1.27, are
14570 now removed: lgtoken, cookieprefix, sessionid. Clients should handle cookies
14571 to properly manage session state.
14572 * Submitting the lgtoken and lgpassword parameters in the query string to
14573 action=login is now deprecated and outputs a warning. They should be submitted
14574 in the POST body instead.
14575 * Submitting sensitive authentication request parameters to action=clientlogin,
14576 action=createaccount, action=linkaccount, and action=changeauthenticationdata
14577 in the query string is now deprecated and outputs a warning. They should be
14578 submitted in the POST body instead.
14579 * (T141960) Multi-valued parameters may now be separated using U+001F
14580 (Unit Separator) instead of the pipe character. This will be useful if some of
14581 the multiple values need to contain pipes, e.g. for action=options.
14582 * The API will now warn if input is not NFC-normalized Unicode or if it
14583 contains invalid characters.
14584 * The 'normalized' list output by action=query and other modules that use
14585 ApiPageSet may contain entries where the 'from' value is percent-encoded as
14586 the raw value cannot be represented in a valid API response. These are
14587 indicated by a 'fromencoded' boolean alongside the existing 'from' parameter.
14588 * (T28680) action=paraminfo can now return info about all submodules of a
14589 module without listing them all explicitly.
14590 * (T146770) It is now possible to assert that the current user is a specific
14591 named user, using the 'assertuser' parameter.
14592 * (T141963) Added a 'known' property when missing-but-known titles (e.g. from
14593 the 'TitleIsAlwaysKnown' hook) are output in various modules.
14595 === Action API internal changes in 1.28 ===
14596 * Added a new hook, 'ApiMakeParserOptions', to allow extensions to better
14597 interact with ApiParse and ApiExpandTemplates.
14598 * (T139565) SECURITY: API: Generate head items in the context of the given title
14599 * (T115333) SECURITY: Check read permission when loading page content in
14601 * ApiBase::getResultData() was removed (deprecated since 1.25)
14602 * ApiBase::makeHelpArrayToString() was removed (deprecated since 1.25)
14603 * ApiBase::makeHelpMsgParameters() was removed (deprecated since 1.25)
14604 * ApiBase::makeHelpMsg() was removed (deprecated since 1.25)
14605 * ApiFormatBase::formatHTML() was removed (deprecated since 1.25)
14606 * ApiFormatBase::getNeedsRawData() was removed (deprecated since 1.25)
14607 * ApiFormatBase::getWantsHelp() was removed (deprecated since 1.25)
14608 * ApiFormatBase::setBufferResult() was removed (deprecated since 1.25)
14609 * ApiFormatBase::setHelp() was removed (deprecated since 1.25)
14610 * ApiFormatBase::setUnescapeAmps() was removed (deprecated since 1.25)
14611 * ApiMain::makeHelpMsgHeader() was removed (deprecated since 1.25)
14612 * ApiMain::reallyMakeHelpMsg() was removed (deprecated since 1.25)
14613 * ApiMain::setHelp() was removed (deprecated since 1.25)
14614 * ApiResult::beginContinuation() was removed (deprecated since 1.25)
14615 * ApiResult::cleanUpUTF8() was removed (deprecated since 1.25)
14616 * ApiResult::convertStatusToArray() was removed (deprecated since 1.25)
14617 * ApiResult::disableSizeCheck() was removed (deprecated since 1.24)
14618 * ApiResult::enableSizeCheck() was removed (deprecated since 1.24)
14619 * ApiResult::endContinuation() was removed (deprecated since 1.25)
14620 * ApiResult::getData() was removed (deprecated since 1.25)
14621 * ApiResult::getIsRawMode() was removed (deprecated since 1.25)
14622 * ApiResult::setContent() was removed (deprecated since 1.25)
14623 * ApiResult::setContinueParam() was removed (deprecated since 1.25)
14624 * ApiResult::setElement() was removed (deprecated since 1.25)
14625 * ApiResult::setGeneratorContinueParam() was removed (deprecated since 1.25)
14626 * ApiResult::setIndexedTagName_internal() was removed (deprecated since 1.25)
14627 * ApiResult::setIndexedTagName_recursive() was removed (deprecated since 1.25)
14628 * ApiResult::setMainForContinuation() was removed (deprecated since 1.25)
14629 * ApiResult::setParsedLimit() was removed (deprecated since 1.25)
14630 * ApiResult::setRawMode() was removed (deprecated since 1.25)
14631 * ApiResult::size() was removed (deprecated since 1.25)
14632 * Added new hooks, 'ApiQueryBaseBeforeQuery', 'ApiQueryBaseAfterQuery', and
14633 'ApiQueryBaseProcessRow', to make it easier for extensions to add 'prop' and
14634 'show' parameters to existing API query modules. A query module can enable
14635 these hooks by passing an array for $hookData to ApiQueryBase::select() and
14636 by calling ApiQueryBase->processRow() before adding a row's data to the
14639 === Languages updated in 1.28 ===
14641 MediaWiki supports over 375 languages. Many localisations are updated
14642 regularly. Below only new and removed languages are listed, as well as
14643 changes to languages because of Phabricator reports.
14645 * (T137411) ban (Balinese), thanks to translators Adi Mayndra, Andru,
14646 BASAbali, M. Adiputra, Naval Scene, Nemo bis, NoiX180, and 아라.
14647 * (T135867) shn (Shan), thanks to translators Khun Sar, Piangpha,
14648 Saiddzone Saimawnkham, Saosukham, and Sengwan.
14649 * Czech (cs) and Slovak (sk) set as reciprocal fallbacks.
14650 * (T146744) Livvi-Karelian (olo) namespace messages created thanks to translator
14653 === Other changes in 1.28 ===
14654 * (T128697) Improved handling of large diffs.
14655 * [BREAKING CHANGE] $wgExtendedLoginCookies has been removed. You can
14656 use or update a custom session provider if needed.
14657 * Deprecated APIEditBeforeSave hook in favor of EditFilterMergedContent.
14658 * The 'UploadVerification' hook is deprecated. Use 'UploadVerifyFile' instead.
14659 * SiteConfiguration::isLocalVHost() was removed (deprecated since 1.25).
14660 * The 'UserLoginComplete' hook has a new parameter to differentiate between
14661 actual login and visiting the login page while already logged in.
14662 * ResourceLoader::makeLoaderURL() was removed (deprecated since 1.24).
14663 * $.fn.liveAndTestAtStart was removed (deprecated since 1.24).
14664 * mw.util.tooltipAccessKeyPrefix was removed (deprecated since 1.24).
14665 * mw.util.tooltipAccessKeyRegexp was removed (deprecated since 1.24).
14666 * Linker::link() and Linker::linkKnown() were deprecated; please instead use
14667 MediaWiki\Linker\LinkRenderer. In addition, the LinkBegin and LinkEnd hooks
14668 were replaced by HtmlPageLinkRendererBegin and HtmlPageLinkRendererEnd
14669 respectively. See docs/hooks.txt for the specific changes needed for those
14671 * Linker::formatSize() was deprecated. Use Language::formatSize() directly.
14672 * Aliases for Linker methods, deprecated since 1.21, were removed from Skin:
14673 * Skin::commentBlock() (use Linker::commentBlock() instead)
14674 * Skin::generateRollback() (use Linker::generateRollback() instead)
14675 * Skin::link() (use MediaWiki\Linker\LinkRenderer instead)
14676 * Skin::linkKnown() (use MediaWiki\Linker\LinkRenderer instead)
14677 * Skin::userLink() (use Linker::userLink() instead)
14678 * Skin::userToolLinks() (use Linker::userToolLinks() instead)
14679 * Disabled "bug 2702" HTML tidying of parsed UI messages on wikis where Tidy is
14681 * DifferenceEngine::generateDiffBody() was removed (deprecated since 1.21).
14682 * UploadBase::stashFileGetKey() and UploadBase::stashSession() were deprecated.
14683 Use ...->stashFile()->getFileKey() instead.
14684 * "Public domain" was removed as a wiki license option from the installer, in
14686 * AuthenticationRequest::$required is now changed from REQUIRED to
14687 PRIMARY_REQUIRED on requests needed by primary providers even if all primaries
14689 Primary providers are discouraged from returning multiple REQUIRED requests.
14690 * OOjs UI PHP widgets constructed with the `'infusable' => true` config option
14691 will no longer be automatically infused. You should call `OO.ui.infuse()`
14692 on them yourself from your JavaScript code.
14693 * parserTests.php has moved to tests/parser/parserTests.php
14694 * The command line options specific to parser tests have been removed from
14695 phpunit.php: --regex and --keep-uploads. Instead of --regex, use --filter.
14696 Instead of --keep-uploads, use the same option to parserTests.php, but you
14697 must specify a directory with --upload-dir.
14698 * The 'jquery.arrowSteps' ResourceLoader module is now deprecated.
14699 * IP::isConfiguredProxy() and IP::isTrustedProxy() were removed. Callers should
14700 migrate to using the same functions on a ProxyLookup instance, obtainable from
14702 * The ArticleAfterFetchContent, ArticleInsertComplete, ArticleSave,
14703 ArticleSaveComplete, ArticleViewCustom, EditFilterMerged, EditPageGetDiffText,
14704 EditPageGetPreviewText and ShowRawCssJs hooks will now emit deprecation
14706 * (T68404) CSS3 attr() function with url type is no longer allowed
14708 * Database::getSearchEngine() is deprecated, use
14709 SearchEngineFactory::getSearchEngineClass instead.
14711 == Compatibility ==
14713 MediaWiki 1.28 requires PHP 5.5.9 or later. There is experimental support for
14714 HHVM 3.6.5 or later.
14716 MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
14717 support for them is somewhat less mature. There is experimental support for
14718 Oracle and Microsoft SQL Server.
14720 The supported versions are:
14722 * MySQL 5.0.3 or later
14723 * PostgreSQL 8.3 or later
14724 * SQLite 3.3.7 or later
14725 * Oracle 9.0.1 or later
14726 * Microsoft SQL Server 2005 (9.00.1399)
14730 1.28 has several database changes since 1.27, and will not work without schema
14731 updates. Note that due to changes to some very large tables like the revision
14732 table, the schema update may take quite long (minutes on a medium sized site,
14733 many hours on a large site).
14735 If upgrading from before 1.11, and you are using a wiki as a commons
14736 repository, make sure that it is updated as well. Otherwise, errors may arise
14737 due to database schema changes.
14739 If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
14740 new database fields are filled with data.
14742 If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
14743 1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
14744 with MediaWiki 1.21.
14746 Don't forget to always back up your database before upgrading!
14748 See the file UPGRADE for more detailed upgrade instructions.
14750 For notes on 1.27.x and older releases, see HISTORY.
14752 == Online documentation ==
14754 Documentation for both end-users and site administrators is available on
14755 MediaWiki.org, and is covered under the GNU Free Documentation License (except
14756 for pages that explicitly state that their contents are in the public domain):
14758 https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
14762 A mailing list is available for MediaWiki user support and discussion:
14764 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
14766 A low-traffic announcements-only list is also available:
14768 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
14770 It's highly recommended that you sign up for one of these lists if you're
14771 going to run a public MediaWiki, so you can be notified of security fixes.
14775 There's usually someone online in #mediawiki on irc.freenode.net.
14779 == MediaWiki 1.27.7 ==
14781 This is a maintenance release of the MediaWiki 1.27 branch.
14783 === Changes since MediaWiki 1.27.6 ===
14784 * Add missing `use MediaWiki\MediaWikiServices;` to LogEventsList.php.
14785 * Remove broken tests from ApiBlockTest.php.
14787 == MediaWiki 1.27.6 ==
14789 This is a security and maintenance release of the MediaWiki 1.27 branch.
14791 === Changes since MediaWiki 1.27.5 ===
14792 * (T204729) WatchedItemStore::countVisitingWatchersMultiple() shouldn't query
14793 all titles when asked for none.
14794 * (T109121) Remove deprecated pear/mail_mime-decode from composer suggested
14796 * (T207241) Augment precision of updatelist time.
14797 * (T207540) Include IP address in "Login for $1 succeeded" log entry.
14798 * (T205765) Don't link to the obsolete "Extension Matrix" page in installer.
14799 * (T207603) SECURITY: User JS may no longer be loaded with mime type
14800 text/javascript if there is no account associated with the username.
14801 * (T113042) SECURITY: Do not allow loading pages raw with a text/javascript MIME
14802 type if non-admins can edit the page.
14803 * (T207541) Pass email address to mail().
14804 * (T209335) Clarify the default sidebar 'Help' link is about MediaWiki itself.
14805 * (T213359) Update mediawiki/mediawiki-codesniffer to 0.8.1.
14806 * (T208871) The hard-coded Google search form on the database error page was
14808 * (T216968) Return pageid as int in both list=iwbacklinks and
14809 list=langbacklinks.
14810 * (T218608) Fix an issue that prevents Extension:OAuth working when
14811 $wgBlockDisablesLogin is true.
14812 * (T219728) Added support for new Japanese era name "Reiwa".
14813 * (T25227) SECURITY: action=logout now requires to be posted and have a csrf
14815 * SpecialPage::checkLoginSecurityLevel() will now preserve POST data when
14817 * FormSpecialPage::execute() will now call checkLoginSecurityLevel() if
14818 getLoginSecurityLevel() returns non-false.
14819 * (T197279) SECURITY: Fix reauth in Special:ChangeEmail.
14820 * (T208881) SECURITY: blacklist CSS var().
14821 * (T209794) SECURITY: rate-limit and prevent blocked users from changing email.
14822 * (T199540) SECURITY: API: Respect $wgBlockCIDRLimit in action=block.
14823 * (T212118) SECURITY: Fix cache mode for (un)patrolled recent changes query.
14824 * (T222036, T222038) SECURITY: Add permission check for user is permitted to
14826 * (T221739) SECURITY: resources: Patch jQuery 1.11.3 for CVE-2019-11358.
14828 == MediaWiki 1.27.5 ==
14830 This is a security and maintenance release of the MediaWiki 1.27 branch.
14832 === Changes since 1.27.4 ===
14833 * (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides
14835 * (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's
14837 * Upgraded Moment.js from v2.8.4 to v2.19.3.
14838 * (T160298) Fixed Special:ActiveUsers due to bad backport.
14839 * (T87572) Make FormatMetadata::flattenArrayReal() work for an associative
14841 * Updated list of SPDX licenses for extensions.
14842 * (T189567) the CLI installer (maintenance/install.php) learned to detect and
14843 include extensions. Pass --with-extensions to enable that feature.
14844 * (T192584) Stop incorrectly passing USE INDEX to RecentChange::newFromConds().
14845 * Add default edit rate limit of 90 edits/minute for all users.
14846 * (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported.
14847 * (T196672) The mtime of extension.json files is now able to be zero.
14848 * (T118683) Fix exception from &$user deref on HHVM in the TitleMoveComplete
14850 * (T180403) Validate $length in padleft/padright parser functions.
14851 * (T143790) Make $wgEmailConfirmToEdit only affect edit actions.
14852 * Special:BotPasswords now requires reauthentication.
14853 * (T191608, T187638) Add 'logid' parameter to Special:Log.
14854 * (T193829) Indicate when a Bot Password needs reset.
14855 * (T151415) Log email changes.
14856 * (T118420) Unbreak Oracle installer.
14858 == MediaWiki 1.27.4 ==
14859 This is a security and maintenance release of the MediaWiki 1.27 branch.
14861 === Changes since 1.27.3 ===
14862 * (T100085) Better handling of jobs execution in post-connection shutdown.
14863 * (T141604) Support conditionally registered namespaces.
14864 * (T167798) Fix highlighting for phrase queries and phrase search.
14865 * (T151136) Provide credits information to callbacks.
14866 * (T160462) Allow namespaces defined in extension.json to be overwritten
14868 * (T168856) Allow SVGs created by Dia to be uploaded.
14869 * (T144705) (T148662) Password reset link is no longer shown when no reset
14870 options are available.
14871 * (T143788) (T174262) Various backports for PHP 7.0 and 7.1 support.
14872 * (T66795) $wgUserEmailUseReplyTo is now true by default to work around
14873 restrictive DMARC policies.
14874 * DB_REPLICA constant added from REL1_28+ to ease backports to extensions and
14876 * (T175439) Unbreak Postgres Updater when setting defaults for a column.
14877 * (T160298) Remove use of implicitGroupBy() in ActiveUsersPager.
14878 * (T142304) Allow putting the app ID in the password for bot passwords.
14879 * Updated dev dependancy phpunit/phpunit from v4.8.24 to v4.8.36.
14880 * (T178451) SECURITY: Potential XSS when $wgShowExceptionDetails = false and
14881 browser sends non-standard url escaping.
14882 * (T165846) SECURITY: BotPassword login attempts weren't throttled.
14883 * (T128209) SECURITY: Reflected File Download from api.php.
14884 * (T134100) SECURITY: Do not reveal if user exists during login failure.
14885 * (T176247) SECURITY: Ensure Message::rawParams can't lead to XSS.
14886 * (T125163) SECURITY: Make anchor for headlines escape > and <.
14887 * (T180237) SECURITY: Protect vendor folder with .htaccess.
14888 * (T180231) SECURITY: Remove PHPUnit file with known RCE if exists in
14890 * (T124404) SECURITY: XSS in langconverter when regex hits pcre.backtrack_limit.
14891 * (T119158) SECURITY: Handle -{}- syntax in attributes safely.
14893 == MediaWiki 1.27.3 ==
14894 Due to a packaging error, the wrong version of the SyntaxHighlight extension was
14895 included in the tarball version of MediaWiki 1.27.2. The version included had a
14896 serious security issue in it (T158689). There was also some minor code fixes in
14897 MediaWiki itself since 1.27.2, but none of them were security relevant.
14899 === Changes since 1.27.2 ===
14900 * (T145664) Fix broken wincache merge() implementation
14901 * (T163434) Add wikimedia/testing-access-wrapper for forwards compatibility
14902 * (T153505) Fix php warnings on php 7.1 due to use of &$this
14904 == MediaWiki 1.27.2 ==
14905 This is a security and maintenance release of the MediaWiki 1.27 branch.
14907 ApiCreateAccount was removed in 1.27.0. It was incorrectly still marked as
14908 deprecated (rather than already removed) in the RELEASE-NOTES at the point
14909 1.27.0 was released.
14911 === Changes since 1.27.1 ===
14913 * (T68404) CSS3 attr() function with url type argument is no longer allowed
14915 * $wgRunJobsAsync is now false by default (T142751). This change only affects
14916 wikis with $wgJobRunRate > 0.
14917 * (T152717) Better escaping for PHP mail() command
14918 * Submitting the lgtoken and lgpassword parameters in the query string to
14919 action=login is now deprecated and outputs a warning. They should be submitted
14920 in the POST body instead.
14921 * Submitting sensitive authentication request parameters to action=clientlogin,
14922 action=createaccount, action=linkaccount, and action=changeauthenticationdata
14923 in the query string is now deprecated and outputs a warning. They should be
14924 submitted in the POST body instead.
14925 * (T158766) Avoid SQL error on MSSQL when using selectRowCount()
14926 * (T145635) Fix too long index error when installing with MSSQL.
14927 * (T156184) $wgRawHtml will no longer apply to internationalization messages.
14928 * (T160519) CACHE_ANYTHING will not be CACHE_ACCEL if no accelerator is
14930 * (T109140) (T122209) SECURITY: Special:UserLogin and Special:Search allow
14931 redirect to interwiki links.
14932 * (T144845) SECURITY: XSS in SearchHighlighter::highlightText() when
14933 $wgAdvancedSearchHighlighting is true.
14934 * (T125177) SECURITY: API parameters may now be marked as "sensitive" to keep
14935 their values out of the logs.
14936 * (T150044) SECURITY: "Mark all pages visited" on the watchlist now requires a
14938 * (T156184) SECURITY: Escape content model/format url parameter in message.
14939 * (T151735) SECURITY: SVG filter evasion using default attribute values in DTD
14941 * (T161453) SECURITY: LocalisationCache will no longer use the temporary
14942 directory in it's fallback chain when trying to work out where to write the
14944 * (T48143) SECURITY: Spam blacklist ineffective on encoded URLs inside file
14945 inclusion syntax's link parameter.
14946 * (T108138) SECURITY: Sysops can undelete pages, although the page is protected
14949 == MediaWiki 1.27.1 ==
14951 This is a maintenance release of the MediaWiki 1.27 branch.
14953 === Changes since 1.27.0 ===
14954 * BREAKING CHANGE: $wgHTTPProxy is now *required* for all external requests
14955 made by MediaWiki via a proxy. Relying on the http_proxy environment
14956 variable is no longer supported.
14957 * (T139565) SECURITY: API: Generate head items in the context of the given title
14958 * (T137264) SECURITY: XSS in unclosed internal links
14959 * (T133147) SECURITY: Escape '<' and ']]>' in inline <style> blocks
14960 * (T133147) SECURITY: Require login to preview user CSS pages
14961 * (T132926) SECURITY: Do not allow undeleting a revision deleted file if it is
14963 * (T129738) SECURITY: Make $wgBlockDisablesLogin also restrict logged in
14965 * (T129738) SECURITY: Make blocks log users out if $wgBlockDisablesLogin is true
14966 * (T115333) SECURITY: Check read permission when loading page content in
14968 * (T57548) Remove support for $wgWellFormedXml = false, all output is now well
14970 * (T139670) Move 'UserGetRights' call before application of
14971 Session::getAllowedUserRights()
14973 == MediaWiki 1.27.0 ==
14975 === PHP version requirement in 1.27 ===
14976 As of 1.27, MediaWiki now requires PHP 5.5.9 or higher (see Compatibility
14977 section). Additionally, the following PHP extensions are required:
14981 * mbstring (new requirement in 1.27)
14983 The following PHP extensions are strongly recommended:
14986 === Configuration changes in 1.27 ===
14987 * $wgAllowMicrodataAttributes and $wgAllowRdfaAttributes were removed,
14988 now always enabled. If you use RDFa on your wiki, you now have to explicitly
14989 set $wgHtml5Version to 'HTML+RDFa 1.0' or 'XHTML+RDFa 1.0'.
14990 * $wgUseLinkNamespaceDBFields was removed.
14991 * Deprecated $wgResourceLoaderMinifierStatementsOnOwnLine and
14992 $wgResourceLoaderMinifierMaxLineLength, because there was little value in
14993 making the behavior configurable. The default values (`false` for the former,
14994 1000 for the latter) are now hard-coded.
14995 * $wgDebugDumpSqlLength was removed (deprecated in 1.24).
14996 * $wgDebugDBTransactions was removed (deprecated in 1.20).
14997 * $wgUseXVO has been removed, as it provides functionality only used by
14998 custom Wikimedia patches against Squid 2.x that probably noone uses in
14999 production anymore. There is now $wgUseKeyHeader that provides similar
15000 functionality but instead of the MediaWiki-specific X-Vary-Options header,
15001 uses the draft Key header standard.
15002 * $wgScriptExtension (and support for '.php5' entry points) was removed. See the
15003 deprecation notice in the release notes for version 1.25 for advice on how to
15004 preserve support for '.php5' entry points via URL rewriting.
15005 * Password handling via the User object has been deprecated and partially
15006 removed, pending the future introduction of AuthManager. In particular:
15007 ** expirePassword(), getPasswordExpireDate(), resetPasswordExpiration(), and
15008 getPasswordExpired() have been removed. They were unused outside of core.
15009 ** The mPassword, mNewpassword, mNewpassTime, and mPasswordExpires fields are
15010 now private and will be removed in the future.
15011 ** The getPassword() and getTemporaryPassword() methods now throw
15012 BadMethodCallException and will be removed in the future.
15013 ** The ability to pass 'password' and 'newpassword' to createNew() has been
15014 removed. The only users of it seem to have been using it to set invalid
15015 passwords, and so shouldn't be greatly affected.
15016 ** setPassword(), setInternalPassword(), and setNewpassword() have been
15017 deprecated, pending the introduction of AuthManager.
15018 ** User::randomPassword() is deprecated in favor of a new method
15019 PasswordFactory::generateRandomPasswordString()
15020 ** User::getPasswordFactory() is deprecated, callers should just create a
15021 PasswordFactory themselves.
15022 ** A new constructor, User::newSystemUser(), has been added to simplify the
15023 creation of passwordless "system" users for logged actions.
15024 * $wgMaxSquidPurgeTitles was removed.
15025 * $wgAjaxWatch was removed. This is now enabled by default.
15026 * $wgUseInstantCommons now hotlinks Commons images by default instead of
15027 downloading originals and thumbnailing them locally. This allows wikis to save
15028 on CPU and bandwidth while reducing time to first byte for pages, even without
15029 a thumbnail handler. See $wgForeignFileRepos documentation for tweaks.
15030 * (T27397) WebP is enabled by default as an uploadable filetype.
15031 * (T48998) $wgArticlePath must now be either a full url, or start with a "/".
15032 * $wgRateLimitLog was removed; use $wgDebugLogGroups['ratelimit'] instead.
15033 * Deprecated API formats dbg, txt, and yaml have been removed.
15034 * CLDRPluralRule* classes have been replaced with
15035 wikimedia/cldr-plural-rule-parser.
15036 * Removed $wgProfilePerHost, $wgUDPProfilerHost, $wgUDPProfilerPort,
15037 $wgUDPProfilerFormatString, $wgStatsMethod, $wgAggregateStatsID,
15038 $wgStatsFormatString, and $wgProfileCallTree (deprecated since 1.20).
15039 * For proper operation of LocalIdLookup with shared user tables, ensure that
15040 $wgSharedDB and $wgSharedTables are properly set even on the "central" wiki
15041 that all others are sharing from and that $wgLocalDatabases is set to the
15042 full list of sharing wikis on all those wikis.
15043 * Massive overhaul to session handling:
15044 ** $wgSessionsInObjectCache is no longer supported and must be true, due to
15045 MediaWiki\Session\SessionManager. $wgSessionHandler is similarly no longer
15047 ** ObjectCacheSessionHandler is removed, replaced with
15048 MediaWiki\Session\PhpSessionHandler.
15049 ** PHP session handling in general ($_SESSION, session_id(), and so on) is
15050 deprecated. Use MediaWiki\Session\SessionManager instead. A new config
15051 variable, $wgPHPSessionHandling, is available to cause use of $_SESSION to
15052 issue a deprecation warning or to cause most PHP session handling to throw
15054 ** Deprecated UserSetCookies hook. Session-handling extensions should generally
15055 be creating a custom subclass of CookieSessionProvider. Other extensions
15056 messing with cookies can no longer count on user data being saved in cookies
15057 versus other methods.
15058 ** Deprecated UserLoadFromSession hook, extensions should create a
15059 MediaWiki\Session\SessionProvider.
15060 ** The User cannot be loaded from session until after Setup.php completes.
15061 Attempts to do so will be ignored and the User will remain unloaded.
15062 ** CSRF tokens may be fetched from the MediaWiki\Session\Session, which uses
15063 the MediaWiki\Session\Token class.
15064 * MediaWiki will now auto-create users as necessary, removing the need for
15065 extensions to do so. An 'autocreateaccount' right is added to allow
15066 auto-creation when 'createaccount' is not granted to all users.
15067 * Deprecated AuthPluginAutoCreate hook in favor of LocalUserCreated.
15068 * Most cookie-handling methods in User are deprecated.
15069 * $wgAllowAsyncCopyUploads and $CopyUploadAsyncTimeout were removed. This was an
15070 experimental feature that has never worked.
15071 * Login and createaccount tokens now vary by timestamp.
15072 * LoginForm::getLoginToken() and LoginForm::getCreateaccountToken()
15073 return a MediaWiki\Session\Token, and tokens must be checked using that
15075 * $wgEnotifUseJobQ was removed and the job queue is always used.
15076 * The functionality of the ApiSandbox extension has been merged into core. The
15077 extension should no longer be used.
15078 * $wgPreloadJavaScriptMwUtil was removed (deprecated in 1.26).
15079 Extensions, skins, gadgets and scripts that use the mediawiki.util module must
15080 express a dependency on it.
15081 * $wgIncludeLegacyJavaScript, deprecated in MediaWiki 1.26, now defaults false.
15082 Extensions, skins, gadgets and scripts that need the mediawiki.legacy.wikibits
15083 module should express a dependency on it.
15084 * Removed configuration option $wgCopyrightIcon (deprecated since 1.18). Use
15085 $wgFooterIcons['copyright']['copyright'] instead.
15086 * If the openssl and mcrypt PHP extensions are both unavailable, secure
15087 session storage (used for login) will raise an exception. This exception may
15088 be bypassed by setting $wgSessionInsecureSecrets = true.
15089 * Massive overhaul to authentication:
15090 ** AuthPlugin and AuthPluginUser are deprecated.
15091 ** LoginForm and associated templates are deprecated. Extensions which called
15092 static LoginForm methods should be converted into authentication providers.
15093 ** The following hooks are deprecated:
15094 *** AbortAutoAccount (create a MediaWiki\Auth\PreAuthenticationProvider instead)
15095 *** AbortLogin (create a MediaWiki\Auth\PreAuthenticationProvider instead)
15096 *** AbortNewAccount (create a MediaWiki\Auth\PreAuthenticationProvider instead)
15097 *** AddNewAccount (use LocalUserCreated instead)
15098 *** AuthPluginSetup (create a MediaWiki\Auth\PrimaryAuthenticationProvider
15100 *** ChangePasswordForm (use AuthChangeFormFields instead, or security levels)
15101 *** LoginUserMigrated (create a MediaWiki\Auth\PreAuthenticationProvider
15103 *** UserCreateForm (create a MediaWiki\Auth\AuthenticationProvider of some type
15105 *** UserLoginForm (create a MediaWiki\Auth\AuthenticationProvider of some type
15107 ** The following hooks are removed:
15108 *** AbortChangePassword
15109 *** LoginPasswordResetMessage
15110 *** PrefsPasswordAudit
15111 ** The UserLoginComplete hook will no longer be called for all logins, only for
15112 those via the web UI. Use UserLoggedIn if you need to do something on all
15114 ** $wgRequirePasswordforEmailChange is removed.
15116 === New features in 1.27 ===
15117 * $wgDataCenterUpdateStickTTL was also added. This decides how long a user
15118 sticks to the primary DC (via cookies) after they make changes to the site.
15119 * Added a new hook, 'UserMailerTransformContent', to transform the contents
15120 of an email. This is similar to the EmailUser hook but applies to all mail
15121 sent via UserMailer.
15122 * Added a new hook, 'UserMailerTransformMessage', to transform the contents
15123 of an emai after MIME encoding.
15124 * Added a new hook, 'UserMailerSplitTo', to control which users have to be
15125 emailed separately (ie. there is a single address in the To: field) so
15126 user-specific changes to the email can be applied safely.
15127 * $wgCdnMaxageLagged was added, which limits the CDN cache TTL
15128 when any load balancer uses a DB that is lagged beyond the 'max lag'
15129 setting in the relevant section of $wgLBFactoryConf.
15130 * User::newSystemUser() may be used to simplify the creation of passwordless
15131 "system" users for logged actions from scripts and extensions.
15132 * Extensions can now return detailed error information via the API when
15133 preventing user actions using 'getUserPermissionsErrors' and similar hooks
15134 by using ApiMessage instances instead of strings for the $result value.
15135 * $wgAPIMaxLagThreshold was added to limit bot changes when databases lag
15137 * Skins and extensions can now use FlexBox mixins (.flex-display(@display: flex)
15138 and .flex(@grow: 1, @shrink: 1, @width: auto, @order: 1)) in Less to create
15139 cross-browser-compatible FlexBox rules. Users will still need to add fallback
15140 float rules or the like for compatibility with IE9- separately.
15141 * Added MWTimestamp::getTimezoneString() which returns the localized timezone
15142 string, if available. To localize this string, see the comments of
15143 $wgLocaltimezone in includes/DefaultSettings.php.
15144 * Added CentralIdLookup, a service that allows extensions needing a concept of
15145 "central" users to get that without having to know about specific central
15146 authentication extensions.
15147 * $wgMaxUserDBWriteDuration added to limit huge user-generated transactions.
15148 Regular web request transactions that takes longer than this are aborted.
15149 * Added a new hook, 'TitleMoveCompleting', which runs before a page move is
15151 * $wgCdnReboundPurgeDelay was added to provide secondary delayed purges of URLs
15152 from CDN to mitigate DB replication lag and WAN cache purge lag.
15153 * (T49162) Installer will default to setting CACHE_ACCEL as the main cache type
15154 if it is available.
15155 * It is now possible to patrol file uploads (both for new files and new versions
15156 of existing files). Special:NewFiles has gained an option to filter by patrol
15157 status. This functionality can be disabled using $wgUseFilePatrol.
15158 * MediaWiki\Session infrastructure allows for easier use of session mechanisms
15159 other than the usual cookies.
15160 ** SessionMetadata and SessionCheckInfo hooks allow for setting and checking
15161 custom session metadata.
15162 * Added MWGrants and associated configuration settings $wgGrantPermissions and
15163 $wgGrantPermissionGroups to hold configuration for authentication features
15164 such as OAuth that want to allow restricting the user rights a user may make
15166 ** If you're already using the OAuth extension, these new variables are
15167 identical to (and will replace) $wgMWOAuthGrantPermissions and
15168 $wgMWOAuthGrantPermissionGroups.
15169 * Added MWRestrictions as a class to check restrictions on a WebRequest, e.g.
15170 to assert that the request comes from a particular IP range.
15171 * Added bot passwords, a rights-restricted login mechanism for API-using bots.
15172 * Whitelisted the following HTML attributes for all elements in wikitext:
15173 aria-describedby, aria-flowto, aria-label, aria-labelledby, aria-owns.
15174 * Removed "presentation" restriction on the HTML role attribute in wikitext.
15175 All values are now allowed for the role attribute.
15176 * $wgContentHandlers now also supports callbacks to create an instance of the
15177 appropriate ContentHandler subclass.
15178 * Added $wgAuthenticationTokenVersion, which if non-null prevents the
15179 user_token database field from being exposed in cookies. Setting this would
15180 be a good idea, but will log out all current sessions.
15181 * $wgEventRelayerConfig was added, for managing PubSub event relay
15182 configuration, specifically for reliable CDN url purges.
15183 * Requests have unique IDs, equal to the UNIQUE_ID environment variable (when
15184 MediaWiki is behind Apache+mod_unique_id or something similar) or a randomly-
15185 generated 24-character string. This request ID is used to annotate log records
15186 and error messages. It is available client-side via
15187 mw.config.get( 'wgRequestId' ).
15188 The request ID supplants exception IDs. Accordingly,
15189 MWExceptionHandler::getLogId() is deprecated.
15190 * (T33313) Add a preference for watching uploads by default, also applies
15191 to API-based upload tools.
15192 * $wgJpegPixelFormat was added to override chroma subsampling for JPEG image
15193 thumbnails created via ImageMagick. Defaults to 'yuv420', providing bandwidth
15194 savings versus the previous behavior on many files.
15195 * MediaWiki\Auth infrastructure (called "AuthManager") allows for more flexible
15196 configuration of multiple authentication pieces that was possible with
15197 AuthPlugin. For example, it's now easy to plug in second-factor
15198 authentication, or add additional checks to the login process, or to support
15199 multiple login methods at once, or to support non-password-based login
15201 ** Providers are configured via the global setting $wgAuthManagerConfig.
15202 ** A global, $wgDisableAuthManager, is temporarily available to disable
15203 AuthManager until extensions are ready to support it.
15204 ** New hook, AuthChangeFormFields, to adjust the form fields on
15205 AuthManager-related special pages.
15206 ** New hook, AuthManagerLoginAuthenticateAudit, for additional logging of
15207 AuthManager-related authentication requests.
15208 ** New hook, ChangeAuthenticationDataAudit, for additional logging of
15209 AuthManager-related authentication data changes.
15210 ** New hook, SecuritySensitiveOperationStatus, to work with the new mechanism
15211 for requiring a recent login before taking security-sensitive operations
15212 like changing a password.
15213 ** Two new globals, $wgChangeCredentialsBlacklist and
15214 $wgRemoveCredentialsBlacklist can be used to prevent the web UI and the API
15215 changing certain authentication data.
15216 * The file upload dialog (available if you install WikiEditor or VisualEditor)
15217 can now be configured using $wgUploadDialog.
15219 === External library changes in 1.27 ===
15221 ==== Upgraded external libraries ====
15222 * Updated oojs/oojs-ui from v0.12.12 to v0.13.3.
15223 * Updated composer/semver from v1.0.0 to v1.2.0.
15224 * Updated liuggio/statsd-php-client to 1.0.18.
15225 * Updated QUnit from v1.18.0 to v1.22.0.
15227 ==== New external libraries ====
15228 * Added wikimedia/base-convert v1.0.1.
15229 * Added wikimedia/cldr-plural-rule-parser v1.0.0.
15230 * Added wikimedia/relpath v1.0.3.
15231 * Added wikimedia/running-stat v1.1.0.
15232 * Added wikimedia/php-session-serializer v1.0.3.
15234 ==== Removed and replaced external libraries ====
15236 === Bug fixes in 1.27 ===
15237 * Special:Upload will now display correct maximum allowed file size when running
15238 under HHVM (T116347).
15239 * (T54077) The APIEditBeforeSave hook will once again give only the content of
15240 the section being edited, rather than the whole revision. This reverts the
15241 change made in MediaWiki 1.22.
15243 === Action API changes in 1.27 ===
15244 * Added list=allrevisions.
15245 * generator=recentchanges now has the option to generate revids.
15246 * ApiPageSet::setRedirectMergePolicy() was added. This allows generator
15247 modules to define how generator data for a redirect source gets merged
15248 into the redirect destination.
15249 * prop=imageinfo&iiprop=uploadwarning will no longer include the possibility of
15250 "was-deleted" warning.
15251 * Added difftotextpst to query=revisions which preforms a pre-save transform on
15252 the text before diffing it.
15253 * Deprecated formats dbg, txt, and yaml have been removed.
15254 * (T47988) The protect log event details now use new-style formatting.
15255 * The following response properties from action=login are deprecated, and may
15256 be removed in the future: lgtoken, cookieprefix, sessionid. Clients should
15257 handle cookies to properly manage session state.
15258 * action=login transparently allows login using bot passwords. Clients should
15259 merely need to change the username and password used after setting up a bot
15261 * action=upload no longer understands statuskey, asyncdownload or leavemessage.
15262 * Several changes when $wgDisableAuthManager is false:
15263 ** action=login is deprecated for uses other than bot passwords.
15264 ** list=users can now indicate if a missing username is creatable.
15265 ** action=createaccount is changed in a non-backwards-compatible manner.
15266 ** Added action=query&meta=authmanagerinfo.
15267 ** Added action=clientlogin to be used to log into the main account instead of
15269 ** Added action=linkaccount.
15270 ** Added action=unlinkaccount.
15271 ** Added action=changeauthenticationdata.
15272 ** Added action=removeauthenticationdata.
15273 ** Added action=resetpassword.
15275 === Action API internal changes in 1.27 ===
15276 * ApiQueryORM removed.
15277 * The following classes have been removed:
15281 * ApiBase::addTokenProperties() was removed (deprecated since 1.24).
15282 * ApiBase::getFinalPossibleErrors() was removed (deprecated since 1.24).
15283 * ApiBase::getFinalResultProperties() was removed (deprecated since 1.24).
15284 * ApiBase::getRequireAtLeastOneParameterErrorMessages() was removed (deprecated
15286 * ApiBase::getPossibleErrors() was removed (deprecated since 1.24).
15287 * ApiBase::getRequireMaxOneParameterErrorMessages() was removed (deprecated
15289 * ApiBase::getRequireOnlyOneParameterErrorMessages() was removed (deprecated
15291 * ApiBase::getResultProperties() was removed (deprecated since 1.24).
15292 * ApiBase::getTitleOrPageIdErrorMessage() was removed (deprecated since 1.24).
15293 * ApiBase::parseErrors() was removed (deprecated since 1.24).
15294 * ApiQueryBase::titleToKey(), ApiQueryBase::keyToTitle() and
15295 ApiQueryBase::keyPartToTitle() all removed (deprecated since 1.24).
15296 * ApiQueryBase::checkRowCount() was removed (deprecated since 1.24).
15297 * ApiQueryBase::getDirectionDescription() was removed (deprecated since 1.25).
15298 * ApiQuery::getGenerators() was removed (deprecated since 1.21).
15299 * ApiQuery::getModules() was removed (deprecated since 1.21).
15300 * ApiQuery::getModuleType() was removed (deprecated since 1.21).
15301 * ApiQuery::setGeneratorContinue() was removed (deprecated since 1.24).
15302 * ApiMain::getModules() was removed (deprecated since 1.21).
15303 * ApiBase::getVersion() was removed (deprecated since 1.21).
15304 * ApiMain::getShowVersions() was removed (deprecated in 1.21).
15305 * ApiMain::addModule() was removed (deprecated in 1.21).
15306 * ApiMain::addFormat() was removed (deprecated in 1.21).
15307 * ApiMain::getFormats() was removed (deprecated in 1.21).
15308 * ApiPageSet::finishPageSetGeneration() was removed (deprecated in 1.21).
15309 * ApiCreateAccount was removed.
15311 === Languages updated in 1.27 ===
15313 MediaWiki supports over 350 languages. Many localisations are updated
15314 regularly. Below only new and removed languages are listed, as well as
15315 changes to languages because of Phabricator reports.
15317 * (T113688) Change default numerals from Gurmukhi to Arabic for Punjabi locale.
15318 * (T116020) Aliases of magic words in MessagesXx.php are sorted by usage.
15320 === Other changes in 1.27 ===
15321 * Added dependency injection (DI) infrastructure, see docs/injection.txt for
15323 It is planned to incrementally move MediaWiki code towards using DI, using the
15324 service locator (SL) pattern as a stepping stone.
15325 * ProfilerOutputUdp was removed. Note that there is a ProfilerOutputStats class.
15326 * WikiPage::doDeleteArticleReal() and WikiPage::doDeleteArticle() now
15327 ignore the 2nd and 3rd arguments (formerly $id and $commit).
15328 * Removed "loaderScripts" option from ResourceLoaderFileModule class.
15329 * Removed ORM-like wrapper added in 1.20.
15330 * LinkCache::getGoodLinks and LinkCache::getBadLinks were removed
15331 (deprecated in 1.26).
15332 * WikiPage::doQuickEdit() was removed (deprecated since 1.21).
15333 * Removed SiteObject and SiteArray classes (deprecated in 1.21).
15334 * MessageBlobStore::getInstance() was removed (deprecated since 1.25).
15335 * (T84937) Free external links ("autolinked" urls) will now be terminated
15336 by and HTML entity encodings of  , <, and >.
15337 * (T36948) The default file revert message's timestamp is now in
15338 $wgLocaltimezone, instead of UTC.
15339 * The default name of the 'suppress' group page has been changed from
15340 'Project:Oversight' to 'Project:Suppress'.
15341 * DatabaseBase::resultObject() is now protected (use outside Database classes
15342 not necessary since 1.11).
15343 * Calling ResourceLoaderFileModule::readStyleFiles() without a
15344 ResourceLoaderContext instance is deprecated.
15345 * ResourceLoader::getLessCompiler() now takes an optional parameter of
15346 additional LESS variables to set for the compiler.
15347 * wfBaseConvert() marked as deprecated, use Wikimedia\base_convert() directly
15349 * Obsolete maintenance scripts clearCacheStats.php and showCacheStats.php
15350 were removed. The underlying data is sent to StatsD (see $wgStatsdServer).
15351 * Removed msg_resource_links database table and associated code.
15352 * Removed msg_resource database table and associated code.
15353 * Skin::getNamespaceNotice() was removed.
15354 * wfIsConfiguredProxy() was removed (deprecated since 1.24).
15355 * wfDebugTimer() was removed (deprecated since 1.25).
15356 * wfIsTrustedProxy() was removed (deprecated since 1.24).
15357 * wfGetIP() was removed (deprecated since 1.19).
15358 * MWHookException was removed.
15359 * OutputPage::appendSubtitle() was removed (deprecated since 1.19).
15360 * OutputPage::loginToUse() was removed (deprecated since 1.19).
15361 * Article::loadContent() was removed (deprecated since 1.19).
15362 * User::editToken() was removed (deprecated since 1.19).
15363 * Removed --force-normal option of dumpBackup.php, as it no longer served
15364 any useful purpose since 1.22.
15365 * The functions processOption() and processArgs() on the BackupDumper and
15366 TextPassDumper classes have been removed.
15367 * The maintenance/backupTextPass.inc file was deleted. You should include
15368 maintenance/dumpTextPass.php instead.
15369 * WikiPage::getUsedTemplates() was removed (deprecated since 1.19).
15370 * wfEmptyMsg() was removed (deprecated since 1.18).
15371 * OutputPage::permissionRequired() was removed (deprecated since 1.18).
15372 * OutputPage::blockedPage() was removed (deprecated since 1.18).
15373 * User::getSkin() was removed (deprecated since 1.18).
15374 * OutputPage::includeJQuery() was removed (deprecated since 1.17).
15375 * WikiPage::updateRestrictions() was removed (deprecated since 1.19).
15376 * WikiPage::testPreSaveTransform() was removed (deprecated since 1.19).
15377 * LogPage::logName() was removed (deprecated since 1.19).
15378 * LogPage::logHeader() was removed (deprecated since 1.19).
15379 * wfCheckLimits() was removed (deprecated since 1.24).
15380 * Linker::makeKnownLinkObj() was removed (deprecated since 1.16).
15381 * Linker::makeLinkObj() was removed (deprecated since 1.16).
15382 * wfMsgForContentNoTrans() was removed (deprecated since 1.18).
15383 * ChangesList::usePatrol was removed (deprecated since 1.22).
15384 * wfMsgNoTrans() was removed (deprecated since 1.18).
15385 * Linker::makeImageLink2 was removed (deprecated since 1.20).
15386 * Title::userIsWatching() was removed (deprecated since 1.20).
15387 * Removed WaitForSlave maintenance script; use SELECT MASTER_POS_WAIT()
15388 database function directly instead.
15389 * wfMsg() was removed (deprecated since 1.18).
15390 * wfMsgForContent() was removed (deprecated since 1.18).
15391 * wfMsgReal() was removed (deprecated since 1.18).
15392 * wfMsgGetKey() was removed (deprecated since 1.18).
15393 * wfMsgHtml() was removed (deprecated since 1.18).
15394 * wfMsgWikiHtml() was removed (deprecated since 1.18).
15395 * wfMsgExt() was removed (deprecated since 1.18).
15396 * Language::armourMath() was removed (deprecated since 1.22).
15397 * LanguageConverter::armourMath() was removed (deprecated since 1.22).
15398 * FakeConverter::armourMath() was removed (deprecated since 1.22).
15399 * The unused jquery.validate ResourceLoader module was removed.
15400 * FileRepo::getRootUrl() was removed (deprecated since 1.20).
15401 * User::generateToken() was removed (deprecated since 1.20).
15402 * WikiPage::getRawText() was removed (deprecated since 1.21).
15403 * ParserOutput::hasCustomDataUpdates() was removed (deprecated since 1.25).
15404 * ParserOutput::addSecondaryDataUpdate() was removed (deprecated since 1.25).
15405 * ParserOutput::getSecondaryDataUpdates() was removed (deprecated since 1.25).
15406 * Gallery images with multiple caption pipes no longer concatenate them all
15407 together but instead pick the final one, similar to image syntax.
15408 * XML-like parser tags (such as <gallery>), when unclosed, will be left unparsed
15409 rather than consume everything until the end of the page.
15410 * New maintenance script resetUserEmail.php allows sysadmins to reset user
15411 emails in case a user forgot password/account was stolen.
15412 * wfCheckEntropy() was removed (deprecated in 1.27).
15413 * Browser support for Internet Explorer 8 lowered from Grade A to Grade C.
15414 * ContentHandler::supportsCategories method added. Default is true.
15415 CategoryMembershipChangeJob updates are skipped for content that
15416 does not support categories.
15417 * wikidiff difference engine is no longer supported, anyone still using it are
15418 encouraged to upgrade to wikidiff2 which is actively maintained and has better
15419 package availability.
15420 * Database logic was removed from WatchedItem and a WatchedItemStore was
15422 ** WatchedItem::IGNORE_USER_RIGHTS and WatchedItem::CHECK_USER_RIGHTS were
15423 deprecated. User::IGNORE_USER_RIGHTS and User::CHECK_USER_RIGHTS were
15425 ** WatchedItem::fromUserTitle was deprecated in favour of the constructor.
15426 ** WatchedItem::resetNotificationTimestamp was deprecated.
15427 ** WatchedItem::batchAddWatch was deprecated.
15428 ** WatchedItem::addWatch was deprecated.
15429 ** WatchedItem::removeWatch was deprecated.
15430 ** WatchedItem::isWatched was deprecated.
15431 ** WatchedItem::duplicateEntries was deprecated.
15432 ** EmailNotification::updateWatchlistTimestamp was deprecated.
15433 ** User::getWatchedItem was removed.
15434 * Unit tests don't work with external PHPUnit anymore, Composer is now the only
15435 supported way. Run `composer install` to install it and other dev dependencies
15437 * wl_id field added to the watchlist table.
15438 * Revision::getRawText() was removed (deprecated since 1.21).
15439 * WikiPage::replaceSection() was removed (deprecated since 1.21).
15440 * Article::replaceSection() was removed (deprecated since 1.21).
15441 * Language::getLangObj() was removed (deprecated since 1.24).
15442 * Language::getLanguageName() was removed (deprecated since 1.20).
15443 * Language::getLanguageNames() was removed (deprecated since 1.20).
15444 * Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
15445 * Language::specialPage() was removed (deprecated since 1.24).
15446 * MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
15447 * OutputPage::getHeadItems() was removed (deprecated since 1.24).
15448 * OutputPage::getScript() was removed (deprecated since 1.24).
15449 * OutputPage::out() was removed (deprecated since 1.22).
15450 * OutputPage::setAllowedModules() was removed (deprecated since 1.24).
15451 * UserrightsPage::makeGroupNameListForLog() was removed (deprecated since 1.21).
15452 * MediaWikiSite::newFromGlobalId() was removed (deprecated since 1.21).
15453 * Title::newFromRedirect() was removed (deprecated since 1.21).
15454 * Skin::commonPrintStylesheet() was removed (deprecated since 1.22).
15455 * Skin::getCommonStylePath() was removed (deprecated since 1.24).
15456 * Skin::newFromKey() was removed (deprecated since 1.24).
15457 * Skin::getUsableSkins() was removed (deprecated since 1.23).
15458 * LoadBalancer::pickRandom() was removed (deprecated in 1.21).
15459 * Article::getUndoText() and WikiPage::getUndoText were removed (deprecated
15461 * DifferenceEngine::setText() was removed (deprecated in 1.21).
15462 * Title::newFromRedirectArray() was removed (deprecated in 1.21).
15463 * UserMailer::send() no longer accepts $replyto as the 5th argument and
15464 $contentType as the 6th. These must be passed in the options array now.
15465 * Title::newFromRedirectRecurse() was removed (deprecated in 1.21).
15466 * Skin::accesskey was removed (deprecated since 1.21).
15467 * Skin::blockLink was removed (deprecated since 1.21).
15468 * Skin::buildRollbackLink was removed (deprecated since 1.21).
15469 * Skin::emailLink was removed (deprecated since 1.21).
15470 * Skin::formatComment was removed (deprecated since 1.21).
15471 * Skin::formatHiddenCategories was removed (deprecated since 1.21).
15472 * Skin::formatLinksInComment was removed (deprecated since 1.21).
15473 * Skin::formatRevisionSize was removed (deprecated since 1.21).
15474 * Skin::formatSize was removed (deprecated since 1.21).
15475 * Skin::formatTemplates was removed (deprecated since 1.21).
15476 * Skin::generateTOC was removed (deprecated since 1.21).
15477 * Skin::getInternalLinkAttributes was removed (deprecated since 1.21).
15478 * Skin::getInternalLinkAttributesObj was removed (deprecated since 1.21).
15479 * Skin::getInterwikiLinkAttributes was removed (deprecated since 1.21).
15480 * Skin::getInvalidTitleDescription was removed (deprecated since 1.21).
15481 * Skin::getLinkColour was removed (deprecated since 1.21).
15482 * Skin::getRevDeleteLink was removed (deprecated since 1.21).
15483 * Skin::getRollbackEditCount was removed (deprecated since 1.21).
15484 * Skin::makeBrokenImageLinkObj was removed (deprecated since 1.21).
15485 * Skin::makeCommentLink was removed (deprecated since 1.21).
15486 * Skin::makeExternalImage was removed (deprecated since 1.21).
15487 * Skin::makeExternalLink was removed (deprecated since 1.21).
15488 * Skin::makeHeadline was removed (deprecated since 1.21).
15489 * Skin::makeImageLink was removed (deprecated since 1.21).
15490 * Skin::makeMediaLinkFile was removed (deprecated since 1.21).
15491 * Skin::makeMediaLinkObj was removed (deprecated since 1.21).
15492 * Skin::makeSelfLinkObj was removed (deprecated since 1.21).
15493 * Skin::makeThumbLink2 was removed (deprecated since 1.21).
15494 * Skin::makeThumbLinkObj was removed (deprecated since 1.21).
15495 * Skin::normaliseSpecialPage was removed (deprecated since 1.21).
15496 * Skin::normalizeSubpageLink was removed (deprecated since 1.21).
15497 * Skin::processResponsiveImages was removed (deprecated since 1.21).
15498 * Skin::revComment was removed (deprecated since 1.21).
15499 * Skin::revDeleteLink was removed (deprecated since 1.21).
15500 * Skin::revDeleteLinkDisabled was removed (deprecated since 1.21).
15501 * Skin::revUserLink was removed (deprecated since 1.21).
15502 * Skin::revUserTools was removed (deprecated since 1.21).
15503 * Skin::specialLink was removed (deprecated since 1.21).
15504 * Skin::splitTrail was removed (deprecated since 1.21).
15505 * Skin::titleAttrib was removed (deprecated since 1.21).
15506 * Skin::tocIndent was removed (deprecated since 1.21).
15507 * Skin::tocLine was removed (deprecated since 1.21).
15508 * Skin::tocLineEnd was removed (deprecated since 1.21).
15509 * Skin::tocList was removed (deprecated since 1.21).
15510 * Skin::tocUnindent was removed (deprecated since 1.21).
15511 * Skin::tooltip was removed (deprecated since 1.21).
15512 * Skin::tooltipAndAccesskeyAttribs was removed (deprecated since 1.21).
15513 * Skin::userTalkLink was removed (deprecated since 1.21).
15514 * Skin::userToolLinksRedContribs was removed (deprecated since 1.21).
15515 * wikidiff3 is now the default and only PHP diff engine. It provides improved
15516 diff performance on complex changes. $wgExternalDiffEngine = 'wikidiff3'
15517 therefore makes no difference now. Users are still recommended to use
15518 wikidiff2 if possible, though.
15519 * User::addNewUserLogEntry() was deprecated.
15520 * User::addNewUserLogEntryAutoCreate() was deprecated.
15521 * User::isPasswordReminderThrottled() was deprecated.
15522 * Bot-oriented parameters to Special:UserLogin (wpCookieCheck,
15523 wpSkipCookieCheck) were removed.
15524 * Installer can now be customized without patching MediaWiki code, see
15525 mw-config/overrides/README for details.
15527 === Compatibility ===
15529 MediaWiki 1.27 requires PHP 5.5.9 or later. There is experimental support for
15530 HHVM 3.6.5 or later.
15532 MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
15533 support for them is somewhat less mature. There is experimental support for
15534 Oracle and Microsoft SQL Server.
15536 The supported versions are:
15538 * MySQL 5.0.3 or later
15539 * PostgreSQL 8.3 or later
15540 * SQLite 3.3.7 or later
15541 * Oracle 9.0.1 or later
15542 * Microsoft SQL Server 2005 (9.00.1399)
15546 1.27 has several database changes since 1.26, and will not work without schema
15547 updates. Note that due to changes to some very large tables like the revision
15548 table, the schema update may take quite long (minutes on a medium sized site,
15549 many hours on a large site).
15551 If upgrading from before 1.11, and you are using a wiki as a commons
15552 repository, make sure that it is updated as well. Otherwise, errors may arise
15553 due to database schema changes.
15555 If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
15556 new database fields are filled with data.
15558 If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
15559 1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
15560 with MediaWiki 1.21.
15562 Don't forget to always back up your database before upgrading!
15564 See the file UPGRADE for more detailed upgrade instructions.
15566 For notes on 1.26.x and older releases, see HISTORY.
15571 == MediaWiki 1.26.4 ==
15573 This is a maintenance release of the MediaWiki 1.26 branch.
15575 === Changes since 1.26.3 ===
15576 * BREAKING CHANGE: $wgHTTPProxy is now *required* for all external requests
15577 made by MediaWiki via a proxy. Relying on the http_proxy environment
15578 variable is no longer supported.
15579 * (T124163) Fixed fatal error in DifferenceEngine under HHVM.
15580 * (T139565) SECURITY: API: Generate head items in the context of the given title
15581 * (T137264) SECURITY: XSS in unclosed internal links
15582 * (T133147) SECURITY: Escape '<' and ']]>' in inline <style> blocks
15583 * (T133147) SECURITY: Require login to preview user CSS pages
15584 * (T132926) SECURITY: Do not allow undeleting a revision deleted file if it is
15586 * (T129738) SECURITY: Make $wgBlockDisablesLogin also restrict logged in
15588 * (T129738) SECURITY: Make blocks log users out if $wgBlockDisablesLogin is true
15589 * (T115333) SECURITY: Check read permission when loading page content in
15591 * Remove support for $wgWellFormedXml = false, all output is now well formed
15593 == MediaWiki 1.26.3 ==
15595 This is a maintenance release of the MediaWiki 1.26 branch.
15597 === Changes since 1.26.2 ===
15598 * (T116266) Fixed undefined property notices in DairikiDiff under HHVM.
15599 * (T123166) Fix fatal error when importing pages to titles which cannot be
15600 created, such as invalid titles or titles the user is not allowed to edit.
15601 * (T122056) Old tokens are remaining valid within a new session
15602 * (T127114) Login throttle can be tricked using non-canonicalized usernames
15603 * (T123653) Cross-domain policy regexp is too narrow
15604 * (T123071) Incorrectly identifying http link in a's href attributes, due to
15605 m modifier in regex
15606 * (T129506) MediaWiki:Gadget-popups.js isn't renderable
15607 * (T125283) Users occasionally logged in as different users after
15608 SessionManager deployment
15609 * (T103239) Patrol allows click catching and patrolling of any page
15610 * (T122807) [tracking] Check php crypto primatives
15611 * (T98313) Graphs can leak tokens, leading to CSRF
15612 * (T130947) Diff generation should use PoolCounter
15613 * (T133507) Careless use of $wgExternalLinkTarget is insecure
15614 * (T132874) API action=move is not rate limited
15615 * (T110143) strip markers can be used to get around html attribute escaping in
15616 (many?) parser tags
15617 * (T116030) Increase pbkdf2 parameter strengths
15618 * (T127420) Pbkdf2Password does not check if hash_pbkdf2() succeeded
15619 * (T126685) Globally throttle password attempts
15621 == MediaWiki 1.26.2 ==
15623 This is a maintenance release of the MediaWiki 1.26 branch.
15625 === Changes since 1.26.1 ===
15626 * (T121892) Fix fatal error on some Special pages, introduced in 1.26.1.
15628 == MediaWiki 1.26.1 ==
15630 This is a maintenance release of the MediaWiki 1.26 branch.
15632 === Changes since 1.26.0 ===
15633 * (T117899) SECURITY: $wgArticlePath can no longer be set to relative paths
15634 that do not begin with a slash. This enabled trivial XSS attacks.
15635 Configuration values such as "http://my.wiki.com/wiki/$1" are fine, as are
15636 "/wiki/$1". A value such as "$1" or "wiki/$1" is not and will now throw an
15638 * (T119309) SECURITY: Use hash_compare() for edit token comparison
15639 * (T118032) SECURITY: Don't allow cURL to interpret POST parameters starting
15640 with '@' as file uploads
15641 * (T115522) SECURITY: Passwords generated by User::randomPassword() can no
15642 longer be shorter than $wgMinimalPasswordLength
15643 * (T97897) SECURITY: Improve IP parsing and trimming. Previous behavior could
15644 result in improper blocks being issued
15645 * (T109724) SECURITY: Special:MyPage, Special:MyTalk, Special:MyContributions
15646 and related pages no longer use HTTP redirects and are now redirected by
15648 * Fixed ConfigException in ExpandTemplates due to AlwaysUseTidy.
15649 * Fixed stray literal \n in Special:Search.
15650 * Fix issue that breaks HHVM Repo Authorative mode.
15651 * (T120267) Work around APCu memory corruption bug
15653 == MediaWiki 1.26.0 ==
15655 === Configuration changes in 1.26 ===
15656 * $wgPasswordResetRoutes['email'] = true by default.
15657 * $wgEnableParserCache was deprecated, set $wgParserCacheType to CACHE_NONE
15658 instead if you want to disable the parser cache.
15659 * New-style continuation is now the default for API action=continue. Clients may
15660 use the 'rawcontinue' parameter to receive raw query-continue data, but the
15661 new style is encouraged as it's harder to implement incorrectly.
15662 * Deprecated API formats dump and wddx have been completely removed.
15663 * (T7645) The "Signature" button on the edit toolbar is now hidden by default
15664 in non-talk namespaces. A new configuration variable,
15665 $wgExtraSignatureNamespaces, controls in which subject (non-talk) namespaces
15666 the "Signature" button on the edit toolbar will be displayed.
15667 * $wgResourceLoaderUseESI was deprecated and removed. This was an experimental
15668 feature that was never enabled by default.
15669 * $wgResourceLoaderExperimentalAsyncLoading was deprecated and removed.
15670 This experimental feature was never enabled by default and is obsolete as of
15671 MediaWiki 1.26, in where ResourceLoader became fully asynchronous.
15672 * $wgMasterWaitTimeout was removed (deprecated in 1.24).
15673 * Fields in ParserOptions are now private. Use the accessors instead.
15674 * Custom LESS functions (defined via $wgResourceLoaderLESSFunctions or
15675 in extension.json) have been removed, after being deprecated in 1.24.
15676 * $wgAlwaysUseTidy has been removed.
15677 * ResetSessionID hook has been removed. Nothing seems to use it.
15678 * Certain AuthPlugin methods are deprecated in favor of new hooks:
15679 ** AuthPlugin::initUser() is replaced by LocalUserCreated.
15680 ** AuthPlugin::updateUser() is replaced by UserLoggedIn.
15681 ** AuthPlugin::updateExternalDB() is replaced by the existing UserSaveSettings.
15682 ** AuthPlugin::updateExternalDBGroups() is replaced by UserGroupsChanged.
15683 ** AuthPluginUser::isHidden() is replaced by UserIsHidden.
15684 ** AuthPluginUser::isLocked() is replaced by UserIsLocked.
15685 * The UserRights hook is deprecated in favor of the new UserGroupsChanged hook.
15686 * AuthPlugin::initUser() and AuthPlugin::updateUser() should no longer replace
15687 the passed User object.
15688 * $wgBlockAllowsUTEdit is now set to true by default. This allows
15689 blocked users to edit their talk pages unless explicitly disabled
15690 when they are being blocked.
15692 === New features in 1.26 ===
15693 * (T51506) Now action=info gives estimates of actual watchers for a page.
15694 See $wgRCMaxAge, $wgWatchersMaxAge and $wgUnwatchedPageSecret
15695 to learn how to configure if needed.
15696 * Change tags can now be hidden in the interface by disabling the associated
15697 "tag-<id>" interface message.
15698 * ':' (colon) is now invalid in usernames for new accounts. Existing accounts
15700 * Added a new hook, 'LogException', to log exceptions in nonstandard ways.
15701 * Revive the 'SpecialSearchResultsAppend' hook which occurs after the list of
15702 search results are rendered. The initial use case is to append a "give us
15703 feedback" link beneath the search results.
15704 * Added a new hook, 'RejectParserCacheValue', which allows extensions to
15705 reject an otherwise-successful parser cache lookup. The intent is to allow
15706 extensions to manage the eviction of archaic HTML output from the cache.
15707 * (T68699) The expiration of the UserID and Token login cookies
15708 ($wgExtendedLoginCookieExpiration) can be configured independently of the
15709 expiration of all other cookies ($wgCookieExpiration).
15710 * (T50519) Support for generating JPEG/PNG thumbnails from WebP images added
15711 if ImageMagick is used as image scaler ($wgUseImageMagick = true). Uploading
15712 of WebP images still disabled by default. Add $wgFileExtensions[] =
15713 'webp'; to LocalSettings.php to enable uploading of WebP images.
15714 * Added new hooks 'EnhancedChangesListModifyLineData' &
15715 'EnhancedChangesListModifyBlockLineData', to modify the data used to build
15716 lines in enhanced recentchanges and watchlist.
15717 * Caches that need purging ability now use the WANObjectCache interface.
15718 This corresponds to a new $wgMainWANCache setting, which defaults to using
15719 the $wgMainCacheType settings.
15720 * Callers needing fast light-weight data stores use $wgMainStash to select
15721 the store type from $wgObjectCaches. The default is the local database.
15722 * Interface message overrides in the MediaWiki namespace will now be cached in
15723 memcached and APC (if available), rather than memcached and local files.
15724 * Added a new hook, 'RandomPageQuery', to allow modification of the query used
15725 by Special:Random to select random pages.
15726 * $wgTransactionalTimeLimit was added, which controls the request time limit
15727 for potentially slow POST requests that need to be as atomic as possible.
15728 * ResourceLoader now loads all scripts asynchronously. The top-queue and
15729 startup modules are no longer synchronously loaded.
15730 * 'mediawiki.ui.button' styles are no longer unconditionally loaded on every
15731 page. During the deprecation period, the styles will only be loaded on pages
15732 which contain 'mw-ui-button' in their HTML. Starting in 1.28, the styles will
15733 only be loaded if explicitly required.
15734 * If search returns zero results and current search engine has a "did you mean"
15735 suggestion, results for suggestion will be shown. Can be disabled by setting
15736 $wgSearchRunSuggestedQuery to false.
15737 * Added several JavaScript libraries for uploading files to MediaWiki
15738 from the client-side. See documentation for mw.Upload and its
15739 subclasses for more information.
15740 * Added OOUI dialogs and layout for file upload interfaces. See
15741 documentation for mw.Upload.Dialog, mw.Upload.BookletLayout and its
15742 subclasses for more information.
15744 === extension.json changes in 1.26 ===
15745 * (T99344) The extension.json schema is now versioned. All extensions
15746 and skins should set a "manifest_version" property corresponding to
15747 the schema version they were written for. The only supported version
15749 * (T102523) The error message if a non-array attribute is set was improved.
15750 * (T107646) Configuration settings can now specify how they should be merged,
15751 which is necessary for arrays using integer keys.
15752 * (T110389) Adding namespaces through extension.json now actually works
15753 * $wgNamespaceProtection can now be set in extension.json.
15754 * $wgCapitalLinkOverrides can now be set in extension.json.
15755 * (T97186) Extensions using a custom prefix for their configuration settings
15756 can now set a "_prefix" key to override the default of "wg".
15757 * (T99084) Extensions can now specify what MediaWiki core versions they
15759 * (T105236) The extension.json schema now validates custom classes in
15760 the "ResourceModules" property properly.
15762 === External library changes in 1.26 ===
15763 ==== Upgraded external libraries ====
15764 * Updated es5-shim from v4.0.0 to v4.1.5.
15765 * Updated json2 from revision 2014-02-04 to 2015-05-03.
15766 * Updated Sinon.JS from 1.10.3 to 1.15.4.
15767 * Updated jQuery Client from v1.0.0 to v2.0.0.
15768 * Updated QUnit from v1.17.1 to v1.18.0.
15769 * Updated liuggio/statsd-php-client from v1.0.12 to v1.0.16.
15770 * Updated oojs/oojs-ui from v0.11.3 to v0.12.12.
15771 * Updated wikimedia/cdb from v1.0.1 to v1.3.0.
15772 * Updated wikimedia/utfnormal from v1.0.2 to v1.0.3.
15773 * Updated wikimedia/composer-merge-plugin from v1.0.0 to v1.3.0.
15774 * Updated zordius/lightncandy from v0.18 to v0.21.
15776 ==== New external libraries ====
15777 * Added composer/semver v1.0.0.
15778 * Added mediawiki/at-ease v1.1.0.
15779 * Added wikimedia/assert v0.2.2.
15780 * Added wikimedia/ip-set v1.0.1.
15781 * Added wikimedia/wrappedstring v2.0.0.
15783 ==== Removed and replaced external libraries ====
15784 * Replaced leafo/lessphp v0.5.0 with oyejorge/less.php v1.7.0.9.
15786 === Bug fixes in 1.26 ===
15787 * (T53283) load.php sometimes sends 304 response without full headers
15788 * (T65198) Talk page tabs now have a "rel=discussion" attribute
15789 * (T98841) {{msgnw:}} now preserves comments even when subst: is not used.
15790 * (T104142) $wgEmergencyContact and $wgPasswordSender now use their default
15791 value if set to an empty string.
15793 === Action API changes in 1.26 ===
15794 * New-style continuation is now the default for action=continue. Clients may
15795 use the 'rawcontinue' parameter to receive raw query-continue data, but the
15796 new style is encouraged as it's harder to implement incorrectly.
15797 * Deprecated API formats dump and wddx have been completely removed.
15798 * API action=query&list=tags: The displayname can now be boolean false if the
15799 tag is meant to be hidden from user interfaces.
15800 * action=import no longer allows both the namespace= and rootpage= parameters
15801 to be set. If they are both set, the value of rootpage= will be ignored.
15802 * prop=revision output in enum mode is now sorted by timestamp rather than
15803 revision ID. This usually won't make any difference.
15804 * (T102645) Namespace list from meta=siteinfo&siprop=namespaces is now an array
15805 with formatversion=2.
15806 * Various other output from meta=siteinfo will now always be arrays instead of
15807 sometimes being numerically-indexed objects with formatversion=2.
15808 * When errors about users being blocked are returned, they now include
15809 information about the relevant block.
15810 * (T99926) list=random has higher limits, in line with other API modules.
15811 * list=random's rnredirect parameter is deprecated in favor of a new
15812 rnfilterredir parameter that also allows for listing both redirects and
15814 * list=random now supports continuation.
15815 * API responses to GET requests may now include ETag and Last-Modified headers,
15816 and will honor corresponding If-None-Match and If-Modified-Since on such
15819 === Action API internal changes in 1.26 ===
15820 * New metadata item ApiResult::META_KVP_MERGE to allow for merging the KVP key
15821 into the value when the value is an assoc.
15822 * API action modules may now provide values for the RFC 7232 ETag and
15823 Last-Modified headers. The API will check these against If-None-Match and
15824 If-Modified-Since request headers on GET requests and avoid executing the
15825 module when appropriate.
15827 === Languages updated in 1.26 ===
15829 MediaWiki supports over 350 languages. Many localisations are updated
15830 regularly. Below only new and removed languages are listed, as well as
15831 changes to languages because of Phabricator reports.
15834 ** ase (American sign language), thanks to translator Icemandeaf
15835 ** dty (डोटेली/Doteli), thanks to translators जनक राज भट्ट, बिप्लब आनन्द,
15836 मेश सिंह बोहरा, and राम प्रसाद जोशी
15837 ** luz (لئری دوٙمینی / Southern Luri)
15838 ** olo (Livvinкarjala / Livvi-Karelian), thanks to translators Denö, Hiloin
15839 Natoi, Ilja.mos, and Mashoi7
15841 === Other changes in 1.26 ===
15842 * ChangeTags::tagDescription() will return false if the interface message
15843 for the tag is disabled.
15844 * Added PageHistoryPager::doBatchLookups hook.
15845 * Added $wikiId parameter to FormatAutocomments hook.
15846 * Added ParserCacheSaveComplete to ParserCache
15847 * supportsDirectEditing and supportsDirectApiEditing methods added to
15848 ContentHandler, to provide a way for ApiEditPage and EditPage to check
15849 if direct editing of content is allowed. These methods return false,
15850 by default for the ContentHandler base class and true for TextContentHandler
15851 and it's derivative classes (everything in core). For Content types that
15852 do not support direct editing, an alternative mechanism should be provided
15853 for editing, such as action overrides or specific api modules.
15854 * mediaWiki.confirmCloseWindow now returns an object of functions, instead of
15855 one function. The callback can't be called directly any more. The callback
15856 function is replaced with confirmCloseWindow.release().
15857 * BREAKING CHANGE: Added an optional ResouceLoaderContext parameter to
15858 ResourceLoaderModule::getDependencies(). Extension classes that override that
15859 method should be updated. If they aren't updated, PHP Strict standards
15860 warnings will appear when E_STRICT error reporting is enabled. Note: in the
15861 near future, this parameter will probably become non-optional.
15862 * Removed maintenance script deleteImageMemcached.php.
15863 * MWFunction::newObj() was removed (deprecated in 1.25).
15864 ObjectFactory::getObjectFromSpec() should be used instead.
15865 * The parser will no longer randomize the string it uses to mark the place of
15866 items that were stripped during parsing. It will use a fixed string instead.
15867 This causes the parser to re-use the regular expressions it uses to search
15868 and replace markers rather than generate novel expressions on each parse.
15869 Re-using regular expressions will improve performance on HHVM and the
15870 forthcoming PHP 7. The interfaces changes accompanying this change are:
15871 - Parser::getRandomString() and Parser::uniqPrefix() have been deprecated.
15872 - The $uniq_prefix argument for Parser::extractTagsAndParams() and the
15873 $prefix argument for StripState::_construct() are deprecated and their
15875 * wfSuppressWarnings() and wfRestoreWarnings() were split into a separate
15876 library, mediawiki/at-ease, and are now deprecated. Callers should use
15877 MediaWiki\suppressWarnings() and MediaWiki\restoreWarnings() directly.
15878 * The Block class constructor now takes an associative array of parameters
15879 instead of many optional positional arguments. Calling the constructor the old
15880 way will issue a deprecation warning.
15881 * The jquery.mwExtension module was deprecated.
15882 * $wgSpecialPageGroups was removed (deprecated in 1.21).
15883 * SpecialPageFactory::setGroup was removed (deprecated in 1.21).
15884 * SpecialPageFactory::getGroup was removed (deprecated in 1.21).
15885 * DatabaseBase::ignoreErrors() is now protected.
15886 * BREAKING CHANGE: mediawiki.legacy.ajax has been removed, following
15887 a lengthy deprecation period.
15888 * The ScopedPHPTimeout class was removed.
15889 * Removed maintenance script fixSlaveDesync.php.
15890 * Watchlist tokens, SpecialResetTokens, and User::getTokenFromOption()
15891 are deprecated. Applications using those can work via the OAuth
15892 extension instead. New tokens types should not be added.
15893 * DatabaseBase::errorCount() was removed (unused).
15894 * $wgDeferredUpdateList was removed.
15895 * DeferredUpdates::addHTMLCacheUpdate() was removed.
15899 == MediaWiki 1.25.6 ==
15901 This is a maintenance release of the MediaWiki 1.25 branch.
15903 === Changes since 1.25.5 ===
15904 * (T123166) Fix fatal error when importing pages to titles which cannot be
15905 created, such as invalid titles or titles the user is not allowed to edit.
15906 * (T122056) Old tokens are remaining valid within a new session
15907 * (T127114) Login throttle can be tricked using non-canonicalized usernames
15908 * (T123653) Cross-domain policy regexp is too narrow
15909 * (T123071) Incorrectly identifying http link in a's href attributes, due to
15910 m modifier in regex
15911 * (T129506) MediaWiki:Gadget-popups.js isn't renderable
15912 * (T125283) Users occasionally logged in as different users after
15913 SessionManager deployment
15914 * (T103239) Patrol allows click catching and patrolling of any page
15915 * (T122807) [tracking] Check php crypto primatives
15916 * (T98313) Graphs can leak tokens, leading to CSRF
15917 * (T130947) Diff generation should use PoolCounter
15918 * (T133507) Careless use of $wgExternalLinkTarget is insecure
15919 * (T132874) API action=move is not rate limited
15920 * (T110143) strip markers can be used to get around html attribute escaping in
15921 (many?) parser tags
15922 * (T116030) Increase pbkdf2 parameter strengths
15923 * (T127420) Pbkdf2Password does not check if hash_pbkdf2() succeeded
15924 * (T126685) Globally throttle password attempts
15926 == MediaWiki 1.25.5 ==
15928 This is a maintenance release of the MediaWiki 1.25 branch.
15930 === Changes since 1.25.4 ===
15931 * (T121892) Fix fatal error on some Special pages, introduced in 1.25.4.
15933 == MediaWiki 1.25.4 ==
15935 This is a security and maintenance release of the MediaWiki 1.25 branch.
15937 === Changes since 1.25.3 ===
15938 * (T117899) SECURITY: $wgArticlePath can no longer be set to relative paths
15939 that do not begin with a slash. This enabled trivial XSS attacks.
15940 Configuration values such as "http://my.wiki.com/wiki/$1" are fine, as are
15941 "/wiki/$1". A value such as "$1" or "wiki/$1" is not and will now throw an
15943 * (T119309) SECURITY: Use hash_compare() for edit token comparison
15944 * (T118032) SECURITY: Don't allow cURL to interpret POST parameters starting
15945 with '@' as file uploads
15946 * (T115522) SECURITY: Passwords generated by User::randomPassword() can no
15947 longer be shorter than $wgMinimalPasswordLength
15948 * (T97897) SECURITY: Improve IP parsing and trimming. Previous behavior could
15949 result in improper blocks being issued
15950 * (T109724) SECURITY: Special:MyPage, Special:MyTalk, Special:MyContributions
15951 and related pages no longer use HTTP redirects and are now redirected by
15953 * (T103237) $wgUseGzip had no effect when using file cache.
15954 * (T114606) mw.notify was not correctly fixed to the page if
15955 initialized while not at the top of the page.
15956 * Fix issue that breaks HHVM Repo Authorative mode.
15958 == MediaWiki 1.25.3 ==
15960 This is a security and maintenance release of the MediaWiki 1.25 branch.
15962 === Changes since 1.25.2 ===
15964 * (T98975) Fix having multiple callbacks for a single hook.
15965 * (T107632) maintenance/refreshLinks.php did not always remove all links
15966 pointing to nonexistent pages.
15967 * (T104142) $wgEmergencyContact and $wgPasswordSender now use their default
15968 value if set to an empty string.
15969 * (T62174) Provide fallbacks for use of mb_convert_encoding() in
15970 HtmlFormatter. It was causing an error when accessing the api help page
15971 if the mbstring PHP extension was not installed.
15972 * (T105896) Confirmation emails would sometimes contain invalid codes.
15973 * (T105597) Fixed edit stash inclusion queries.
15974 * (T91850) SECURITY: Add throttle check in ApiUpload and SpecialUpload
15975 * (T91203, T91205) SECURITY: API: Improve validation in chunked uploading
15976 * (T95589) SECURITY: RevDel: Check all revisions for suppression, not just the
15978 * (T108616) SECURITY: Avoid exposure of local path in PNG thumbnails
15980 == MediaWiki 1.25.2 ==
15982 This is a security and maintenance release of the MediaWiki 1.25 branch.
15984 === Changes since 1.25.1 ===
15986 * (T94116) SECURITY: Compare API watchlist token in constant time
15987 * (T97391) SECURITY: Escape error message strings in thumb.php
15988 * (T106893) SECURITY: Don't leak autoblocked IP addresses on
15989 Special:DeletedContributions
15990 * (T102562) Fix InstantCommons parameters to handle the new HTTPS-only
15991 policy of Wikimedia Commons.
15992 * (T100767) Setting a configuration setting for skin or extension to
15993 false in LocalSettings.php was not working.
15994 * (T100635) API action=opensearch json output no longer breaks when
15995 $wgDebugToolbar is enabled.
15996 * (T102522) Using an extension.json or skin.json file which has
15997 a "manifest_version" property for 1.26 compatability will no longer
15999 * (T86156) Running updateSearchIndex.php will not throw an error as
16000 page_restrictions has been added to the locked table list.
16001 * Special:Version would throw notices if using SVN due to an incorrectly
16002 named variable. Add an additional check that an index is defined.
16004 == MediaWiki 1.25.1 ==
16006 This is a bug fix release of the MediaWiki 1.25 branch.
16008 === Changes since 1.25 ===
16009 * (T100351) Fix syntax errors in extension.json of ConfirmEdit extension
16011 == MediaWiki 1.25.0 ==
16013 === Configuration changes in 1.25 ===
16014 * $wgPageShowWatchingUsers was removed.
16015 * $wgLocalVirtualHosts has been added to replace $wgConf->localVHosts.
16016 * $wgAntiLockFlags was removed.
16017 * $wgJavaScriptTestConfig was removed.
16018 * Edit tokens returned from User::getEditToken may change on every call. Token
16019 validity must be checked by passing the user-supplied token to
16020 User::matchEditToken rather than by testing for equality with a
16021 newly-generated token.
16022 * (T74951) The UserGetLanguageObject hook may be passed any IContextSource
16023 for its $context parameter. Formerly it was documented as receiving a
16024 RequestContext specifically.
16025 * Profiling was restructured and $wgProfiler now requires an 'output' parameter.
16026 See StartProfiler.sample for details.
16027 * $wgMangleFlashPolicy was added to make MediaWiki's mangling of anything that
16028 might be a flash policy directive configurable.
16029 * ApiOpenSearch now supports XML output. The OpenSearchXml extension should no
16030 longer be used. If extracts and page images are desired, the TextExtracts and
16031 PageImages extensions are required.
16032 * $wgOpenSearchTemplate is deprecated in favor of $wgOpenSearchTemplates.
16033 * Edits are now prepared via AJAX as users type edit summaries. This behavior
16034 can be disabled via $wgAjaxEditStash.
16035 * (T46740) The temporary option $wgIncludejQueryMigrate was removed, along
16036 with the jQuery Migrate library, as indicated when this option was provided in
16038 * ProfilerStandard and ProfilerSimpleTrace were removed. Make sure that any
16039 StartProfiler.php config is updated to reflect this. Xhprof is available
16040 for zend/hhvm. Also, for hhvm, one can consider using its xenon profiler.
16041 * Default value of $wgSVGConverters['rsvg'] now uses the 'rsvg-convert' binary
16042 rather than 'rsvg'.
16043 * Default value of $wgSVGConverters['ImageMagick'] now uses transparent
16044 background with white fallback color, rather than just white background.
16045 * MediaWikiBagOStuff class removed, make sure any object cache config
16046 uses SqlBagOStuff instead.
16047 * The 'daemonized' flag must be set to true in $wgJobTypeConf for any redis
16048 job queues. This means that mediawiki/services/jobrunner service has to
16049 be installed and running for any such queues to work.
16050 * $wgAutopromoteOnce no longer supports the 'view' event. For keeping some
16051 compatibility, any 'view' event triggers will still trigger on 'edit'.
16052 * $wgExtensionDirectory was added for when your extensions directory is
16053 somewhere other than $IP/extensions (as $wgStyleDirectory does with the skins
16056 === New features in 1.25 ===
16057 * (T64861) Updated plural rules to CLDR 26. Includes incompatible changes
16058 for plural forms in Russian, Prussian, Tagalog, Manx and several languages
16059 that fall back to Russian.
16060 * (T60139) ResourceLoaderFileModule now supports language fallback
16061 for 'languageScripts'.
16062 * Added a new hook, "ContentAlterParserOutput", to allow extensions to modify
16063 the parser output for a content object before links update.
16064 * (T37785) Enhanced recent changes and extended watchlist are now default.
16065 Documentation: https://meta.wikimedia.org/wiki/Help:Enhanced_recent_changes
16066 and https://www.mediawiki.org/wiki/Manual:$wgDefaultUserOptions
16067 * (T69341) SVG images will no longer be base64-encoded when being embedded
16068 in CSS. This results in slight size increase before gzip compression (due to
16069 percent-encoding), but up to 20% decrease after it.
16070 * Update jStorage to v0.4.12.
16071 * MediaWiki now natively supports page status indicators: icons (or short text
16072 snippets) usually displayed in the top-right corner of the page. They have
16073 been in use on Wikipedia for a long time, implemented using templates and CSS
16074 absolute positioning.
16075 - Basic wikitext syntax:
16076 <indicator name="foo">[[File:Foo.svg|20px]]</indicator>
16077 - Usage instructions:
16078 https://www.mediawiki.org/wiki/Help:Page_status_indicators
16079 - Adjusting custom skins to support indicators:
16080 https://www.mediawiki.org/wiki/Manual:Skinning#Page_status_indicators
16081 * Edit tokens may now be time-limited: passing a maximum age to
16082 User::matchEditToken will reject any older tokens.
16083 * The debug logging internals have been overhauled, and are now using the
16085 * Update CSSJanus to v1.1.1.
16086 * Update lessphp to v0.5.0.
16087 * Added a hook, "ApiOpenSearchSuggest", to allow extensions to provide extracts
16088 and images for ApiOpenSearch output. The semantics are identical to the
16089 "OpenSearchXml" hook provided by the OpenSearchXml extension.
16090 * PrefixSearchBackend hook now has an $offset parameter. Combined with $limit,
16091 this allows for pagination of prefix results. Extensions using this hook
16092 should implement supporting behavior. Not doing so can result in undefined
16093 behavior from API clients trying to continue through prefix results.
16094 * Update jQuery from v1.11.1 to v1.11.3.
16095 * External libraries installed via composer will now be displayed
16096 on Special:Version in their own section. Extensions or skins that are
16097 installed via composer will not be shown in this section as it is assumed
16098 they will add the proper credits to the skins or extensions section. They
16099 can also be accessed through the API via the new siprop=libraries to
16101 * Update QUnit from v1.14.0 to v1.16.0.
16102 * Update Moment.js from v2.8.3 to v2.8.4.
16103 * Special:Tags now allows for manipulating the list of user-modifiable change
16105 * Added 'managetags' user right and 'ChangeTagCanCreate', 'ChangeTagCanDelete',
16106 and 'ChangeTagCanCreate' hooks to allow for managing user-modifiable change
16108 * Added 'ChangeTagsListActive' hook, to separate the concepts of "defined" and
16109 "active" formerly conflated by the 'ListDefinedTags' hook.
16110 * Added TemplateParser class that provides a server-side interface to cachable
16111 dynamically-compiled Mustache templates (currently uses lightncandy library).
16112 * Clickable anchors for each section heading in the content are now generated
16113 and appear in the gutter on hovering over the heading.
16114 * Added 'CategoryViewer::doCategoryQuery' and 'CategoryViewer::generateLink'
16115 hooks to allow extensions to override how links to pages are rendered within
16117 * (T19665) Special:WantedPages only lists page which having at least one red
16118 link pointing to it.
16119 * New hooks 'ApiMain::moduleManager' and 'ApiQuery::moduleManager', can be
16120 used for conditional registration of API modules.
16121 * New hook 'EnhancedChangesList::getLogText' to alter, remove or add to the
16122 links of a group of changes in EnhancedChangesList.
16123 * A full interface for StatsD metric reporting has been added to the context
16124 interface, reachable via IContextSource::getStats().
16125 * Move the jQuery Client library from being mastered in MediaWiki as v0.1.0 to a
16126 proper, published library, which is now tagged as v1.0.0.
16127 * A new message (defaulting to blank), 'editnotice-notext', can be shown to
16128 users when they are editing if no edit notices apply to the page being edited.
16129 * (T94536) You can now make the sitenotice appear to logged-in users only by
16130 editing MediaWiki:Anonnotice and replacing its content with "". Setting it to
16131 "-" (default) will continue disable it and fallback to MediaWiki:Sitenotice.
16132 * Modifying the tagging of a revision or log entry is now available via
16133 Special:EditTags, generally accessed via the revision-deletion-like interface
16134 on history pages and Special:Log is likely to be more useful.
16135 * Added 'applychangetags' and 'changetags' user rights.
16136 * (T35235) LogFormatter subclasses are now responsible for formatting the
16137 parameters for API log event output. Extensions should implement the new
16138 getParametersForApi() method in their log formatters.
16140 ==== External libraries ====
16141 * MediaWiki now requires certain external libraries to be installed. In the past
16142 these were bundled inside the Git repository of MediaWiki core, but now they
16143 need to be installed separately. For users using the tarball, this will be
16144 taken care of and no action will be required. Users using Git will either need
16145 to use composer to fetch dependencies or use the mediawiki/vendor repository
16146 which includes all dependencies for MediaWiki core and ones used in Wikimedia
16147 deployment. Detailed instructions can be found at:
16148 https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries
16149 * The following libraries are now required:
16151 This library provides the interfaces set by the PSR-3 standard
16152 (http://www.php-fig.org/psr/psr-3/) which are used by MediaWiki internally
16153 via the MediaWiki\Logger\LoggerFactory class.
16154 See the structured logging RfC
16155 <https://www.mediawiki.org/wiki/Requests_for_comment/Structured_logging>
16156 for more background information.
16157 ** cssjanus/cssjanus
16158 This library was formerly bundled with MediaWiki core and has been removed.
16159 It automatically flips CSS for RTL support.
16161 This library was formerly bundled with MediaWiki core and has been removed.
16162 It compiles LESS files into CSS.
16164 This library was formerly a part of MediaWiki core, and has been moved into a
16165 separate library. It provides CDB functions which are used in the Interwiki
16166 and Localization caches. More information about the library can be found at
16167 https://www.mediawiki.org/wiki/CDB.
16168 ** liuggio/statsd-php-client
16169 This library provides a StatsD client API for logging application metrics to
16172 === Bug fixes in 1.25 ===
16173 * (T73003) No additional code will be generated to try to load CSS-embedded
16174 SVG images in Internet Explorer 6 and 7, as they don't support them anyway.
16175 * (T69021) On Special:BookSources, corrected validation of ISBNs (both
16176 10- and 13-digit forms) containing "X".
16177 * Page moving was refactored into a MovePage class. As part of that:
16178 ** The AbortMove hook was removed.
16179 ** MovePageIsValidMove is for extensions to specify whether a page
16180 cannot be moved for technical reasons, and should not be overridden.
16181 ** MovePageCheckPermissions is for checking whether the given user is
16182 allowed to make the move.
16183 ** Title::moveNoAuth() was deprecated. Use the MovePage class instead.
16184 ** Title::moveTo() was deprecated. Use the MovePage class instead.
16185 ** Title::isValidMoveOperation() broken down into MovePage::isValidMove()
16186 and MovePage::checkPermissions().
16187 * (T18530) Multiple autocomments are now formatted in an edit summary.
16188 * (T70361) Autocomments containing "/*" are parsed correctly.
16189 * The Special:WhatLinksHere page linked from 'Number of redirects to this page'
16190 on action=info about a file page does not list file links anymore.
16191 * (T78637) Search bar is not autofocused unless it is empty so that proper
16192 scrolling using arrow keys is possible.
16193 * (T50853) Database::makeList() modified to handle 'NULL' separately when
16195 * (T85192) Captcha position modified in Usercreate template. As a result:
16196 ** extrafields parameter added to Usercreate.php to insert additional data
16197 ** 'extend' method added to QuickTemplate to append additional values to any
16198 field of data array
16199 * (T86974) Several Title methods now load from the database when necessary
16200 (instead of returning incorrect results) even when the page ID is known.
16201 * (T74070) Duplicate search for archived files on file upload now omits the
16203 This requires the fa_sha1 field being populated.
16204 * Removed rel="archives" from the "View history" link, as it did not pass
16206 * $wgUseTidy is now set when parserTests are run with the tidy option to match
16208 * (T37472) update.php will purge ResourceLoader cache unless --nopurge is passed
16210 * (T72109) mediawiki.language should respect $wgTranslateNumerals in
16213 === Action API changes in 1.25 ===
16214 * (T67403) XML tag highlighting is now only performed for formats
16215 "xmlfm" and "wddxfm".
16216 * action=paraminfo supports generalized submodules (modules=query+value),
16217 querymodules and formatmodules are deprecated
16218 * action=paraminfo no longer outputs descriptions and other help text by
16219 default. If needed, it may be requested using the new 'helpformat' parameter.
16220 * action=help has been completely rewritten, and outputs help in HTML
16221 rather than plain text.
16222 * Hitting api.php without specifying an action now displays only the help for
16223 the main module, with links to submodule help.
16224 * API help is no longer displayed on errors.
16225 * 'uselang' is now a recognized API parameter; "uselang=user" may be used to
16226 explicitly select the language from the current user's preferences, and
16227 "uselang=content" may be used to select the wiki's content language.
16228 * Default output format for the API is now jsonfm.
16229 * Simplified continuation will return a "batchcomplete" property in the result
16230 when a batch of pages is complete.
16231 * Pretty-printed HTML output now has nicer formatting and (if available)
16232 better syntax highlighting.
16233 * Deprecated list=deletedrevs in favor of newly-added prop=deletedrevisions and
16234 list=alldeletedrevisions.
16235 * prop=revisions will gracefully continue when given too many revids or titles,
16236 rather than just ignoring the extras.
16237 * prop=revisions will no longer die if rvcontentformat doesn't match a
16238 revision's content model; it will instead warn and omit the content.
16239 * If the user has the 'deletedhistory' right, action=query's revids parameter
16240 will now recognize deleted revids.
16241 * prop=revisions may be used as a generator, generating revids.
16242 * (T68776) format=json results will no longer be corrupted when
16243 $wgMangleFlashPolicy is in effect. format=php results will cleanly return an
16244 error instead of returning invalid serialized data.
16245 * Generators may now return data for the generated pages when used with
16247 * Query page data for generator=search and generator=prefixsearch will now
16248 include an "index" field, which may be used by the client for sorting the
16250 * ApiOpenSearch now supports XML output.
16251 * ApiOpenSearch will now output descriptions and URLs as array indexes 2 and 3
16253 * (T76051) list=tags will now continue correctly.
16254 * (T76052) list=tags can now indicate whether a tag is defined.
16255 * (T75522) list=prefixsearch now supports continuation
16256 * (T78737) action=expandtemplates can now return page properties.
16257 * (T78690) list=allimages now accepts multiple pipe-separated values
16258 for the 'aimime' parameter.
16259 * prop=info with inprop=protections will now return applicable protection types
16260 with the 'restrictiontypes' key.
16261 * (T85417) When resolving redirects, ApiPageSet will now add the targets of
16262 interwiki redirects to the list of interwiki titles.
16263 * (T85417) When outputting the list of redirect titles, a 'tointerwiki'
16264 property (like the existing 'tofragment' property) will be set.
16265 * Added action=managetags to allow for managing the list of
16266 user-modifiable change tags. Actually modifying the tagging of a revision or
16267 log entry is not implemented yet.
16268 * list=tags has additional properties to indicate 'active' status and tag
16270 * siprop=libraries was added to ApiQuerySiteinfo to list installed external
16272 * (T88010) Added action=checktoken, to test a CSRF token's validity.
16273 * (T88010) Added intestactions to prop=info, to allow querying of
16274 Title::userCan() via the API.
16275 * Default type param for query list=watchlist and list=recentchanges has
16276 been changed from all types (e.g. including 'external') to 'edit|new|log'.
16277 * Added formatversion to format=json. Still "experimental" as further changes
16278 to the output formatting might still be made.
16279 * (T73020) Log event details are now always under a 'params' subkey for
16280 list=logevents, and a 'logparams' subkey for list=watchlist and
16281 list=recentchanges.
16282 * Log event details are changing formatting:
16283 * block events now report flags as an array rather than as a comma-separated
16285 * patrol events now report the 'auto' flag as a boolean (absent/empty string
16286 for BC formats) rather than as an integer.
16287 * rights events now report the old and new group lists as arrays rather than
16288 as comma-separated lists.
16289 * merge events use new-style formatting.
16290 * delete/event and delete/revision events use new-style formatting.
16291 * The root node and various other nodes will now always be an object in formats
16292 such as json that distinguish between arrays and objects.
16293 * Except for action=opensearch where the spec requires an array.
16295 === Action API internal changes in 1.25 ===
16296 * ApiHelp has been rewritten to support i18n and paginated HTML output.
16297 Most existing modules should continue working without changes, but should do
16299 * Add an i18n message "apihelp-{$moduleName}-description" to replace
16301 * Add i18n messages "apihelp-{$moduleName}-param-{$param}" for each parameter
16302 to replace getParamDescription(). If necessary, the settings array returned
16303 by getParams() can use the new ApiBase::PARAM_HELP_MSG key to override the
16305 * Implement getExamplesMessages() to replace getExamples().
16306 * Modules with submodules (like action=query) must have their submodules
16307 override ApiBase::getParent() to return the correct parent object.
16308 * The 'APIGetDescription' and 'APIGetParamDescription' hooks are deprecated,
16309 and will have no effect for modules using i18n messages. Use
16310 'APIGetDescriptionMessages' and 'APIGetParamDescriptionMessages' instead.
16311 * Api formatters will no longer be asked to display the help screen on errors.
16312 * ApiMain::getCredits() was removed. The credits are available in the
16313 'api-credits' i18n message.
16314 * ApiFormatBase has been changed to support i18n and syntax highlighting via
16315 extensions with the new 'ApiFormatHighlight' hook. Core syntax highlighting
16317 * ApiFormatBase now always buffers. Output is done when
16318 ApiFormatBase::closePrinter is called.
16319 * Much of the logic in ApiQueryRevisions has been split into
16320 ApiQueryRevisionsBase.
16321 * The 'revids' parameter supplied by ApiPageSet will now count deleted
16322 revisions as "good" if the user has the 'deletedhistory' right. New methods
16323 ApiPageSet::getLiveRevisionIDs() and ApiPageSet::getDeletedRevisionIDs() are
16324 provided to access just the live or just the deleted revids.
16325 * Added ApiPageSet::setGeneratorData() and ApiPageSet::populateGeneratorData()
16326 to allow generators to include data in the action=query result.
16327 * New hooks 'ApiMain::moduleManager' and 'ApiQuery::moduleManager', can be
16328 used for conditional registration of API modules.
16329 * Added ApiBase::lacksSameOriginSecurity() to allow modules to easily check if
16330 the current request was sent with the 'callback' parameter (or any future
16331 method that breaks the same-origin policy).
16332 * Profiling methods in ApiBase are deprecated and no longer need to be called.
16333 * ApiResult was greatly overhauled. See inline documentation for details.
16334 * ApiResult will automatically convert objects to strings or arrays (depending
16335 on whether a __toString() method exists on the object), and will refuse to
16336 add unsupported value types.
16337 * An informal interface, ApiSerializable, exists to override the default
16339 * ApiResult/ApiFormatBase "raw mode" is deprecated.
16340 * ApiFormatXml now assumes defaults and so on instead of throwing errors when
16341 metadata isn't set.
16342 * (T35235) LogFormatter subclasses are now responsible for formatting log event
16343 parameters for the API.
16344 * Many modules have changed result data formats. While this shouldn't affect
16345 clients not using the experimental formatversion=2, code using
16346 ApiResult::getResultData() without the transformations for backwards
16347 compatibility may need updating, as will code that wasn't following the old
16348 conventions for API boolean output.
16349 * The following methods have been deprecated and may be removed in a future
16351 * ApiBase::getDescription
16352 * ApiBase::getParamDescription
16353 * ApiBase::getExamples
16354 * ApiBase::makeHelpMsg
16355 * ApiBase::makeHelpArrayToString
16356 * ApiBase::makeHelpMsgParameters
16357 * ApiBase::getModuleProfileName
16358 * ApiBase::profileIn
16359 * ApiBase::profileOut
16360 * ApiBase::safeProfileOut
16361 * ApiBase::getProfileTime
16362 * ApiBase::profileDBIn
16363 * ApiBase::profileDBOut
16364 * ApiBase::getProfileDBTime
16365 * ApiBase::getResultData
16366 * ApiFormatBase::setUnescapeAmps
16367 * ApiFormatBase::getWantsHelp
16368 * ApiFormatBase::setHelp
16369 * ApiFormatBase::formatHTML
16370 * ApiFormatBase::setBufferResult
16371 * ApiFormatBase::getDescription
16372 * ApiFormatBase::getNeedsRawData
16374 * ApiMain::reallyMakeHelpMsg
16375 * ApiMain::makeHelpMsgHeader
16376 * ApiResult::setRawMode
16377 * ApiResult::getIsRawMode
16378 * ApiResult::getData
16379 * ApiResult::setElement
16380 * ApiResult::setContent
16381 * ApiResult::setIndexedTagName_recursive
16382 * ApiResult::setIndexedTagName_internal
16383 * ApiResult::setParsedLimit
16384 * ApiResult::beginContinuation
16385 * ApiResult::setContinueParam
16386 * ApiResult::setGeneratorContinueParam
16387 * ApiResult::endContinuation
16389 * ApiResult::convertStatusToArray
16390 * ApiQueryImageInfo::getPropertyDescriptions
16391 * ApiQueryLogEvents::addLogParams
16392 * The following classes have been deprecated and may be removed in a future
16394 * ApiQueryDeletedrevs
16396 === Languages updated in 1.25 ===
16398 MediaWiki supports over 350 languages. Many localisations are updated
16399 regularly. Below only new and removed languages are listed, as well as
16400 changes to languages because of Bugzilla reports.
16403 ** awa (अवधी / Awadhi), thanks to translator 1AnuraagPandey;
16404 ** bgn (بلوچی رخشانی / Western Balochi), thanks to translators
16405 Baloch Afghanistan, Ibrahim khashrowdi and Rachitrali;
16406 ** ses (Koyraboro Senni), thanks to translator Songhay.
16407 * (T66440) Kazakh (kk) wikis should no longer forcefully reset the user's
16408 interface language to kk where unexpected.
16409 * The Chinese conversion table was substantially updated to fix a lot of
16410 bugs and ensure better reading experience for different variants.
16412 === Other changes in 1.25 ===
16413 * (T45591) Links to MediaWiki.org translatable help were added to indicators,
16414 mostly in special pages. Local custom target titles can be placed in the
16415 relevant '(namespace-X|action name|special page name)-helppage' system
16416 message. Extensions can use the addHelpLink() function to do the same.
16417 * The skin autodiscovery mechanism, deprecated in MediaWiki 1.23, has been
16418 removed. See https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery for
16419 migration guide for creators and users of custom skins that relied on it.
16420 * Javascript variables 'wgFileCanRotate' and 'wgFileExtensions' now only
16421 available on Special:Upload.
16422 * (T58257) Set site logo from mediawiki.skinning.interface module instead of
16423 inline styles in the HTML.
16424 * Removed ApiQueryUsers::getAutoGroups(). (deprecated since 1.20)
16425 * Removed XmlDumpWriter::schemaVersion(). (deprecated since 1.20)
16426 * Removed LogEventsList::getDisplayTitle(). (deprecated since 1.20)
16427 * Removed Preferences::trySetUserEmail(). (deprecated since 1.20)
16428 * Removed mw.user.name() and mw.user.anonymous() methods. (deprecated since
16430 * Removed 'ok' and 'err' parameters in the mediawiki.api modules. (deprecated
16432 * Removed 'async' parameter from the mw.Api#getCategories() method. (deprecated
16434 * Removed 'jquery.json' module. (deprecated since 1.24)
16435 Use the 'json' module and global JSON object instead.
16436 * Deprecated OutputPage::readOnlyPage() and OutputPage::rateLimited().
16437 Also, the former will now throw an MWException if called with one or more
16439 * Removed hitcounters and associated code.
16440 * The "temp" zone of the upload respository is now considered private. If it
16441 already exists (such as under the images/ directory), please make sure that
16442 the directory is not web readable (e.g. via a .htaccess file).
16443 * BREAKING CHANGE: In the XML dump format used by Special:Export and
16444 dumpBackup.php, the <model> and <format> tags now apprear before the <text>
16445 tag, instead of after the <text> and <sha1> tags.
16446 The new schema version is 0.10, the new schema URI is:
16447 https://www.mediawiki.org/xml/export-0.10.xsd
16448 * MWFunction::call() and MWFunction::callArray() were removed, having being
16449 deprecated in 1.22.
16450 * Deprecated the getInternalLinkAttributes, getInternalLinkAttributesObj,
16451 and getInternalLinkAttributes methods in Linker, and removed
16452 getExternalLinkAttributes method, which was deprecated in MediaWiki 1.18.
16453 * Removed Sites class, which was deprecated in 1.21 and replaced by
16455 * Added wgRelevantArticleId to the client-side config, for use on special pages.
16456 * Deprecated the TitleIsCssOrJsPage hook. Superseded by the
16457 ContentHandlerDefaultModelFor hook since MediaWiki 1.21.
16458 * Deprecated the TitleIsWikitextPage hook. Superseded by the
16459 ContentHandlerDefaultModelFor hook since MediaWiki 1.21.
16460 * Changed parsing of variables in schema (.sql) files:
16461 ** The substituted values are no longer parsed. (Formerly, several passes
16462 were made for each variable, so depending on the order in which variables
16463 were defined, variables might have been found inside encoded values. This
16464 is no longer the case.)
16465 ** Variables are no longer string encoded when the /*$var*/ syntax is used.
16466 If string encoding is necessary, use the '{$var}' syntax instead.
16467 ** Variable names must only consist of one or more of the characters
16469 ** In source text of the form '{$A}'{$B}' or `{$A}`{$B}`, where variable A
16470 does not exist yet variable B does, the latter may not be replaced.
16471 However, this difference is unlikely to arise in practice.
16472 * (T67278) RFC, PMID, and ISBN "magic links" must be surrounded by non-word
16473 characters on both sides.
16474 * The FormatAutocomments hook will now receive $pre and $post as booleans,
16475 rather than as strings that must be prepended or appended to $comment.
16476 * (T30950, T31025) RFC, PMID, and ISBN "magic links" can no longer contain
16477 newlines; but they can contain and other non-newline whitespace.
16478 * The 'mediawiki.action.edit' ResourceLoader module no longer generates the edit
16479 toolbar, which has been moved to a separate 'mediawiki.toolbar' module. If you
16480 relied on this behavior, update your scripts' dependencies.
16481 * HTMLForm's 'vform' display style has been separated to a subclass. Therefore:
16482 * HTMLForm::isVForm() is now deprecated.
16483 * You can no longer do this:
16484 $form = new HTMLForm( … );
16485 $form->setDisplayFormat( 'vform' ); // throws exception
16487 $form = HTMLForm::factory( 'vform', … );
16488 * Deprecated Revision methods getRawUser(), getRawUserText() and
16490 * BREAKING CHANGE: mediawiki.user.generateRandomSessionId:
16491 The alphabet of the prior string returned was A-Za-z0-9 and now it is 0-9A-F
16492 * (T87504) Avoid serving SVG background-images in CSS for Opera 12, which
16493 renders them incorrectly when combined with border-radius or background-size.
16494 * Removed maintenance script dumpSisterSites.php.
16495 * DatabaseBase class constructors must be called using the array argument style.
16496 Ideally, DatabaseBase:factory() should be used instead in most cases.
16497 * Deprecated ParserOutput::addSecondaryDataUpdate and
16498 ParserOutput::getSecondaryDataUpdates.
16499 This is a hard deprecation, with getSecondaryDataUpdates returning an empty
16500 array and addSecondaryDataUpdate throwing an exception. These functions will
16501 be removed in 1.26, since they interfere with caching of ParserOutput objects.
16502 * Introduced new hook 'SecondaryDataUpdates' that allows extensions to inject
16504 * Introduced new hook 'OpportunisticLinksUpdate' that allows extensions to
16505 perform updates when a page is re-rendered.
16506 * EditPage::attemptSave has been modified not to call handleStatus itself and
16507 instead just returns the Status object. Extension calling it should be aware
16509 * Removed class DBObject. (unused since 1.10)
16510 * wfDiff() is deprecated.
16511 * The -m (maximum replication lag) option of refreshLinks.php was removed.
16512 It had no effect since MediaWiki 1.18 and should be removed from any cron
16513 jobs or similar scripts you may have set up.
16514 * (T85864) The following messages no longer support raw html: redirectto,
16515 thisisdeleted, viewdeleted, editlink, retrievedfrom, version-poweredby-others,
16516 retrievedfrom, thisisdeleted, viewsourcelink, lastmodifiedat, laggedslavemode,
16517 protect-summary-cascade
16518 * All BloomCache related code has been removed. This was largely experimental.
16519 * $wgResourceModuleSkinStyles no longer supports per-module local or remote
16520 paths. They can only be set for the entire skin.
16521 * Removed global function swap(). (deprecated since 1.24)
16522 * Deprecated the ".php5" file extension entry points and the $wgScriptExtension
16523 configuration variable. Refer to the ".php" files instead. If you want
16524 ".php5" URLs to continue to work, set up redirects. In Apache, this can be
16525 done by enabling mod_rewrite and adding the following rules to your
16530 RewriteRule ^(.*)\.php5 $1.php [R=301,L]
16532 * The global importScriptURI and importStylesheetURI functions, as well as the
16533 loadedScripts object, from wikibits.js (deprecated since 1.17) now emit
16534 warnings through mw.log.warn when accessed.
16538 == MediaWiki 1.24.6 ==
16540 This is a maintenance release of the MediaWiki 1.24 branch.
16542 === Changes since 1.24.5 ===
16543 * (T121892) Fix fatal error on some Special pages, introduced in 1.24.5.
16545 == MediaWiki 1.24.5 ==
16547 This is a security and maintenance release of the MediaWiki 1.23 branch.
16549 === Changes since 1.24.4 ===
16550 * (T117899) SECURITY: $wgArticlePath can no longer be set to relative paths
16551 that do not begin with a slash. This enabled trivial XSS attacks.
16552 Configuration values such as "http://my.wiki.com/wiki/$1" are fine, as are
16553 "/wiki/$1". A value such as "$1" or "wiki/$1" is not and will now throw an
16555 * (T119309) SECURITY: Use hash_compare() for edit token comparison
16556 * (T118032) SECURITY: Don't allow cURL to interpret POST parameters starting
16557 with '@' as file uploads
16558 * (T115522) SECURITY: Passwords generated by User::randomPassword() can no
16559 longer be shorter than $wgMinimalPasswordLength
16560 * (T97897) SECURITY: Improve IP parsing and trimming. Previous behavior could
16561 result in improper blocks being issued
16562 * (T109724) SECURITY: Special:MyPage, Special:MyTalk, Special:MyContributions
16563 and related pages no longer use HTTP redirects and are now redirected by
16565 * (T103237) $wgUseGzip had no effect when using file cache.
16567 == MediaWiki 1.24.4 ==
16569 This is a security and maintenance release of the MediaWiki 1.24 branch.
16571 === Changes since 1.24.3 ===
16573 * (T91653) Minimal PSR-3 debug logger to support backports from 1.25+.
16574 * (T68650) Fix indexing of moved pages with PostgreSQL. Requires running
16576 * (T91850) SECURITY: Add throttle check in ApiUpload and SpecialUpload
16577 * (T91203, T91205) SECURITY: API: Improve validation in chunked uploading
16578 * (T95589) SECURITY: RevDel: Check all revisions for suppression, not just the
16580 * (T108616) SECURITY: Avoid exposure of local path in PNG thumbnails
16582 == MediaWiki 1.24.3 ==
16584 This is a security and maintenance release of the MediaWiki 1.24 branch.
16586 === Changes since 1.24.2 ===
16588 * (T94116) SECURITY: Compare API watchlist token in constant time
16589 * (T97391) SECURITY: Escape error message strings in thumb.php
16590 * (T106893) SECURITY: Don't leak autoblocked IP addresses on
16591 Special:DeletedContributions
16592 * Update jQuery from v1.11.2 to v1.11.3.
16593 * (T102562) Fix InstantCommons parameters to handle the new HTTPS-only
16594 policy of Wikimedia Commons.
16596 == MediaWiki 1.24.2 ==
16598 This is a security and maintenance release of the MediaWiki 1.24 branch.
16600 === Changes since 1.24.1 ===
16602 * (T85848, T71210) SECURITY: Don't parse XMP blocks that contain XML entities,
16603 to prevent various DoS attacks.
16604 * (T85848) SECURITY: Don't allow directly calling Xml::isWellFormed, to reduce
16606 * (T88310) SECURITY: Always expand xml entities when checking SVG's.
16607 * (T73394) SECURITY: Escape > in Html::expandAttributes to prevent XSS.
16608 * (T85855) SECURITY: Don't execute another user's CSS or JS on preview.
16609 * (T64685) SECURITY: Allow setting maximal password length to prevent DoS when
16611 * (T85349, T85850, T86711) SECURITY: Multiple issues fixed in SVG filtering to
16612 prevent XSS and protect viewer's privacy.
16613 * Fix case of SpecialAllPages/SpecialAllMessages in SpecialPageFactory to fix
16614 loading these special pages when $wgAutoloadAttemptLowercase is false.
16615 * (bug T70087) Fix Special:ActiveUsers page for installations using
16617 * (bug T76254) Fix deleting of pages with PostgreSQL. Requires a schema change
16618 and running update.php to fix.
16620 == MediaWiki 1.24.1 ==
16622 This is a security and maintenance release of the MediaWiki 1.24 branch.
16624 === Changes since 1.24.0 ===
16626 * (bug T76686) [SECURITY] thumb.php outputs wikitext message as raw HTML, which
16627 could lead to xss. Permission to edit MediaWiki namespace is required to
16629 * (bug T77028) [SECURITY] Malicious site can bypass CORS restrictions in
16630 $wgCrossSiteAJAXdomains in API calls if it only included an allowed domain as
16632 * (bug T74222) The original patch for T74222 was reverted as unnecessary.
16633 * Fixed a couple of entries in RELEASE-NOTES-1.24.
16634 * (bug T76168) OutputPage: Add accessors for some protected properties.
16635 * (bug T74834) Make 1.24 branch directly installable under PostgreSQL.
16637 == MediaWiki 1.24.0 ==
16639 === Configuration changes in 1.24 ===
16640 * MediaWiki will no longer run if register_globals is enabled. It has been
16641 deprecated for 5 years now, and was removed in PHP 5.4. For more information
16642 about why, see <https://www.mediawiki.org/wiki/register_globals>.
16643 * MediaWiki now requires PHP's iconv extension. openSUSE users may need to
16644 install the php5-iconv package. Users of other systems may need to add
16645 extension=iconv.so to php.ini or recompile PHP without --without-iconv.
16646 * MediaWiki will no longer function if magic quotes are enabled. It has
16647 been deprecated for 5 years now, and was removed in PHP 5.4.
16648 * The server's canonical hostname is available as $wgServerName, which is
16649 exposed in both mw.config and ApiQuerySiteinfo.
16650 * Introduced $wgPagePropsHaveSortkey as a backwards-compatibility switch,
16651 for using the old schema of the page_props table, in case the respective
16652 schema update was not applied.
16653 * $wgSearchEverythingOnlyLoggedIn was removed as the 'searcheverything'
16654 user option was removed. Use $wgNamespacesToBeSearchedDefault instead or
16655 if you used to have $wgDefaultUserOptions['searcheverything'] = 1.
16656 * $wgMasterWaitTimeout has been deprecated.
16657 * $wgDBClusterTimeout has been removed.
16658 * $wgProxyKey has been removed. It is no longer used by MediaWiki core.
16659 Ensure $wgSecretKey is set in LocalSettings.php.
16660 * $wgExtraInterlanguageLinkPrefixes is a new configuration variable that
16661 contains an array of interwiki prefixes that should be treated as language
16662 prefixes (i.e. turned into interlanguage links when $wgInterwikiMagic is set
16664 * $wgParserTestRemote has been removed.
16665 * $wgCountTotalSearchHits has been removed. If you're concerned about efficiency
16666 of search, you should use something like CirrusSearch instead of built in
16668 * Users in the 'sysop' group have access to Special:MergeHistory by default.
16669 * $wgFileStore was removed after having been deprecated in 1.17. Alternative
16670 configurations are $wgDeletedDirectory and $wgHashedUploadDirectory.
16671 * The deprecated $wgUseCommaCount variable has been removed.
16672 * $wgEnableSorbs and $wgSorbsUrl have been removed.
16673 * The UserCryptPassword and UserComparePassword hooks are no longer called.
16674 Any extensions using them must be updated to use the Password Hashing API.
16675 * $wgCompiledFiles has been removed.
16676 * $wgSortSpecialPages was removed, the listing on Special:SpecialPages is
16678 * $wgSpecialPages may now use callback functions as an alternative to plain
16679 class names. This allows more control over constructor parameters.
16680 * $wgHTCPMulticastAddress, $wgHTCPMulticastRouting and $wgHTCPPort were removed.
16681 * $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort
16682 and $wgRC2UDPPrefix have been removed.
16683 * The default password type for MediaWiki has been changed from MD5 to PBKDF2.
16684 Password hashes will automatically be updated as users log in. If necessary,
16685 the old MD5 hashing can be restored by changing $wgPasswordDefault to 'B'.
16686 In addition, there is a maintenance script wrapOldPassword.php that can wrap
16687 all passwords in PBKDF2 (or the hashing algorithm of your choice) if you don't
16688 want to wait for your users to log in.
16689 * $wgImportSources can now either be a regular array, or an associative map
16690 specifying subprojects on the interwiki map of the target wiki, or a mix of
16691 the two. Existing configurations will still work.
16692 * Users must be able to edit through a page's protection to be able to delete
16694 * The default thumb size ($wgDefaultUserOptions['thumbsize']) is now 300px, up
16695 from 180px. If you have altered the number of entries in $wgThumbLimits for
16696 your wiki, you may need to adjust your default user settings to compensate for
16698 * $wgDeferredUpdateList is now deprecated, you should use
16699 DeferredUpdates::addUpdate() instead.
16700 * $wgCanonicalLanguageLinks has been removed. Per Google recommendations, we
16701 will not send a rel=canonical pointing to a variant-neutral page, however
16702 we will send rel=alternate.
16703 * $wgResourceLoaderLESSFunctions has been deprecated and will be removed in the
16705 * $wgGoToEdit has been removed. Use the SpecialSearchNogomatch hook for similar
16708 === New features in 1.24 ===
16709 * Added new hook WatchlistEditorBeforeFormRender, allowing subscribers to
16710 manipulate the list of pages and/or preload lots of data at once.
16711 * Added new argument &$link in hook WatchlistEditorBuildRemoveLine, allowing the
16712 link to the title to be changed.
16713 * Added a new hook, "WhatLinksHereProps", to allow extensions to annotate
16714 WhatLinksHere entries.
16715 * Added a new hook, "ContentGetParserOutput", to customize parser output for
16716 a given content object.
16717 * Deprecated the hook "ShowRawCssJs", use "ContentGetParserOutput" instead.
16718 * HTMLForm's HTMLTextField now supports the 'url' type.
16719 * HTMLForm fields may now be dynamically hidden based on the values of other
16720 fields in the form.
16721 * HTMLForm now supports multiple copies of an input field or set of input
16722 fields, e.g. the form may request "one or more usernames" without having to
16723 have the user enter delimited list of names into a text field.
16724 * Added a new hook, "SidebarBeforeOutput", to allow to edit the structure of
16725 the sidebar just before its display.
16726 * (bug 49156) Added the mediawiki.cookie ResourceLoader module, which wraps
16727 jquery.cookie so that getting/setting a cookie is syntactically and
16728 functionally similar to using the WebRequest::getCookie() and
16729 WebResponse::setcookie() methods.
16730 * (bug 44740) jQuery upgraded from 1.8.3 to 1.11.1. A new configuration option,
16731 $wgIncludejQueryMigrate, also loads the jQuery Migrate hack to let extensions
16732 and gadgets use the long-deprecated functions that were removed in jQuery 1.9.
16733 This option is turned off by default, and will be removed in MediaWiki 1.25.
16734 * (bug 47076) jQuery UI upgraded from 1.8.24 to 1.9.2.
16735 * Changes to content typography (fonts, etc.). See
16736 https://www.mediawiki.org/wiki/Typography_refresh for further information.
16737 * WikitextContent will now render redirects with the expected "redirect"
16738 header, rather than as an ordered list. Code calling Article::viewRedirect
16739 can probably be changed to no longer special-case redirects.
16740 * Header font set to a serif font stack. See
16741 https://www.mediawiki.org/wiki/Typography_refresh for further information.
16742 * (bug 65567) Added a new hook, "BeforeHttpsRedirect", to allow cancellation of
16743 the HTTP to HTTPS redirect due to forceHTTPS cookie, userRequires, etc. This
16744 is only for page views, since this hook doesn't affect UserLogin, OAuth,
16745 CentralAuth, etc. ATTENTION: This hook is likely to be removed soon due to
16746 overall design of the system.
16747 * (bug 17367) It is now possible to add pages to your watchlist from
16748 Special:UnwatchedPages without reloading the special page.
16749 * New methods setVolatile and isVolatile are added to PPFrame, so that
16750 extensions such as Cite.php can mark that their output is volatile and
16751 shouldn't be cached.
16752 * (bug 52817) Advanced search options are now saved on the search page itself,
16753 rather than in a dedicated pane in the preferences panel.
16754 * (bug 44591) The dropdown actions menu (little triangle next to page tabs) in
16755 the Vector skin has gained a label that should make it more discoverable.
16756 * MWCryptHKDF added for fast, cryptographically secure random number generation
16757 that won't deplete openssl's entropy pool.
16758 * ResourceLoader: File modules can now provide a skip function that uses an
16759 inline feature test to bypass loading of the module.
16760 * (bug 20210) Special pages may now provide autocompletion of their subpage
16761 names in search suggestions. Right now the only useful implementation is in
16762 Special:Log, but more are to come.
16763 * Special:MostLinkedTemplates is no longer limited to transclusions from the
16764 Template namespace.
16765 * Skins can now use 'remoteSkinPath' when defining ResourceLoader modules.
16766 This works the same as 'remoteExtPath' but is relative to the skins/ folder
16767 instead of the extensions/ folder.
16768 * Added the json2.js polyfill for the ES5 JSON.stringify and JSON.parse methods.
16769 Exposed as module "json" with a skip function to optimise loading.
16770 * Extensions and skins may now use 'namemsg' in $wgExtensionCredits in addition
16771 to 'name', to allow for the name to be localizable. 'name' should still be
16772 specified for backwards-compatibility and to define the path Special:Version
16773 uses to find extension license information.
16774 * Browser tests are now included to verify basic wiki functionality in developer
16775 environments. For details on running tests, see
16776 tests/browser/README.mediawiki.
16777 * Upgrade jStorage to v0.4.10.
16778 * {{!}} is now a magic word that produces the | character. This removes the need
16779 for Template:! for purposes such as passing pipes inside of parameters.
16780 * (bug 20790) The block log snippet on Special:Contributions and while
16781 editing user and user talk pages now works for IP range blocks.
16782 * (bug 9360) Added ability to change the page language for MediaWiki pages using
16783 Special:PageLanguage. All pages are set to wiki language by default.
16784 The feature needs to be enabled with $wgPageLanguageUseDB=true and
16785 permission needs to be set for 'pagelang'.
16786 * Upgrade Moment.js to v2.8.3.
16787 * (bug 67042) Added support for the HTML5 <rtc> tag for East Asian typography.
16788 * Upgrade Sinon.JS to 1.10.3.
16789 * Added the es5-shim polyfill for older or non-compliant javascript engines.
16790 * Upgrade jQuery Cookie to v1.3.1.
16791 * (bug 20476) Add a "viewsuppressed" user right to be able to view
16792 suppressed content but not suppress it ("suppressrevision" right).
16793 * (bug 66440) The MediaWiki web installer will now allow you to choose the skins
16794 to enable (from the ones included in download tarball) and decide which one
16795 should be the default.
16796 * (bug 68085, 68802) Links like [[localInterwikiPrefix:languageCode:pageTitle]],
16797 where localInterwikiPrefix is a member of the $wgLocalInterwikis array, will
16798 no longer be displayed in the sidebar when $wgInterwikiMagic is true. In a
16799 similar way, links like [[localInterwikiPrefix:File:Image.png]] and
16800 [[localInterwikiPrefix:Category:Hello]] will now render as regular links, and
16801 will not include the file or add the page to the category.
16802 * New special page, MyLanguage, to redirect users to subpages with localised
16803 versions of a page. (Integrated from Extension:Translate)
16804 * MediaWiki now supports multiple password types, including bcrypt and PBKDF2.
16805 The default type can be changed with $wgPasswordDefault and the type
16806 configurations can be changed with $wgPasswordConfig.
16807 * Skins can now define custom styles for default ResourceLoader modules using
16808 the $wgResourceModuleSkinStyles global. See the Vector skin for examples.
16809 * (bug 4488) There is now a preference to watch pages where the user has
16810 rollbacked an edit by default.
16811 * (bug 15484) Users will now be redirected to the login page when they need to
16812 log in, rather than being shown a page asking them to log in and having to
16813 click another link to actually get to the login page.
16814 * A JsonContent and JsonContentHandler were added for extensions to extend.
16815 * (bug 35045) Redirects to sections will now update the URL in browser's address
16816 bar using the HTML5 History API. When [[Dog]] redirects to [[Animals#Dog]],
16817 the user will now see "Animals#Dog" in their browser instead of "Dog#Dog".
16818 * API token handling has been rewritten. Any API module using tokens will need
16819 to be updated. See the entry below under "Action API internal changes".
16820 * Added HTMLAutoCompleteSelectField.
16821 * Added a new hook, "SkinPreloadExistence", to allow extensions to add titles to
16822 link existence cache before the page is rendered.
16823 * Config::set() was moved to its own interface, MutableConfig.
16824 GlobalVarConfig::set() is now deprecated, does not implement MutableConfig.
16825 * A MutableConfig named HashConfig was added, that stores an array of
16826 configuration settings.
16827 * (bug 69418) A MultiConfig implementation was added that supports fallback
16828 to multiple Config instances.
16829 * Update CSSJanus to v1.1.0.
16830 * Added FormatJson::parse() returning status with result or localized error
16832 * Added DeletedContribsPager::reallyDoQuery hook allowing extensions to data to
16833 Special:DeletedContributions
16834 * Added DeletedContributionsLineEnding hook allowing extensions to format
16835 Special:DeletedContributions lines
16836 * (T69525) You can now make MediaWiki speed up its thumbnail rendering by using
16837 intermediary thumbnails. $wgThumbnailBuckets must be set to a list of target
16838 thumbnail widths; when a new thumbnail needs to be rendered, MediaWiki will
16839 find the smallest bucket smaller than the original but larger than the target
16840 width + $wgThumbnailMinimumBucketDistance, and it will scale that thumbnail,
16841 rather than the original, down to the target size at greater speed in return
16842 for minor loss of fidelity.
16844 === Bug fixes in 1.24 ===
16845 * (bug 50572) MediaWiki:Blockip should support gender
16846 * (bug 49116) Footer copyright notice is now always displayed in user language
16847 rather than content language (same as copyright notice for editing interface).
16848 * (bug 62258) A bug was fixed in File::getUnscaledThumb when a height
16849 restriction was present in the parameters. Images with both the "frame"
16850 option and a size specification set will now always ignore the provided
16851 size and display an unscaled image, as the documentation has always
16853 * (bug 39035) Improved Vector skin performance by removing collapsibleNav,
16854 which used to collapse some sidebar elements by default.
16855 This removes -list id suffixes like p-lang-list: instead of using things like
16856 #p-lang-list, you can do #p-lang .body ul.
16857 * (bug 890) Links in Special:RecentChanges and Special:Watchlist no longer
16858 follow redirects to their target pages.
16859 * Parser now dies early if called recursively, instead of producing subtle bugs.
16860 * (bug 14323) Redirect pages, when viewed with redirect=no, no longer hide the
16861 remaining page content.
16862 * (bug 52587) Maintenance script deleteBatch.php no longer follows redirects
16863 in the file namespace and delete the file on the target page. It will still
16864 however delete the redirect page.
16865 * (bug 22683) {{msgnw:}} and other uses of PPFrame::RECOVER_ORIG will correctly
16866 recover the original code of extension tags.
16867 * (bug 65757) MSSQL: Update script drops unnamed constraints to be prepared
16868 for future updates. Because it's doing so heuristically, it may fail or drop
16870 * (bug 67870) wfShellExec() cuts off stdout at multiples of 8192 bytes.
16871 * $wgRunJobsAsync now works with private wikis (e.g. read requires login).
16872 * (bugs 57238, 65206) Blank pages can now be directly created.
16873 * (bug 69789) Title::getContentModel() now loads from the database when
16874 necessary instead of incorrectly returning the default content model.
16875 * (bug 69249) wfBaseConvert() now works around PHP Bug #50175 when using GMP.
16876 * (bug 57909) URLs in the externallinks table will no longer have certain
16877 characters decoded in the query string.
16878 * (bug 67368) LESS mixins like .background-image() correctly flip image
16879 references for RTL stylesheets now.
16881 === Action API changes in 1.24 ===
16882 * action=parse API now supports prop=modules, which provides the list of
16883 ResourceLoader modules that should be used to enhance the parsed content.
16884 * action=query&meta=siteinfo&siprop=interwikimap returns a new "protorel"
16885 field which is true if protocol-relative urls can be used to access
16886 a particular interwiki map entry.
16887 * list=logevents now provides logpage, which is the page ID from the
16888 logging table, if ids are requested and the user has the permissions.
16889 * action=edit now requires that appendtext, prependtext, or section=new be used
16890 when using the 'redirect' parameter, to prevent clients accidentally
16891 overwriting the target page with the content of the redirect.
16892 * list=logevents will now return an error if both letitle and leprefix are
16894 * list=logevents has a new parameter, lenamespace, to allow filtering by
16896 * action=expandtemplates has a new parameter, prop, and a new output format.
16897 The old format is still used if prop isn't provided, but this is deprecated.
16898 * meta=userinfo can now return the count of unread pages on the watchlist.
16899 * list=watchlist can now filter by unread status.
16900 * The deprecated action=parse&prop=languageshtml has been removed.
16901 * (bug 48071) action=setnotificationtimestamp no longer throws PHP or database
16902 errors when no pages are given.
16903 * (bug 60734) Actions that use ApiPageSet (e.g. purge, watch,
16904 setnotificationtimestamp) will now include continuation information when
16906 * Removed 'props' and 'errors' from action=paraminfo, as they have extremely
16907 limited use and are generally inaccurate, unmaintained, and impossible to
16909 * Formats dbg, dump, txt, wddx, and yaml are now deprecated.
16910 * action=paraminfo now indicates when a parameter is specifying a submodule.
16911 * The iwurl parameter to prop=iwlinks is deprecated in favor of iwprop=url, for
16912 parallelism with prop=langlinks.
16913 * All tokens should be fetched from action=query&meta=tokens; all other methods
16914 of fetching tokens are deprecated. The value needed for meta=tokens's 'type'
16915 parameter for each module is documented in the action=help output and is
16916 returned from action=paraminfo.
16917 * New action ClearHasMsg that can be used to clear HasMsg flag.
16918 * The cmstartsortkey and cmendsortkey parameters to list=categorymembers are
16919 deprecated in favor of cmstarthexsortkey and cmendhexsortkey.
16920 * (bug 63326) Add blockedtimestamp field to output of blockinfo property for
16921 the list=allusers and list=users modules.
16922 * prop=imageinfo no longer requires iiurlwidth to be set when using iiurlparam.
16923 * Added prop=linkshere, prop=fileusage, and prop=transcludedin, which are
16924 roughly equivalent to list=backlinks, list=imageusage, and list=embeddedin
16925 but can work on a list of titles (including titles from a generator).
16926 * prop=redirects can now filter returned redirects by namespace.
16928 === Action API internal changes in 1.24 ===
16929 * Methods for handling continuation are added to ApiResult, so actions other
16930 than query that use generators can easily support continuation.
16931 * $wgAPIModules (and the related $wgAPIFormatModules, $wgAPIMetaModules,
16932 $wgAPIPropModules, and $wgAPIListModules settings) now allow API modules
16933 to be specified using a "module spec" array instead of a plain class name.
16934 A "module spec" is an associative array containing at least the 'class' key
16935 for the module's class, and optionally a 'factory' key for the factory
16936 function to use for the module. This is intended for extensions that want
16937 control over the instantiation of their API modules, to allow for proper
16938 dependency injection.
16939 * A new param type 'submodule' is available. Parameters of this type will take
16940 the list of valid values from the module's ApiModuleManager for the group
16941 corresponding to the parameter name.
16942 * The 'APIGetPossibleErrors' and 'APIGetResultProperties' hooks are no longer
16944 * API token handling has been rewritten. Any API module using tokens will need
16946 * ApiBase::needsToken now returns a token type instead of boolean true when a
16947 token is needed. Returning true will throw an exception. See documentation
16948 of that method for details.
16949 * Information for the 'token' parameter is automatically set by ApiBase
16950 getFinalParams and getFinalParamDescription.
16951 * ApiBase::getTokenSalt has been removed.
16952 * The hooks APIQueryInfoTokens, APIQueryRevisionsTokens,
16953 APIQueryRecentChangesTokens, APIQueryUsersTokens, and
16954 ApiTokensGetTokenTypes are deprecated, but are still called to support
16955 backwards-compatible token access.
16956 * ApiBase::validateLimit and ApiBase::validateTimestamp are now protected.
16957 * ApiQueryRedirects was removed; prop=redirects is now implemented by
16958 ApiQueryBacklinksProp along with the newly-added prop modules.
16959 * The following methods have been deprecated and may be removed in a future
16961 * ApiBase::getResultProperties
16962 * ApiBase::getFinalResultProperties
16963 * ApiBase::addTokenProperties
16964 * ApiBase::getRequireOnlyOneParameterErrorMessages
16965 * ApiBase::getRequireMaxOneParameterErrorMessages
16966 * ApiBase::getRequireAtLeastOneParameterErrorMessages
16967 * ApiBase::getTitleOrPageIdErrorMessage
16968 * ApiBase::getPossibleErrors
16969 * ApiBase::getFinalPossibleErrors
16970 * ApiBase::parseErrors
16971 * ApiQuery::setGeneratorContinue
16972 * ApiQueryBase::checkRowCount
16973 * ApiQueryBase::titleToKey
16974 * ApiQueryBase::keyToTitle
16975 * ApiQueryBase::keyPartToTitle
16976 * ApiQueryInfo::getTokenFunctions
16977 * ApiQueryInfo::resetTokenCache
16978 * ApiQueryInfo::getEditToken
16979 * ApiQueryInfo::getDeleteToken
16980 * ApiQueryInfo::getProtectToken
16981 * ApiQueryInfo::getMoveToken
16982 * ApiQueryInfo::getBlockToken
16983 * ApiQueryInfo::getUnblockToken
16984 * ApiQueryInfo::getEmailToken
16985 * ApiQueryInfo::getImportToken
16986 * ApiQueryInfo::getWatchToken
16987 * ApiQueryInfo::getOptionsToken
16988 * ApiQueryRecentChanges::getTokenFunctions
16989 * ApiQueryRecentChanges::getPatrolToken
16990 * ApiQueryRevisions::getTokenFunctions
16991 * ApiQueryRevisions::getRollbackToken
16992 * ApiQueryUsers::getTokenFunctions
16993 * ApiQueryUsers::getUserrightsToken
16994 * The following classes have been deprecated and may be removed in a future
17002 * The following class constants have been deprecated and may be removed in a
17004 * ApiBase::PROP_ROOT
17005 * ApiBase::PROP_LIST
17006 * ApiBase::PROP_TYPE
17007 * ApiBase::PROP_NULLABLE
17009 === Languages updated in 1.24 ===
17011 MediaWiki supports over 350 languages. Many localisations are updated
17012 regularly. Below only new and removed languages are listed, as well as
17013 changes to languages because of Bugzilla reports.
17015 === Other changes in 1.24 ===
17016 * The deprecated jquery.delayedBind ResourceLoader module was removed.
17017 * The deprecated function mw.util.toggleToc was removed.
17018 * The Special:Search hooks SpecialSearchGo and SpecialSearchResultsAppend
17019 were removed as they were unused.
17020 * (bug 65477) User::pingLimiter() now has an additional profile point varying
17021 by action being used.
17022 * mediawiki.util.$content no longer supports old versions of the Vector,
17023 Monobook, Modern and CologneBlue skins that don't yet implement the "mw-body"
17024 and/or "mw-body-primary" class name in their html.
17025 * Added pp_sortkey column to page_props table, so pages can be efficiently
17026 queried and sorted by property value (bug 58032).
17027 See $wgPagePropsHaveSortkey if you want to postpone the schema change.
17028 * BREAKING CHANGE: All four built-in MediaWiki skins (Vector, MonoBook, Modern
17029 and Cologne Blue) were moved out of MediaWiki core to their own respective
17030 repositories. They will be installed with the release tarball, but you must
17031 install them separately if installing MediaWiki from source code. A warning
17032 message displayed until you do it should guide you through the process. See
17033 also <https://www.mediawiki.org/wiki/Manual:Skin_configuration>.
17034 * BREAKING CHANGE: Skins built for MediaWiki 1.15 and earlier that do not use
17035 the "headelement" template key are no longer supported. Setting
17036 $useHeadElement = false; is no longer supported and will not cause old keys
17037 like "headlinks", "skinnameclass", etc. to be defined.
17038 * BREAKING CHANGE: The files commonElements.css, commonContent.css and
17039 commonInterface.css (in skins/common/) have been removed. Skins may no longer
17040 rely on their presence and include them in their style modules. ResourceLoader
17041 modules introduced in MediaWiki 1.23 should be loaded instead:
17042 - skins/common/commonElements.css → 'mediawiki.skinning.elements' module
17043 - skins/common/commonContent.css → 'mediawiki.skinning.content' module
17044 - skins/common/commonInterface.css → 'mediawiki.skinning.interface' module
17045 * The deprecated 'SpecialVersionExtensionTypes' hook was removed.
17046 * (bug 63891) Add 'X-Robots-Tag: noindex' header in action=render pages.
17047 * SpecialPage no longer supports the syntax for invoking wfSpecial*() functions.
17048 Special pages should subclass SpecialPage and implement the execute() method.
17049 * (bug 63755) The deprecated constants RC_MOVE and RC_MOVE_OVER_REDIRECT were
17051 * Special:MostLinkedTemplates has been renamed to Special:MostTranscludedPages.
17052 * The skin autodiscovery mechanism has been deprecated and will be removed in
17053 MediaWiki 1.25. See https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery
17054 for migration guide for creators and users of custom skins that relied on it.
17055 * ResourceLoaderFileModule#getAllStyleFiles now returns all style files and all
17056 skin style files used by the module.
17057 * Removed getLang() from IContextSource and subclasses. (deprecated since 1.19)
17058 * Removed setLang() from subclasses of IContextSource. (deprecated since 1.19)
17059 * Removed WebRequest::escapeAppendQuery(). (deprecated since 1.20)
17060 * Removed info(), purge(), revert() and rollback() from the Article class; they
17061 have since become subclasses of the Action class. (deprecated since 1.19)
17062 * SearchEngineReplacePrefixesComplete hook was removed.
17063 * The "jquery.json" module has been deprecated. Use the "json" module instead.
17064 * Removed HTMLForm::addJS(). (deprecated since 1.18)
17065 * Removed LogEventsList::showHeader(). (deprecated since 1.19)
17066 * Removed ImageGalleryBase::useSkin(). (deprecated since 1.18)
17067 * Removed DatabaseMysqlBase::getLagFromProcesslist(). (deprecated since 1.19)
17068 * Removed LoadBalancer::closeConnecton(). (deprecated since 1.18)
17069 * Removed ApiBase::createContext(). (deprecated since 1.19)
17070 * BREAKING CHANGE: The undocumented Special{$this->getName()}BeforeFormDisplay
17071 set of hooks has been removed and replaced by a single new hook
17072 SpecialPageBeforeFormDisplay.
17073 * (bug 65781) Removed block warning on included {{Special:Contributions}}
17074 * Removed Skin::makeGlobalVariablesScript(). (deprecated since 1.19)
17075 * Removed MWNamespace::isMain(). (deprecated since 1.19)
17076 * Removed Preferences::loadOldSearchNs(). (deprecated since 1.19)
17077 * Removed OutputPage::getStatusMessage(). (deprecated since 1.18)
17078 * Removed OutputPage::isUserJsAllowed(). (deprecated since 1.18)
17079 * Removed Title::updateTitleProtection(). (deprecated since 1.19)
17080 * Removed ParserOptions::setSkin(). (deprecated since 1.19)
17081 * Removed Title::escapeCanonicalURL(). (deprecated since 1.19)
17082 * Removed Title::escapeLocalURL(). (deprecated since 1.19)
17083 * Removed Title::escapeFullURL(). (deprecated since 1.19)
17084 * Removed User::isValidEmailAddr(). (deprecated since 1.18)
17085 * Removed Title::getEscapedText(). (deprecated since 1.19)
17086 * Removed Language::getFallbackLanguageCode(). (deprecated since 1.19)
17087 * Removed WikiPage::isBigDeletion(). (deprecated since 1.19)
17088 * Removed MWInit class which contained functions related to a now discontinued
17089 PHP compiler called hphpc. (deprecated since 1.22)
17090 * ApiResult::enableSizeCheck() and disableSizeCheck() are now obsolete.
17091 * Removed ResourceLoaderGetStartupModules hook. (deprecated since 1.23)
17092 * Removed getFormFields(), onSubmit() and onSuccess() from FormlessAction, as
17093 these were meant specifically for FormAction instead.
17094 * Removed Action::execute().
17095 * Removed AjaxAddScript which has been obsolete since ResourceLoader and
17096 is unused by any modern extension.
17097 * Removed maintenance/nextJobDB.php; no longer in use.
17098 * Removed global function wfViewPrevNext(). (deprecated since 1.19)
17099 * Removed global function xmlsafe() from Export.php. (moved to OAIRepo
17101 * Removed Title::userCanRead(). (deprecated since 1.19)
17102 * Removed maintenance script importTextFile.php. Use edit.php script instead.
17103 * A _from_namespace field has been added to the templatelinks, pagelinks,
17104 and filelinks tables. Run update.php to apply this change to the schema.
17105 * Removed File::sha1Base36(). (deprecated since 1.19)
17106 * Removed File::getPropsFromPath(). (deprecated since 1.19)
17107 * Removed functions blockedPage(), noCreatePermission(), readOnlyPage() and
17108 userNotLoggedInPage() from EditPage.php. (deprecated since 1.19)
17109 * Removed functions getContent(), getPreloadedText(), mergeChangesInto() and
17110 setPreloadedText() from EditPage.php. (deprecated since 1.21)
17111 * Removed global functions wfArrayLookup(), wfArrayMerge(),
17112 wfDebugDieBacktrace() and wfTime(). (deprecated since 1.22)
17113 * Browser support for Internet Explorer 6 and 7 lowered from Grade A to Grade C,
17114 meaning that JavaScript is no longer executed in these browser versions.
17115 * Browser support for Opera 11 lowered from Grade A to Grade C.
17116 * Removed IEFixes module which existed purely to provide support for MSIE
17117 versions below 7 (conditionally loaded only for those browsers).
17118 * Deprecated SpecialPageFactory::getList() in favor of
17119 SpecialPageFactory::getNames()
17120 * Action::checkCanExecute() no longer has a return value.
17121 * Removed cleanupForIRC(), loadFromCurRow(), newFromCurRow(), notifyRC2UDP()
17122 and sendToUDP() from RecentChange.php. (deprecated since 1.22)
17123 * Removed EnhancedChangesList::arrow(), sideArrow(), downArrow(), spacerArrow().
17124 * Removed Xml::namespaceSelector(). (deprecated since 1.19)
17125 * Removed WikiPage::estimateRevisionCount(). (deprecated since 1.19)
17126 * MYSQL: Enum item added to "major MIME type" columns.
17127 Running update.php on MySQL < v5.1 may result in heavy processing.
17128 * RSS and Atom feeds generated by MediaWiki no longer include a fallback
17129 stylesheet. It was ignored by most browsers these days anyway.
17130 * SpecialSearchNoResults hook has been removed. SpecialSearchResults is now
17131 called unconditionally.
17132 * TablePager::getBody() is now 'final' and can't be overridden in subclasses.
17133 * TablePager::getBody() is deprecated, use getBodyOutput() or getFullOutput().
17134 * Added $outputPage parameter to the SkinTemplateGetLanguageLink hook.
17135 * log_page for move log entries store the original page ID, rather than that
17136 of the new redirect page. This is not retroactive.
17137 * LCStoreAccel was removed. $wgLocalisationCacheConf can no longer be set to
17138 use this store class.
17139 * Html::infoBox() no longer accepts paths relative to skins/common/images/.
17140 * Deprecated defunct Skin::getCommonStylePath().
17141 * Some extensions had their ResourceLoader modules depend on the "mediawiki"
17142 and "jquery" modules. In the past, this behavior was undefined, now it will
17144 * Removed BagOStuff::replace(). (deprecated since 1.23)
17145 * In Linker.php, link(), linkText() and makeBrokenImageLinkObj() now display
17146 warnings if their first parameter is not a Title object. Also makeImageLink()
17147 now requires a Parser as its first parameter.
17148 * (bug 67368) LESS functions embed() and embeddable(), added in MediaWiki 1.23
17149 and broken by design, have been removed. Use appropriate LESS mixins instead.
17150 * Removed cssjanus.py from maintenance directory as it was unused.
17151 * Removed maintenance/purgeOldText.inc and the PurgeRedundantText() function
17152 it contained (superseded by Maintenance::purgeRedundantText() in 1.16).
17153 The purgeOldText.php maintenance script has been retained.
17154 * PHPUnit tests can be found by directory discovery, by adding the directory
17155 path from your UnitTestsList callback. Older versions of MediaWiki core will
17156 barf at this usage.
17158 ==== Renamed classes ====
17159 * CLDRPluralRuleConverter_Expression to CLDRPluralRuleConverterExpression
17160 * CLDRPluralRuleConverter_Fragment to CLDRPluralRuleConverterFragment
17161 * CLDRPluralRuleConverter_Operator to CLDRPluralRuleConverterOperator
17162 * CLDRPluralRuleEvaluator_Range to CLDRPluralRuleEvaluatorRange
17163 * CSSJanus_Tokenizer to CSSJanusTokenizer
17164 * MediaWiki_I18N to MediaWikiI18N
17165 * Parser_DiffTest to ParserDiffTest
17166 * RevDel_ArchiveItem to RevDelArchiveItem
17167 * RevDel_ArchiveList to RevDelArchiveList
17168 * RevDel_ArchivedFileItem to RevDelArchivedFileItem
17169 * RevDel_ArchivedFileList to RevDelArchivedFileList
17170 * RevDel_ArchivedRevisionItem to RevDelArchivedRevisionItem
17171 * RevDel_FileItem to RevDelFileItem
17172 * RevDel_FileList to RevDelFileList
17173 * RevDel_Item to RevDelItem
17174 * RevDel_List to RevDelList
17175 * RevDel_LogItem to RevDelLogItem
17176 * RevDel_LogList to RevDelLogList
17177 * RevDel_RevisionItem to RevDelRevisionItem
17178 * RevDel_RevisionList to RevDelRevisionList
17179 * WebInstaller_Complete to WebInstallerComplete
17180 * WebInstaller_Copying to WebInstallerCopying
17181 * WebInstaller_DBConnect to WebInstallerDBConnect
17182 * WebInstaller_DBSettings to WebInstallerDBSettings
17183 * WebInstaller_Document to WebInstallerDocument
17184 * WebInstaller_ExistingWiki to WebInstallerExistingWiki
17185 * WebInstaller_Install to WebInstallerInstall
17186 * WebInstaller_Language to WebInstallerLanguage
17187 * WebInstaller_Name to WebInstallerName
17188 * WebInstaller_Options to WebInstallerOptions
17189 * WebInstaller_Readme to WebInstallerReadme
17190 * WebInstaller_ReleaseNotes to WebInstallerReleaseNotes
17191 * WebInstaller_Restart to WebInstallerRestart
17192 * WebInstaller_Upgrade to WebInstallerUpgrade
17193 * WebInstaller_UpgradeDoc to WebInstallerUpgradeDoc
17194 * WebInstaller_Welcome to WebInstallerWelcome
17196 ==== Removed classes ====
17197 * IPBlockForm - Use SpecialBlock directly
17198 * WatchlistEditor - Use SpecialEditWatchlist directly
17199 * FormatExif - Use FormatMetadata directly
17200 * RevertFileAction - Use RevertAction directly
17201 * HistoryPage - Use HistoryAction directly
17202 * RawPage - Use RawAction directly
17203 * StubContLang - Use Language::factory() instead
17204 * XMLReader2 - Use XMLReader directly
17205 * ResourceLoaderLESSFunctions - No longer in use, not intended for public usage
17207 ==== Removed files ====
17208 The skins/common/ directory, previously containing some assets intended to be
17209 used by skins and a number of legacy styles and scripts, has been removed. Its
17210 contents have been deleted or relocated into the resources/ directory. Full list
17211 of files that are no longer available follows.
17213 * skins/common/ajax.js
17214 * skins/common/commonContent.css
17215 * skins/common/commonElements.css
17216 * skins/common/commonInterface.css
17217 * skins/common/commonPrint.css
17218 * skins/common/config-cc.css
17219 * skins/common/config.css
17220 * skins/common/config.js
17221 * skins/common/feed.css
17222 * skins/common/IEFixes.js
17223 * skins/common/oldshared.css
17224 * skins/common/protect.js
17225 * skins/common/shared.css
17226 * skins/common/upload.js
17227 * skins/common/wikibits.js
17228 * skins/common/images/add.png
17229 * skins/common/images/ajax-loader.gif
17230 * skins/common/images/arrow_disabled_first_25.png
17231 * skins/common/images/arrow_disabled_last_25.png
17232 * skins/common/images/arrow_disabled_left_25.png
17233 * skins/common/images/arrow_disabled_right_25.png
17234 * skins/common/images/arrow_first_25.png
17235 * skins/common/images/arrow_last_25.png
17236 * skins/common/images/arrow_left_25.png
17237 * skins/common/images/arrow_right_25.png
17238 * skins/common/images/Arr_.png
17239 * skins/common/images/Arr_d.png
17240 * skins/common/images/Arr_l.png
17241 * skins/common/images/Arr_r.png
17242 * skins/common/images/Arr_u.png
17243 * skins/common/images/bullet.gif
17244 * skins/common/images/button_bold.png
17245 * skins/common/images/button_extlink.png
17246 * skins/common/images/button_headline.png
17247 * skins/common/images/button_hr.png
17248 * skins/common/images/button_image.png
17249 * skins/common/images/button_italic.png
17250 * skins/common/images/button_link.png
17251 * skins/common/images/button_media.png
17252 * skins/common/images/button_nowiki.png
17253 * skins/common/images/button_sig.png
17254 * skins/common/images/button_template.png
17255 * skins/common/images/cc-0.png
17256 * skins/common/images/cc-by-nc-sa.png
17257 * skins/common/images/cc-by-sa.png
17258 * skins/common/images/cc-by.png
17259 * skins/common/images/Checker-16x16.png
17260 * skins/common/images/closewindow.png
17261 * skins/common/images/closewindow19x19.png
17262 * skins/common/images/critical-32.png
17263 * skins/common/images/diffunderline.gif
17264 * skins/common/images/download-32.png
17265 * skins/common/images/feed-icon.png
17266 * skins/common/images/feed-icon.svg
17267 * skins/common/images/gnu-fdl.png
17268 * skins/common/images/help-question-hover.gif
17269 * skins/common/images/help-question.gif
17270 * skins/common/images/info-32.png
17271 * skins/common/images/link_icon.gif
17272 * skins/common/images/magnify-clip-rtl.png
17273 * skins/common/images/magnify-clip.png
17274 * skins/common/images/mediawiki.png
17275 * skins/common/images/nextredirectltr.png
17276 * skins/common/images/nextredirectrtl.png
17277 * skins/common/images/poweredby_mediawiki_88x31.png
17278 * skins/common/images/public-domain.png
17279 * skins/common/images/question-small.png
17280 * skins/common/images/question.svg
17281 * skins/common/images/redirectltr.png
17282 * skins/common/images/redirectrtl.png
17283 * skins/common/images/remove.png
17284 * skins/common/images/spinner.gif
17285 * skins/common/images/tick-32.png
17286 * skins/common/images/tipsy-arrow.gif
17287 * skins/common/images/tooltip_icon.png
17288 * skins/common/images/warning-32.png
17289 * skins/common/images/wiki.png
17290 * skins/common/images/Zoom_sans.gif
17291 * skins/common/images/ar/button_bold.png
17292 * skins/common/images/ar/button_headline.png
17293 * skins/common/images/ar/button_italic.png
17294 * skins/common/images/ar/button_link.png
17295 * skins/common/images/ar/button_nowiki.png
17296 * skins/common/images/be-tarask/button_bold.png
17297 * skins/common/images/be-tarask/button_italic.png
17298 * skins/common/images/be-tarask/button_link.png
17299 * skins/common/images/cyrl/button_bold.png
17300 * skins/common/images/cyrl/button_italic.png
17301 * skins/common/images/cyrl/button_link.png
17302 * skins/common/images/de/button_bold.png
17303 * skins/common/images/de/button_italic.png
17304 * skins/common/images/fa/button_bold.png
17305 * skins/common/images/fa/button_headline.png
17306 * skins/common/images/fa/button_italic.png
17307 * skins/common/images/fa/button_link.png
17308 * skins/common/images/fa/button_nowiki.png
17309 * skins/common/images/icons/fileicon-c.png
17310 * skins/common/images/icons/fileicon-cpp.png
17311 * skins/common/images/icons/fileicon-deb.png
17312 * skins/common/images/icons/fileicon-djvu.png
17313 * skins/common/images/icons/fileicon-djvu.xcf
17314 * skins/common/images/icons/fileicon-dvi.png
17315 * skins/common/images/icons/fileicon-exe.png
17316 * skins/common/images/icons/fileicon-h.png
17317 * skins/common/images/icons/fileicon-html.png
17318 * skins/common/images/icons/fileicon-iso.png
17319 * skins/common/images/icons/fileicon-java.png
17320 * skins/common/images/icons/fileicon-mid.png
17321 * skins/common/images/icons/fileicon-mov.png
17322 * skins/common/images/icons/fileicon-o.png
17323 * skins/common/images/icons/fileicon-ogg.png
17324 * skins/common/images/icons/fileicon-ogg.xcf
17325 * skins/common/images/icons/fileicon-pdf.png
17326 * skins/common/images/icons/fileicon-ps.png
17327 * skins/common/images/icons/fileicon-psd.png
17328 * skins/common/images/icons/fileicon-rm.png
17329 * skins/common/images/icons/fileicon-rpm.png
17330 * skins/common/images/icons/fileicon-svg.png
17331 * skins/common/images/icons/fileicon-tar.png
17332 * skins/common/images/icons/fileicon-tex.png
17333 * skins/common/images/icons/fileicon-ttf.png
17334 * skins/common/images/icons/fileicon-txt.png
17335 * skins/common/images/icons/fileicon.png
17336 * skins/common/images/ksh/button_S_italic.png
17340 == MediaWiki 1.23.17 ==
17342 === Changes since 1.23.16 === <!--T:69-->
17343 * Fix syntax errors introduced in 1.23.16 when running PHP 5.3.
17345 == MediaWiki 1.23.16 ==
17346 This is a security and maintenance release of the MediaWiki 1.23 branch.
17348 === Changes since 1.23.15 ===
17349 * (T68404) CSS3 attr() function with url type is no longer allowed
17351 * (T156184) $wgRawHtml will no longer apply to internationalization messages.
17352 * Submitting the lgtoken and lgpassword parameters in the query string to
17353 action=login is now deprecated and outputs a warning. They should be submitted
17354 in the POST body instead.
17355 * (T109140) (T122209) SECURITY: Special:UserLogin and Special:Search allow
17356 redirect to interwiki links.
17357 * (T144845) SECURITY: XSS in SearchHighlighter::highlightText() when
17358 $wgAdvancedSearchHighlighting is true.
17359 * (T125177) SECURITY: API parameters may now be marked as "sensitive" to keep
17360 their values out of the logs.
17361 * (T150044) SECURITY: "Mark all pages visited" on the watchlist now requires a
17363 * (T156184) SECURITY: Escape content model/format url parameter in message.
17364 * (T151735) SECURITY: SVG filter evasion using default attribute values in DTD
17366 * (T48143) SECURITY: Spam blacklist ineffective on encoded URLs inside file
17367 inclusion syntax's link parameter.
17368 * (T108138) SECURITY: Sysops can undelete pages, although the page is protected
17371 == MediaWiki 1.23.15 ==
17373 This is a maintenance release of the MediaWiki 1.23 branch.
17375 === Changes since 1.23.14 ===
17376 * BREAKING CHANGE: $wgHTTPProxy is now *required* for all external requests
17377 made by MediaWiki via a proxy. Relying on the http_proxy environment
17378 variable is no longer supported.
17379 * (T139565) SECURITY: API: Generate head items in the context of the given title
17380 * (T137264) SECURITY: XSS in unclosed internal links
17381 * (T133147) SECURITY: Escape '<' and ']]>' in inline <style> blocks
17382 * (T133147) SECURITY: Require login to preview user CSS pages
17383 * (T132926) SECURITY: Do not allow undeleting a revision deleted file if it is
17385 * (T129738) SECURITY: Make $wgBlockDisablesLogin also restrict logged in
17387 * (T129738) SECURITY: Make blocks log users out if $wgBlockDisablesLogin is true
17388 * (T115333) SECURITY: Check read permission when loading page content in
17390 * Remove support for $wgWellFormedXml = false, all output is now well formed
17392 == MediaWiki 1.23.13 ==
17394 This is a maintenance release of the MediaWiki 1.23 branch.
17396 === Changes since 1.23.12 ===
17397 * (T121892) Fix fatal errors on some Special pages, introduced in 1.23.12.
17399 == MediaWiki 1.23.12 ==
17401 This is a security and maintenance release of the MediaWiki 1.23 branch.
17403 === Changes since 1.23.11 ===
17404 * (T117899) SECURITY: $wgArticlePath can no longer be set to relative paths
17405 that do not begin with a slash. This enabled trivial XSS attacks.
17406 Configuration values such as "http://my.wiki.com/wiki/$1" are fine, as are
17407 "/wiki/$1". A value such as "$1" or "wiki/$1" is not and will now throw an
17409 * (T119309) SECURITY: Use hash_compare() for edit token comparison
17410 * (T118032) SECURITY: Don't allow cURL to interpret POST parameters starting
17411 with '@' as file uploads
17412 * (T115522) SECURITY: Passwords generated by User::randomPassword() can no
17413 longer be shorter than $wgMinimalPasswordLength
17414 * (T97897) SECURITY: Improve IP parsing and trimming. Previous behavior could
17415 result in improper blocks being issued
17416 * (T109724) SECURITY: Special:MyPage, Special:MyTalk, Special:MyContributions
17417 and related pages no longer use HTTP redirects and are now redirected by
17420 == MediaWiki 1.23.11 ==
17422 This is a security and maintenance release of the MediaWiki 1.23 branch.
17424 === Changes since 1.23.10 ===
17426 * (T91850) SECURITY: Add throttle check in ApiUpload and SpecialUpload
17427 * (T91203, T91205) SECURITY: API: Improve validation in chunked uploading
17428 * (T108616) SECURITY: Avoid exposure of local path in PNG thumbnails
17430 == MediaWiki 1.23.10 ==
17432 This is a security and maintenance release of the MediaWiki 1.23 branch.
17434 === Changes since 1.23.9 ===
17436 * (T94116) SECURITY: Compare API watchlist token in constant time
17437 * (T97391) SECURITY: Escape error message strings in thumb.php
17438 * (T106893) SECURITY: Don't leak autoblocked IP addresses on
17439 Special:DeletedContributions
17440 * (bug 67644) Make AutoLoaderTest handle namespaces
17441 * (T91653) Minimal PSR-3 debug logger to support backports from 1.25+.
17442 * (T102562) Fix InstantCommons parameters to handle the new HTTPS-only
17443 policy of Wikimedia Commons.
17445 == MediaWiki 1.23.9 ==
17447 This is a security and maintenance release of the MediaWiki 1.23 branch.
17449 === Changes since 1.23.8 ===
17451 * (T85848, T71210) SECURITY: Don't parse XMP blocks that contain XML entities,
17452 to prevent various DoS attacks.
17453 * (T85848) SECURITY: Don't allow directly calling Xml::isWellFormed, to reduce
17455 * (T88310) SECURITY: Always expand xml entities when checking SVG's.
17456 * (T73394) SECURITY: Escape > in Html::expandAttributes to prevent XSS.
17457 * (T85855) SECURITY: Don't execute another user's CSS or JS on preview.
17458 * (T85349, T85850, T86711) SECURITY: Multiple issues fixed in SVG filtering to
17459 prevent XSS and protect viewer's privacy.
17460 * (bug T68650) Fix indexing of moved pages with PostgreSQL. Requires running
17462 * (bug T70087) Fix Special:ActiveUsers page for installations using
17465 == MediaWiki 1.23.8 ==
17467 This is a security and maintenance release of the MediaWiki 1.23 branch.
17469 === Changes since 1.23.7 ===
17471 * (bug T76686) [SECURITY] thumb.php outputs wikitext message as raw HTML, which
17472 could lead to xss. Permission to edit MediaWiki namespace is required to
17474 * (bug T77028) [SECURITY] Malicious site can bypass CORS restrictions in
17475 $wgCrossSiteAJAXdomains in API calls if it only included an allowed domain as
17477 * (bug T74222) The original patch for T74222 was reverted as unnecessary.
17479 == MediaWiki 1.23.7 ==
17481 This is a security and maintenance release of the MediaWiki 1.23 branch.
17483 === Changes since 1.23.6 ===
17485 * (bugs 66776, 71478) SECURITY: User PleaseStand reported a way to inject code
17486 into API clients that used format=php to process pages that underwent flash
17487 policy mangling. This was fixed along with improving how the mangling was done
17488 for format=json, and allowing sites to disable the mangling using
17489 $wgMangleFlashPolicy.
17490 * (bug 70901) SECURITY: User Jackmcbarn reported that the ability to update
17491 the content model for a page could allow an unprivileged attacker to edit
17492 another user's common.js under certain circumstances. The user right
17493 "editcontentmodel" was added, and is needed to change a revision's content
17495 * (bug 71111) SECURITY: User PleaseStand reported that on wikis that allow raw
17496 HTML, it is not safe to preview wikitext coming from an untrusted source such
17497 as a cross-site request. Thus add an edit token to the form, and when raw HTML
17498 is allowed, ensure the token is provided before showing the preview. This
17499 check is not performed on wikis that both allow raw HTML and anonymous
17500 editing, since there are easier ways to exploit that scenario.
17501 * (bug 72222) SECURITY: Do not show log action when the entry is revdeleted with
17502 DELETED_ACTION. NOTICE: this may be reverted in a future release pending a
17503 public RFC about the desired functionality. This issue was reported by user
17505 * (bug 71621) Make allowing site-wide styles on restricted special pages a
17507 * (bug 42723) Added updated version history from 1.19.2 to 1.22.13
17508 * $wgMangleFlashPolicy was added to make MediaWiki's mangling of anything that
17509 might be a flash policy directive configurable.
17511 == MediaWiki 1.23.6 ==
17513 This is a maintenance release of the MediaWiki 1.23 branch.
17515 === Changes since 1.23.5 ===
17516 * (Bug 72274) Job queue not running (HTTP 411) due to missing
17517 Content-Length: header
17518 * (Bug 67440) Allow classes to be registered properly from installer
17520 == MediaWiki 1.23.5 ==
17522 This is a security release of the MediaWiki 1.23 branch.
17524 === Changes since 1.23.4 ===
17525 * (bug 70672) SECURITY: OutputPage: Remove separation of css and js module
17528 == MediaWiki 1.23.4 ==
17530 This is a security and maintenance release of the MediaWiki 1.23 branch.
17532 === Changes since 1.23.3 ===
17534 * (bug 69008) SECURITY: Enhance CSS filtering in SVG files. Filter <style>
17535 elements; normalize style elements and attributes before filtering; add
17536 checks for attributes that contain css; add unit tests for html5sec and
17538 * (bug 65998) Make MySQLi work with non-standard socket.
17539 * (bug 66986) GlobalVarConfig shouldn't throw exceptions for null-valued config
17542 == MediaWiki 1.23.3 ==
17544 This is a maintenance release of the MediaWiki 1.23 branch.
17546 === Changes since 1.23.2 ===
17548 * (bug 68501) Correctly handle incorrect namespace in cleanupTitles.php.
17549 * (bug 64970) Fix support for blobs on DatabaseOracle::update.
17550 * (bug 66574) Display MediaWiki:Loginprompt on the login page.
17551 * (bug 67870) wfShellExec() cuts off stdout at multiples of 8192 bytes.
17552 * (bug 60629) Handle invalid language code gracefully in
17553 Language::fetchLanguageNames.
17554 * (bug 62017) Restore the number of rows shown on Special:Watchlist.
17555 * Check for boolean false result from database query in SqlBagOStuff.
17557 == MediaWiki 1.23.2 ==
17559 This is a security and maintenance release of the MediaWiki 1.23 branch.
17561 === Changes since 1.23.1 ===
17563 * (bug 68187) SECURITY: Prepend jsonp callback with comment.
17564 * (bug 66608) SECURITY: Fix for XSS issue in bug 66608: Generate the URL used
17565 for loading a new page in Javascript,instead of relying on the URL in the link
17566 that has been clicked.
17567 * (bug 65778) SECURITY: Copy prevent-clickjacking between OutputPage and
17569 * (bug 68313) Preferences: Turn stubthreshold back into a combo box.
17570 * (bug 65214) Fix initSiteStats.php maintenance script.
17571 * (bug 67594) Special:ActiveUsers: Fix to work with PostgreSQL.
17573 == MediaWiki 1.23.1 ==
17575 This is a security and maintenance release of the MediaWiki 1.23 branch.
17577 === Changes since 1.23.0 ===
17579 * (bug 65839) SECURITY: Prevent external resources in SVG files.
17580 * (bug 67025) Special:Watchlist: Don't try to render empty row.
17581 * (bug 66922) Don't allow some E_NOTICE messages to end up in the
17583 * (bug 66467) FileBackend: Avoid using popen() when "parallelize" is disabled.
17584 * (bug 66428) MimeMagic: Don't seek before BOF. This has weird side effects
17585 like only extracting the tail of the file partially or not at all.
17586 * (bug 66182) Removed -x flag on some php files.
17588 == MediaWiki 1.23.0 ==
17590 === Configuration changes in 1.23 ===
17591 * (bug 13250) Restored method for clearing a watchlist in web UI
17592 so that users with large watchlists don't have to perform
17593 contortions to clear them.
17594 * When $wgJobRunRate is higher than zero, jobs are now executed via an
17595 asynchronous HTTP request to a MediaWiki entry point. This may require
17596 increasing the number of server worker threads. $wgRunJobsAsync has been
17597 added to disable this feature if needed, falling back to executing the job
17598 on the same process but making the execution synchronously.
17599 * $wgDebugLogGroups values may be set to an associative array with a
17600 'destination' key specifying the log destination. The array may also contain
17601 a 'sample' key with a positive integer value N indicating that the log group
17602 should be sampled by dispatching one in every N messages on average. The
17603 sampling is random.
17604 * In addition to the current exception log format, MediaWiki now serializes
17605 exception metadata to JSON and logs it to the 'exception-json' log group.
17606 This makes MediaWiki easier to integrate with log aggregation and analysis
17608 * $wgSquidServersNoPurge now supports the use of Classless Inter-Domain
17609 Routing (CIDR) notation to specify contiguous blocks of IPv4 and/or IPv6
17610 addresses that should be trusted to provide X-Forwarded-For headers.
17611 * Preferences 'watchcreations', 'watchdefault', 'enotifwatchlistpages' ("Add
17612 pages I create and files I upload to my watchlist", "Add pages and files I
17613 edit to my watchlist", "Email me when a page or file on my watchlist is
17614 changed") are now enabled by default. In addition new user accounts' personal
17615 and talk pages are now watched by them by default.
17616 * $wgLBFactoryConf: Class names have had underscores removed. The configuration
17617 should be updated if LBFactory_Simple or LBFactory_Multi is configured.
17618 * $wgPasswordSenderName has been removed and is no longer functional. To set a
17619 custom mailer name, the system message 'emailsender' should be modified
17620 (default: "{{SITENAME}}").
17621 * (bug 63269) Email notifications were not correctly handling the
17622 [[MediaWiki:Helppage]] message being set to a full URL (the default).
17623 If you customized [[MediaWiki:Enotif body]] (the text of email notifications),
17624 you'll need to edit it locally to include the URL via the new variable
17625 $HELPPAGE instead of the parser functions fullurl and canonicalurl; otherwise
17626 you don't have to do anything.
17627 * $wgDBAhandler was removed as the only class using it was also removed
17628 * The 'max threads' setting was removed from $wgDBservers.
17629 * Support for AdminSettings.php has been completely removed. All configuration
17630 belongs in LocalSettings.php.
17631 * $wgSkipSkin, which has been replaceable by $wgSkipSkins since 2005 (r9249), is
17632 now formally deprecated.
17633 * Removed deprecated $wgDisabledActions as it is hardly used anywhere.
17634 * $wgRateLimitLog has been deprecated and replaced by
17635 $wgDebugLogGroup['ratelimit'].
17636 * $wgLocalInterwikis is an array containing multiple local interwiki prefixes
17637 (interwiki prefixes that point back to the current wiki). This effectively
17638 allows more than one value of $wgLocalInterwiki to be specified and
17639 understood by the parser. The value of $wgLocalInterwiki is automatically
17640 prepended to the start of this array.
17641 * $wgQueryPages has been removed. Query Pages should be added to by using the
17643 * $wgHttpOnlyBlacklist has been removed.
17644 * $wgLicenseTerms has been removed as it was unused.
17645 * $wgProfileOnly is now deprecated; set the log file in
17646 $wgDebugLogGroups['profileoutput'] to replace it.
17647 * $wgMaxBacklinksInvalidate was removed; use $wgJobBackoffThrottling instead
17648 * Deprecated ResourceLoaderGetStartupModules hook.
17650 === New features in 1.23 ===
17651 * ResourceLoader can utilize the Web Storage API to cache modules client-side.
17652 Compared to the browser cache, caching in Web Storage allows ResourceLoader
17653 to be more granular about evicting stale modules from the cache while
17654 retaining the ability to retrieve multiple modules in a single HTTP request.
17655 This capability can be enabled by setting $wgResourceLoaderStorageEnabled to
17656 true. This feature is currently considered experimental and should only be
17658 * (bug 6092) Add expensive parser functions {{REVISIONID:}}, {{REVISIONUSER:}}
17659 and {{REVISIONTIMESTAMP:}} (with friends).
17660 * Add "wgRelevantUserName" to mw.config containing the current
17661 Skin::getRelevantUser value.
17662 * (bug 56033) Add content model to the page information.
17663 * Added Article::MissingArticleConditions hook to give extensions a chance to
17664 hide their (unrelated) log entries.
17665 * Added LonelyPagesQuery hook to let extensions modify the query used to
17666 generate Special:LonelyPages.
17667 * Added $wgOpenSearchDefaultLimit defining the default number of entries to show
17668 on action=opensearch API call.
17669 * For namespaces with $wgNamespaceProtection (including the MediaWiki
17670 namespace), the "protect" tab will be shown only if there are restriction
17671 levels available that would restrict editing beyond what
17672 $wgNamespaceProtection already applies. The protection form will offer only
17673 those protection levels.
17674 * Added $wgAPIFormatModules, allowing extensions to add additional output
17675 formatting modules for the API.
17676 * (bug 47812) The MediaWiki:Group-user.{css,js} pages can now be used to add
17677 custom CSS or JavaScript enabled only for registered users.
17678 * (bug 52005) Special pages RecentChanges, RecentChangesLinked and Watchlist
17679 now include a legend describing the symbols used in lists of changes.
17680 * Improved the accessibility of the tabs in Special:Preferences.
17681 * Added ApiBeforeMain hook, roughly equivalent to the BeforeInitialize hook:
17682 it's called after everything is set up but before any major processing
17684 * The jquery.client module now performs a component-wise version comparison in
17685 its #test method when strings are used in the browser map: version '1.10' is
17686 now correctly considered larger than '1.2'. Using numbers in the version map
17688 * All API modules now support an assert parameter, which can either be
17689 'user' or 'bot'. The API will throw an error if the user is not logged
17690 in (user) or does not have the 'bot' userright (bot). Based off of the
17691 AssertEdit extension by Steve Sanbeg.
17692 * [[Special:Diff]] was added, allowing users to create internal links to
17693 revision comparison pages using syntax such as [[Special:Diff/12345]],
17694 [[Special:Diff/12345/prev]] or [[Special:Diff/12345/98765]].
17695 * New user accounts' personal and talk pages are now watched by them by default.
17696 * Added SkinTemplateGetLanguageLink hook to allow changing the html of language
17698 * Added MessageCache::get hook as a new way to customize messages across
17700 * Added jquery.throttle-debounce ResourceLoader module to limit the number of
17701 callbacks for frequently occurring events.
17702 * Special:ProtectedPages shows now a table. The timestamp, the reason and
17703 the protecting user are also shown.
17704 * Added experimental support for using Microsoft SQL Server as the database
17706 ** Added new Microsoft SQL Server-specific configuration variable
17707 $wgDBWindowsAuthentication, which makes the web server authenticate against
17708 the database server using Integrated Windows Authentication instead of
17709 $wgDBuser/$wgDBpassword.
17710 * HTMLForm 'select', 'selectandother', 'selectorother', 'multiselect', and
17711 'radio' fields can now use message keys as labels via the 'options-messages'
17712 parameter, which overrides the 'options' parameter.
17713 * Admins can expire users passwords manually, or on a schedule using the
17714 $wgPasswordExpirationDays configuration setting.
17715 * Add new hook SendWatchlistEmailNotification, this will be used to determine
17716 whether to send a watchlist email notification.
17717 * (bug 42026) Special:Contributions now includes an option to filter page
17718 creations, similar to the topOnly option.
17719 * Add mediawiki.ui.button styling to all pages so wiki content can use styled
17721 * Special:UserLogin/signup now does AJAX checks for invalid and taken usernames,
17722 displaying the error live.
17723 * Added BaseTemplateAfterPortlet hook to allow injecting html after portlets in
17725 * Support has been added for a JSON based localisation file format. The
17726 installer has been updated to use it.
17727 * Changes to content typography (colors, line-height etc.). See
17728 https://www.mediawiki.org/wiki/Typography_refresh for further information.
17729 * The Vector skin's visual treatment of external links has been simplified to a
17730 single icon (from nine). This should not affect local rules unless they were
17731 re-using these icons, which have now been deleted.
17732 * ResourceLoader: mw.loader.using() now implements a Promise interface.
17733 * Add new hook ChangesListInitRows accessed via
17734 ChangesList::initChangesListRows.
17735 If called by the ChangesList consumer this gives extensions a chance to batch
17736 process the result set prior to rendering.
17737 * A PoolCounterRedis class was added which can be make use of in
17738 $wgPoolCounterConf. This requires at least one Redis 2.6+ server.
17739 * $wgProfileToDatabase was removed. Set $wgProfiler to ProfilerSimpleDB
17740 in StartProfiler.php instead of using this.
17741 * (bug 63444) Made it possible to change the indent string (default: 4 spaces)
17742 used by FormatJson::encode().
17744 === Bug fixes in 1.23 ===
17745 * (bug 41759) The "updated since last visit" markers (on history pages, recent
17746 changes and watchlist) and the talk page message indicator are now correctly
17747 updated when the user is viewing old revisions of pages, instead of always
17748 acting as if the latest revision was being viewed.
17749 * (bug 56443) Special:ConfirmEmail no longer shows a "Mail a confirmation code"
17750 when the email address is already confirmed. Also, consistently use
17751 "confirmed", rather than "authenticated", when messaging whether or not the
17752 user has confirmed an email address.
17753 * (bug 19415) action=render no longer shows section edit links. This affects
17754 behavior of several other features where (bogus) section edit links will
17755 disappear, such as file description pages loaded via $wgUseInstantCommons or
17756 pages transcluded cross-wiki via $wgEnableScaryTranscluding.
17757 * (bug 56912) Show correct link color on cached result of Special:DeadendPages.
17758 * Classes TitleListDependency and TitleDependency have been removed, as they
17759 have been found unused in core and extensions for a long time.
17760 * (bug 57098) SpecialPasswordReset now obeys returnto parameter
17761 * (bug 37812) ResourceLoader will notice when a module's definition changes and
17762 recompile it accordingly.
17763 * (bug 57201) SpecialRecentChangesFilters hook is now executed for feeds.
17764 * (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages
17765 to appear blank or with missing text.
17766 * (bug 56931) Updated the plural rules to CLDR 24. They are in new format
17767 which is detailed in UTS 35 Rev 33. The PHP parser and evaluator as well as
17768 the JavaScript evaluator were updated to support the new format. Plural rules
17769 for some languages have changed, most notably Russian. Affected software
17770 messages have been updated and marked for review at translatewiki.net.
17771 * (bug 23542) imagelinks now stores both the redirect and target (as
17772 templatelinks does).
17773 * (bug 58167) The web installer no longer throws an exception when PHP is
17774 compiled without support for MySQL yet with support for another DBMS.
17775 * (bug 56199) Raw option of parser functions must now match complete word,
17777 * (bug 60543) Special:PrefixIndex forgot stripprefix=1 for "Next page" link
17778 * (bug 29762) Undoing an already-undone edit will now display an appropriate
17779 message instead of leading the user to make a null edit.
17780 * (bug 52659) mediawiki.notification: Notification area remained visible when
17781 empty and thus was stealing pointer events from links on the page.
17782 * (bug 26811) When a DBUnexpectedError occurs, DB server hostnames are now
17783 hidden unless $wgShowExceptionDetails is true, and $wgShowDBErrorBacktrace
17784 no longer applies in such cases.
17785 * (bug 60960) Avoid doing file_exist() checks on data: URIs, as they cause
17786 warnings to be printed on Windows due to large path length.
17787 * (bug 48084) Fixed a bug in the installer that could cause $wgLogo to hold
17788 the wrong path to the placeholder logo (skins/common/images/wiki.png).
17789 * (bug 64289) jquery.textSelection: Don't throw errors on empty collections.
17791 === Web API changes in 1.23 ===
17792 * (bug 54884) action=parse&prop=categories now indicates hidden and missing
17794 * action=query&meta=filerepoinfo now returns additional information for each
17796 * action=parse&prop=languageshtml was deprecated in 1.18 and will be removed in
17798 * action=parse now has disabletoc flag to disable table of contents in output.
17799 * (bug 25702) list=allcategories, list=allimages, list=alllinks, list=allpages,
17800 list=deletedrevs and list=filearchive did not handle case-sensitivity
17801 properly for all parameters.
17802 * ApiQueryBase::titlePartToKey allows an extra parameter that indicates the
17803 namespace in order to properly capitalize the title part.
17804 * (bug 57874) action=feedcontributions no longer has one item more than limit.
17805 * All API modules now support an assert parameter. See the new features section
17807 * Added prop=contributors to fetch the list of contributors to the page.
17808 * The following API modules will now return entries where fields have been
17809 revision-deleted: list=deletedrevs, list=filearchive, list=recentchanges,
17810 list=watchlist. "hidden" indicators will be included, in the same style as is
17811 already done for prop=revisions.
17812 * The following API modules will now return the content of revision-deleted
17813 fields, in addition to the "hidden" indicators, if the querying user has the
17814 necessary rights: list=logevents, list=usercontribs, prop=imageinfo,
17816 * The above modules, where applicable, will now return entries filtered by
17817 revision-deleted fields if the querying user has the necessary rights. For
17818 example, prop=revisions with rvuser or rvexcludeuser will no longer skip
17819 revisions where the user was revision-deleted if the current user has the
17820 deletedhistory right.
17821 * The 'hideuser' right, used when blocking, is no longer necessary or
17822 sufficient for seeing contributions with revision-deleted in
17824 * list=watchlist now uses the querying user's rights rather than the wlowner's
17825 rights when checking whether wlprop=patrol is allowed.
17826 * (bug 32151) ApiWatch now has pageset capabilities (titles/pageids/generators).
17827 Title parameter is now deprecated.
17828 * (bug 23005) Added action=revisiondelete.
17829 * Added siprop=restrictions to API action=query&meta=siteinfo for querying
17830 possible page restriction (protection) levels and types.
17831 * Added prop 'limitreportdata' and 'limitreporthtml' to action=parse.
17832 * (bug 58627) Provide language names on action=parse&prop=langlinks.
17833 * Deprecated llurl= in favour of llprop=url for action=query&prop=langlinks.
17834 * Added llprop=langname and llprop=autonym for action=query&prop=langlinks.
17835 * prop=redirects is added, to return redirects to the pages in the query.
17836 * list=allredirects is added, to list all redirects pointing to a namespace.
17837 * (bug 42026) Added ucshow={new,!new,top,!top} to list=usercontribs.
17838 Also added newonly to action=feedcontributions.
17839 * (bug 42026) Deprecated uctoponly in favor of ucshow=top.
17840 * list=search no longer has a "srredirects" parameter. Redirects are now
17841 included in all searches.
17842 * Added list=prefixsearch that works like action=opensearch but can be used as
17844 * (bug 24782) Various modules will now use unique continuation parameters.
17845 * (bug 63249) Cache RecentChanges Atom feed in varnish for 15 seconds.
17847 === Languages updated in 1.23 ===
17849 MediaWiki supports over 350 languages. Many localisations are updated
17850 regularly. Below only new and removed languages are listed, as well as
17851 changes to languages because of Bugzilla reports.
17853 * Support was added for Algerian Spoken Arabic (arq).
17854 * Support was added for Riograndenser Hunsrückisch (hrx).
17855 * Support was added for Northern Luri (lrc).
17857 === Other changes in 1.23 ===
17858 * The rc_type field in the recentchanges table has been superseded by a new
17859 rc_source field. The rc_source field is a string representation of the
17860 change type where rc_type was a numeric constant. This field is not yet
17861 queried but will be in a future release.
17862 ** Utilize update.php to create and populate this new field. On larger wikis
17863 which do not wish to update recentchanges table in one large update please
17864 review the SQL and comments in maintenance/archives/patch-rc_source.sql.
17865 ** The rc_type field of recentchanges will be deprecated in a future release.
17866 * The global variable $wgArticle has been removed after a lengthy deprecation.
17867 * The global functions addButton and insertTags (for mw.toolbar.addButton and
17868 mw.toolbar.insertTags) now emits mw.log.warn when accessed.
17869 * The ExpandTemplates extension has been moved into MediaWiki core.
17870 * (bug 52812) Removed "Disable search suggestions" from Preference.
17871 * (bug 52809) Removed "Disable browser page caching" from Preference.
17872 * Three new modules intended for use by custom skins were added:
17873 'mediawiki.skinning.elements', 'mediawiki.skinning.content', and
17874 'mediawiki.skinning.interface', representing three levels of standard
17875 MediaWiki styling. Previously skin creators wishing to use them had to refer
17876 to the file names of appropriate files directly, which is now discouraged.
17877 * The modules 'skins.vector' and 'skins.monobook' have been renamed to
17878 'skins.vector.styles' and 'skins.monobook.styles', respectively,
17879 and their definition was changed not to include the common*.css files;
17880 the two skins now load the 'mediawiki.skinning.interface' module instead.
17881 * A page_links_updated field has been added to the page table.
17882 * SpecialPage::getTitle has been deprecated in favor of
17883 SpecialPage::getPageTitle.
17884 * BREAKING CHANGE: Two potentially backwards-incompatible changes have been made
17885 to the 'SpecialWatchlistQuery' hook's last parameter (array $values) to make
17886 the hook more consistent with the 'SpecialRecentChangesQuery' one:
17887 ** Several array keys have been renamed: hideMinor → hideminor,
17888 hideBots → hidebots, hideAnons → hideanons, hideLiu → hideliu,
17889 hidePatrolled → hidepatrolled, hideOwn → hidemyself.
17890 ** The parameter value is now a FormOptions object, not a plain array (array
17891 access operators should continue to work, as it implements the ArrayAccess
17893 * Option to mark hooks as deprecated has been added.
17894 * (bug 52811) Preference "Enable section editing via [edit] links" was removed.
17895 * (bug 52813) Preference "Show table of contents (for pages with more than
17896 3 headings)" was removed.
17897 * (bug 52810) Preference "Justify paragraphs" was removed.
17898 * OutputPage::showErrorPage raises a notice if arguments are incoherent.
17899 * Thumbnails that keep failing to render in thumb.php will be rate-limited
17900 against further render attempts for 1 hour. $wgAttemptFailureEpoch can be
17901 altered to reset all rate-limited thumbnails at once.
17902 * (bug 56572) Builds of the OOjs and OOjs UI libraries are now available.
17903 * mw.loader.go and mw.loader.version have been removed.
17904 * (bug 52815) Preference "Enable simplified search bar (Vector skin only)"
17906 * A user_password_expires column has been added to the user table. The User
17907 object expects this column to exist. Use update.php to create this new field.
17908 * The jquery.delayedBind ResourceLoader module was deprecated in favor of the
17909 jquery.throttle-debounce module. It will be removed in MediaWiki 1.24.
17910 * mw.user.bucket has been deprecated.
17911 * On Special:PrefixIndex, a table#mw-prefixindex-list-table was changed to
17912 table.mw-prefixindex-list-table to avoid duplicate ids when the special page
17914 * (bug 62198) window.$j has been deprecated.
17915 * Preference "Disable link title conversion" was removed.
17916 * SpecialRecentChanges no longer includes any functionality for generating feeds
17917 - it has been factored out to ApiFeedRecentChanges. Old URLs redirect to new
17919 * RecentChange::mExtra['lang'] is no longer set and should no longer be used.
17920 Extensions should read from other configuration variables, including
17921 $wgLocalInterwikis, to identify the current wiki.
17922 * Sections in the parser test framework have been renamed and the old
17923 section names are deprecated. Please use "!!wikitext" and "!!html"
17924 (or "!!html/php") instead of "!!input" and "!!result". This allows
17925 us to extend parser tests to accommodate additional input/output
17926 pairs, such as "!!html/parsoid" (for the output of the Parsoid
17927 parser, where it differs from the PHP parser).
17928 * Special:Search no longer has an "include redirects" option on the advanced
17929 tab. Redirects are now included in all searches.
17930 * mediawiki.api.category's getCategories() 'async' parameter was deprecated.
17931 * The locations of resources have been split between upstream libraries, now in
17932 resources/lib/, local libaries in resources/src/, and local forks of upstream
17933 libraries, also in resources/src/.
17934 * BREAKING CHANGE: The automatically-generated function closure with which
17935 ResourceLoader wraps all modules' JavaScript code now binds the identifier
17936 names 'jQuery' and '$' to the jQuery object of the version of jQuery that is
17937 bundled with MediaWiki. If you bind these names to other objects in global
17938 scope (like Zepto.js or document.querySelectorAll, for example) you will need
17939 to use different names to or re-bind them at the top of each
17940 ResourceLoader-loaded module.
17941 * (bug 52342) Preference "Remember my login" was removed.
17942 * The skin autodiscovery mechanism has been deprecated and will be removed in
17943 MediaWiki 1.25. See https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery
17944 for migration guide for creators and users of custom skins that relied on it.
17946 ==== Removed classes ====
17947 * FakeMemCachedClient (deprecated in 1.18)
17948 * RdfMetaData (unused)
17949 * TitleDependency (unused)
17950 * TitleListDependency (unused)
17951 * WikiError (deprecated in 1.17)
17952 * WikiXmlError (deprecated in 1.17)
17953 * WikiErrorMsg (deprecated in 1.17)
17955 ==== Renamed classes ====
17956 * CdbReader_DBA to CdbReaderDBA
17957 * CdbReader_PHP to CdbReaderPHP
17958 * CdbWriter_DBA to CdbWriterDBA
17959 * CdbWriter_PHP to CdbWriterPHP
17960 * DiffOp_Add to DiffOpAdd
17961 * DiffOp_Change to DiffOpChange
17962 * DiffOp_Copy to DiffOpCopy
17963 * DiffOp_Delete to DiffOpDelete
17964 * HWLDF_WordAccumulator to HWLDFWordAccumulator
17965 * LBFactory_Fake to LBFactoryFake
17966 * LBFactory_Multi to LBFactoryMulti
17967 * LBFactory_Simple to LBFactorySimple
17968 * LBFactory_Single to LBFactorySingle
17969 * LCStore_Accel to LCStoreAccel
17970 * LCStore_CDB to LCStoreCDB
17971 * LCStore_DB to LCStoreDB
17972 * LCStore_Null to LCStoreNull
17973 * LoadBalancer_Single to LoadBalancerSingle
17974 * LoadMonitor_MySQL to LoadMonitorMySQL
17975 * LoadMonitor_Null to LoadMonitorNull
17976 * LocalisationCache_BulkLoad to LocalisationCacheBulkLoad
17977 * csvStatsOutput to CsvStatsOutput
17978 * extensionLanguages to ExtensionLanguages
17979 * languages to Languages
17980 * statsOutput to StatsOutput
17981 * textStatsOutput to TextStatsOutput
17982 * wikiStatsOutput to WikiStatsOutput
17984 ==== Removed methods ====
17985 * ApiBase::getValidNamespaces() (deprecated in 1.17)
17986 * ApiMain::setCachePrivate() (deprecated in 1.17)
17987 * ApiMain::setVaryCookie (deprecated in 1.17)
17988 * Article::doRedirect() (deprecated in 1.18)
17989 * Article::doUnwatch() (deprecated in 1.18)
17990 * Article::doWatch() (deprecated in 1.18)
17991 * Article::forUpdate() (deprecated in 1.18)
17992 * Article::markpatrolled() (deprecated in 1.18)
17993 * Article::unwatch() (deprecated in 1.18)
17994 * Article::watch() (deprecated in 1.18)
17995 * Block::clear() (deprecated in 1.18)
17996 * Block::decodeExpiry() (deprecated in 1.18)
17997 * Block::encodeExpiry() (deprecated in 1.18)
17998 * Block::forUpdate() (deprecated in 1.18)
17999 * Block::infinity() (deprecated in 1.18)
18000 * Block::load() (deprecated in 1.18)
18001 * Block::newFromDB() (deprecated in 1.18)
18002 * Block::normaliseRange() (deprecated in 1.18)
18003 * Block::parseExpiryInput() (deprecated in 1.18)
18004 * CategoryViewer::addSubcategory() (deprecated in 1.17)
18005 * EditPage::spamPage() (deprecated since 1.17)
18006 * Exif::getFormattedData() (deprecated in 1.18)
18007 * Exif::makeFormattedData() (deprecated in 1.18)
18008 * in_string (deprecated in 1.21)
18009 * Language::convertLinkToAllVariants() (deprecated in 1.17)
18010 * LanguageConverter::convertLinkToAllVariants() (deprecated in 1.17)
18011 * Linker::makeBrokenLink() (deprecated in 1.16)
18012 * Linker::makeBrokenLinkObj() (deprecated in 1.16)
18013 * Linker::makeColouredLinkObj() (deprecated in 1.16)
18014 * Linker::makeSizeLinkObj() (deprecated in 1.17)
18015 * MediaWiki::articleFromTitle() (deprecated in 1.18)
18016 * ParserOptions::getkin() (deprecated 1.18)
18017 * ProfilerSimple::getCpuTime (deprecated in 1.20)
18018 * Revision::revText() (deprecated in 1.17)
18019 * SkinTemplate::jstext() (deprecated in 1.21)
18020 * SpecialPage::__call() (deprecated in 1.17)
18021 * SpecialPage::executePath() (deprecated in 1.18)
18022 * SpecialPage::exists() (deprecated in 1.18)
18023 * SpecialPage::file() (deprecated in 1.18)
18024 * SpecialPage::func() (deprecated in 1.18)
18025 * SpecialPage::getGroup() (deprecated in 1.18)
18026 * SpecialPage::getPage() (deprecated in 1.18)
18027 * SpecialPage::getPageByAlias() (deprecated in 1.18)
18028 * SpecialPage::getLocalNameFor() (deprecated in 1.18)
18029 * SpecialPage::getRegularPages() (deprecated in 1.18)
18030 * SpecialPage::getRestrictedPages() (deprecated in 1.18)
18031 * SpecialPage::getTitleForAlias() (deprecated in 1.18)
18032 * SpecialPage::getUsablePages() (deprecated in 1.18)
18033 * SpecialPage::includable() (deprecated in 1.18)
18034 * SpecialPage::init()
18035 * SpecialPage::initAliasList() (deprecated in 1.18)
18036 * SpecialPage::initList() (deprecated in 1.18)
18037 * SpecialPage::name() (deprecated in 1.18)
18038 * SpecialPage::removePage() (deprecated in 1.18)
18039 * SpecialPage::resolveAlias() (deprecated in 1.18)
18040 * SpecialPage::resolveAliasWithSubpage() (deprecated in 1.18)
18041 * SpecialPage::restriction() (deprecated in 1.18)
18042 * SpecialPage::setGroup() (deprecated in 1.18)
18043 * SpecialRecentChanges::feedSetup()
18044 * SpecialRevisionDelete::extractBitField() (deprecated in 1.22)
18045 * User::getPageRenderingHash() (deprecated in 1.17)
18046 * WebRequest::getFileSize() (deprecated in 1.17)
18047 * WebRequest::isPathInfoBad() (deprecated in 1.17)
18048 * wfGenerateToken (deprecated in 1.20)
18049 * wfStreamFile (deprecated in 1.19)
18050 * wfUILang (deprecated in 1.18)
18051 * WikiPage::createUpdates() (deprecated in 1.18)
18052 * WikiPage::quickEdit() (deprecated in 1.18)
18053 * WikiPage::useParserCache() (deprecated in 1.18)
18054 * WikiPage::viewUpdates() (deprecated in 1.18)
18056 ==== Removed globals ====
18057 * $wgBetterDirectionality (deprecated in 1.18)
18061 == MediaWiki 1.22.15 ==
18063 This is a security and maintenance release of the MediaWiki 1.22 branch.
18065 === Changes since 1.22.14 ===
18067 * (bug T76686) [SECURITY] thumb.php outputs wikitext message as raw HTML, which
18068 could lead to xss. Permission to edit MediaWiki namespace is required to
18070 * (bug T77028) [SECURITY] Malicious site can bypass CORS restrictions in
18071 $wgCrossSiteAJAXdomains in API calls if it only included an allowed domain as
18073 * (bug T74222) The original patch for T74222 was reverted as unnecessary.
18075 == MediaWiki 1.22.14 ==
18077 This is a security and maintenance release of the MediaWiki 1.22 branch.
18079 === Changes since 1.22.13 ===
18081 * (bugs 66776, 71478) SECURITY: User PleaseStand reported a way to inject code
18082 into API clients that used format=php to process pages that underwent flash
18083 policy mangling. This was fixed along with improving how the mangling was done
18084 for format=json, and allowing sites to disable the mangling using
18085 $wgMangleFlashPolicy.
18086 * (bug 70901) SECURITY: User Jackmcbarn reported that the ability to update
18087 the content model for a page could allow an unprivileged attacker to edit
18088 another user's common.js under certain circumstances. The user right
18089 "editcontentmodel" was added, and is needed to change a revision's content
18091 * (bug 72222) SECURITY: Do not show log action when the entry is revdeleted with
18092 DELETED_ACTION. NOTICE: this may be reverted in a future release pending a
18093 public RFC about the desired functionality. This issue was reported by user
18095 * (bug 71621) Make allowing site-wide styles on restricted special pages a
18097 * $wgMangleFlashPolicy was added to make MediaWiki's mangling of anything that
18098 might be a flash policy directive configurable.
18100 == MediaWiki 1.22.13 ==
18101 This is a maintenance release of the MediaWiki 1.22 branch.
18103 === Changes since 1.22.12 ===
18104 * (bug 67440) Allow classes to be registered properly from installer
18106 == MediaWiki 1.22.12 ==
18107 This is a security release of the MediaWiki 1.22 branch.
18109 === Changes since 1.22.11 ===
18110 * (bug 70672) SECURITY: OutputPage: Remove separation of css and js module
18113 == MediaWiki 1.22.11 ==
18114 This is a security release of the MediaWiki 1.22 branch.
18116 === Changes since 1.22.10 ===
18117 * (bug 69008) SECURITY: Enhance CSS filtering in SVG files. Filter <style>
18118 elements; normalize style elements and attributes before filtering; add checks
18119 for attributes that contain css; add unit tests for html5sec and reported
18122 == MediaWiki 1.22.10 ==
18123 This is a maintenance release of the MediaWiki 1.22 branch.
18125 === Changes since 1.22.9 ===
18126 * (bug 64970) Fix support for blobs on DatabaseOracle::update
18127 * (bug 60719) In MediaWiki 1.22, the job queue execution on each page request
18128 was changed (Gerrit change 59797) so, instead of executing the job inside the
18129 same PHP process that's rendering the page, a new PHP cli command is spawned
18130 to execute runJobs.php in the background. It will only work if $wgPhpCli is
18131 set to an actual path or safe mode is off, otherwise, the old method will be
18133 https://www.mediawiki.org/wiki/Manual:Job_queue#Changes_in_MediaWiki_1.22
18134 for more information. This change was in earlier releases of 1.22 but was not
18135 noted here until now.
18137 == MediaWiki 1.22.9 ==
18138 This is a security and maintenance release of the MediaWiki 1.22 branch.
18140 === Changes since 1.22.8 ===
18141 * (bug 68187) SECURITY: Prepend jsonp callback with comment.
18142 * (bug 66608) SECURITY: Fix for XSS issue in bug 66608: Generate the URL used
18143 for loading a new page in Javascript,instead of relying on the URL in the
18144 link that has been clicked.
18145 * (bug 65778) SECURITY: Copy prevent-clickjacking between OutputPage and
18147 * (bug 59147) The img_metadata field was not being decoded from bytea into text.
18149 == MediaWiki 1.22.8 ==
18150 This is a security and maintenance release of the MediaWiki 1.22 branch.
18152 === Changes since 1.22.7 ===
18153 * (bug 65839) SECURITY: Prevent external resources in SVG files.
18154 * (bug 66428) MimeMagic: Don't seek before BOF. This has weird side effects like
18155 only extracting the tail of the file partially or not at all.
18157 == MediaWiki 1.22.7 ==
18158 This is a security and maintenance release of the MediaWiki 1.22 branch.
18160 === Changes since 1.22.6 ===
18161 * (bug 65501) SECURITY: Don't parse usernames as wikitext on
18162 Special:PasswordReset.
18163 * (bug 36356) Add space between two feed links.
18164 * (bug 63269) Email notifications were not correctly handling the
18165 MediaWiki:Helppage message being set to a full URL. This is a regression from
18166 the 1.22.5 point release, which made the default value for it a URL. If you
18167 customized MediaWiki:Enotif body (the text of email notifications), you'll
18168 need to edit it locally to include the URL via the new variable $HELPPAGE
18169 instead of the parser functions fullurl and canonicalurl; otherwise you don't
18170 have to do anything.
18171 * Add missing uploadstash.us_props for PostgreSQL.
18172 * (bug 56047) Fixed stream wrapper in PhpHttpRequest.
18174 == MediaWiki 1.22.6 ==
18175 This is a security release of the MediaWiki 1.22 branch.
18177 === Changes since 1.22.5 ===
18178 * (bug 63251) SECURITY: Escape sortKey in pageInfo.
18180 == MediaWiki 1.22.5 ==
18181 This is a security and maintenance release of the MediaWiki 1.22 branch.
18183 === Changes since 1.22.4 ===
18184 * (bug 62497) SECURITY: Add CSRF token on Special:ChangePassword.
18185 * (bug 62467) Set a title for the context during import on the cli.
18186 * Fix custom local MediaWiki:Helppage values.
18187 * mediawiki.js: Fix documentation breakage.
18188 * (bug 58153) Make MySQLi work with non standard port.
18189 * (bug 53887) Reintroduced a link to help pages in the default sidebar, that any
18190 sysop can customize by editing MediaWiki:Sidebar locally. The link now points
18191 to a mediawiki.org page which is guaranteed to exist. Nothing needs to be done
18192 on your end, but remember to adjust MediaWiki:Sidebar for the needs of your
18193 wikis. Everyone can help with the shared documentation by translating:
18194 https://www.mediawiki.org/wiki/Special:Translate/agg-Help_pages .
18195 * (bug 53888) Corrected a regression in 1.22 which introduced red links on the
18196 login page. If you previously installed 1.22.x and have created a local page
18197 to make the red link blue, write its title as in MediaWiki:helplogin-url if
18198 you didn't already. Otherwise, you don't need to do anything, but you can
18199 translate the help page at <https://www.mediawiki.org/wiki/Help:Logging_in>.
18201 == MediaWiki 1.22.4 ==
18202 This is a maintenance release of the MediaWiki 1.22 branch.
18204 === Changes since 1.22.3 ===
18205 * Use the correct branch of the extensions' git repositories.
18207 == MediaWiki 1.22.3 ==
18208 This is a security and bugfix release of the MediaWiki 1.22 branch.
18210 === Changes since 1.22.2 ===
18211 * (bug 60771) SECURITY: Disallow uploading SVG files using non-whitelisted
18212 namespaces. Also disallow iframe elements. * User will get an error including
18213 the namespace name if they use a non- whitelisted namespace.
18214 * (bug 61346) SECURITY: Make token comparison use constant time. It seems like
18215 our token comparison would be vulnerable to timing attacks. This will take
18217 * (bug 61362) SECURITY: API: Don't find links in the middle of api.php links.
18218 * (bug 53710) Add sequence support for upsert in DatabaseOracle in the same way
18220 * (bug 60231, bug 58719) Various fixes to job running code in Wiki.php: Make it
18221 async on Windows. Fixed possible "invalid filename" errors on Windows.
18222 Redirect output to dev/null to avoid hanging PHP.
18223 * (bug 60083) Correct sequence name for fresh Postgres installation. Spotted by
18225 * (bug 60531) Avoid variable naming conflicts in
18226 DatabasePostgres::selectSQLText. Spotted by gebhkla
18227 * (bug 60094) Fix rebuildall.php fatal error with PostgreSQL.
18228 * (bug 43817) Add error handling if descriptionmsg isn't defined for extension.
18229 * (bug 60543) Special:PrefixIndex omits stripprefix=1 for "Next page" link.
18231 == MediaWiki 1.22.2 ==
18232 This is a security and bugfix release of the MediaWiki 1.22 branch.
18234 === Changes since 1.22.1 ===
18235 * (bug 60339) SECURITY: Sanitize shell arguments to DjVu files, and other media
18237 * (bug 58253) Check for very old PCRE versions in installer and updater
18238 * (bug 60054) Make WikiPage::$mPreparedEdit public
18240 == MediaWiki 1.22.1 ==
18241 This is a security and maintenance release of the MediaWiki 1.22 branch.
18243 === Changes since 1.22.0 ===
18244 * (bug 57550) SECURITY: Disallow stylesheets in SVG Uploads
18245 * (bug 58088) SECURITY: Don't normalize U+FF3C to \ in CSS Checks
18246 * (bug 58472) SECURITY: Disallow -o-link in styles
18247 * (bug 58553) SECURITY: Return error on invalid XML for SVG Uploads
18248 * (bug 58699) SECURITY: Fix RevDel log entry information leaks
18249 * (bug 58178) Restore compatibility with curl < 7.16.2.
18250 * (bug 56931) Updated the plural rules to CLDR 24. They are in new format which
18251 is detailed in UTS 35 Rev 33. The PHP parser and evaluator as well as the
18252 JavaScript evaluator were updated to support the new format. Plural rules for
18253 some languages have changed, most notably Russian. Affected software messages
18254 have been updated and marked for review at translatewiki.net. This change is
18255 backported from the development branch of MediaWiki 1.23.
18256 * (bug 58434) The broken installer for database backend Oracle was fixed.
18257 * (bug 58167) The web installer no longer throws an exception when PHP is
18258 compiled without support for MySQL yet with support for another DBMS.
18259 * (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages to
18260 appear blank or with missing text.
18261 * (bug 47055) Changed FOR UPDATE handling in Postgresql
18262 * (bug 57026) Avoid extra parsing in prepareContentForEdit()
18264 == MediaWiki 1.22.0 ==
18266 === Configuration changes in 1.22 ===
18267 * $wgRedirectScript was removed. It was unused.
18268 * Removed $wgLocalMessageCacheSerialized, it is now always true.
18269 * $wgVectorUseIconWatch is now enabled by default.
18270 * $wgCascadingRestrictionLevels was added.
18271 * ftps, ssh, sftp, xmpp, sip, sips, tel, sms, bitcoin, magnet, urn, and geo
18272 have been whitelisted inside of $wgUrlProtocols.
18273 * $wgDocType and $wgDTD have been removed and are no longer used for the
18275 * $wgHtml5 is no longer used by core. Setting it to false will no longer disable
18276 HTML5. It is still set to true for extension compatibility but doing so in
18277 extensions is deprecated.
18278 * $wgXhtmlDefaultNamespace is no longer used by core. Setting it will no longer
18279 change the xmlns used by MediaWiki. Reliance on this variable by extensions
18281 * $wgHandheldStyle was removed.
18282 * $wgHandheldForIPhone was removed.
18283 * $wgJsMimeType is no longer used by core. Most usage has been removed since
18284 HTML output is now exclusively HTML5.
18285 * $wgDBOracleDRCP added. True enables persistent connection with DRCP on Oracle.
18286 * $wgLogAutopatrol added to allow disabling logging of autopatrol edits in the
18288 Default for $wgLogAutopatrol is true.
18289 * The 'edit' right no longer allows for editing a user's own CSS and JS.
18290 * New rights 'editmyusercss', 'editmyuserjs', 'viewmywatchlist',
18291 'editmywatchlist', 'viewmyprivateinfo', 'editmyprivateinfo', and
18292 'editmyoptions' restrict actions that were formerly allowed by default. They
18293 have been added to the default for $wgGroupPermissions['*'].
18294 * The 'editprotected' right no longer allows bypassing of all page protection
18295 restrictions. Any group using it for this purpose will now need to have all
18296 the individual rights listed in $wgRestrictionTypes for the same effect.
18297 * The 'protect' and 'autoconfirmed' rights are no longer used for the default
18298 page protection levels. The rights 'editprotected' and 'editsemiprotected'
18299 are now used for this purpose instead.
18300 * (bug 40866) wgOldChangeTagsIndex removed.
18301 * $wgNoFollowDomainExceptions now only matches entire domains. For example,
18302 an entry for 'bar.com' will still match 'foo.bar.com' but not 'foobar.com'.
18303 * $wgCopyUploadTimeout and $wgCopyUploadAsyncTimeout added to change the timeout
18304 times for fetching the file during upload by url.
18305 * New key added to $wgGalleryOptions - $wgGalleryOptions['mode'] to set
18306 default gallery mode.
18307 * New hook 'GalleryGetModes' to allow extensions to make new gallery modes.
18308 * The checkbox for staying in HTTPS displayed on the login form when
18309 $wgSecureLogin is enabled has been removed. Instead, whether the user stays in
18310 HTTPS will be determined
18311 based on the user's preferences, and whether they came from HTTPS or not.
18312 * $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort,
18313 and $wgRC2UDPPrefix configuration options have been deprecated in favor of a
18314 $wgRCFeeds configuration array. $wgRCFeeds makes both the format and
18315 destination of recent change notifications customizable, and allows for
18316 multiple destinations to be specified.
18317 * (bug 53862) portal-url, currentevents-url and helppage have been removed from
18318 the default Sidebar.
18319 * The 'vector-simplesearch' preference is now enabled by default. Previously
18320 it was only enabled if the Vector extension was installed.
18321 * The precise format of metric datagrams produced by the UDP profiler and stats
18322 counter may now be specified as $wgUDPProfilerFormatString and
18323 $wgStatsFormatString, respectively.
18324 * (bug 54597) $wgBlockOpenProxies, $wgProxyPorts, $wgProxyScriptPath, and
18325 $wgProxyMemcExpiry have been removed, along with the open proxy scanner
18326 script they were added for.
18327 * Default value of $wgMaxShellMemory has been tripled (it's now 300 MB).
18329 === New features in 1.22 ===
18330 * You can now install extensions using Composer.
18331 See https://www.mediawiki.org/wiki/Composer
18332 * (bug 44525) mediawiki.jqueryMsg can now parse (whitelisted) HTML elements and
18334 * (bug 33454) Language::sprintfDate now has a timezone parameter, and supports
18335 the "eIOPTZ" formatting characters.
18336 * EditWarning: A warning is shown when an editor leaves the edit form without
18337 saving (enabled by default, users can opt-out via the 'useeditwarning'
18338 preference). This feature was moved from the Vector extension, and is now part
18339 of core for all skins. Take care when upgrading that you don't use an older
18340 version of the Vector extension as this feature may conflict.
18341 * New 'mediawiki.ui' CSS module providing mw-ui-* styles for buttons and a
18342 compact vertical form layout.
18343 * HTMLForm supports a new display format 'vform' which applies this compact
18345 layout and button styling. Special:PasswordReset uses this format.
18346 * New versions of login (Special:UserLogin) and create account
18347 (Special:UserLogin/signup) forms using the "vform" compact vertical form
18348 layout. These forms use new messages that assume a "Help logging in" link, see
18349 https://www.mediawiki.org/wiki/Manual:Page_customizations;
18350 https://www.mediawiki.org/wiki/Account_creation_user_experience/Strings lists
18351 the message key changes.
18352 * (bug 23343) Implemented ability to apply IP blocks to the contents of
18353 X-Forwarded-For headers by adding a new configuration variable
18354 $wgApplyIpBlocksToXff (disabled by default).
18355 * The new hook 'APIGetPossibleErrors' to modify the list of possible errors was
18357 * (bug 25592) LogEventsList::showLogExtract() will now ignore various
18358 Pager-related WebRequest parameters by default, as this is overwhelmingly
18359 likely to be what was intended by users of the method. If any caller wishes
18360 to use these parameters, the new param 'useRequestParams' may be set to true.
18361 * mw.util.addPortletLink: Tooltip is no longer required to be plain (without
18362 an accesskey in it already). As such it now rountrips. Creating a link with a
18363 message as tooltip, grabbing the title attribute and using it to create
18364 another portlet will work as expected.
18365 * (bug 6747) {{ROOTPAGENAME}} introduced, contains the name of the topmost
18366 page without namespace.
18367 * BREAKING CHANGE: (bug 41729) Display editsection links next to headings. Also
18368 change their class name from .editsection to .mw-editsection and place them at
18369 the end of the heading element instead of the beginning. Client-side code and
18370 screen-scrapers will have to be adjusted to handle both cases (old HTML will
18371 still be visible on cached page renders until they are purged); extensions
18372 using the DoEditSectionLink or EditSectionLink hooks might need adjustments as
18374 * (bug 45535) introduced the new 'LanguageLinks' hook for manipulating the
18375 language links associated with a page before display.
18376 * Chosen (http://harvesthq.github.io/chosen/) was added as module
18378 * HTMLForm will turn multiselect checkboxes into a Chosen interface when setting
18379 cssclass 'mw-chosen'
18380 * rebuildLocalisationCache learned --lang option. Let you rebuild l10n caches
18381 of the specified languages instead of all of them.
18382 * New GetNewMessagesAlert hook allowing extensions to disable or modify the new
18384 * New wgUserNewMsgRevisionId JS global for logged in users. This will be null
18385 if the user has no new talk page messages. Otherwise it will be set to the
18386 revision ID of the oldest new talk page message. This will allow gadgets and
18387 extensions to create their own new message alerts on the client side.
18388 * mediawiki.log: Added log.warn wrapper (uses console.warn and console.trace).
18389 * mediawiki.log: Implemented log.deprecate. This method defines a property and
18390 uses ES5 getter/setter to emit a warning when they are used.
18391 * $wgCascadingRestrictionLevels was added, allowing one to specify restriction
18392 levels which can be cascading (previously 'sysop' was hard-coded as the only
18394 * XHTML5 support has been improved. If you set
18395 $wgMimeType = 'application/xhtml+xml' MediaWiki will try outputting markup
18396 according to XHTML5 rules.
18397 * Altered hook 'ProtectionForm::save', adding the reason page protection is
18398 changed as third parameter.
18399 * New hook 'TitleSquidURLs' for manipulating the list of URLs to be purged from
18400 HTTP caches when a page is changed.
18401 * Changed the patrolling system to always show the link for patrolling in case
18402 the current revision is patrollable. This also removed the usage of the rcid
18404 * Oracle DB backend now supports Database Resident Connection Pooling (DRCP).
18405 Can be enabled by setting $wgDBOracleDRCP=true.
18406 Requires Oracle DB 11gR1 or above, enabled DRCP inside the DB itself and a
18407 propper connect string.
18408 More about DRCP can be found at:
18409 https://oracle-base.com/articles/11g/database-resident-connection-pool-11gr1
18410 * Add a new parameter $patrolFooterShown to hook ArticleViewFooter so the hook
18411 handlers can take further action based on the status of the patrol footer
18412 * A new hook TitleQuickPermissions was added to allow overriding of quick
18413 permissions in the Title class.
18414 * LinkCache singleton can now be altered or cleared, letting one to specify
18415 another instance that does not rely on a database backend.
18416 * MediaWiki's PHPUnit tests can now use PHPUnit installed using composer --dev.
18417 * (bug 43689) The lists of templates used on the page and hidden categories it
18418 is a member of, shown below the edit form, are now collapsible (and collapsed
18420 * Parser profiling data, formerly only available in the "NewPP limit report"
18421 HTML comment, is now also displayed at the bottom of page previews.
18422 * Added ParserLimitReportPrepare and ParserLimitReportFormat hooks, deprecated
18423 ParserLimitReport hook.
18424 * New user rights have been added to increase granularity in rights management
18425 for extensions such as OAuth:
18426 ** editmyusercss controls whether a user may edit their own CSS subpages.
18427 ** editmyuserjs controls whether a user may edit their own JS subpages.
18428 ** viewmywatchlist controls whether a user may view their watchlist.
18429 ** editmywatchlist controls whether a user may edit their watchlist.
18430 ** viewmyprivateinfo controls whether a user may access their private
18431 information (e.g. registered email address, real name).
18432 ** editmyprivateinfo controls whether a user may change their private
18434 ** editmyoptions controls whether a user may change their preferences.
18435 * Add new hook AbortTalkPageEmailNotification, this will be used to determine
18436 whether to send the regular talk page email notification
18437 * Action classes registered in $wgActions are now also supported in the form of
18438 a callback (which returns an instance of Action) instead of providing the name
18439 of a subclass of Action.
18440 * (bug 46513) Vector: Add the collapsibleTabs script from the Vector extension.
18441 * Added $wgRecentChangesFlags for defining new flags for RecentChanges and
18443 * (bug 40518) mw.toolbar: Implemented mw.toolbar.addButtons for adding multiple
18444 button objects in one call.
18445 * Rights used for the default protection levels ('sysop' and 'autoconfirmed')
18446 are now used just for that purpose, instead of overloading other rights. This
18447 allows easy granting of the ability to edit sysop-protected pages without
18448 also granting the ability to protect and unprotect.
18449 * (bug 48256) Make brackets in section edit links accessible to CSS.
18450 They are now wrapped in <span class="mw-editsection-bracket" />.
18451 * (bug 8480) Allow handler specific parameters in galleries (like page number)
18452 * jquery.client: Add detection for Opera 15 and Internet Explorer 11.
18453 * Change tags (used by the AbuseFilter extension) are now shown on diff pages.
18454 * Change tag lists (shown on recent changes, watchlist, user contributions,
18455 history pages, diff pages) now include a link to Special:Tags to distinguish
18456 them from edit summaries.
18457 * Added a new method and hook, User::isEveryoneAllowed() and
18458 UserIsEveryoneAllowed, for use in situations where a "does everyone have this
18459 right?" check is used to avoid more expensive checks.
18460 * (bug 14431) Display "(No difference)" instead of an empty diff (when comparing
18461 revisions in the history or when previewing changes while editing).
18462 * New hook 'IsUploadAllowedFromUrl' is added which can be used to intercept
18463 uploads by URL, useful for blacklisting specific URLs
18464 * (bug 21912) Watchlist token implementation has been refactored and
18465 Special:ResetTokens was added to allow users to reset their tokens
18466 instead of presenting them in Preferences.
18467 * Special:PrefixIndex now lets you strip the searched prefix from the displayed
18468 titles. Given a list of articles named Bug1, Bug2, you can now transclude the
18469 list of bug numbers using: {{Special:PrefixIndex/Bug|stripprefix=1}}.
18470 The special page form received a new checkbox matching that option.
18471 * (bug 23580) Implement javascript callback interface "mw.hook".
18472 * (bug 30713) New mw.hook "wikipage.content".
18473 * (bug 40430) jquery.placeholder gets a new parameter to set the attribute value
18475 * $wgHTCPMulticastRouting renamed $wgHTCPRouting since it accepts unicast.
18476 * $wgHTCPRouting rules can now be passed an array of hosts/ports to send purge
18477 too. Can be used whenever several multicast group could be interested by a
18479 * (bug 25931) Add Special:RandomInCategory.
18480 * mediawiki.util: addPortletLink now supports passing a jQuery object as
18482 * <wbr> can now be used inside WikiText.
18483 * WebResponse::setcookie is much more featureful. Callers using PHP's
18484 setcookie() or setrawcookie() should begin using this instead.
18485 * New hook WebResponseSetCookie, called from WebResponse::setcookie().
18486 * New hook ResetSessionID, called when the session id is reset.
18487 * Add a mode parameter to <gallery> tag with potential options of "traditional",
18488 "nolines", "packed", "packed-overlay", or "packed-hover".
18489 * (bug 47399) A success message is now displayed after changing the password.
18490 * Make thumb.php give HTTP redirects for file redirects
18491 * (bug 30607) Special:ListFiles can now show old versions of files. Additionally
18492 Special:AllMyUploads was introduced so the user can get a list of all things
18493 they have ever uploaded, even if it was subsequently overridden.
18494 * Introduced Special:MyFiles and Special:AllMyFiles as an alias for
18495 Special:MyUploads and Special:AllMyUploads respectively.
18496 * IPv6 addresses in X-Forwarded-For headers are now normalised before checking
18497 against allowed proxy lists.
18498 * Add deferrable update support for callback/closure.
18499 * Add TitleMove hook before page renames.
18500 * Revision deletion backend code is moved out of SpecialRevisiondelete
18501 * Added {{REVISIONSIZE}} variable to get the current size of a revision.
18502 * Add support for the LESS stylesheet language to ResourceLoader. LESS is a
18503 stylesheet language that compiles into CSS. ResourceLoader file modules may
18504 include LESS style files; ResourceLoader will compile these files into CSS
18505 before sending them to the client.
18506 ** The $wgResourceLoaderLESSVars configuration variable is an associative array
18507 mapping variable names to string CSS values. These variables are considered
18508 declared for all LESS files. Additional variables may be registered by
18509 adding keys to the array.
18510 ** $wgResourceLoaderLESSFunctions is an associative array of custom LESS
18511 function names to PHP callables. See
18512 <http://leafo.net/lessphp/docs/#custom_functions>
18513 for more details regarding custom functions.
18514 ** $wgResourceLoaderLESSImportPaths is an array of file system paths. Files
18515 referenced in LESS '@import' statements are looked up here first.
18516 * ResourceLoader supports hashes as module cache invalidation trigger (instead
18517 of or in addition to timestamps).
18518 * Added $wgExtensionEntryPointListFiles for use in mergeMessageFileList.php.
18519 * Added a hook, APIQuerySiteInfoStatisticsInfo, to allow extensions to modify
18520 the output of the API query meta=siteinfo&siprop=statistics
18521 * Primary keys have been added to both the archive table and the externallinks
18523 * Added $wgEnableParserLimitReporting to control whether the NewPP limit report
18524 is output in a HTML comment.
18525 * The 'UnwatchArticle' and 'WatchArticle' hooks now support a Status object
18526 instead of just a boolean return value to abort the hook.
18527 * Added a hook, SpecialWatchlistGetNonRevisionTypes, to allow extensions
18528 with custom recentchanges entries to hook into the Watchlist without
18529 clobbering each other.
18530 * A hidden, empty input field was added to the edit form, and any edit that
18531 fills it in will be rejected. This prevents against the simplest form of
18532 spambots. Previously in the "SimpleAntiSpam" extension by Ryan Schmidt.
18533 * populateRevisionLength.php maintenance script updated to also populate
18534 archive.ar_len field.
18535 * (bug 43571) DatabaseMySQLBase learned to list views, optionally filtered by a
18536 prefix. Also fixed PHPUnit test suite when using a MySQL backend containing
18539 === Bug fixes in 1.22 ===
18540 * (bug 47271) $wgContentHandlerUseDB should be set to false during the upgrade
18541 * Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
18542 could still navigate to the page by entering the URL directly.
18543 * (bug 47138) Fixed a fatal error when a blocked user tries to automatically
18544 create an account on login due external authentication in some circumstances.
18545 * (bug 23393) HTML <hN> headings containing line breaks are now handled
18547 * (bug 45803) Whitespace within == Headline == syntax and within <hN> headings
18548 is now non-significant and not preserved in the HTML output.
18549 * (bug 47218) Special:BlockList now handles correctly user names with spaces
18550 when passed as subpage.
18551 * Pager's properly validate which fields are allowed to be sorted on.
18552 * mw.util.tooltipAccessKeyRegexp: The regex now matches "option-" as well.
18553 Support for Mac "option" was added in 1.16, but the regex was never updated.
18554 * (bug 46768) Usernames of blocking users now display correctly, even if
18556 * (bug 39590) Self-transclusions now show the most up to date result always
18557 after save instead of being a revision behind.
18558 * A bias in wfRandomString() toward digits 1-7 has been corrected. Generated
18559 strings will now start with digits 0 and 8-f as often as they should.
18560 * (bug 45371) Removed Parser_LinkHooks and CoreLinkFunctions classes.
18561 * (bug 41545) Allow <kbd>, <samp>, and <var> to be nested like allowed in html.
18562 * PLURAL magic word no longer causes a PHP notice when no matching form exists.
18563 * (bug 36641) Patrol page links no longer show on non-existent revisions.
18564 * (bug 35810) Pages not linked from Special:RecentChanges or Special:NewPages
18565 are patrollable now.
18566 * (bug 30213) JavaScript for search suggestions is now disabled when the API
18567 is disabled, and AJAX patrolling and watching are now disabled when use of
18568 the write API is not allowed.
18569 * (bug 48294) API: Fix chunk upload async mode.
18570 * (bug 46749) Broken files tracking category removed from pages if an image
18571 with that name is uploaded.
18572 * (bug 14176) System messages that are empty were previously incorrectly treated
18573 as non-existent, causing a fallback to the default. This stopped users from
18574 overriding system messages to make them blank.
18575 * (bug 48319) action=parse no longer returns an error if passed none of 'oldid',
18576 'pageid', 'page', 'title', and 'text' (e.g. if only passed 'summary'). A
18577 warning will instead be issued if 'title' is non-default, unless no props are
18579 * Special:Recentchangeslinked will now include upload log entries
18580 * (bug 41281) Fixed ugly output if file size could not be extracted for
18582 * (bug 50315) list=logevents API module will now output log entries by anonymous
18584 * (bug 38911) Handle headers with rowspan in jquery.tablesorter
18585 * (bug 658) Converted the table of contents on wiki pages from <table> to <div>
18586 and adjusted skin CSS accordingly. The CSS was carefully crafted to be
18587 backwards-compatible in all reasonable cases (uses of the __TOC__ magic word,
18588 the #toc CSS id and the .toc CSS class). However, particularly bad abuse of
18589 the id or the class can possibly break.
18590 * CSSJanus now supports rgb, hsl, rgba, and hsla color syntaxes.
18591 * Special:Listfiles can no longer be sorted by image name when filtering
18592 by user in miser mode.
18593 * (bug 49074) CSSJanus: Handle values of border-radius correctly.
18594 * Handle relative inclusions ({{../name}}) in main namespace with subpages
18595 enabled correctly (previously MediaWiki tried to include Template:Parent/name
18596 instead of just Parent/name).
18597 * Added $wgAPIUselessQueryPages to allow extensions to flag their query pages
18598 for non-inclusion in ApiQueryQueryPages.
18599 * (bug 50870) mediawiki.notification: Notification area should remain visible
18600 when scrolled down.
18601 * (bug 13438) Special:MIMESearch no longer an expensive special page.
18602 * (bug 48342) Fixed a fatal error when $wgValidateAllHtml is set to true and
18603 the function apache_request_headers() function is not available.
18604 * (bug 33399) LivePreview: Re-run wikipage content handlers
18605 (jquery.makeCollapsible, jquery.tablesorter) after preview content is loaded.
18606 * (bug 51891) Fixed PHP notice on Special:PagesWithProp when no properties
18608 * (bug 52006) Corrected documentation of $wgTranscludeCacheExpiry.
18609 * (bug 52077) The APIEditBeforeSave hook is giving the content of the whole
18610 revision as second argument now, rather than just the current section.
18611 * (bug 49694) $wgSpamRegex is now also applied on the new section headline text
18612 adding a new topic on a page
18613 * (bug 41756) Improve treatment of multiple comments on a blank line.
18614 * (bug 51064) Purge upstream caches when deleting file assets.
18615 * (bug 39012) File types with a mime that we do not know the extension for
18616 can no longer be uploaded as an extension that we do know the mime type
18618 * (bug 51742) Add data-sort-value for better sorting of hitcounts Special:Tags
18619 * (bug 26811) On DB error pages, server hostnames are now hidden when both
18620 $wgShowHostnames and $wgShowSQLErrors are false.
18621 * (bug 6200) line breaks in <blockquote> are handled like they are in <div>
18622 * (bug 14931) Default character set now set to 'utf8' when a new MySQL
18623 database is created.
18624 * (bug 47191) Fixed "Column 'si_title' cannot be part of FULLTEXT index"
18625 MySQL error when installing using the binary character set option.
18626 * (bug 45288) Support mysqli PHP extension
18627 * (bug 55818) BREAKING CHANGE: Removed undocumented 'Debug' hook in wfDebug.
18628 This resolves an infinite loop when using $wgDebugFunctionEntry = true.
18629 * (bug 56707) Correct tooltip of "Next n results" on query special pages.
18630 * (bug 56770) mw.util.addPortletLink: Check length before access array index.
18632 === API changes in 1.22 ===
18633 * (bug 25553) The JSON output formatter now leaves forward slashes unescaped
18634 to improve human readability of URLs and similar strings. Also, a "utf8"
18635 option is now provided to use UTF-8 encoding instead of hex escape codes
18636 for most non-ASCII characters.
18637 * (bug 46626) xmldoublequote parameter was removed. Because of a bug, the
18638 parameter has had no effect since MediaWiki 1.16, and so its removal is
18639 unlikely to impact existing clients.
18640 * (bug 47216) action=query&meta=siteinfo&siprop=skins will now indicate which
18641 skin is the default and which are unusable (e.g. listed in $wgSkipSkins).
18642 * (bug 25325) Added support for wlshow filtering (bots/anon/minor/patrolled)
18643 to action=feedwatchlist.
18644 * WDDX formatted output will actually be formatted (and normal output will no
18645 longer be), and will no longer choke on booleans.
18646 * action=opensearch no longer silently ignores the format parameter.
18647 * action=opensearch now supports format=jsonfm.
18648 * list=usercontribs&ucprop=ids will now include the parent revision id.
18649 * BREAKING CHANGE: action=parse no longer returns all langlinks for the page
18650 with prop=langlinks by default. The new effectivelanglinks parameter will
18651 request that the LanguageLinks hook be called to determine the effective
18653 * BREAKING CHANGE: list=allpages, list=langbacklinks, and prop=langlinks do not
18654 apply the new LanguageLinks hook, and thus only consider language links
18655 stored in the database.
18656 * (bug 47219) Allow specifying change type of Wikipedia feed items
18657 * prop=imageinfo now allows setting iiurlheight without setting iiurlwidth
18658 * prop=info now adds the content model and page language of the title.
18659 * New upload log entries will now contain information on the relevant
18660 image (sha1 and timestamp).
18661 * (bug 49239) action=parse now can parse in preview and section preview modes.
18662 * (bug 49259) action=patrol now accepts revision ids.
18663 * (bug 48129) list=blocks&bkip= now correctly handles IPv6 CIDR ranges and
18664 honors $wgBlockCIDRLimit. Note any clients passing invalid values to bkip
18665 will now receive an error, rather than the previous behavior listing all
18667 * (bug 48201) action=parse&text=foo now assumes wikitext if no title is given,
18668 rather than using the content model of the page "API".
18669 * action=watch no longer silently ignores hook abort.
18670 * (bug 50785) action=purge with forcelinkupdate=1 no longer queues refreshLinks
18671 jobs in the job queue for link table updates of pages that use the given page
18672 as a template. Instead, forcerecursivelinkupdate=1 is introduced and should
18673 be used if that behaviour is desirable.
18674 * The 'debugLog' property (enabled by $wgDebugToolbar) no longer sets the log
18675 entry values through ApiResult::content but directly. This changes the JSON
18676 output from an array of objects with content in '*' to an array of strings
18678 * (bug 51342) prop=imageinfo iicontinue now contains the dbkey, not the text
18679 version of the title.
18680 * (bug 52538) action=edit will now use empty text instead of the contents
18681 of section 0 when passed prependtext or appendtext with section=new.
18682 * Support for the 'gettoken' parameter to action=block and action=unblock,
18683 deprecated since 1.20, has been removed.
18684 * (bug 49090) Token-getting functions will fail when using jsonp callbacks.
18685 * (bug 52699) action=upload returns normalized file name on warning
18686 "exists-normalized" instead of filename to be uploaded to.
18687 * (bug 53884) action=edit will now return an error when the specified section
18688 does not exist in the page.
18689 * Added meta=filerepoinfo API module for getting information about foreign
18690 file repositories, and related ForeignAPIRepo methods getInfo and getApiUrl.
18691 * The new query module list=allfileusages to enumerate file usages was added.
18693 === Languages updated in 1.22 ===
18695 MediaWiki supports over 350 languages. Many localisations are updated
18696 regularly. Below only new and removed languages are listed, as well as
18697 changes to languages because of Bugzilla reports.
18699 * Batak Toba (bbc-latn) added.
18700 * (bug 46751) Made Buryat (Russia) (буряад) (bxr) fallback to Russian.
18702 === Other changes in 1.22 ===
18703 * BREAKING CHANGE: Implementation of MediaWiki's JS and JSON value encoding
18705 ** MediaWiki no longer supports PHP installations in which the native JSON
18706 extension is missing or disabled.
18707 ** XmlJsCode objects can no longer be nested inside objects or arrays.
18708 (For Xml::encodeJsCall(), this individually applies to each argument.)
18709 ** The sets of characters escaped by default, along with the precise escape
18710 sequences used, have changed (except for the Xml::escapeJsString()
18711 function, which is now deprecated).
18712 * BREAKING CHANGE: The Services_JSON class has been removed. If necessary,
18713 be sure to upgrade affected extensions at the same time (e.g. Collection).
18714 * redirect.php was removed. It was unused.
18715 * ClickTracking integration was dropped from the mediaWiki.user.bucket
18716 JavaScript function. The 'tracked' option is now ignored.
18717 * BREAKING CHANGE: Legacy skins Simple, MySkin, Chick, Standard and Nostalgia
18718 were all removed. (Nostalgia was moved to an extension.) The SkinLegacy and
18719 LegacyTemplate classes that supported them were removed as well and are now a
18720 part of the Nostalgia extension.
18721 * Event namespace used by jquery.makeCollapsible has been changed from
18722 'mw-collapse' to 'mw-collapsible' for consistency with the module name.
18723 * BREAKING CHANGE: The "ExternalAuth" authentication subsystem was removed,
18724 along with its associated globals of $wgExternalAuthType, $wgExternalAuthConf,
18725 $wgAutocreatePolicy and $wgAllowPrefChange. Affected users are encouraged to
18726 use AuthPlugin for external authentication/authorization needs.
18727 * The Quickbar feature of the legacy skin model and the last remnants of it
18728 throughout the code base have been removed.
18729 * Externaledit/externaldiff preference was removed. Very few users used this
18730 feature, and improper configuration can actually prevent a user from editing
18731 * Calling Linker methods using a skin will now output deprecation warnings.
18732 * (bug 46680) "Return to" links are no longer tagged with rel="next".
18733 * BREAKING CHANGE: mw.util.tooltipAccessKeyRegexp: The match group for the
18734 accesskey character is now $6 instead of $5.
18735 * HipHop compiler (hphpc) support was removed. HipHop VM support (hhvm) was
18737 * A new Special:Redirect page was added, providing lookup by revision ID,
18738 user ID, or file name. The old Special:Filepath page was reimplemented
18739 to redirect through Special:Redirect.
18740 * Monobook: Removed the old conditional stylesheets for Opera 6, 7 and 9.
18741 * Support for XHTML 1.0 has been removed. MediaWiki now only outputs (X)HTML5.
18742 * wikibits: User-agent related globals have been deprecated. The following
18743 properties now default to false and emit mw.log.warn: is_gecko, is_chrome_mac,
18744 is_chrome, webkit_version, is_safari_win, is_safari, webkit_match, is_ff2,
18745 ff2_bugs, is_ff2_win, is_ff2_x11, opera95_bugs, opera7_bugs, opera6_bugs,
18746 is_opera_95, is_opera_preseven, is_opera, and ie6_bugs.
18747 * (bug 48276) MediaWiki will now flash a confirmation message upon successfully
18749 * (bug 40785) mediawiki.legacy.ajax has been marked as deprecated. The following
18750 properties now emit mw.log.warn when accessed: sajax_debug, sajax_init_object,
18751 sajax_do_call and wfSupportsAjax.
18752 * BREAKING CHANGE: meta keywords are no longer supported. A
18753 <meta name="keywords" will no longer be output and OutputPage::addKeyword no
18755 * Methods Title::userCanEditCssSubpage and Title::userCanEditJsSubpage,
18756 deprecated since 1.19, have been removed.
18757 * (bug 50134) Hook functions are no longer required to return a value. When a
18758 hook function does not return a value (or when it returns an explicit null),
18759 processing continues. To abort the hook, a hook function must return an
18760 explicit, boolean false or a string error message. Other falsey values are
18761 tantamount to a 'return true' in earlier versions of MediaWiki.
18762 * BREAKING CHANGE: The EditSectionLink hook was removed after being
18763 deprecated since MediaWiki 1.14. Use DoEditSectionLink instead.
18764 * (bug 48256) The 'editsection-brackets' optional message was removed.
18765 Section edit links' brackets can now be customized using CSS by
18766 styling span.mw-editsection-bracket.
18767 * The usePatrol function in ChangesList has been marked as deprecated.
18768 * (bug 50785) A "null edit", that is, a save action in which no changes to the
18769 page text are made and no revision recorded, will no longer send refreshLinks
18770 jobs to the job table to update pages which use the edited page as a template.
18771 * The LivePreviewPrepare and LivePreviewDone events triggered on "jQuery( mw )"
18772 have been deprecated in favour of using mw.hook.
18773 * The 'showjumplinks' user preference has been removed, jump links are now
18775 * Methods RecentChange::notifyRC2UDP, RecentChange::sendToUDP, and
18776 RecentChange::cleanupForIRC have been deprecated, as it is now the
18777 responsibility of classes implementing the RCFeedFormatter and RCFeedEngine
18778 interfaces to implement the formatting and delivery for recent change
18780 * SpecialPrefixindex methods namespacePrefixForm() and showPrefixChunk() have
18781 been made protected. They were accepting form variance arguments, this is now
18782 using properties in the SpecialPrefixindex class.
18783 * (bug 50310) BREAKING CHANGE: wikibits: Drop support for mwCustomEditButtons.
18784 It defaults to an empty array and emits mw.log.warn when accessed.
18785 * BREAKING CHANGE: Special:Disambiguations has been removed from MediaWiki core.
18786 Functions related to disambiguation pages are now handled by the Disambiguator
18787 extension (https://www.mediawiki.org/wiki/Extension:Disambiguator) (bug
18789 * BREAKING CHANGE: The 'mediawiki.legacy.wikiprintable' module has been removed.
18790 The skins/common/wikiprintable.css file no longer exists. Return value of
18791 Skin#commonPrintStylesheet is ignored. Please use the
18792 'mediawiki.legacy.commonPrint' module instead or base your skin on
18794 * (bug 49629) The hook ExtractThumbParameters has been deprecated in favour
18795 of media handler overriding MediaHandler::parseParamString.
18796 * (bug 46512) The collapsibleNav feature from the Vector extension has been
18797 moved to the Vector skin in core.
18798 * SpecialRecentChanges::addRecentChangesJS() function has been renamed
18799 to addModules() and made protected.
18800 * Methods WatchAction::doWatch and WatchAction::doUnwatch now return a Status
18801 object instead of a boolean.
18802 * Information boxes (CSS classes errorbox, warningbox, successbox) have been
18804 * BREAKING CHANGE: The module 'mediawiki.legacy.IEFixes' has been removed as it
18805 was unused. The file skins/common/IEFixes.js remains but is only used by
18806 wikibits. The file never contained any re-usable components. To use it in a
18807 skin, load 'mediawiki.legacy.wikibits' (which IEFixes depends on) and that
18808 will import IEFixes automatically if user agent conditions are met.
18809 * Code specific to the Math extension was marked as deprecated.
18810 * mediawiki.util: mw.util.wikiGetlink has been renamed to getUrl. (The old name
18811 still works, but is deprecated.)
18815 == MediaWiki 1.21.11 ==
18816 This is a security and maintenance release of the MediaWiki 1.21 branch.
18818 === Changes since 1.21.10 ===
18819 * (bug 65839) SECURITY: Prevent external resources in SVG files.
18820 * (bug 66428) MimeMagic: Don't seek before BOF. This has weird side effects like
18821 only extracting the tail of the file partially or not at all.
18823 == MediaWiki 1.21.10 ==
18824 This is a security and maintenance release of the MediaWiki 1.21 branch.
18826 === Changes since 1.21.9 ===
18827 * (bug 65501) SECURITY: Don't parse usernames as wikitext on
18828 Special:PasswordReset.
18829 * (bug 36356) Add space between two feed links.
18831 == MediaWiki 1.21.9 ==
18832 This is a security and maintenance release of the MediaWiki 1.21 branch.
18834 === Changes since 1.21.8 ===
18835 * (bug 63251) SECURITY: Escape sortKey in pageInfo.
18836 * (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages to
18837 appear blank or with missing text.
18839 == MediaWiki 1.21.8 ==
18840 This is a security and maintenance release of the MediaWiki 1.21 branch.
18842 === Changes since 1.21.7 ===
18843 * (bug 62497) SECURITY: Add CSRF token on Special:ChangePassword.
18844 * (bug 62467) Set a title for the context during import on the cli.
18846 == MediaWiki 1.21.7 ==
18847 This is a maintenance release of the MediaWiki 1.21 branch.
18849 === Changes since 1.21.6 ===
18850 * Use the correct branch of the extensions' git repositories.
18852 == MediaWiki 1.21.6 ==
18853 This is a security release of the MediaWiki 1.21 branch.
18855 === Changes since 1.21.5 ===
18856 * (bug 60771) SECURITY: Disallow uploading SVG files using non-whitelisted
18857 namespaces. Also disallow iframe elements.
18858 * User will get an error including the namespace name if they use a
18859 non-whitelisted namespace.
18860 * (bug 61346) SECURITY: Make token comparison use constant time. It seems like
18861 our token comparison would be vulnerable to timing attacks. This will take
18863 * (bug 61362) SECURITY: API: Don't find links in the middle of api.php links.
18865 == MediaWiki 1.21.5 ==
18866 This is a security release of the MediaWiki 1.21 branch.
18868 === Changes since 1.21.4 ===
18869 * (bug 60339) SECURITY: Sanitize shell arguments to DjVu files, and other media
18872 == MediaWiki 1.21.4 ==
18873 This is a security release of the MediaWiki 1.21 branch.
18875 === Changes since 1.21.3 ===
18876 * (bug 57550) SECURITY: Disallow stylesheets in SVG Uploads
18877 * (bug 58088) SECURITY: Don't normalize U+FF3C to \ in CSS Checks
18878 * (bug 58472) SECURITY: Disallow -o-link in styles
18879 * (bug 58553) SECURITY: Return error on invalid XML for SVG Uploads
18880 * (bug 58699) SECURITY: Fix RevDel log entry information leaks
18882 == MediaWiki 1.21.3 ==
18883 This is a security and maintenance release of the MediaWiki 1.21 branch.
18885 === Changes since 1.21.2 ===
18886 * (bug 53032) SECURITY: Don't cache when a call could autocreate
18887 * (bug 55332) SECURITY: Improve css javascript detection
18888 * (bug 49717) Fix behaviour $wgVerifyMimeType = false; in Upload
18889 * Fix comma errors in various js files
18892 == MediaWiki 1.21.2 ==
18893 This is a security and maintenance release of the MediaWiki 1.21 branch.
18895 === Changes since 1.21.1 ===
18896 * SECURITY: Fix extension detection with 2 .'s
18897 * SECURITY: Support for the 'gettoken' parameter to action=block and
18898 action=unblock, deprecated since 1.20, has been removed.
18899 * SECURITY: Sanitize ResourceLoader exception messages
18900 * Purge upstream caches when deleting file assets.
18901 * Unit test suite now runs the AutoLoader tests. Also fixed the autoloading
18902 entry for the PageORMTableForTesting class though it had no impact.
18904 == MediaWiki 1.21.1 ==
18905 This is a maintenance release of the MediaWiki 1.21 branch.
18907 === Changes since 1.21.0 ===
18908 * An incorrect version number was used for 1.21.0. 1.21.1 has the correct
18910 * A problem with the Oracle SQL table creation was fixed.
18911 * (PdfHandler extension) Fix warning if pdfinfo fails but pdftext succeeds.
18913 == MediaWiki 1.21.0 ==
18915 === Configuration changes in 1.21 ===
18916 * (bug 29374) $wgVectorUseSimpleSearch is now enabled by default.
18917 * Deprecated $wgAllowRealName is removed. Use $wgHiddenPrefs[] = 'realname'
18919 * (bug 39957) Added $wgUnwatchedPageThreshold, specifying minimum count
18920 of page watchers required for the number to be accessible to users
18921 without the unwatchedpages permission.
18922 * $wgBug34832TransitionalRollback has been removed.
18923 * (bug 29472) $wgUseDynamicDates has been removed and its functionality
18926 === New features in 1.21 ===
18927 * (bug 38110) Schema changes (adding or dropping tables, indices and
18928 fields) can be now be done separately from other changes that
18929 update.php makes. This is useful in environments that use database
18930 permissions to restrict schema changes but allow the DB user that
18931 MediaWiki normally runs as to perform other changes that update.php
18932 makes. Schema changes can be run separately. See the file UPGRADE
18933 for more information.
18934 * (bug 34876) jquery.makeCollapsible has been improved in performance.
18935 * Added ContentHandler facility to allow extensions to support other content
18936 than wikitext. See docs/contenthandler.txt for details.
18937 * New feature was developed for showing high-DPI thumbnails for high-DPI mobile
18938 and desktop displays (configurable with $wgResponsiveImages).
18939 * Added new backend to represent and store information about sites and site
18940 specific configuration.
18941 * jQuery upgraded from 1.8.2 to 1.8.3.
18942 * jQuery UI upgraded from 1.8.23 to 1.8.24.
18943 * Added separate fa_sha1 field to filearchive table. This allows sha1
18944 searches with the api in miser mode for deleted files.
18945 * Add initial and programmatic sorting for tablesorter.
18946 * Add the event "sortEnd.tablesorter", triggered after sorting has completed.
18947 * The Job system was refactored to allow for different backing stores for
18948 queues as well as cross-wiki access to queues, among other things. The schema
18949 for the DB queue was changed to support better concurrency and reduce
18951 * Added ApiQueryORM class to facilitate creation of query API modules based on
18952 tables that have a corresponding ORMTable class.
18953 * (bug 40876) Icon for PSD (Adobe Photoshop) file types.
18954 * (bug 40641) Implemented Special:Version/Credits with a list of contributors.
18955 * (bug 7851) Implemented one-click AJAX patrolling.
18956 * The <data>, <time>, <meta>, and <link> elements are allowed within WikiText
18957 for use with Microdata.
18958 * The HTML5 <mark> tag has been whitelisted.
18959 * Added ParserCloned hook for when the Parser object is cloned.
18960 * Added AlternateEditPreview hook to allow extensions to replace the page
18961 preview from the edit page.
18962 * Added EditPage::showStandardInputs:options hook to allow extensions to add
18963 new fields to the "editOptions" area of the edit form.
18964 * Upload stash DB schema altered to improve upload performance.
18965 * The following global functions are now reporting deprecated warnings in
18966 debug mode: wfMsg, wfMsgNoTrans, wfMsgForContent, wfMsgForContentNoTrans,
18967 wfMsgReal, wfMsgGetKey, wfMsgHtml, wfMsgWikiHtml, wfMsgExt, wfEmptyMsg. Use
18968 the Message class, or the global method wfMessage.
18969 * Added $wgEnableCanonicalServerLink, off by default. If enabled, a
18970 <link rel=canonical> tag is added to every page indicating the correct server
18972 * Debug message emitted by wfDebugLog() will now be prefixed with the group
18973 name when its logged to the default log file. That is the case whenever the
18974 group has no key in wgDebugLogGroups, that will help triage the default log.
18975 * (bug 24620) Add types to LogFormatter.
18976 * jQuery JSON upgraded from 2.3 to 2.4.0.
18977 * Added GetDoubleUnderscoreIDs hook, for modifying the list of magic words.
18978 * DatabaseUpdater class has two new methods to ease extensions schema changes:
18979 dropExtensionIndex and renameExtensionIndex.
18980 * New preference type - 'api'. Preferences of this type are not shown on
18981 Special:Preferences, but are still available via the action=options API.
18982 * (bug 39397) Hide rollback link if a user is the only contributor of the page.
18983 * $wgPageInfoTransclusionLimit limits the list size of transcluded articles
18984 on the info action. Default is 50.
18985 * Added action=createaccount to allow user account creation.
18986 * (bug 40124) action=options API also allows for setting of arbitrary
18987 preferences, provided that their names are prefixed with 'userjs-'. This
18988 officially reenables the feature that was undocumented and defective
18989 in MW 1.20 (saving preferences using Special:Preferences cleared any
18990 additional fields) and which has been disabled in 1.20.1 as a part of
18991 a security fix (bug 42202).
18992 * Added option to specify "others" as author in extension credits using
18993 "..." as author name.
18994 * Added the ability to limit the wall clock time used by shell processes,
18995 as well as the CPU time. Configurable with $wgMaxShellWallClockTime.
18996 * Allow memory of shell subprocesses to be limited using Linux cgroups
18997 instead of ulimit -v, which tends to cause deadlocks in recent versions
18998 of ImageMagick. Configurable with $wgShellCgroup.
18999 * Added $wgWhitelistReadRegexp for regex whitelisting.
19000 * (bug 5346) Categories that are redirects will be displayed italic in
19001 the category links section at the bottom of a page.
19002 * (bug 43915) New maintenance script deleteEqualMessages.php.
19003 * You can now create checkbox option matrices through the HTMLCheckMatrix
19004 subclass in HTMLForm.
19005 * WikiText now permits the use of WAI-ARIA's role="presentation" inside of
19006 html elements and tables. This allows presentational markup, especially
19007 tables. To be marked up as such.
19008 * maintenance/sql.php learned the --cluster option. Let you run the script
19009 on some external cluster instead of the primary cluster for a given wiki.
19010 * (bug 20281) test the parsing of inline URLs.
19011 * Added Special:PagesWithProp, which lists pages using a particular page
19013 * Implemented language-specific collations for category sorting for 67 languages
19014 based in latin, greek and cyrillic alphabets. This allows one to *finally* get
19015 articles to be correctly sorted on category pages. They are named
19016 'uca-<langcode>', where <langcode> is one of: af, ast, az, be, bg, br, bs, ca,
19017 co, cs, cy, da, de, dsb, el, en, eo, es, et, eu, fi, fo, fr, fur, fy, ga, gd,
19018 gl, hr, hsb, hu, is, it, kk, kl, ku, ky, la, lb, lt, lv, mk, mo, mt, nl, no,
19019 oc, pl, pt, rm, ro, ru, rup, sco, sk, sl, smn, sq, sr, sv, tk, tl, tr, tt, uk,
19021 * Added 'CategoryAfterPageAdded' and 'CategoryAfterPageRemoved' hooks.
19022 * Added 'HistoryRevisionTools' and 'DiffRevisionTools' hooks.
19023 * Added 'SpecialSearchResultsPrepend' and 'SpecialSearchResultsAppend' hooks.
19024 * (bug 33186) Add image rotation api "imagerotate"
19025 * (bug 34040) Add "User rights management" link on user page toolbox.
19026 * (bug 45526) Add QUnit assertion helper "QUnit.assert.htmlEqual" for asserting
19027 structual equality of HTML (ignoring insignificant differences like
19028 quotmarks, order and whitespace in the attribute list).
19029 * (bug 23393) HTML <hN> headings containing line breaks are now handled
19031 * (bug 45803) Whitespace within == Headline == syntax and within <hN> headings
19032 is now non-significant and not preserved in the HTML output.
19034 === Bug fixes in 1.21 ===
19035 * (bug 40353) SpecialDoubleRedirect should support interwiki redirects.
19036 * (bug 40352) fixDoubleRedirects.php should support interwiki redirects.
19037 * (bug 9237) SpecialBrokenRedirect should not list interwiki redirects.
19038 * (bug 34960) Drop unused fields rc_moved_to_ns and rc_moved_to_title from
19039 recentchanges table.
19040 * (bug 32951) Do not register internal externals with absolute protocol,
19041 when server has relative protocol.
19042 * (bug 39005) When purging proxies listed in $wgSquidServers using HTTP PURGE
19043 method requests, we now send a Host header by default, for Varnish
19044 compatibility. This also works with Squid in reverse-proxy mode. If you wish
19045 to support Squid configured in forward-proxy mode, set
19046 $wgSquidPurgeUseHostHeader to false.
19047 * (bug 37020) sql.php with readline eats semicolon.
19048 * (bug 11748) Properly handle optionally-closed HTML tags when Tidy is
19049 disabled, and don't wrap HTML-syntax definition lists in paragraphs.
19050 * (bug 41409) Diffs while editing an old revision should again diff against the
19052 * (bug 41494) Honor $wgLogExceptionBacktrace when logging non-API exceptions
19053 caught during API execution.
19054 * (bug 37963) Fixed loading process for user options.
19055 * (bug 26995) Update filename field on Upload page after having sanitized it.
19056 * (bug 41793) Contribution links to users with 0 edits on Special:ListUsers
19057 didn't show up red.
19058 * (bug 41899) A PHP notice no longer occurs when using the "rvcontinue" API
19060 * (bug 42036) Account creation emails now contain canonical (not
19061 protocol-relative) URLs.
19062 * (bug 41990) Fix regression: API edit with redirect=true and lacking
19063 starttimestamp and basetimestamp should not cause an edit conflict.
19064 * (bug 41706) EditPage: Preloaded page should be converted if possible and
19066 * (bug 41886) Rowspans are no longer exploded by tablesorter until the table is
19068 * (bug 2865) User interface HTML elements don't use lang attribute.
19069 (completed the fix by adding the lang attribute to firstHeading).
19070 * (bug 42173) Removed namespace prefixes on Special:UncategorizedCategories.
19071 * (bug 36053) Log in "returnto" feature forgets query parameters if no
19072 title parameter was specified.
19073 * (bug 42410) API action=edit now returns correct timestamp for the new edit.
19074 * (bug 14901) Email notification mistakes log action for new page creation.
19075 Enotif no longer sends "page has been created" notifications for some log
19076 actions. The following events now have a correct message: page creation,
19077 deletion, move, restore (undeletion), change (edit). Parameter
19078 $CHANGEDORCREATED is deprecated in 'enotif_body' and scheduled for removal in
19080 * (bug 457) In the sidebar of Vector, CologneBlue, Monobook, and Monobook-based
19081 skins, the heading levels have been changed from (variously per skin)
19082 <h4>, <h5> or <h6> to only <h3>s, with a <h2> hidden heading above them.
19083 If you are styling or scripting the headings in a custom way, this change
19084 will require updates to your site's CSS or JS.
19085 * (bug 41342) jquery.suggestions should cancel any active (async) fetches
19086 before it triggers another fetch.
19087 * (bug 42184) $wgUploadSizeWarning missing second variable.
19088 * (bug 34581) removeUnusedAccounts.php maintenance script now ignores newuser
19089 log when determining whether an account is used.
19090 * (bug 43379) Gracefully fail if rev_len is unavailable for a revision on the
19092 * (bug 42949) API no longer assumes all exceptions are MWException.
19093 * (bug 41733) Hide "New user message" (.usermessage) element from printable
19095 * (bug 39062) Special:Contributions will display changes that don't have
19096 a parent id instead of just an empty bullet item.
19097 * (bug 37209) "LinkCache doesn't currently know about this title" error fixed.
19098 * wfMerge() now works if $wgDiff3 contains spaces
19099 * (bug 43052) mediawiki.action.view.dblClickEdit.dblClickEdit should trigger
19100 ca-edit click instead opening URL directly.
19101 * (bug 43964) Invalid value of "link" parameter in <gallery> no longer produces
19103 * (bug 44775) The username field is not pre-filled when creating an account.
19104 * (bug 45069) wfParseUrl() no longer produces a PHP notice if passed a "mailto:"
19105 URL without address
19106 * (bug 45012) Creating an account by e-mail can no longer show a
19107 "password mismatch" error.
19108 * (bug 44599) On Special:Version, HEADs for submodule checkouts (e.g. for
19109 extensions) performed using Git 1.7.8+ should now appear.
19110 * (bug 42184) $wgUploadSizeWarning missing second variable
19111 * (bug 40326) Check if files exist with a different extension during uploading
19112 * (bug 34798) Updated CSS for Atom/RSS recent changes feeds to match on-wiki
19114 * (bug 42430) Calling numRows on MySQL no longer propagates unrelated errors.
19115 * (bug 44719) Removed mention of non-existing maintenance/migrateCurStubs.php
19116 script in includes/DefaultSettings.php
19117 * (bug 45143) jquery.badge: Treat non-Latin variants of zero as zero as well.
19118 * (bug 46151) mwdocgen.php should not ignore exit code of doxygen command.
19119 * (bug 41889) Fix $.tablesorter rowspan exploding for complex cases.
19121 === API changes in 1.21 ===
19122 * prop=revisions can now report the contentmodel and contentformat.
19123 See docs/contenthandler.txt.
19124 * action=edit and action=parse now support contentmodel and contentformat
19125 parameters to control the interpretation of page content.
19126 See docs/contenthandler.txt for details.
19127 * (bug 35693) ApiQueryImageInfo now suppresses errors when unserializing
19129 * (bug 40111) Disable minor edit for page/section creation by API.
19130 * (bug 41042) Revert change to action=parse&page=... behavior when the page
19132 * (bug 27202) Add timestamp sort to list=allimages.
19133 * (bug 43137) Don't return the sha1 of revisions through the API if the content
19134 is revision-deleted.
19135 * ApiQueryImageInfo now also returns imageinfo for redirects.
19136 * list=alltransclusions added to enumerate every instance of page embedding
19137 * list=alllinks & alltransclusions now allow both 'from' and 'continue' in
19138 the same query. When both are present, 'from' is simply ignored.
19139 * list=alllinks & alltransclusions now allow 'unique' in generators, to yield
19140 a list of all link/template target pages instead of source pages.
19141 * BREAKING CHANGE: list=logevents output format changed for details of some log
19142 types. Specifically, details that were formerly reported under a key like
19143 "4::foo" will now be reported under a key of simply "foo".
19144 * BREAKING CHANGE: '??_badcontinue' error code was changed to '??badcontinue'
19145 for all query modules.
19146 * ApiQueryBase adds 'badcontinue' error code if module has 'continue' parameter.
19147 * (bug 35885) Removed version parameter and all getVersion() methods.
19148 * action=options now takes a "resetkinds" option, which allows only resetting
19149 certain types of preferences when the "reset" option is set.
19150 * (bug 36751) ApiQueryImageInfo now returns imageinfo for the redirect target
19151 when queried with &redirects=.
19152 * (bug 31849) ApiQueryImageInfo no longer gets confused when asked for info on
19153 a redirect and its target.
19154 * (bug 43849) ApiQueryImageInfo no longer throws exceptions with ForeignDBRepo
19156 * On error, any warnings generated before that error will be shown in the
19158 * action=help supports generalized submodules (modules=query+value),
19159 querymodules obsolete
19160 * ApiQueryImageInfo continuation is more reliable. The only major change is
19161 that the imagerepository property will no longer be set on page objects not
19162 processed in the current query (i.e. non-images or those skipped due to
19164 * Add supports for all pageset capabilities - generators, redirects,
19165 converttitles to action=purge and action=setnotificationtimestamp.
19166 * (bug 43251) prop=pageprops&ppprop= now accepts multiple props to query.
19167 * ApiQueryImageInfo will now limit the number of calls to File::transform made
19168 in any one query. If there are too many, iicontinue will be returned.
19169 * action=query&meta=siteinfo&siprop=general will now return the regexes used for
19170 link trails and link prefixes. Added for Parsoid support.
19171 * Added an API query module list=pageswithprop, which lists pages using a
19172 particular page property.
19173 * Added an API query module list=pagepropnames, which lists all page prop names
19174 currently in use on the wiki.
19175 * (bug 44921) ApiMain::execute() will now return after the CORS check for an
19176 HTTP OPTIONS request.
19177 * (bug 44923) action=upload works correctly if the entire file is uploaded in
19179 * Added 'continue=' parameter to streamline client iteration over complex query
19181 * (bug 44909) API parameters may now be marked as type "upload", which is now
19182 used for action=upload's 'file' and 'chunk' parameters. This type will raise
19183 an error during parameter validation if the parameter is given but not
19184 recognized as an uploaded file.
19185 * (bug 44244) prop=info may now return the number of people watching each page.
19186 * (bug 33304) list=allpages will no longer return duplicate entries when
19187 querying protection.
19188 * (bug 33304) list=allpages will now find really old indefinite protections.
19189 * (bug 45937) meta=allmessages will report a syntactically invalid lang as a
19190 proper error instead of as an uncaught exception.
19191 * (bug 25325) added support for wlshow filtering (bots/anon/minor/patrolled)
19192 to action=feedwatchlist
19193 * WDDX formatted output will actually be formatted (and normal output will no
19194 longer be), and will no longer choke on booleans.
19196 === API internal changes in 1.21 ===
19197 * For debugging only, a new global $wgDebugAPI removes many API restrictions
19199 Never use on the production servers, as this flag introduces security holes.
19200 Whenever enabled, a warning will also be added to all output.
19201 * ApiModuleManager now handles all submodules (actions,props,lists) and
19203 * Query stores prop/list/meta as submodules
19204 * ApiPageSet can now be used in any action to process titles/pageids/revids or
19206 * BREAKING CHANGE: ApiPageSet constructor now has two params instead of three,
19207 with only the first one keeping its meaning. ApiPageSet is now derived from
19209 * BREAKING CHANGE: ApiQuery::newGenerator() and executeGeneratorModule() were
19211 * ApiQueryGeneratorBase::setGeneratorMode() now requires a pageset param.
19212 * $wgAPIGeneratorModules is now obsolete and will be ignored.
19213 * Added flags ApiResult::OVERRIDE and ADD_ON_TOP to setElement() and addValue()
19214 * Internal API calls will now include <warnings> in case of unused parameters
19216 === Languages updated in 1.21 ===
19218 MediaWiki supports over 350 languages. Many localisations are updated
19219 regularly. Below only new and removed languages are listed, as well as
19220 changes to languages because of Bugzilla reports.
19222 * South Azerbaijani (azb) added.
19223 * (bug 30040) Autonym for nds-nl is now 'Nedersaksies' (was 'Nedersaksisch').
19224 * (bug 45436) Autonym for pi (Pali) is now 'पालि' (was ''पाळि').
19225 * (bug 34977) Now formatted numbers in Spanish use space as separator
19226 for thousands, as mandated by the Real Academia Española.
19227 * (bug 35031) Kurdish formatted numbers now use period and comma
19228 as separators for thousands and decimals respectively.
19230 === Other changes in 1.21 ===
19231 * BREAKING CHANGE: (bug 44385) Removed the jquery.collapsibleTabs module and
19232 moved it to the Vector extension. It was entirely Vector-extension-specific,
19233 deeply interconnected with the extension, and this functionality really
19234 belongs to the extension instead of the skin anyway. In the unlikely case you
19235 were using it, you have to either copy it to your extension, or install the
19236 Vector extension (and possibly disable its features using config settings if
19237 you don't want them).
19238 * Experimental IBM DB2 support was removed due to lack of interest and
19240 * BREAKING CHANGE: Filenames of maintenance scripts were standardized into
19241 lowerCamelCase format, and made more explicit:
19242 - clear_stats.php -> clearCacheStats.php
19243 - clear_interwiki_cache.php -> clearInterwikiCache.php
19244 - initStats.php -> initSiteStats.php
19245 - proxy_check.php -> proxyCheck.php
19246 - stats.php -> showCacheStats.php
19247 - showStats.php -> showSiteStats.php.
19248 Class names were renamed accordingly:
19249 - clear_stats -> ClearCacheStats
19250 - InitStats -> InitSiteStats
19251 - CacheStats -> ShowCacheStats
19252 - ShowStats -> ShowSiteStats.
19253 * BREAKING CHANGE: (bug 38244) Removed the mediawiki.api.titleblacklist module
19254 and moved it to the TitleBlacklist extension.
19258 == MediaWiki 1.20.8 ==
19259 This is a security release of the MediaWiki 1.20 branch.
19261 === Changes since 1.20.7 ===
19262 * (bug 53032) SECURITY: Don't cache when a call could autocreate
19263 * (bug 55332) SECURITY: Improve css javascript detection
19264 * (bug 49717) Fix behaviour $wgVerifyMimeType = false; in Upload
19265 * Fix comma errors in various js files
19268 == MediaWiki 1.20.7 ==
19269 This is a security release of the MediaWiki 1.20 branch.
19271 === Changes since 1.20.6 ===
19272 * SECURITY: Fix extension detection with 2 .'s
19273 * SECURITY: Token-getting functions will fail when using jsonp callbacks.
19274 * SECURITY: Sanitize ResourceLoader exception messages
19275 * Purge upstream caches when deleting file assets.
19277 == MediaWiki 1.20.6 ==
19278 This is a security and maintenance release of the MediaWiki 1.20 branch.
19280 === Changes since 1.20.5 ===
19281 * (bug 48306) SECURITY: Run file validation checks on chunked uploads, and
19282 chunks of upload, during the upload process.
19283 * (bug 44327) mediawiki.user: Use session ID instead of 1-year cross-session
19285 * (bug 47202) wikibits: FF2Fixes.css should not be loaded in Firefox 20.
19286 * (bug 31044) Make ResourceLoader behave in read-only mode
19288 == MediaWiki 1.20.5 ==
19289 This is a security and maintenance release of the MediaWiki 1.20 branch.
19291 === Changes since 1.20.4 ===
19292 * (bug 46590) Add hook AbortChangePassword to Special:ChangePassword
19293 * (bug 47304) SECURITY: Check SVG xml encoding against whitelist
19294 * Localisation updates from http://translatewiki.net.
19295 * mwdocgen.php: Implement --version option.
19296 * Remove svnstat stuff used in Doxygen generation
19297 * (bug 43594) Correctly suppress warnings that were missed after the upstream
19298 * PHP change to E_STRICT being included in E_ALL.
19300 == MediaWiki 1.20.4 ==
19301 This is a security release of the MediaWiki 1.20 branch.
19303 === Changes since 1.20.3 ===
19304 * (bug 47251) SECURITY: Disable external entities in Import
19305 * (bug 46859) SECURITY: Disable external entities in XMLReader
19306 * (bug 46084) SECURITY: Sanitize $limitReport before outputting
19308 == MediaWiki 1.20.3 ==
19309 This is a security and maintenance release of the MediaWiki 1.20 branch.
19311 === Changes since MediaWiki 1.20.2 ===
19312 * New preference type - 'api'. Preferences of this type are not shown on
19313 Special:Preferences, but are still available via the action=options API.
19315 * (bug 44010) Context is passed to UserGetLanguageObject.
19316 * The recursion guard on RequestContext::getLanguage() was weakened.
19317 * (bug 40585) Don't drop 'step="any"' in HTML input fields.
19318 * (bug 44024) Fixed problems in ObjectCache when using XCache.
19319 * (bug 44010) FauxRequest leaked cookie data from primary request.
19320 * (bug 44135/bug 42441) Pass '2' instead of 'true' to CURLOPT_SSL_VERIFYHOST
19321 * (bug 43518) API action=unblock should return the user name, not the full user
19323 * (bug 45355) Prevent read of arbitrary files through mwdoc-filter.php
19325 == MediaWiki 1.20.2 ==
19326 This is a maintenance release of the MediaWiki 1.20 branch
19328 === Changes since MediaWiki 1.20.1 ===
19329 * (bug 42638) Fix API action=options&reset=1 & unit tests.
19330 * (bug 42370) Fixed backport of 60cc060 to use mDoneWrites — caused
19331 * (bug 42592) User rights, preferences and other things are not saving in
19334 == MediaWiki 1.20.1 ==
19335 This is a security release of the MediaWiki 1.20 branch
19337 === Changes since 1.20.0 ===
19338 * (bug 42202) Validate options to prevent html injection
19339 * (bug 40995) Prevent session fixation in Special:UserLogin (CVE-2012-5391)
19340 * (bug 41400) Prevent linker regex from exceeding PCRE backtrack limit
19341 * Javscript Lint fixes
19342 * (bug 40632) Remove CleanupPresentationalAttributes feature
19343 * [Database] Fixed case where trx idle callbacks might be lost.
19345 == MediaWiki 1.20.0 ==
19347 === PHP 5.3 now required ===
19348 Since 1.20, the lowest supported version of PHP is now 5.3.2. Please
19349 upgrade PHP if you have not done so prior to upgrading MediaWiki.
19351 === Configuration changes in 1.20 ===
19352 * $wgGitRepositoryViewers defines a mapping from Git remote repository to the
19353 Gitweb instance URL used in Special:Version.
19354 * `$wgUsePathInfo = true;` is no longer needed to make $wgArticlePath work on
19355 servers using like nginx, lighttpd, and apache over fastcgi. MediaWiki now
19356 always extracts path info from REQUEST_URI if it's available.
19357 * The user right 'upload_by_url' is no longer given to sysops by default.
19358 This only affects installations which have $wgAllowCopyUploads set to true.
19359 * Removed f-prot support from $wgAntivirusSetup.
19360 * New variable $wgDBerrorLogTZ to provide dates in the error log in a
19361 different timezone than the wiki timezone set by $wgLocaltimezone.
19362 * New variables $wgDBssl and $wgDBcompress to enable SSL and compression for
19363 database connections, if either are available for the selected DB type.
19364 * $wgUseCombinedLoginLink now defaults to false, making MediaWiki output
19365 separate login and create account links by default.
19367 === New features in 1.20 ===
19368 * Added TitleIsAlwaysKnown hook which gets called when determining if a page
19370 * Added NamespaceIsMovable hook which gets called when determining if pages in a
19371 certain namespace can be moved.
19372 * Added SpecialPageBeforeExecute hook which gets called before
19373 SpecialPage::execute.
19374 * Added SpecialPageAfterExecute hook which gets called after
19375 SpecialPage::execute.
19376 * Added ORMTable, ORMRow and ORMResult classes for additional abstraction of
19377 database interaction.
19378 * Added CacheHelper and associated SpecialCachedPage and CachedAction helper
19380 * (bug 32341) Add upload by URL domain limitation.
19381 * &useskin=default will now always display the default skin. Useful for users
19382 with a preference for the non-default skin to look at something using the
19384 * (bug 27619) Remove preference option to display broken links as link?
19385 * (bug 34896) jQuery JSON plugin upgraded to v2.3 (2011-09-17).
19386 * (bug 34302) Add CSS classes to email fields in user preferences.
19387 * Introduced $wgDebugDBTransactions to trace transaction status (currently
19389 * (bug 23795) Add parser itself to ParserMakeImageParams hook.
19390 * Introduce a cryptographic random number generator source api for use when
19391 generating various tokens.
19392 * (bug 30963) Option on Special:Prefixindex and Special:Allpages to not show
19394 * (bug 18062) New message when edit or create the local page of a shared file.
19395 * (bug 22870) Separate interface message when creating a page.
19396 * (bug 17615) nosummary option should be reassigned on preview/captcha.
19397 * (bug 34355) Add a variable and parser function for the namespace number.
19398 * (bug 35649) Special:Version now shows hashes of extensions checked out from
19400 * (bug 35728) Git revisions are now linked on Special:Version.
19401 * "Show Changes" on default messages shows now diff against default message text
19402 * (bug 23006) create #speciale parser function.
19403 * generateSitemap can now optionally skip redirect pages.
19404 * (bug 27757) New API command just for retrieving tokens (not page-based).
19405 * Added GitViewers hook for extensions using external git repositories to have a
19406 web-based repository viewer linked to from Special:Version.
19407 * Memcached debug logs can now be sent to their own file logs by setting
19408 $wgDebugLogFile['memcached'] to some filepath.
19409 * (bug 35685) api.php URL and other entry point URLs are now listed on
19411 * Edit notices can now be translated.
19412 * jQuery upgraded to 1.8.2.
19413 * jQuery UI upgraded to 1.8.23.
19414 * QUnit upgraded from v1.2.0 to v1.10.0.
19415 * (bug 37604) jquery.cookie upgraded to 2011 version.
19416 * (bug 22887) Add warning and tracking category for preprocessor errors
19417 * (bug 31704) Allow selection of associated namespace on the watchlist
19418 * (bug 5445) Now remove autoblocks when a user is unblocked.
19419 * Added $wgLogExceptionBacktrace, on by default, to allow logging of exception
19421 * Added device detection for determining device capabilities.
19422 * QUnit.newMwEnvironment now supports passing a custom setup and/or teardown
19423 function. Arguments signature has changed. First arguments is now an options
19424 object of which 'config' can be a property. Previously 'config' itself was the
19425 first and only argument.
19426 * New getCreator and getOldestRevision methods added to WikiPage class
19427 * (bug 4220) the XML dump format schema now have unique identity constraints
19428 for page and revision identifiers. Patch by Elvis Stansvik.
19429 * cleanupSpam.php now can delete spam pages if --delete was specified instead of
19431 * Added new hook ChangePasswordForm to allow adding of additional fields in
19432 Special:ChangePassword
19433 * Added new function getDomain to AuthPlugin for getting a user's domain
19434 * (bug 23427) New magic word {{PAGEID}} which gives the current page ID.
19435 Will be null on previewing a page being created.
19436 * (bug 37627) UserNotLoggedIn() exception to show a generic error page whenever
19437 a user is not logged in.
19438 * Watched status in changes lists are no longer indicated by <strong></strong>
19439 tags with class "mw-watched". Instead, each line now has a class
19440 "mw-changeslist-line-watched" or "mw-changeslist-line-not-watched", and the
19441 title itself is surrounded by <span></span> tags with class "mw-title".
19442 * Added ContribsPager::reallyDoQuery hook allowing extensions to data to
19444 * Added new hook ParserAfterParse to allow extensions to affect parsed output
19445 after the parse is complete but before block level processing, link holder
19446 replacement, and so on.
19447 * (bug 34678) Added InternalParseBeforeSanitize hook which gets called during
19448 Parser's internalParse method just before the parser removes
19449 unwanted/dangerous HTML tags.
19450 * Added new hook AfterFinalPageOutput to allow modifications to buffered page
19451 output before sent to the client.
19452 * (bug 36783) Implement jQuery Promise interface in mediawiki.api module.
19453 * Make dates in sortable tables sort according to the page content language
19454 instead of the site content language
19455 * (bug 37926) Deleterevision will no longer allow users to delete log entries,
19456 the new deletelogentry permission is required for this.
19457 * (bug 14237) Allow PAGESINCATEGORY to distinguish between 'all', 'pages',
19458 'files' and 'subcats'
19459 * (bug 38362) Make Special:Listuser includeable on wiki pages.
19460 * Added support in jquery.localize for placeholder attributes.
19461 * (bug 38151) Implemented mw.user.getRights for getting and caching the current
19462 user's user rights.
19463 * Session storage can now configured independently of general object cache
19464 storage, by using $wgSessionCacheType. $wgSessionsInMemcached has been
19465 renamed to $wgSessionsInObjectCache, with the old name retained for backwards
19466 compatibility. When this feature is enabled, the expiry time can now be
19467 configured with $wgObjectCacheSessionExpiry.
19468 * Added a Redis client for object caching.
19469 * Implemented mw.user.getGroups for getting and caching user groups.
19470 * (bug 37830) Added $wgRequirePasswordforEmailChange to control whether password
19471 confirmation is required for changing an email address or not.
19472 * HTMLForm mutators can now be chained (they return $this)
19473 * A new message, "api-error-filetype-banned-type", is available for formatting
19474 API upload errors due to the file extension blacklist.
19475 * New hook 'ParserTestGlobals' allows to set globals before running parser
19477 * Allow importing pages as subpage.
19478 * Add lang and hreflang attributes to language links on Login page.
19479 * (bug 22749) Create Special:MostInterwikis.
19480 * Show change tags when transclude Special:Recentchanges(linked) or
19482 * (bug 23226) Add |class= parameter to image links in order to add class(es) to
19484 * (bug 39431) SVG animated status is now shown in long description.
19485 * (bug 39376) jquery.form upgraded to 3.14.
19486 * SVG files will now show the actual width in the SVG's specified units
19487 in the metadata box.
19488 * Added ResourceLoader module "jquery.jStorage" (v0.3.0, http://jStorage.info/).
19489 * (bug 39273) Added AJAX support for "Show changes" (diff) in LivePreview.
19490 * Added ResourceLoader module "jquery.badge".
19491 * mw.util.$content now points to the overall content area in the skin rather
19492 than just page text content area. If you need the old behavior please use
19493 $( '#mw-content-text').
19494 * jsMessage has been replaced with a floating bubble notification system
19495 complete with auto-hide, multi-message support, and message replacement tags.
19496 * jquery.messageBox which appears to be unused by both core and extensions has
19498 * (bug 34939) Made link parsing insensitive ([HttP://]).
19499 * (bug 40072) Add CSS classes to items in output of ChangesList pages.
19500 * Added $wgCopyUploadProxy global to define which proxy to use for copy
19502 * (bug 40448) mediawiki.legacy.mwsuggest has been replaced with a new module,
19503 mediawiki.searchSuggest, based on SimpleSearch from Extension:Vector.
19505 === Known issues in 1.20.0 ===
19506 These are issues that we're targeting to be fixed in a later release
19507 in the 1.20 series. Issues may be added or removed from this list as
19508 we see fit. For now, it is comprised of those bugs on the 1.20.0
19509 milestone in Bugzilla.
19511 * (bug 35894): Reports of secret key generation "hanging" on windows
19512 This is probably a bug that has been fixed in PHP. If you run
19513 into this, try upgrading your PHP.
19514 * (bug 38334): PHP Notice: Undefined index: href in /www/w/skins/Vector.php on
19516 We think this is a problem in some extension. If you see this,
19517 try disabling your extensions and check out the logging patch on
19518 this bug. Or try this patch:
19519 <https://gerrit.wikimedia.org/r/#/c/27937/1/skins/Vector.php>
19520 * (bug 39268): [Regression] Toolbar inserts in main textarea only (instead of
19521 the focussed textarea)
19522 This should only be an issue if you are using the ProofreadPage
19524 * (bug 40641): Clicking "others" in Special:Version asks to download a file
19525 If you encounter this, you can tell your webserver to serve the
19526 CREDITS file with text/plain MIME type to fix it.
19528 === Bug fixes in 1.20 ===
19529 * (bug 40939): [Regression] InfoAction: Call to a member function getUserText()
19531 * (bug 40780): searchsuggest-containing line ("containing...") doesn't include
19533 * (bug 37714): [Regression] Incomplete log entries
19534 * (bug 27202): API: Add timestamp sort to list=allimages
19535 * (bug 30245) Use the correct way to construct a log page title.
19536 * (bug 34237) Regenerate an empty user_token and save to the database
19537 when we try to set the user's cookies for login.
19538 * (bug 32210) New edit emails for watched pages always provide a link to the
19539 edit which triggered the mail.
19540 * (bug 12021) Added user talk link on Special:Listusers.
19541 * (bug 34445) section edit and TOC hide/show links are excluded from selection
19542 and copy/paste on supporting browsers.
19543 * (bug 34428) Fixed incorrect hash mismatch errors in the DiffHistoryBlob
19544 history compression method.
19545 * (bug 34702) Localised parentheses are now used in more special pages.
19546 * (bug 34723) When editing a script page on a RTL wiki the textbox should be
19548 * (bug 34762) Calling close() on a DatabaseBase object now clears the
19550 * (bug 34863) Show deletion log extract on non-existent file pages if
19552 * (bug 28019) Let ?preloadtitle=foo be passed on to target of
19553 Special:MyPage and Special:MyTalk.
19554 * (bug 34929) Show the correct diff when a section edit is rejected by the spam
19556 * (bug 15816) Add a switch for SETting the search_path (Postgres).
19557 * (bug 34521) Returning to the previous page after logging in loses any array-
19558 valued parameters in the query string.
19559 * (bug 34735) Updated compressOld.php documentation to mention the different
19560 usages of -s and -n parameters depending on compression type.
19561 * (bug 13896) Rendering of devanagari numbers in automatic '#' number lists.
19562 * (bug 33689) Upgrade to 1.19 on Postgres fails due to incomplete query when
19563 trying to defer foreign key for externallinks.
19564 * (bug 32748) Printer friendly version of article decode Unicode chars as a
19565 pretty IRI in footer.
19566 * Removed white border around thumbnails in galleries.
19567 * (bug 31236) "Next" and "Previous" buttons are shown incorrectly in
19568 an RTL environment.
19569 * (bug 35749) Updated maintenance/checkSyntax.php to use Git instead of
19570 Subversion when invoked with the --modified option.
19571 * (bug 35069) On history pages, the " . . " separator after the number of
19572 characters changed in a revision is now suppressed if no text would follow.
19573 * (bug 18704) Add a unique CSS class or ID to the tagfilter table row at
19575 * (bug 33564) transwiki import sometimes result in invalid title.
19576 * (bug 35572) Blocks appear to succeed even if query fails due to wrong DB
19578 * (bug 31757) Add a word-separator between help-messages in HTMLForm
19579 * (bug 30410) Removed deprecated $wgFilterCallback and the 'filtered' API error.
19580 * (bug 32604) Some messages needs escaping of wikitext inside username.
19581 * (bug 36537) Rename wfArrayToCGI to wfArrayToCgi for consistency with
19583 * (bug 25946) The message on the top of Special:RecentChanges is now displayed
19584 in user language instead of content language.
19585 * (bug 35264) Wrong type used for <ns> in export.xsd
19586 * (bug 24985) Use $wgTmpDirectory as the default temp directory so that people
19587 who don't have access to /tmp can specify an alternative.
19588 * (bug 27283) SqlBagOStuff breaks PostgreSQL transactions.
19589 * (bug 35727) mw.Api ajax() should put token parameter last.
19590 * (bug 37708) mw.Uri.clone() should make a deep copy.
19591 * (bug 38024) ResourceLoader should not create empty stylesheets for modules
19592 that don't have stylesheets.
19593 * (bug 36812) Special:ActiveUsers "Hide bots" should hide users from any group
19594 having the "bot" user right, instead of just the default "bot" user group.
19595 * (bug 35082) mw.util.addPortletLink incorrectly adds link to mutiple <ul> tags.
19596 * (bug 36991) jquery.tablesorter should extract date sort format from date
19597 string instead of global config. Dates like "April 1 2012" and "1 April 2012"
19598 now sort correctly regardless of the content language's DefaultDateFormat.
19599 * (bug 31895) mw.loader mode now correct when triggered from a $.fn.ready
19600 handler that is bound before mediawiki.js's handler (e.g. browser-userscripts
19601 like greasemonkey).
19602 * (bug 38152) jquery.tablesorter: Use .data() instead of .attr(), so that live
19603 values are used instead of just the fixed values from when the tablesorter
19605 * (bug 38093) Gender of changed user groups missing in Special:Log/rights
19606 * (bug 35893) Special:Block needs to load mediawiki.special.block.js.
19607 * (bug 37331) ResourceLoader modules sometimes execute twice in Firefox
19608 * (bug 31644) GlobalUsage, CentralAuth and AbuseLog extensions should not use
19609 insecure links to foreign wikis in the WikiMap.
19610 * (bug 36073) Avoid duplicate element IDs on File pages.
19611 * (bug 25095) Special:Categories should also include the first relevant item
19612 when "from" is filled.
19613 * (bug 35526) jquery.tablesorter now uses a stable sort.
19614 * (bug 38953) --memory-limit switch not working for runJobs.php.
19615 * (bug 33037) Make subpage of Special:newfiles control how many files
19616 are returned, like in previous versions.
19617 * (bug 36524) "Show" options on Special:RecentChanges and
19618 Special:RecentChangesLinked are now remembered between successive clicks.
19619 * (bug 26069) Page title is no longer "Error" for all error pages.
19620 * (bug 39297) Show warning if thumbnail of animated image will not be animated.
19621 * (bug 38249) Parser will throw an exception instead of outputting gibberish if
19622 PCRE is compiled without support for unicode properties.
19623 * (bug 30390) Suggested file name on Special:Upload should not contain
19624 illegal characters.
19625 * EXIF below sea level GPS altitude data is now shown correctly.
19626 * (bug 39284) jquery.tablesorter should not consider "."" or "?"" to be a
19628 * (bug 39273) "Show changes" should not be incorrectly displayed in the Live
19630 * Made body-content lang attribute honor the variant language when it is set.
19631 * (bug 36761) "Mark pages as visited" now submits previously established filter
19633 * (bug 39635) PostgreSQL LOCK IN SHARE MODE option is a syntax error.
19634 * (bug 36329) Accesskey tooltips for Firefox 14 on Mac should use "ctrl-option-"
19636 * (bug 32552) Drop unused database field cat_hidden from table category.
19637 * (bug 24502) Do not allow multiple language links to the same language.
19638 * (bug 40214) Category pages no longer use deprecated "width" HTML attribute.
19639 * (bug 39941) Add missing stylesheets to the installer pages
19640 * In HTML5 mode, allow new input element types values (such as color, range..)
19641 * (bug 36151) mw.Title: Don't limit extension in title parsing.
19642 * (bug 38158) jquery.byteLimit sometimes causes an unexpected 0 maxLength being
19644 * (bug 38163) jquery.byteLimit incorrectly limits input when using methods other
19645 than basic per-char typing.
19646 * (bug 34495) patrol log now credit the user patrolling (instead of patrolled
19648 * (bug 31676) ResourceLoader should work around IE stylesheet limit.
19649 * (bug 40498) ResourceLoader should not output an empty "@media print { }"
19651 * (bug 40500) ResourceLoader should not ignore media-type for urls in debug
19653 * (bug 40660) ResourceLoaderWikiModule should not convert " " to a space
19654 for pages from the MediaWiki-namespace.
19655 * (bug 40329) (bug 40632) Removed CleanupPresentationalAttributes feature.
19657 === API changes in 1.20 ===
19658 * (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
19659 * (bug 34313) MediaWiki API intro message about "HTML format" should mention
19660 the format parameter.
19661 * (bug 32384) Allow descending order for list=watchlistraw.
19662 * (bug 31883) Limit of bkusers of list=blocks and titles of action=query is
19663 not documented in API help.
19664 * (bug 32492) API now allows editing using pageid.
19665 * (bug 32497) API now allows changing of protection level using pageid.
19666 * (bug 32498) API now allows comparing pages using pageids.
19667 * (bug 30975) API import of pages with invalid characters in this wiki leads to
19669 * (bug 30488) API now allows listing of backlinks/embeddedin/imageusage per
19671 * (bug 34927) Output media_type for list=filearchive.
19672 * (bug 28814) add properties to output of action=parse.
19673 * (bug 33224) add variants of content language to meta=siteinfo.
19674 * (bug 32643) action=purge with forcelinkupdate no longer crashes when ratelimit
19676 * The paraminfo module now also contains result properties for most modules.
19677 * (bug 32348) Allow descending order for list=alllinks.
19678 * (bug 31777) Upload unknown error ``fileexists-forbidden''.
19679 * (bug 32382) Allow descending order for list=iwbacklinks.
19680 * (bug 32381) Allow descending order for list=backlinks, list=embeddedin and
19682 * (bug 32383) Allow descending order for list=langbacklinks.
19683 * API meta=siteinfo can now return the list of known variable IDs.
19684 * (bug 35980) list=deletedrevs now honors drdir correctly in "all" mode
19686 * (bug 29290) API avoids mangling fields in continuation parameters
19687 * (bug 36987) API avoids mangling fields in continuation parameters
19688 * (bug 30836) siteinfo prop=specialpagealiases will no longer return nonexistent
19690 * (bug 38190) Add "required" flag to some token params for hint in api docs.
19691 * (bug 27567) Add file repo support to prop=duplicatefiles.
19692 * (bug 27610) Add archivename for non-latest image version to list=filearchive
19693 * (bug 38231) Add xml parse tree to action=parse.
19694 * Watchlist notification timestamp may be queried by page and may be updated via
19696 * (bug 38904) prop=revisions&rvstart=... no longer blows up when continuing.
19697 * (bug 39032) ApiQuery generates help in constructor.
19698 * (bug 11142) Improve file extension blacklist error reporting in API upload.
19699 * (bug 39665) List of query generators is now not built using reflection,
19700 instead it is defined in code.
19701 * (bug 35993) Deprecated gettoken parameter - support will be removed in 1.22.
19703 === Languages updated in 1.20 ===
19705 MediaWiki supports over 350 languages. Many localisations are updated
19706 regularly. Below only new and removed languages are listed, as well as
19707 changes to languages because of Bugzilla reports.
19709 * Emilian (egl) added.
19710 * Tornedalen Finnish (fit) added.
19711 * Mizo (lus) added.
19712 * Santali (sat) added.
19713 * (bug 34192) Namespace gender aliases for Albanian languages (sq & aln).
19714 * (bug 35541) Namespace gender aliases for Croatian (hr).
19715 * (bug 36012) Space in $separatorTransformTable should be non-breaking in
19716 Portuguese, Esperanto and Udmurt.
19717 * Turoyo (tru) added.
19718 * Cyrillic-Latin language converter added for Uzbek (uz).
19720 === Other changes in 1.20 ===
19721 * The user_token field is now left empty until a user attempts to login and
19722 cookies need to be set. It is also now possible to reset every user's
19723 user_token simply by clearing the values in the user_token column.
19724 * Removed ./tests/qunit/index.html from core. It wasn't actively maintained and
19725 has been made obsolete when [[Special:JavaScriptTest/qunit]] was introduced,
19726 which actually uses ResourceLoader, LocalSettings and the Skin.
19727 * Removed $wgDBtransactions global. This was only checked in one class
19728 and only applies to MyISAM or similar DBs. Those should only be used
19729 for archived sites anyway. We can't get edit conflicts on such sites,
19730 so the WikiPage code wasn't useful there either.
19731 * Deprecated mw.user.name in favour of mw.user.getName.
19732 * Deprecated mw.user.anonymous in favour of mw.user.isAnon.
19733 * Deprecated DatabaseBase functions newFromParams(), newFromType(), set(),
19734 quote_ident(), and escapeLike() were removed.
19735 * Use of __DIR__ instead of dirname( __FILE__ ).
19736 * OutputPage::wrapWikiMsg() no longer supports the 'options' parameter. It was
19737 not used and complicated migration to Message class.
19738 * Live preview functionality has been improved and moved into the
19739 'mediawiki.action.edit.preview' module. The old 'mediawiki.legacy.preview'
19740 module has been removed.
19741 * (bug 40448) Removed mediawiki.legacy.mwsuggest module, and removed the
19742 following that has become obsolete:
19743 - globals $wgEnableMWSuggest and $wgMWSuggestTemplate.
19744 - mw.config.values wgMWSuggestTemplate and wgSearchNamespaces.
19745 - method SearchEngine::getMWSuggestTemplate().
19747 == MediaWiki 1.19 ==
19749 == MediaWiki 1.19.24 ==
19751 This is a security and maintenance release of the MediaWiki 1.19 branch.
19753 === Changes since 1.19.23 ===
19755 * ({{bug|T85848}}, {{bug|T71210}}) SECURITY: Don't parse XMP blocks that
19756 contain XML entities, to prevent various DoS attacks.
19757 * ({{bug|T88310}}) SECURITY: Always expand xml entities when checking SVG's.
19758 * ({{bug|T73394}}) SECURITY: Escape > in Html::expandAttributes to prevent XSS.
19759 * ({{bug|T85855}}) SECURITY: Don't execute another user's CSS or JS on preview.
19760 * ({{bug|T85349}}, {{bug|T85850}}, {{bug|T86711}}) SECURITY: Multiple issues
19761 fixed in SVG filtering to prevent XSS and protect viewer's privacy.
19763 == MediaWiki 1.19.23 ==
19765 This is a security and maintenance release of the MediaWiki 1.19 branch.
19767 === Changes since 1.19.22 ===
19769 * (bug T76686) [SECURITY] thumb.php outputs wikitext message as raw HTML, which
19770 could lead to xss. Permission to edit MediaWiki namespace is required to
19772 * (bug T74222) The original patch for T74222 was reverted as unnecessary.
19773 * Add missing $ in front of variable in OutputPage.php
19775 == MediaWiki 1.19.22 ==
19777 This is a security and maintenance release of the MediaWiki 1.19 branch.
19779 === Changes since 1.19.21 ===
19781 * ({{bug|66776}}, {{bug|71478}}) SECURITY: User PleaseStand reported a way to
19782 inject code into API clients that used format=php to process pages that
19783 underwent flash policy mangling. This was fixed along with improving how the
19784 mangling was done for format=json, and allowing sites to disable the mangling
19785 using $wgMangleFlashPolicy.
19786 * ({{bug|72222}}) SECURITY: Do not show log action when the entry is revdeleted
19787 with DELETED_ACTION. NOTICE: this may be reverted in a future release pending a
19788 public RFC about the desired functionality. This issue was reported by user
19790 * ({{bug|71621}}) Make allowing site-wide styles on restricted special pages a
19792 * $wgMangleFlashPolicy was added to make MediaWiki's mangling of anything that
19793 might be a flash policy directive configurable.
19795 == MediaWiki 1.19.21 ==
19796 This is a maintenance release of the MediaWiki 1.19 branch.
19798 === Changes since 1.19.20 ===
19799 * (bug 67440) Allow classes to be registered properly from installer.
19800 * (bug 47281) Fixed a dumpBackup.php error with --uploads
19801 --include-filesoptions: Unable to find the wrapper "mwstore".
19802 * System administrators are encouraged to upgrade to this release or 1.22+ and
19803 produce a full data dump.
19804 https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Backing_up_a_wiki
19805 * (bug 63049) Removed anonymous functions from ApiFormatBase, added in1.19.13 as
19806 part of the fix for bug 61362, for PHP 5.2 compatibility.
19808 == MediaWiki 1.19.20 ==
19809 This is a security release of the MediaWiki 1.19 branch.
19811 === Changes since 1.19.19 ===
19812 * (bug 70672) SECURITY: OutputPage: Remove separation of css and js module
19815 == MediaWiki 1.19.19 ==
19816 This is a security release of the MediaWiki 1.19 branch.
19818 === Changes since 1.19.18 ===
19819 * (bug 69008) SECURITY: Enhance CSS filtering in SVG files. Filter <style>
19820 elements; normalize style elements and attributes before filtering; add checks
19821 for attributes that contain css; add unit tests for html5sec and reported
19824 == MediaWiki 1.19.18 ==
19825 This is a security release of the MediaWiki 1.19 branch.
19827 === Changes since 1.19.17 ===
19828 * (bug 68187) SECURITY: Prepend jsonp callback with comment.
19829 * (bug 65778) SECURITY: Copy prevent-clickjacking between OutputPage and
19832 == MediaWiki 1.19.17 ==
19833 This is a security and maintenance release of the MediaWiki 1.19 branch.
19835 === Changes since 1.19.16 ===
19836 * (bug 65839) SECURITY: Prevent external resources in SVG files.
19837 * (bug 66428) MimeMagic: Don't seek before BOF. This has weird side effects like
19838 only extracting the tail of the file partially or not at all.
19840 == MediaWiki 1.19.16 ==
19841 This is a security release of the MediaWiki 1.19 branch.
19843 === Changes since 1.19.15 ===
19844 * (bug 65501) SECURITY: Don't parse usernames as wikitext on
19845 Special:PasswordReset.
19847 == MediaWiki 1.19.15 ==
19848 This is a security and maintenance release of the MediaWiki 1.19 branch.
19850 === Changes since 1.19.14 ===
19851 Fixed resetting passwords.
19852 * (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages to
19853 appear blank or with missing text.
19855 == MediaWiki 1.19.14 ==
19856 This is a security and maintenance release of the MediaWiki 1.19 branch.
19858 === Changes since 1.19.13 ===
19859 * (bug 62497) SECURITY: Add CSRF token on Special:ChangePassword.
19860 * (bug 62467) Set a title for the context during import on the cli.
19862 == MediaWiki 1.19.13 ==
19863 This is a security and maintenance release of the MediaWiki 1.19 branch.
19865 === Changes since 1.19.12 ===
19866 * (bug 61362) SECURITY: API: Don't find links in the middle of api.php links.
19867 * Use the correct branch of the extensions' git repositories.
19869 == MediaWiki 1.19.12 ==
19870 This is a security release of the MediaWiki 1.19 branch.
19872 === Changes since 1.19.11 ===
19873 * (bug 60771) SECURITY: Disallow uploading SVG files using non-whitelisted
19874 namespaces. Also disallow iframe elements. * User will get an error including
19875 the namespace name if they use a non- whitelisted namespace.
19876 * (bug 61346) SECURITY: Make token comparison use constant time. It seems like
19877 our token comparison would be vulnerable to timing attacks. This will take
19880 == MediaWiki 1.19.11 ==
19881 This is a security release of the MediaWiki 1.19 branch.
19883 === Changes since 1.19.10 ===
19884 * (bug 60339) SECURITY: Sanitize shell arguments to DjVu files, and other media
19887 == MediaWiki 1.19.10 ==
19888 This is a security release of the MediaWiki 1.19 branch.
19890 === Changes since 1.19.9 ===
19891 * (bug 57550) SECURITY: Disallow stylesheets in SVG Uploads
19892 * (bug 58088) SECURITY: Don't normalize U+FF3C to \ in CSS Checks
19893 * (bug 58472) SECURITY: Disallow -o-link in styles
19894 * (bug 58553) SECURITY: Return error on invalid XML for SVG Uploads
19895 * (bug 58699) SECURITY: Fix RevDel log entry information leaks
19897 == MediaWiki 1.19.9 ==
19898 This is a security and maintenance release of the MediaWiki 1.19 branch.
19900 === Changes since 1.19.8 ===
19901 * (bug 53032) SECURITY: Don't cache when a call could autocreate
19902 * (bug 55332) SECURITY: Improve css javascript detection
19903 * (bug 49717) Fix behaviour $wgVerifyMimeType = false; in Upload
19906 == MediaWiki 1.19.8 ==
19909 This is a security and maintenance release of the MediaWiki 1.19 branch.
19911 === Changes since 1.19.7 ===
19912 * SECURITY: Sanitize ResourceLoader exception messages
19913 * SECURITY: Token-getting functions will fail when using jsonp callbacks.
19914 * SECURITY: Fix extension detection with 2 .'s
19915 * Allow a string other than '*' as condition for DatabaseBase::delete()
19916 * Purge upstream caches when deleting file assets.
19917 * jquery.tablesorter: Add missing dependency on jquery.mwExtension
19919 == MediaWiki 1.19.7 ==
19922 This is a security release of the MediaWiki 1.19 branch
19924 === Changes since 1.19.6 ===
19925 * (bug 48306) SECURITY: Run file validation checks on chunked uploads, and
19926 chunks of upload, during the upload process.
19928 == MediaWiki 1.19.6 ==
19931 This is a security and maintenance release of the MediaWiki 1.19 branch
19933 === Changes since 1.19.5 ===
19934 * (bug 47304) SECURITY: Check SVG xml encoding against whitelist
19935 * (bug 46590) Added AbortChangePassword hook to allow extensions to abort
19936 password changes from Special:ChangePassword
19937 * Localisation updates from http://translatewiki.net.
19938 * mwdocgen.php: Implement --version option.
19939 * Remove svnstat stuff used in Doxygen generation
19940 * E_USER_DEPRECATED undefined prior to php 5.3
19942 == MediaWiki 1.19.5 ==
19945 This is a security and maintenance release of the MediaWiki 1.19 branch
19947 === Changes since 1.19.4 ===
19948 * (bug 47251) SECURITY: Disable external entities in Import
19949 * (bug 46859) SECURITY: Disable external entities in XMLReader
19950 * (bug 46084) SECURITY: Sanitize $limitReport before outputting
19951 * (bug 43594) Fix notices displayed on PHP 5.4
19952 * (bug 40585) Don't drop 'step="any"' in HTML input fields.
19954 == MediaWiki 1.19.4 ==
19957 This is a security release of the MediaWiki 1.19 branch
19959 === Changes since 1.19.3 ===
19960 * New preference type - 'api'. Preferences of this type are not shown on
19961 Special:Preferences, but are still available via the action=options API.
19962 * (bug 44010) Context is passed to UserGetLanguageObject.
19963 * The recursion guard on RequestContext::getLanguage() was weakened.
19964 * (bug 44135/bug 42441) Pass '2' instead of 'true' to CURLOPT_SSL_VERIFYHOST
19965 * (bug 43518) API action=unblock should return the user name, not the full user
19968 == MediaWiki 1.19.3 ==
19971 This is a security release of the MediaWiki 1.19 branch
19973 === Changes since 1.19.2 ===
19974 * (bug 40995) Prevent session fixation in Special:UserLogin (CVE-2012-5391)
19975 * (bug 41400) Prevent linker regex from exceeding PCRE backtrack limit
19976 * Increase permitted runtime for testParserTest (only used for continuous
19978 * Updated messages translations from http://translatewiki.net/
19980 == MediaWiki 1.19.2 ==
19982 This is a security release of the MediaWiki 1.19 branch
19984 === Changes since 1.19.1 ===
19985 * (bug 39700) File: link to non-existing file can inject html
19986 * (bug 39823) Hidden block text leaking to admins
19987 * (bug 39184) LDAP password leakage
19988 * (bug 39180) Disallow framing of api results
19989 * (bug 37587) Enforce language codes to be html safe
19990 * (bug 39824) Check global blocks on account creation
19992 == MediaWiki 1.19 ==
19994 MediaWiki 1.19 is a large release that contains many new features and bug
19995 fixes. This is a summary of the major changes of interest to users.
19996 You can consult the RELEASE-NOTES-1.19 file for the full list of changes in
19999 Our thanks go to everyone who helped to improve MediaWiki by testing the beta
20000 release and submitting bug reports.
20002 === Changes since 1.19.1 ===
20003 * (bug 38406) Properly quote table names in DatabaseBase::tableName()
20004 * (bug 38249) Parser will throw an exception instead of outputting gibberish if
20005 PCRE is compiled without support for unicode properties.
20007 === Changes since 1.19.0 ===
20008 * (bug 36568) Fixed "Illegal string offset 'LIMIT'" warnings in updater
20009 * (bug 36938) Correctly escape uselang attribute to prevent xss
20010 * Expanded Blacklist for SVG Files
20012 === Changes since 1.19 beta 2 ===
20013 * Special:Watchlist no longer sets links to feed when the user is anonymous.
20014 * (bug 35961) Hash comparison should always be strict.
20015 * Fix broken email confirmation expiration caused by MWCryptRand changes.
20016 * (bug 35671) PHP Notice: Undefined index: gettoken in includes/api/ApiMain.php
20018 * (bug 36042) 'show' causes a fatal in blocks API.
20020 === Changes since 1.19 beta 1 ===
20021 * (bug 35014) Including a special page no longer sets the page's title to the
20023 * (bug 35019) Edit summaries are no longer transformed in notification e-mails
20024 * (bug 35152) Help message for e-mail is shown again in user preferences
20025 * (bug 34887) $3 and $4 parameters are now substituted correctly in message
20027 * (bug 34841) Edit links are no longer displayed when display old page versions
20028 * (bug 34889) User name should be normalized on Special:Contributions
20029 * (bug 35051) If heading has a trailing space after == then its name is not
20030 preloaded into edit summary on section edit
20031 * (bug 31417) New ID mw-content-text around the actual page text, without
20032 categories, contentSub, ... The same div often also contains the class
20033 mw-content-ltr/rtl.
20034 * (bug 35303) Proxy and DNS blacklist blocking works again
20035 * (bug 22555) Remove or skip strip markers from tag hooks like <nowiki> in
20036 core parser functions which operate on strings, such as padleft.
20037 * (bug 18295) Don't expose strip markers when a tag appears inside a link
20039 * (bug 34212) ApiBlock/ApiUnblock allow action to take place without a token
20041 * (bug 34907) Fixed exposure of tokens through load.php that could have
20042 facilitated CSRF attacks.
20043 * (bug 35317) CSRF in Special:Upload.
20045 === Configuration changes in 1.19 ===
20046 * Removed SkinTemplateSetupPageCss hook; use BeforePageDisplay instead.
20047 * (bug 27132) movefile right granted by default to registered users.
20048 * Default cookie lifetime ($wgCookieExpiration) is increased to 180 days.
20049 * (bug 31204) Removed old user.user_options.
20050 * $wgMaxImageArea now applies to jpeg files if they are not scaled with
20052 * Introduced $wgQueryPageDefaultLimit (defaults to 50) for the number of
20053 items to show by default on query pages (special pages such as Whatlinkshere).
20054 * (bug 32470) Increase the length of ug_group.
20055 * (bug 32239) Removed $wgEnableTooltipsAndAccesskeys.
20056 * Removed $wgVectorShowVariantName.
20057 * Removed $wgExtensionAliasesFiles. Use $wgExtensionMessagesFiles.
20058 * Removed $wgResourceLoaderInlinePrivateModules , now always enabled.
20060 === New features in 1.19 ===
20061 * (bug 19838) Add ability to get all interwiki prefixes also if the interwiki
20063 * $wgDnsBlacklistUrls now accepts an array with url and key as the
20064 elements to work with DNSBLs that require keys, such as
20066 * (bug 30022) Add support for custom loadScript sources to ResourceLoader.
20067 * (bug 19052) Unicode space separator characters (Zs) now terminates external
20068 links and images links.
20069 * (bug 30160) Add public method to mw.loader to get module names from registry.
20070 * (bug 15558) Parameters to special pages included in wikitext can now be passed
20072 * Installer now issues a warning if mod_security is present.
20073 * (bug 29455) Add support for a filter callback function in jQuery byteLimit
20075 * Added two new GetLocalURL hooks to better serve extensions working on a
20076 limited type of titles.
20077 * Added a --no-updates flag to importDump.php that skips updating the links
20079 * Most presentational html attributes like valign are now converted to inline
20080 css style rules. These attributes were removed from html5 and so we clean
20081 them up when $wgHtml5 is enabled. This can be disabled using
20082 $wgCleanupPresentationalAttributes.
20083 * Magic words (time and number-formatting ones, plus DIRECTIONMARK, but not
20084 NAMESPACE) now depend on the page content language instead of the site
20085 language. In theory this sets the right magic words in system messages,
20086 although they are not used there.
20087 * (bug 30451) Add page_props to RefreshLinks::deleteLinksFromNonexistent.
20088 * (bug 30450) Clear page_props table on page deletion.
20089 * Hook added to check for exempt from account creation throttle.
20090 * (bug 30344) Add configuration variable for setting custom priorities when
20091 generating sitemaps.
20092 * (bug 96170) Add array support for space-separated list attributes (like
20093 'class') in the Html helper class.
20094 * (bug 26470) Add checkered background image on hover on files pages.
20095 * (bug 30774) mediawiki.html: Add support for numbers and booleans in the
20096 attribute values and element contents.
20097 * Conversion script between Tifinagh and Latin for the Tachelhit language.
20098 * (bug 16755) Add options 'noreplace' and 'noerror' to {{DEFAULTSORT:...}}
20099 to stop it from replace an already existing default sort, and suppress error.
20100 * (bug 18578) Rewrote revision delete related messages to allow better
20102 * (bug 30364) LanguageConverter now depends on the page content language
20103 instead of the wiki content language.
20104 * Jump links will now be usable in CSS-capable browsers instead of only
20105 in outdated text browsers.
20106 * New common*.css files usable by skins instead of having to copy piles
20107 of generic styles from MonoBook or Vector's css.
20108 * Some deprecated presentational html attributes will now be automatically
20110 * (bug 31297) Add support for namespaces in Special:RecentChanges subpage filter
20112 * The default user signature now contains a talk link in addition to the user
20114 * (bug 25306) Add link of old page title to MediaWiki:Delete_and_move_reason.
20115 * Added hook BitmapHandlerCheckImageArea.
20116 * (bug 30062) Add $wgDBprefix option to cli installer.
20117 * getUserPermissionsErrors and getUserPermissionsErrorsExpensive hooks are now
20118 also called when checking for 'read' permission.
20119 * Introduce $wgEnableSearchContributorsByIP which controls whether searching
20120 for an IP address redirects to the contributions list for that IP.
20121 * (bug 8859) Database::update should take array of tables too.
20122 * (bug 19698) Add "Inverse namespaces" option to Special:Contributions.
20123 * (bug 24037) Add byte length of revision to Special:Contributions.
20124 * (bug 1672) Added $wgDisableUploadScriptChecks to allow uploading of files
20125 containing HTML or JS. DISABLING THESE CHECKS IS VERY DANGEROUS.
20126 * New path mappings can be added using the WebRequestPathInfoRouter hook
20127 and adding paths to the PathRouter.
20128 * (bug 32666) Special:ActiveUsers now allows a subpage to be used as value for
20129 the "target" query parameter (eg. Special:ActiveUsers/Username).
20130 * New JavaScript variable wgPageContentLanguage.
20131 * Added new debugging toolbar, enabled with $wgDebugToolbar.
20132 * Differences in the history page now uses slightly better colors for people
20133 perceiving colors differently.
20134 * (bug 32879) Upgrade jQuery to 1.7.1.
20135 * jQuery UI upgraded to 1.8.17.
20136 * Extensions can use the 'Language::getMessagesFileName' hook to define new
20137 languages using messages files outside of core.
20138 * (bug 32512) Add 'Associated namespace' checkbox to Special:Contributions.
20139 * Added $wgSend404Code, true by default, which can be set to false to send a
20140 200 status code instead of 404 for nonexistent articles.
20141 * (bug 33447) Link to the broken image tracking category from
20142 Special:Wantedfiles.
20143 * (bug 27724) Add timestamp to job queue.
20144 * (bug 30339) Implement SpecialPage for running javascript tests. Disabled by
20145 default, due to tests potentially being harmful, not to be run on a production
20146 wiki. Enable by setting $wgEnableJavaScriptTest to true.
20147 * Extensions can use the RequestContextCreateSkin hook to override what skin is
20148 loaded in some contexts.
20149 * (bug 33456) Show $wgQueryCacheLimit on cached query pages.
20150 * (bug 10574) Add an option to allow all pages to be exported by Special:Export.
20151 * mediawiki.js Message object constructor is now publicly available as
20153 * (bug 29309) Allow CSS class per tooltip (tipsy).
20154 * (bug 33565) Add accesskey/tooltip to submit buttons on Special:EditWatchlist.
20155 * (bug 17959) Inline rendering/thumbnailing for Gimp XCF images.
20156 * (bug 27775) Namespace has it's own XML tag in the XML dump file.
20157 * (bug 30513) Redirect tag is now resolved in XML dump file.
20158 * sha1 xml tag added to XML dump file.
20159 * (bug 33646) Badtitle error page now emits a 400 HTTP status.
20160 * Special:MovePage now has a dropdown menu for namespaces.
20161 * (bug 34420) Special:Version now shows git HEAD sha1 when available.
20162 * (bug 33952) Refactor mw.toolbar to allow dynamic additions at any time.
20164 === Bug fixes in 1.19 ===
20165 * $wgUploadNavigationUrl should be used for file redlinks if.
20166 $wgUploadMissingFileUrl is not set. The first was used for this
20167 until the second was introduced in 1.17.
20168 * BREAKING CHANGE: Style rules for wikitable are now more specific and prevent
20169 inheritance to nested tables which caused various issues (bug 30485 and bug
20170 33434). If your wiki has overridden rules for ".wikitable", please revise them
20171 and adjust where necessary. For comparison, use the "table.wikitable" section
20172 in skins/common/shared.css as base.
20173 * $wgUploadNavigationUrl is now used for file redlinks if
20174 $wgUploadMissingFileUrl is not set. The former was used for this until the
20175 second was introduced in 1.17.
20176 * (bug 27894) Move 'editondblclick' event listener down from body to
20178 * (bug 30172) The check for posix_isatty() in maintenance scripts did not detect
20179 when the function exists but is disabled. Introduced
20180 Maintenance::posix_isatty().
20181 * (bug 30264) Changed installer-generated LocalSettings.php to use
20182 require_once() instead require() for included extensions.
20183 * Do not convert text in the user interface language to another script.
20184 * (bug 26283) Previewing user JS/CSS pages didn't load other user JS/CSS pages.
20185 * (bug 26486) ResourceLoader modules with paths to nonexistent files cause PHP
20186 warnings/notices to be thrown.
20187 * (bug 30335) Fix for HTMLForms using GET that were breaking when non-friendly
20189 * (bug 28649) Preventing half truncated multi-byte unicode characters when
20190 truncating log comments.
20191 * Show --batch-size option in help of maintenance scripts that support it.
20192 * (bug 4381) Magic quotes cleaning was not comprehensive, key strings were not
20194 * (bug 23057) Importers no longer can 'edit' or 'create' a fully-protected page
20195 by importing a new revision into it.
20196 * Allow moving the associated talk pages of subpages even if the base page
20198 * Per page edit-notices now work in namespaces without subpages enabled.
20199 * (bug 31081) $wgEnotifUseJobQ is no longer unconditionally enqueueing jobs.
20200 * (bug 30202) File names are now restricted on upload to 240 bytes, because of
20201 restrictions on some of the database fields.
20202 * Timezones are now recognised in user preferences when offset is different
20204 * (bug 31692) "summary" parameter now also works when undoing revisions.
20205 * (bug 18823) "move succeeded" text displayed bluelinks even when redirect was
20207 * (bug 19186) Special:UserLogin's title on Special:SpecialPages now says
20208 "create account" when the user cannot create an account.
20209 * (bug 31818) 'usercreated' message now supports GENDER.
20210 * (bug 32022) Our phpunit.php script can now be executed from another directory.
20211 * (bug 26020) Setting $wgEmailConfirmToEdit to true no longer removes diffs
20212 from recent changes feeds.
20213 * (bug 30232) add current time to message wlnote on Special:Watchlist.
20214 * (bug 29110) $wgFeedDiffCutoff did not affect new pages.
20215 * (bug 32168) Add wfRemoveDotSegments for use in wfExpandUrl.
20216 * (bug 32358) Do not display "No higher resolution available" for dimensionless
20217 files (like audio files).
20218 * (bug 32168) Add wfAssembleUrl for use in wfExpandUrl.
20219 * (bug 32168) fixed - wfExpandUrl expands dot segments now.
20220 * (bug 31535) Upload comments now truncated properly, and don't have brackets.
20221 * (bug 32086) Special:PermanentLink now shows an error message when no subpage
20223 * (bug 30368) Special:Newpages now shows the new page name for moved pages.
20224 * (bug 1697) The way to search blocked usernames in block log should be clearer.
20225 * (bug 29747) eAccelerator shared memory caching has been removed since it is
20226 now disabled by default and is buggy. APC, XCache and WinCache are not
20228 * Installer now refuses to install if php was not compiled with Ctype support.
20229 * (bug 29475) Remove "trackback" feature entirely from core.
20230 * (bug 32665) Special:BlockList prefills the username in the input field if
20231 using the Special:BlockList/username URL.
20232 * (bug 27721) Make JavaScript variables wgSeparatorTransformTable and
20233 wgDigitTransformTable depend on page content language so the sort script
20234 sorts correctly more often.
20235 * (bug 32230) Expose wgRedirectedFrom in JavaScript.
20236 * (bug 31212) History tab not collapsed when the screen is narrow.
20237 * (bug 15521) Use new section summary when the action of adding a new section
20238 also happens to create the page.
20239 * (bug 32960) Remove EmailAuthenticationTimestamp from database when a
20240 email address is removed.
20241 * (bug 32414) Empty page get a empty bytes attribute in Export/Dump.
20242 * (bug 33101) Viewing a User or User talk of username resembling IP ending
20243 with .xxx causes Internal error.
20244 * Warning about undefined index in certain situations when $wgLogRestrictions
20245 causes the first log type requested to be removed but not the others.
20246 * Use separate message ('prefixindex-namespace') for title of
20247 Special:PrefixIndex rather then re-using Special:AllPages's allinnamespace.
20248 * (bug 33156) Special:Block now allows you to confirm you want to block yourself
20249 when using non-normalized username.
20250 * (bug 33246) News icon shown for news:// URLs but not for news: URLs.
20251 * (bug 33305) Make mw.util.addCSS resistant to IE's @font-face bug by setting
20252 cssText after DOM insertion.
20253 * (bug 30711) When adding a new section to a page with section=new, the text is
20254 now always added to the current version of the page.
20255 * (bug 31719) Fix uploads of SVGs exported by Adobe Illustrator by expanding
20256 XML entities correctly.
20257 * (bug 30914) Embeddable ResourceLoader modules (user.options, user.tokens)
20258 should be loaded in <head> for proper dependency resolution.
20259 * (bug 32702) Removed method Skin::makeGlobalVariablesScript() has been readded
20260 for backward compatibility.
20261 * (bug 31469) Make sure tracking category messages expand variables like
20262 {{NAMESPACE}} relative to correct title.
20263 * (bug 33454) ISO-8601 week-based year number (format character 'o') is now
20264 calculated correctly with respect to timezone.
20265 * (bug 32219) InstantCommons now fetches content from Wikimedia Commons using
20266 HTTPS when the local wiki is served over HTTPS.
20267 * (bug 33525) clearTagHooks doesn't clear function hooks.
20268 * (bug 33523) Function tag hooks don't appear on Special:Version.
20269 * Files with IPTC blocks we can't read no longer prevent extraction of exif
20271 * (bug 33587) Remove action "historysubmit" from history pages.
20272 * (bug 25800) mw.config wgAction should contain the actually performed action
20273 instead of whatever the query value contains.
20274 * (bug 4438) Add CSS hook for current WikiPage action.
20275 * (bug 33703) Common border-bottom color for <abbr> should inherit default
20277 * (bug 33819) Display file sizes in appropriate units.
20278 * (bug 32948) {{REVISIONID}} and related variables are no longer blank after
20280 * (bug 33880) $wgUsersNotifiedOnAllChanges should not send e-mail to user who
20282 * (bug 33902) Decoding %2B with mw.Uri.decode results in ' ' instead of +.
20283 * (bug 33762) QueryPage-based special pages no longer misses *-summary message.
20284 * Other sizes links are no longer generated for wikis without a 404 thumbnail
20286 * (bug 29454) Enforce byteLimit for page title input on Special:MovePage.
20287 * (bug 34114) CSSMin::remap() doesn't respect its $embed parameter.
20288 * Special:Contributions/newbies now shows the contributions for the user
20289 "newbies". New user contributions are obtained using the form or using
20290 ?contribs=newbie in URL.
20291 * It is now possible to delete images that have no corresponding description
20293 * (bug 33165) GlobalFunctions.php line 1312: Call to a member function
20294 getText() on a non-object.
20295 * (bug 31676) Group dynamically inserted CSS into a single <style> tag, to work
20296 around a bug where not all styles were applied in Internet Explorer.
20297 * (bug 28936, bug 5280) Broken or invalid titles can't be removed from
20299 * (bug 34600) Older skins using useHeadElement=false were broken in 1.18.
20300 * (bug 34604) [mw.config] wgActionPaths should be an object instead of a numeral
20302 * (bug 12262) Indents and lists are now aligned
20303 * (bug 29753) mw.util.tooltipAccessKeyPrefix should be alt-shift for Chrome
20305 * (bug 25095) Special:Categories should also include the first relevant item
20306 when "from" is filled.
20307 * (bug 34972) An error occurred while changing your watchlist settings for
20308 [[Special:WhatLinksHere/Example]]
20310 === API changes in 1.19 ===
20311 * Made action=edit less likely to return "unknownerror", by returning the actual
20312 error message (which may have come from a hook call or similar).
20313 * (bug 19838) siprop=interwikimap can now use the interwiki cache.
20314 * (bug 29748) Add API search prefix support.
20315 * (bug 29684) Set forgotten parameter types in ApiQueryIWLinks.
20316 * (bug 29685) do not output NULL parentid with list=deletedrevs&drprop=parentid.
20317 * siprop=interwikimap and siprop=languages can use silanguagecode to have
20318 a best effort language name translation. Use CLDR extension for best result.
20319 * (bug 30230) action=expandtemplates should not silently override invalid title
20321 * (bug 18634) Create API to fetch MediaWiki's language fallback tree structure.
20322 * (bug 26885) Allow show/hide of account blocks, temporary blocks and single IP
20323 address blocks for list=blocks.
20324 * (bug 30591) Add support to only return keys in ApiAllMessages.
20325 * The API now respects $wgShowHostnames and won't share the hostname in
20326 servedby if it's set to false.
20327 * wlexcludeuser parameter added to ApiFeedWatchlist.
20328 * (bug 7304) Links on redirect pages no longer cause the redirect page to show
20329 up as a redirect to the linked page on Special:Whatlinkshere.
20330 * (bug 32609) API: Move captchaid/captchaword of action=edit from core
20331 to Captcha extension(s).
20332 * Added 'APIGetDescription' hook.
20333 * (bug 32688) Paraminfo for parameter "generator" of the query module shows too
20335 * (bug 32415) Empty page get no size attribute in API output.
20336 * (bug 31759) Undefined property notice in querypages API.
20337 * (bug 32495) API should allow purge by pageids.
20338 * (bug 33147) API examples should explain what they do.
20339 * (bug 33482) Api incorrectly calls ApiBase::parseMultiValue if allowed
20340 values is given as an array.
20341 * (bug 32948) {{REVISIONID}} and related variables are no longer blank after
20342 calling action=purge&forcelinkupdate.
20343 * (bug 34377) action=watch now parses messages using the correct title instead
20345 * (bug 35036) WikiLove messages were not automatically updated in JavaScript
20346 after having been changed on-wiki due to a bug in core
20348 === Languages updated in 1.19 ===
20350 MediaWiki supports over 350 languages. Many localisations are updated
20351 regularly. Below only new and removed languages are listed, as well as
20352 changes to languages because of Bugzilla reports.
20354 * Canadian English (en-ca) (new).
20355 * Norwegian (bokmål) (nb) (renamed from no).
20356 * Uighur (Latin) (ug-latn) was incorrectly marked as right-to-left language.
20357 * (bug 30217) Make pt-br a fallback of pt.
20358 * (bug 31193) Set fallback language of Assamese from Bengali to English.
20359 * Update date format for dsb and hsb: month names need the genitive.
20360 * (bug 28643) Serbian variant conversion improvements (Nikola Smolenski).
20361 * (bug 29405, bug 30809) Lower diacritics are invisible in titles in Indic
20362 languages Assamese, Bengali, Hindi, Malyalam and Odiya.
20363 * (bug 32826) Titles in indic languages are partially cut.
20364 * (bug 33367) Gendered namespaces for Czech.
20365 * (bug 33014) Language::formatSize()/formatBitrate() should be able to deal
20366 with larger numbers (tera-yotta).
20368 === Other changes in 1.19 ===
20369 * BREAKING CHANGE: Legacy global array 'ta' and global function 'akeytt' have
20370 been removed from wikibits.js.
20371 * jquery.mwPrototypes module was renamed to jquery.mwExtension.
20372 * The maintenance script populateSha1.php was renamed to the more concise
20373 populateImageSha1.php.
20374 * The Client-IP header is no longer checked for when trying to resolve a
20375 client's real IP address.
20376 * (bug 22096) Although IE5.x and below was already unsupported officially,
20377 stylesheets existing exclusively for IE5.0 and IE5.5 have now been removed
20378 (which were in skins 'chick' and 'monobook').
20379 * The constructor for CategoryView has changed, the second parameter is now a
20380 Context source and is required.
20381 * The Title::escape{Local,Full,Canonical}URL methods are deprecated, please use
20382 proper html building methods to escape the normal get{...}URL methods instead.
20383 * The $variant arguments in the Title::get{Local,Full,Link,Canonical}URL methods
20384 have been replaced with a secondary query argument.
20385 * The $variant argument in the hooks for the
20386 Title::get{Local,Full,Link,Canonical}URL methods have been removed, the
20387 variant is now part of the $query argument.
20388 * Removed Title::isValidCssJsSubpage(), deprecated since 1.17 in favor of
20389 using Title::isCssJsSubpage() or checking Title::isWrongCaseCssJsPage().
20390 * Support for the deprecated hook MagicWordMagicWords was removed.
20391 * The Xml::namespaceSelector method has been deprecated, please use
20392 Html::namespaceSelector instead (note that the parameters have changed also).
20393 * (bug 33746) Preload popular ResourceLoader modules (mediawiki.util) as
20394 stop-gap for scripts missing dependencies.
20395 New configuration variable $wgPreloadJavaScriptMwUtil has been introduced for
20396 this (set to false by default for new installations). Set to true if your wiki
20397 has a large amount of user/site scripts that are lacking dependency
20398 information. In the short to medium term these user/site scripts should be
20399 fixed by adding the used modules to the dependencies in the module registry
20400 and/or wrapping them in a callback to mw.loader.using.
20402 == MediaWiki 1.18 ==
20404 == MediaWiki 1.18.6 ==
20407 This is a maintenance and security release of the MediaWiki 1.18 branch
20409 === Changes since 1.18.5 ===
20410 * ([[bugzilla:40995|bug 40995]]) Prevent session fixation in Special:UserLogin
20412 * ([[bugzilla:41400|bug 41400]]) Prevent linker regex from exceeding PCRE
20414 * Localisation updates
20415 * Increase permitted runtime for testParserTest
20416 * ([[bugzilla:36179|bug 36179]]) Unquote 'null' for PostgreSQL.
20418 == MediaWiki 1.18.5 ==
20421 This is a security release of the MediaWiki 1.18 branch
20423 === Changes since 1.18.4 ===
20424 * (bug 39700) File: link to non-existing file can inject html
20425 * (bug 39823) Hidden block text leaking to admins
20426 * (bug 39184) LDAP password leakage
20427 * (bug 39180) Disallow framing of api results
20428 * (bug 37587) Enforce language codes to be html safe
20429 * (bug 39824) Check global blocks on account creation
20431 == MediaWiki 1.18.4 ==
20434 This is a security release of the MediaWiki 1.18 branch.
20436 === Changes since 1.18.3 ===
20437 * (bug 36938) Correctly escape uselang attribute to prevent xss
20438 * Expanded Blacklist for SVG Files
20440 == MediaWiki 1.18.3 ==
20443 This is a maintenance release of the MediaWiki 1.18 branch.
20445 === Changes since 1.18.2 ===
20446 * (bug 35446) Using "{{nse:}}" with an invalid namespace name no longer throws
20448 * (bug 35567) The whole password reminder e-mail is now sent in the same
20450 * (bug 35961) Hash comparison should always be strict.
20451 * (bug 35671) PHP Notice: Undefined index: gettoken in includes/api/ApiMain.php
20453 * Fix broken email confirmation expiration caused by MWCryptRand changes.
20455 == MediaWiki 1.18.2 ==
20458 This is a maintenance and security release of the MediaWiki 1.18 branch.
20460 === Changes since 1.18.1 ===
20461 * (bug 33686) could not get a list of contributors for an article when using
20463 * (Bug 33865) Exception thrown in action=parse when attempting to use the title
20464 parameter without setting the text parameter.
20465 * UserMailer could potentially throw a fatal error when a MailAddress object had
20466 an empty email address.
20467 * (Bug 33087) Exchange server rejected mail sent by MediaWiki
20468 * (bug 34528) Edit section tooltips show correction section name again
20469 * (bug 34246) MediaWiki:Whatlinkshere-summary message is displayed again in
20470 Special:Whatlinkshere
20471 * (bug 22555) Remove or skip strip markers from tag hooks like <nowiki> in
20472 core parser functions which operate on strings, such as formatnum.
20473 * (bug 34212) ApiBlock/ApiUnblock allow action to take place without a token
20475 * (bug 34907) Fixed exposure of tokens through load.php that could have
20476 facilitated CSRF attacks.
20477 * (bug 35317) CSRF in Special:Upload.
20479 == MediaWiki 1.18.1 ==
20482 This a maintenance and security release of the MediaWiki 1.18 branch.
20484 === Changes since 1.18.0 ===
20485 * (bug 32712) Fix for search indexing of pages with certain unicode chars
20487 * (bug 3901) Lang, hreflang attribs added to sidebar interlanguage links for
20489 * (bug 30774) mediawiki.html: Add support for numbers and booleans in the
20490 attribute values and element contents.
20491 * (bug 32473) [[Special:PasswordReset]] can not be used on private wiki.
20492 * (bug 32853) Fixed CACHE_DBA object cache type.
20493 * (bug 32786) Backward compatibility for extension using 1.17's
20494 Database::newFromType().
20495 * Fixed exception when using Special:WhatLinksHere on a Media: file.
20496 * (bug 32709) Private Wiki users were always taken to Special:Badtitle on login.
20497 * (bug 33240) Sort images are missing but referenced in css.
20498 * (bug 31921) Magic words REVISIONDAY, REVISIONMONTH and REVISIONYEAR were
20499 not showing their values on preview.
20500 * (bug 32702) Removed method Skin::makeGlobalVariablesScript() has been readded
20501 for backward compatibility.
20502 * (bug 30172) The check for posix_isatty() in maintenance scripts did not detect
20503 when the function exists but is disabled. Introduced
20504 Maintenance::posix_isatty().
20505 * (bug 33305) Make mw.util.addCSS resistant to IE's @font-face bug by setting
20506 cssText after DOM insertion.
20507 * (bug 29102) Upgrades no longer fail with the error "Unknown character set:
20509 * (bug 25355) Parser generates edit section links for special pages.
20510 * (bug 33321) Adding a line to MediaWiki:Sidebar that contains a pipe, but
20511 doesn't have any pipes after being transformed by MessageCache, causes
20512 exception on all pages.
20513 * Fixed recentchanges FK violation on page delete and cache purge error in
20514 updater for Oracle DB.
20515 * (bug 33117) prop=revisions allows deleted text to be exposed through cache
20518 == MediaWiki 1.18.0 ==
20521 This is the first stable release of the MediaWiki 1.18 branch.
20523 === Summary of selected changes in 1.18 ===
20525 Selected changes since MediaWiki 1.17 that may be of interest:
20527 * Some of the more commonly used MediaWiki extensions are now included in the
20528 release tarball. These extensions are ConfirmEdit, Gadgets, Nuke,
20529 ParserFunctions, Renameuser, Vector and WikiEditor.
20531 * Gender support has been improved, meaning user pages can display the correct
20532 gender variant of "User" can now be used.
20534 * MediaWiki can now detect the camera orientation of an image from the Exif
20535 metadata, and can rotate the image thumbnail appropriately. Metadata support
20536 has been generally improved, and can now extract IPTC and XMP metadata.
20538 * Improved directionality support in 1.18 means that MediaWiki is better to use
20541 * MediaWiki now supports protocol - relative URLs in links, interwiki targets
20544 * Math support has been removed from core
20546 === Changes since 1.18.0rc1 ===
20547 * (bug 32228) regression in Special:Search which did not conserve profile on
20549 * (bug 32460) Categories were improperly aligned in Simple and CologneBlue
20550 * (bug 32412) TOC links on [[Special:EditWatchlist]] points to the fieldsets
20551 * (bug 32582) Fix TOC show/hide link regression on IE 8
20553 === Changes since 1.18 beta 1 ===
20554 * (bug 31886) Wrong titles redirecting to Special:Badtitle in the 1.18
20556 * (bug 32051) Fix description for wlprop=sizes.
20557 * (bug 31913) Special:MostLinkedTemplates had an incorrect GROUP BY clause
20558 under Microsoft SQL.
20559 * (bug 32100) installer complains about suhosin GET limit.
20560 * (bug 31933) fix 1.18 regression in Monobook sidebar: huge spacing between
20561 portlets on IE 7 and IE 8/9 in compatibility view.
20562 * (bug 32126) Fix 1.18 regression in watchlist editor when items already removed
20564 * (bug 32183) remove the client-* classes added from user-agent-sniffing onto
20565 the <html> element.
20566 * (bug 29912) Unit tests break if parsertest tables are still present.
20567 * (bug 31694) During installation, tabbing order (cursor focus) goes to logo
20568 instead of 'continue'.
20569 * (bug 29102) Upgrade fails "Unknown character set: 'mysql4".
20570 * (bug 31990) justify paragraphs pref adds extra space to category listing.
20571 * (bug 20148) Better title for [[Special:Disambiguations]] page.
20572 * (bug 31502) TOC is missing on Special:EditWatchlist.
20573 * (bug 32256) API list=search stops at first invalid result.
20574 * (bug 32047) jquery.tablesorter.js: thead is before caption.
20575 * (bug 29854) Store protocol-relative links twice in the externallinks table,
20576 one with http: in el_index and once with https.
20577 * (bug 31822) Error during upgrade due to output buffer reset in stdout.
20579 === Configuration changes in 1.18 ===
20580 * The WantedPages::getSQL hook has been removed and replaced with
20581 WantedPages::getQueryInfo. This may break older extensions.
20582 * The SkinTemplateBuildContentActionUrlsAfterSpecialPage,
20583 SkinTemplateContentActions and SkinTemplateTabs hooks have been removed in
20584 favor of SkinTemplateNavigation and SkinTemplateNavigation::SpecialPage.
20585 * $wgUseCombinedLoginLink controls whether to output a combined
20586 login / create account link in the personal bar, or to output separate login
20587 and create account links.
20588 * Skin names are no longer created based on a ucfirst version of the key in
20589 $wgValidSkinNames but now the value. This means for
20590 $wgValidSkinNames["monobook"] = "MonoBook"; the skin loader will no longer try
20591 loading SkinMonobook and will instead load SkinMonoBook.
20592 * $wgMaxUploadSize may now be set to an array to specify the upload size limit
20594 * $wgAPICacheHelp added in 1.16 is now removed. To disable API help caching, set
20595 $wgAPICacheHelpTimeout = 0;
20596 * OutputPage::isUserJsAllowed() no longer returns false when scripts are allowed
20597 by the page, but $wgAllowUserJs is set to false.
20598 * Pure "Skin" class based custom skins are no longer supported, all custom skins
20599 should be put together using SkinTemplate and BaseTemplate or QuickTemplate.
20600 * The transliteration for passwords in case they were migrated from an old
20601 Latin-1 install (previous to MediaWiki 1.5) is now only done for wikis with
20602 $wgLegacyEncoding set.
20603 * (bug 27508) Add $wgSVGMetadataCutoff to limit the maximum amount of an SVG we
20604 look at when finding metadata to prevent excessive resource usage.
20605 * $wgSysopUserBans and $wgSysopRangeBans (deprecated in 1.17) are now removed.
20606 Use $wgBlockCIDRLimit = array( 'IPv4' => 43, 'IPv6' => 128 ) to achieve the
20607 same functionality as $wgSysopRangeBans; you can use the BlockIp hook to
20608 replicate $wgSysopUserBans functionality.
20609 * The options on the block form have been standardised such that checking a box
20610 makes the block 'more serious'; so while "check to prevent account creation"
20611 and "check to enable autoblock" remain the same, "check to allow user-talk
20612 edit" is reversed to "check to *disable* user-talk edit", and "check to block
20613 anon-only" becomes "check to block logged-in users too". The default settings
20615 * Most of the field names on the Special:Block form have been changed, which
20616 will probably break screen-scraping bots.
20617 * (bug 26866) The 'trackback' right is no longer granted to sysops by default.
20618 $wgUseTrackbacks is already false by default.
20619 * (bug 17009) the hiddenStructure CSS class, a highly hackish way of at least
20620 *appearing* to hide article elements, has been removed. Use the
20621 ParserFunctions extension to actually remove unwanted elements from the
20623 * (bug 14202) $wgUseTeX has been superseded by the Math extension. To re-enable
20624 math conversion after upgrading, obtain the Math extension from SVN or from
20625 https://www.mediawiki.org/wiki/Extension:Math and add to LocalSettings.php:
20626 require_once "$IP/extensions/Math/Math.php";
20627 * $wgProfiler is now a configuration array, see StartProfiler.sample for
20629 * $wgProfiling has been removed.
20630 * The spyc library is now no longer included in phase3.
20631 * (bug 28343) Unused preferences contextlines/contextchars have been removed
20632 * $wgSkinExtensionFunctions has been removed. Use $wgExtensionFunctions instead.
20633 * $wgProto has been removed. You now only need to set $wgServer to change the
20635 * $wgRateLimitsExcludedGroups (deprecated in 1.13) has been removed.
20636 * $wgInputEncoding and $wgOutputEncoding (deprecated in 1.5) have now been
20638 * $wgAllowUserSkin (deprecated in 1.16) has now been removed.
20639 * $wgExtraRandompageSQL (deprecated in 1.16) has now been removed.
20640 * LogReader and LogViewer classes (deprecated in 1.14) have now been removed.
20641 * (bug 26033) Added $wgArticleCountMethod to select the method to use to say
20642 whether a page is an article or not. $wgUseCommaCount is now deprecated.
20643 * $wgEnableDublinCoreRdf and $wgEnableCreativeCommonsRdf no longer work in core,
20644 and the functionality has been moved to the relevant extensions. See
20645 https://www.mediawiki.org/wiki/Extension:DublinCoreRdf and
20646 https://www.mediawiki.org/wiki/Extension:CreativeCommonsRdf as appropriate.
20647 * (bug 21107) Split error "customcssjsprotected" into separate messages for JS
20649 * Removed $wgCheckCopyrightUpload from DefaultSettings, since the relevant
20650 feature was removed in about 1.5.
20651 * LogPageValidTypes, LogPageLogName, LogPageLogHeader and LogPageActionText
20652 hooks have been removed.
20653 * New hook "Collation::factory" to allow extensions to create custom
20654 category collations.
20655 * $wgGroupPermissions now supports per namespace permissions.
20656 * $wgEnableAutoRotation enables or disables auto-rotation. Leaving it set to
20657 null will cause MediaWiki to determine if auto-rotation is available.
20659 === New features in 1.18 ===
20660 * BREAKING CHANGE: action=watch / action=unwatch now requires a token.
20661 * BREAKING CHANGE: Article class hierarchy split into WikiPage (backend)
20662 and Article (frontend) hierarchies. Several hooks now pass a WikiPage object
20663 instead of an Article object. These hooks all use an $article parameter as
20664 documented in hooks.txt. Extensions should be updated to account for this,
20665 though most won't require any changes.
20666 * (bug 27860) Minor edit after clicking 'new section' tab
20667 Now the "This is a minor edit" checkbox is not available when you
20668 create a page or new section.
20669 * (bug 8130) Query pages should limit to content namespaces, not just main
20671 * Special:Contribs now redirects to Special:Contributions.
20672 * (bug 6672) Images are now autorotated according to their EXIF orientation.
20673 This only affects thumbnails; the source remains unrotated.
20674 * (bug 25708) Update case mappings and normalization to Unicode 6.0.0.
20675 * New hook ArticlePrepareTextForEdit added, called when preparing text to be
20677 * New parser option PreSaveTransform added, allows the pre-save transformation
20678 to be selectively disabled.
20679 * Alternative to $wgHooks implemented, using the new Hooks class.
20680 * Add width parameter to Special:Filepath to allow getting the file path of a
20682 * (bug 26870) Add size to {{filepath:}}.
20683 * Upload warnings now show a thumbnail of the uploaded file.
20684 * Introduced the edittools-upload message, which will be inserted under the
20685 upload form instead of edittools if available.
20686 * (bug 26285) Extensions will be automatically generated on upload if the user
20687 specified a filename without extension.
20688 * (bug 26851) Special:UserRights now allows to prefill the reason field
20689 * New maintenance script to fix double redirects
20690 (maintenance/fixDoubleRedirects.php).
20691 * (bug 23315) New body classes to allow easier styling of special pages.
20692 * (bug 27159) Make email confirmation code expiration time configurable.
20693 * (bug 29047) CSS/JS for each user group is imported from
20694 MediaWiki:Group-sysop.js, MediaWiki:Group-autoconfirmed.css, etc.
20695 * (bug 24230) Uploads of ZIP types, such as MS Office or OpenOffice can now be
20696 safely enabled. A ZIP file reader was added which can scan a ZIP file for
20697 potentially dangerous Java applets. This allows applets to be blocked
20698 specifically, rather than all ZIP files being blocked.
20699 * (bug 2429) Allow selection of associated namespace in recent changes.
20700 * (bug 26217) File size is now checked before uploading in HTML5 browsers.
20701 * CSS stylesheet MediaWiki:Noscript.css is now loaded for users with JavaScript
20702 disabled (enclosed in the head in a <noscript> tag).
20703 * Added UserGetLanguageObject hook to change the language used in $wgLang.
20704 * (bug 14645) When $wgMiserMode is on, expensive special pages are styled
20705 differently (italicized by default) on Special:SpecialPages.
20706 * Added $wgAggregateStatsID, which allows UDP stats to be aggregated over
20708 * When $wgAllowMicrodataAttributes is true, all itemtypes are allowed, not just
20709 the three that were defined in the original specification.
20710 * (bug 14706) Added support for the Imagick PHP extension.
20711 * (bug 18691) Added support for SVG rasterization using the Imagick PHP
20713 * (bug 2581, bug 6834) Added links to thumbnail in several resolutions to the
20714 file description page. The sizes are set by $wgImageLimits.
20715 * (bug 28031) Add pageCount support to ArchivedFile.
20716 * (bug 27924) PhpHttpRequest doesn't return response body if HTTP != 200.
20717 * Added hook BitmapHandlerTransform to allow extension to transform a file
20718 without overriding the entire handler.
20719 * The parser now attempts to output markers for editsection tokens and defer the
20720 rendering of them post-cache to reduce parser cache fragmentation and ensure
20721 skin customizability of edit section links.
20722 * (bug 24755) AuthPlugin auto-creation of local accounts can now be aborted by
20723 other extensions by handling the 'AbortAutoAccount' hook, similar to the
20724 'AbortNewAccount' triggered by explicit account creations. (They are separate
20725 to avoid loops and confusion; auth plugins like CentralAuth need to handle
20726 AbortNewAccount separately.
20727 * Special:ListFiles is now transcludable.
20728 * (bug 13879) Special:Emailuser asks for suitable target user if called without.
20729 * (bug 16956) IPTC and XMP metadata now extracted from images.
20730 * (bug 23816) A tracking category is now added for any pages with broken images.
20731 * (bug 23495) Allow createAndPromote.php to create non-sysop users.
20732 * (bug 28916) A way to to toggle mw.config legacy globals settings from
20733 LocalSettings.php has been created by introducing $wgLegacyJavaScriptGlobals.
20734 * (bug 28503) Support for ircs:// URL protocols.
20735 * (bug 26033) It is now possible to count all non-redirect pages in content
20736 namespaces as articles.
20737 * Images can now be embedded in an XML dump stream using backupDump.php
20738 --include-files and can be imported using importDump.php --uploads;
20739 furthermore, it can import files from the filesystem using --image-base-path.
20740 * Three new hooks in Special:Undelete, 'UndeleteForm::showHistory',
20741 'UndeleteForm::showRevision' and 'UndeleteForm::undelete', so that extensions
20742 may override the usage of PageArchive class and replace it with their own
20743 class that extends PageArchive.
20744 * (bug 28915) Implement QUnit test suite for MediaWiki JavaScript.
20745 Also built-in support for distribution through a TestSwarm instance.
20746 * (bug 29036) For cascade-protected pages, the mw-textarea-cprotected class is
20747 added to the textarea on the edit form.
20748 * mw.util.wikiScript has been implemented (like wfScript in GlobalFunctions.php)
20749 * (bug 29067) Expose user.tokens (like we do user.options) in ResourceLoader.
20750 * New 'Debug' hook used by wfDebug() and wfDebugLog().
20751 * (bug 27655) Require token for watching/unwatching pages)
20752 * (bug 28904) (bug 29773) Update jQuery version from 1.4.4 to 1.6.2 (the latest
20754 * (bug 29441) Expose CapitalLinks config in JS to allow modules to properly
20755 handle titles on case-sensitive wikis.
20756 * (bug 29397) Implement mw.Title module in core.
20757 * In MySQL 4.1.9+ with replication enabled, fetch the slave lag from SHOW SLAVE
20758 STATUS instead of SHOW PROCESSLIST. This ensures that lag is reported
20759 correctly in the case where there are no write events occurring. Note that
20760 the DB user now needs to have the REPLICATION CLIENT privilege if you are
20762 * Language codes in $wgDummyLanguageCodes are now excluded on localization
20763 statistics (maintenance/language/transstat.php).
20764 * (bug 29586) Make the (next 200) links on categories link directly to
20765 the relevant section of the category.
20766 * (bug 29109) Allow the automatic edit summary for redirect creation
20767 show the first bit of the new redirect page.
20768 * (bug 29723) mw.util.wikiGetlink() now defaults to wgPageName.
20769 * (bug 29680) Add GetDefaultSortkey hook to override the default sortkey.
20770 * (bug 16699) {{#language:}} accepts second parameter to specify the language in
20771 which the language name is wanted. Coverage depends on the cldr extension.
20772 * (bug 15802) An easy way to look up messages: language qqx which returns
20774 * (bug 29868) Add support for passing parameters to mw.msg in jquery.localize.
20775 * (bug 29558) $wgMiserMode now disables update.php by default.
20776 * AjaxCategories: Easily add, edit or delete categories on article pages.
20777 Suggests possible categories when typing, all saves are done via AJAX.
20778 Supports editing of multiple categories and then saving them in one batch.
20779 * $wgAutopromoteOnce was added, allowing for users to be automatically promoted
20780 to explicit usergroups. If a group is removed from a user via
20781 Special:UserRights, it will not automatically be re-added. Configuration is
20782 similar to $wgAutopromote (see DefaultSettings.php).
20783 * The PerformRetroactiveAutoblock hook was added to allow overriding or
20784 complementing retroactive autoblock handling. This runs when blocking a user
20785 with the 'autoblock' option.
20786 * MediaWiki now supports using protocol-relative URLs in links, interwiki
20787 targets and $wgServer.
20788 * Introduced $wgVaryOnXFPForAPI which will cause the API to send
20789 Vary: X-Forwarded-Proto headers.
20790 * New maintenance script to refresh image metadata
20791 (maintenance/refreshImageMetadata.php).
20792 * (bug 16428) Include permalink in printable version.
20793 * (bug 30722) Add an identity collation that sorts things based on what the
20794 unicode code point is (aka pre-1.17 behavior).
20795 * (bug 30940) Add a hook in User:getDefaultOptions.
20796 To give extensions a better and more flexible way of providing default
20797 values for preferences a hook has been introduced in User:getDefaultOptions().
20798 Setting preferences in $wgDefaultUserOptions still work fine, but when reading
20799 them (i.e. with array_keys) to get a list of all preferences, then
20800 $wgDefaultUserOptions should no longer be used as it will contain those set
20801 via User:getDefaultOptions().
20802 * (bug 30497) Add client-nojs and client-js classes on document element
20803 to let styles easily hide or show things based on general JS availability.
20804 * (bug 31293) If Special:Userlogin is loaded over HTTPS, display
20805 MediaWiki:loginend-https instead of MediaWiki:loginend, if it's not empty.
20806 Same for signupend on the account creation page.
20807 * (bug 31233) New OutputPage::addJsConfigVars() method to make the output page
20808 specific mw.config map extendable.
20809 * mw.util.wikiScript has been implemented (like wfScript in
20810 GlobalFunctions.php).
20812 === Bug fixes in 1.18 ===
20813 * (bug 27860) Minor edit after clicking 'new section' tab.
20814 * (bug 23119) WikiError class and subclasses are now marked as deprecated.
20815 * (bug 10871) Javascript and CSS pages in MediaWiki namespace are no longer
20816 treated as wikitext on preview.
20817 * (bug 22753) Output from update.php is more clear when things changed, entries
20818 indicating nothing changed are now all prefixed by "...".
20819 * Page existence is now not revealed (in the colour of the tabs) to users who
20820 cannot read the page in question.
20821 * (bug 19006) {{REVISIONUSER}} no longer acts like {{CURRENTUSER}} in some
20823 * (bug 16019) $wgArticlePath = "/$1" no longer breaks API edit/watch actions.
20824 * (bug 18372) File types blacklisted by $wgFileBlacklist will no longer be shown
20825 as "Permitted file types" on the upload form.
20826 * (bug 26379) importImages.php gives more descriptive error message on failure.
20827 * (bug 26410) + signs are no longer treated as spaces in internal links if
20828 link has a % sign in it.
20829 * (bug 26412) Search results headers no longer show a bogus edit link.
20830 * (bug 26540) Fixed wrong call to applyPatch in MysqlUpdater.
20831 * (bug 26574) Added 'upload' to $wgRestrictionTypes, allowing upload protected
20832 pages to be queried via the API and Special:ProtectedPages, and allowing
20833 disabling upload protection by removing it from $wgRestrictionTypes.
20834 * If an edit summary exceeds 250 bytes and is truncated, add an ellipse.
20835 * (bug 26638) Database error pages display correctly in RTL languages.
20836 * (bug 26187) Confirmrecreate no longer parses the edit summary.
20837 * (bug 26208) Mark directionality of some interlanguage links.
20838 * (bug 26034) Make the "View / Read" tab in content_navigation style tabs remain
20839 selected when the action is "purge".
20840 * (bug 14267) Support a MediaWiki:Mainpage-nstab override for the subject
20841 namespace tab on the mainpage of a wiki.
20842 * (bug 10158) Do not mention allowing others to contact you when the feature
20843 is disabled ($wgEnableUserEmail=false).
20844 * (bug 26733) Wrap initial table creation in transaction.
20845 * (bug 26729) Category pages should return 404 if they do not exist and have no
20847 * (bug 2585) Image pages should send 404 if no image, no shared image and no
20849 * Custom editintro's using the editintro url parameter will no longer show
20850 <noinclude> sections on pages they are included on.
20851 * (bug 26449) Keep underlines from headings outside of tables and thumbs by
20852 adding overflow:hidden to h1,h2,h3,h4,h5,h6 (also fixes editsection bunching).
20853 * (bug 26708) Remove background-color:white from tables in Monobook and Vector.
20854 * (bug 28422) Remove color:black from tables in Monobook and Vector. And add it
20855 to table.wikitable instead.
20856 * (bug 26781) {{PAGENAME}} and related parser functions escape their output
20858 * (bug 26716) Provide link to instructions for external editor related
20859 preferences and add a comment to the ini control file explaining what is
20861 * Trying to upload a file with no extension or with a disallowed MIME type now
20862 gives the right message instead of complaining about a MIME/extension
20864 * (bug 26809) Uploading files with multiple extensions where one of the
20865 extensions is blacklisted now gives the proper extension in the error message.
20866 * (bug 26961) Hide anon edits in watchlist preference now actually works.
20867 * (bug 19751) Filesystem is now checked during image undeletion.
20868 * Send last modified headers for Special:Recentchanges when RC patrol is
20869 enabled, but user cannot see rc patrol links.
20870 * (bug 26548) ForeignAPIRepo (InstantCommons) now works with PDF files
20871 and other multi-paged file formats.
20872 * Files with a mime type that does not match the extension are now properly
20874 * (bug 27201) Special:WhatLinksHere output no longer contains duplicate IDs.
20875 * (bug 15905) Nostalgia skin could become more usable by including a Talk:
20876 link at the top of the page.
20877 * (bug 27560) Search queries no longer fail in Walloon language.
20878 * (bug 27679) Broken embedded files with special characters are no longer
20879 double HTML escaped.
20880 * (bug 27700) The upload protection can now also be set for files that do not
20882 * (bug 27763) Article::getParserOutput() no longer throws a fatal given when an
20883 incorrect revision ID is passed.
20884 * Trim the form field for uploading by url to remove extra spaces which could
20885 cause confusing error messages.
20886 * (bug 27854) Http::isValidURI is way too lax.
20887 * Do not show enotifminoredits preference, if disabled by $wgEnotifMinorEdits.
20888 * AbortLogin returning "ABORTED" now handled. Also allows message identifier
20889 for "ABORTED" reason to be returned and displayed to user.
20890 * (bug 28034) uploading file to local wiki when file exists on shared repository
20891 (commons) gives spurious info in the warning message.
20892 * Usernames get lost when selecting different sorts on Special:listfiles.
20893 * (bug 14005) editing section 0 of an existing but empty page gives no such
20895 * (bug 26939) Installer does not set $wgMetaNamespace.
20896 * (bug 28166) UploadBase assumes that 'edit' and 'upload' rights are not per
20898 * Make truncate function automatically consider length of '...' string,
20899 since length can vary by localization.
20900 * (bug 28242) Make redirects generated by urls containing a local interwiki
20901 prefix be a 301 instead of a 302.
20902 * (bug 15641) blocked administrators are now prevented from deleting or
20903 protecting their own talk page; and all blocked users are more
20904 comprehensively prevented from performing other actions.
20905 * (bug 27893) Edit-on-doubleclick now applies only on view and purge actions;
20906 no longer triggers unexpectedly on delete, history etc.
20907 * (bug 28417) Fix PHP notice when importing revision without a listed id.
20908 * (bug 28430) Make html and TeX output of <math> always be left-to-right.
20909 * (bug 28306) Fix exposure of suppressed usernames in ForeignDBRepo.
20910 * (bug 28372) Fix bogus link to suppressed file versions in ForeignDBRepo.
20911 * (bug 27473) Fix regression: bold, italic no longer interfere with linktrail
20913 * (bug 28444) Fix regression: edit-on-doubleclick retains revision id again.
20914 * ' character entity is now allowed in wikitext.
20915 * UtfNormal::cleanUp on an invalid utf-8 sequence no longer returns false if
20917 * (bug 28561) The css class small will no longer make nested elements even
20919 * (bug 13172) Array type exif data (like GPS) was not being extracted from
20921 * (bug 28532) wfMsgExt() and wfMsgWikiHtml() use $wgOut->parse().
20922 * (bug 16129) Transcluded special pages expose strip markers when they output
20924 * (bug 27249) "Installed software" table in Special:Version should always be
20926 * (bug 28719) Do not call mLinkHolders __destruct explicitly.
20927 * (bug 21196) Article::getContributors() no longer fails on PostgreSQL.
20928 * (bug 28752) XCache doesn't work in CLI mode.
20929 * (bug 28076) Thumbnail height limited to 360 pixels on Special:Listfiles.
20930 * (bug 22227) Special:Listfiles no longer throws an error on bogus file entries.
20931 * (bug 19408) user_properties.up_property: 32 bytes is not enough.
20932 * (bug 25262) Fix for minification of hardcoded data: URIs in CSS.
20933 * (bug 29263) Add LTR class to the shared CSS to be used for left-to-right text
20934 such as SQL queries shown in dberrortext and similar messages in RTL
20936 * (bug 14977) Fixed $wgServer detection in cases where an IPv6 address is used
20937 as the server name.
20938 * The View X deleted revisions is now shown again on Special:Upload.
20939 * (bug 29071) mediawiki.action.watch.ajax.js should pass uselang to API.
20940 * (bug 28868) Show total pages in the subtitle of an image on the
20941 file description page for multi-paged documents.
20942 * (bug 28883) Message names for different compression types commonly
20943 used in Tiff files.
20944 * When transcluding a special page, do not let it interpret url parameters.
20945 * (bug 28887) Special page classes are no longer re-used during 1 request.
20946 * (bug 28888) Searching for something starting with a # sign no longer tells
20947 the user a page named [[:]] already exists.
20948 * (bug 23002) Imagelinks table not updated after imagemove.
20949 * (bug 27864) Transcluding {{Special:Prefix}} with empty prefix now lists all
20951 * (bug 18803) JPEG2000 images should not be uploadable as .jpg files.
20952 * (bug 11868) If using links to count articles, the checking will now be based
20953 on the real presence of an internal link instead of the "[[" string.
20954 * (bug 28287) The "your changes" box for edit conflicts is now read-only.
20955 * (bug 28940) When making a thumb of an SVG, and only specifying the height
20956 make the width be the max SVG size, not the natrual width of the SVG.
20957 * (bug 1780) Uploading files with non-ascii characters are now forbidden on
20959 * (bug 23464) File: prefixes are now chopped off during uploading.
20960 * (bug 28174) Message config-logo-help amended to not explicitly assume any
20961 LTR/RTL screen layout.
20962 * (bug 28992) Revision numbers in the patrol log are transformed in the user
20964 * (bug 27073) ResourceLoaderDynamicStyles marker should be dynamically appended
20965 to the document head if it doesn't exist.
20966 * (bug 27023) After the document is ready, mw.loader is broken (calls callback
20967 before module is parsed).
20968 * (bug 4330) External URLs without a custom title should be treated as LTR,
20970 * (bug 29055) Make "don't send email on minor edits" preference apply to
20971 changes to talk page in addition to watchlist edits.
20972 * (bug 28272) Special:AllMessages should have only one "Go" button.
20973 * (bug 29101) Special:FileDuplicateSearch no longer shows silly message.
20974 * (bug 29048) jQuery.tabIndex: firstTabIndex() should not output the same
20976 * (bug 29332) Warn if user requests mediawiki-announce subscription but does not
20977 enter an e-mail address.
20978 * (bug 25375) Add canonical namespaces to "wgNamespaceIds" in mw.config.
20979 * The class JpegOrTiffHandler was renamed ExifBitmapHandler.
20980 * (bug 29443) Special:Undelete should use JavaScript to invert all checkboxes
20981 instead of reloading the page.
20982 * (bug 29325) Setting $wgStrictFileExtensions to false no longer gives incorrect
20984 * (bug 29437) Multiple apostrophes in deleted article title cause odd rendering.
20985 * (bug 29485) RSS feed of Special:RecentChange grouped together multiple
20986 consecutive edits by same user in included diff, but then linked to
20987 a single ungrouped diff.
20988 * Do not try to group together a page creation and edit in the RSS feed of RC.
20989 * (bug 29342) Patrol preferences shouldn't be visible to users who don't have
20990 patrol permissions.
20991 * (bug 29471) Exception no longer thrown for files with invalid date in
20993 * (bug 29492) Long-running steps in the installer (such as Upgrade and Install)
20994 no longer cause timeouts.
20995 * (bug 29507) Change 'image link' to 'file link' in Special:Whatlinkshere.
20996 * If the db is really screwed up, and doesn't have a recentchanges table,
20997 make the updater throw an exception instead of a fatal.
20998 * wfArrayToCGI() and wfCgiToArray() now handle nested and associative arrays
21000 * (bug 29567) mw.util.addPortletLink should only wrap link in <span> for
21001 "vectorTabs" portlets.
21002 * (bug 8556) Incorrect session failure warning on preview-on-open
21003 namespaces (categories) when combined with $wgRawHtml.
21004 * Use content language in formatting of dates in revertpage message
21005 (rollback revert edit summary) and do not adjust for user timezone.
21006 * (bug 29277) MediaWiki:Filepage.css is also shown on the local wiki
21007 * Make sure Backlink cache does not retrieve interwiki redirects when looking
21008 for redirects to a local page.
21009 * (bug 6100) Allow different directionality (LTR/RTL) for user interface
21010 and wiki content, along with many other RTL and directionality improvements
21011 (such as bugs 28030, 12406, 28349).
21012 * (bug 29712) Removed broken defaultUserOptionOverrides in MessagesXx files and
21013 unneeded CSS flipping of quickbar. Instead, introduce option 5 which sets
21014 left/right according to the directionality of your interface language.
21015 * (bug 19514) Unordered list list-style-image should be IE6-compatible (8-bit).
21016 * (bug 27410) The tag filter on a history page is now within a <label> element.
21017 * (bug 29779) DairikiDiff/WikiDiff <ins> and <del> should undo browser default
21018 styling (strike/underline).
21019 * (bug 28630) Add iwlinks, langlinks, redirect to
21020 RefreshLinks::deleteLinksFromNonexistent.
21021 * (bug 29797) Error: "Tried to load block with invalid type" when subpages
21022 are disabled for user pages.
21023 * (bug 12205) Bidirectional names in action=credits are split and displayed
21024 incorrectly when wrapped to the next line.
21025 * (bug 20781) Move 'mainpagetext' messages to installer's .i18n file.
21026 * (bug 29737) "MediaWiki:Qbsettings-directionality" should refer to script,
21028 * (bug 26360) $wgSessionHandler was overriding system settings unconditionally.
21029 * Removed AjaxFunctions.php. The last remaining function js_unescape() was moved
21030 to the FCKEditor extension.
21031 * (bug 28762) Resizing to specified height broken for very thin images.
21032 * (bug 29959) Installer fatal when cURL and allow_url_fopen is disabled and user
21033 tries to subscribe to mediawiki-announce.
21034 * (bug 27427) mw.util.getParamValue shouldn't return value from hash even if
21035 param is only present in hash.
21036 * Installer checked for magic_quotes_runtime instead of register_globals.
21037 * (bug 30131) XCache with variable caching disabled no longer used for variable
21038 caching (CACHE_ACCEL)
21039 * $wgSVGMaxSize is now applied to the smaller of width or height, making very
21040 wide pano/timeline/diagram SVGs renderable at saner sizes.
21041 * (bug 30219) The page shown when LocalSettings.php does not exist was broken on
21043 * (bug 30074) Moving user JS subpages resulted in JS errors because
21044 #REDIRECT [[Foo]] is invalid JS.
21045 * (bug 30335) Fix for HTMLForms using GET breaking when non-friendly URLs
21047 * (bug 30264) Changed installer-generated LocalSettings.php to use
21048 require_once() instead of require() for included extensions.
21049 * Tracking categories are no longer shown in footer for special pages.
21050 * (bug 30684) Fix bad escaping in mw.message for inexistent messages (i.e.
21052 * $wgOverrideSiteFeed no longer double escapes urls.
21053 * The preprocessor no longer fails with a PHP warning about XML_PARSE_HUGE when
21054 processing complex pages using newer versions of libxml2.
21055 * (bug 30907) Special:Unusedcategories should sort ascendingly.
21056 * (bug 28545) When using the uca-default collation, sortkey's starting with a
21057 space (U+20) will sort under an invisible header like in 1.16 rather than a
21059 * (bug 30192) Thumbnails of archived files are now deleted.
21060 * (bug 30843) mediawiki.Title should not convert extensions (anything after the
21061 last full stop) to lower case).
21062 * (bug 31213) Exception thrown when trying to move file cross-namespace.
21063 * (bug 18424) Special:Prefixindex and Special:Allpages paging links are
21064 really small, and somewhat inconsistent with each other.
21065 * (bug 30466) Entries in iwlinks table are now cleared when moving a page over
21067 * (bug 31674) Can't edit watchlist if it contains special pages.
21068 * (bug 32100) Installer complains about Suhosin GET limit even if it is
21069 already set above 1024 bytes.
21071 === API changes in 1.18 ===
21072 * BREAKING CHANGE: action=watch now requires POST and token.
21073 * (bug 26339) Throw warning when truncating an overlarge API result.
21074 * (bug 14869) Add API module for accessing QueryPage-based special pages.
21075 * (bug 14020) API for Special:Unwatchedpages.
21076 * (bug 24287) Wrap API Help output at 100 characters.
21077 * Add a realname uiprop option to query=userinfo so a user's realname can be
21079 * Add a &watchuser option to ApiBlock.
21080 * (bug 26541) Generator-ise ApiQueryRecentChanges.
21081 * action=parse now correctly returns an error for nonexistent pages.
21082 * (bug 25767) Add userrights properties to allusers and users query lists.
21083 * (bug 26558) list=allusers auprop=groups does not list groups a user is
21084 automatically a member of.
21085 * (bug 26559) list=allusers auprop=rights does not match
21086 list=users usprop=rights.
21087 * (bug 26560) On allusers if limit < total number of users, last user gets
21089 * (bug 25135) add "normalized" to action=parse.
21090 * (bug 26460) Add support for listing category members by category pageid.
21091 * (bug 26482) add a imimages param to prop=images.
21092 * (bug 26498) allow LinksUpdate with API.
21093 * (bug 26485) add a elextlinks param to prop=extlinks.
21094 * (bug 26483) add a iwtitles param to prop=iwlinks.
21095 * (bug 26484) add a lltitles param to prop=langlinks.
21096 * (bug 26480) add a pppageprops param to prop=pageprops.
21097 * (bug 26650) Remove $wgAPICacheHelp in favour of $wgAPICacheHelpTimeout.
21098 * (bug 24650) Fix API to work with categorylinks changes.
21099 * Expose list of skins in meta=siteinfo.
21100 * (bug 26548) Add iiurlparam param to query=imageinfo and query=stashimageinfo.
21101 * (bug 27205) aiprop=metadata and aiprop=parsedcomment need help text.
21102 * Add a amtitle param to meta=allmessages.
21103 * (bug 25832) query=allimages now outputs ns/title as well.
21104 * (bug 27199) Thumbnail urls can be fetched for old files as well.
21105 * (bug 27376) when using ApiBase::PARAM_TYPE => 'integer' without a min or
21106 max value, API doesn't validate the input is actually an integer.
21107 * (bug 27479) API error when using both prop=pageprops and
21108 prop=info&inprop=displaytitle.
21109 * (bug 27554) Update API information text to reflect change in bug 26125.
21110 * (bug 27611) list=blocks: Use ipb_by_text instead of join with user table.
21111 * (bug 27616) Add userid of blocked user and blocker to list=blocks.
21112 * (bug 27688) Simplify queries to list user block information.
21113 * (bug 27708) list=users does not have a property to return user id.
21114 * (bug 27715) imageinfo didn't respect revdelete.
21115 * (bug 27862) Useremail module didn't properly return success on success.
21116 * (bug 27590) prop=imageinfo now allows querying the media type.
21117 * (bug 27587) list=filearchive now outputs full title info.
21118 * (bug 27018) Added action=filerevert to revert files to an old version.
21119 * (bug 27897) list=allusers and list=users list hidden users.
21120 * (bug 27717) API's exturlusage module does not respect $wgMiserMode.
21121 * (bug 27588) list=filearchive&faprop=sha1 returns empty attribute.
21122 * (bug 28010) Passing a non existent user to list=users gives internal error.
21123 * (bug 27549) action=query&list=users&usprop=groups doesn't show implicit
21124 groups if a user doesn't have explicit groups.
21125 * (bug 27670) Ordering by timestamp (and usage of start and end) isn't as clear
21126 in auto generated document, as it is on mediawiki.org.
21127 * (bug 27182) API: Add filter by prefix for meta=allmessages.
21128 * (bug 27183) API: Add filter by customisation state for meta=allmessages.
21129 * (bug 27340) API: Allow listing of "small" categories.
21130 * (bug 27342) Add audir param to list=allusers.
21131 * (bug 27203) add fato param to list=filearchive.
21132 * (bug 27341) Add drto param to list=deletedrevs.
21133 * (bug 26630) Add API for Special:ActiveUsers.
21134 * (bug 27020) API: Allow title prefix search of logevents (only when not in
21136 * (bug 26629) add Special:MIMESearch to API.
21137 * (bug 27585) add pagecount to list=filearchive.
21138 * (bug 28104) Namespace for local pages in interwiki backlinks (iwbacklinks)
21140 * (bug 27343) Add parseddescription to list=filearchive.
21141 * (bug 27469) label implicit groups in list=allusers&auprop=groups/
21142 list=users&usprop=groups.
21143 * Addition of APIQuerySiteInfoGeneralInfo hook to add extra information to
21144 the general site info results.
21145 * (bug 16288) API: consider making closure status of wikis more clear
21146 with meta=siteinfo.
21147 * (bug 27589) list=allimages&aiprop=archivename is useless.
21148 * (bug 27586) Remove duplication of props in ApiQueryStashImageInfo
21149 by using ApiQueryImageInfo.
21150 * (bug 28226) prop=extlinks&eloffset should be an integer.
21151 * (bug 28070) Fix watchlist RSS for databases that store timestamps in a
21152 real timestamp field.
21153 * API upload errors may now return the parameter that needs to be changed and
21154 a sessionkey to fix the error.
21155 * (bug 28249) allow dupes in meta=allmessages&amargs.
21156 * (bug 28263) cannot import xml with the API, when have not "import" user
21157 right, but "importupload".
21158 * (bug 28365) Added description for uiprop=preferencestoken in meta=userinfo.
21159 * (bug 28394) Set forgotten parameters types in ApiUnblock.
21160 * (bug 28395) Set forgotten parameters types in ApiParse.
21161 * (bug 28368) add hint for multipart/form-data to API information of
21162 action=import&xml=.
21163 * (bug 28391) action=feedwatchlist&allrev should be a bool.
21164 * (bug 28364) add registration date to meta=userinfo.
21165 * (bug 28254) action=paraminfo: Extract type from PARAM_DFLT if
21166 PARAM_TYPE is not set.
21167 * (bug 27712) add parent_id to list=deletedrevs.
21168 * (bug 28455) Add 'toponly' to recentchanges API module.
21169 * (bug 26873) API: Add 'toponly' filter in usercontribs module.
21170 * (bug 28586) YAML: strings that are the same as boolean literals.
21171 * (bug 28591) Update/replace/supplement spyc (YAML parsing library).
21172 * YAML API output is now 1.2 compliant, using JSON as the formatter.
21173 * (bug 28672) give information about misermode on API.
21174 * (bug 28558) Add iw_api and iw_wikiid to meta=siteinfo&siprop=interwikimap
21175 * (bug 26882) Allow listing of indefinite protections with the API.
21176 * (bug 27344) add drprefix param to list=deletedrevs.
21177 * (bug 28560) list=deletedrevs should die, if combination of param is invalid.
21178 * (bug 28238) paraminfo: output both limits for multi param.
21179 * (bug 27179) API: List of extension tags through meta=siteinfo.
21180 * Get a list of function hooks through meta=siteinfo.
21181 * Get a list of all subscribed hooks, and those subscribers.
21182 * (bug 28225) Allow hiding of user groups in list=allusers.
21183 * (bug 27185) API: Add Special:ComparePages.
21184 * (bug 28265) allow outputting of comments for action=expandtemplates.
21185 * (bug 27790) Add query type for querymodules to output of ApiParamInfo.
21186 * (bug 28963) Add langbacklinks query module to the api.
21187 * (bug 27593) API should return error message when sha1/sha1base36 is invalid.
21188 * (bug 28578) API's parse module should not silently override invalid
21190 * (bug 20699) Watchlist API should list log-events.
21191 * (bug 29070) Require a token in API action=watch.
21192 * (bug 29221) Expose oldrevid in ApiQueryWatchlist output.
21193 * (bug 29267) Always give the servername for meta=siteinfo&siprop=dbrepllag.
21194 * (bug 28897) rvparse now respects rvsection for action=query&prop=revisions.
21195 * (bug 25734) API: Possible issue with revids validation.
21196 * (bug 28002) Internal error in ApiFormatRaw::getMimeType.
21197 * (bug 29237) ApiQuery now has an option to output the "iwurl" attribute.
21198 * (bug 28392) Mark action=undelete×tamps as type "timestamp".
21199 * (bug 21346) Make deleted images searchable by hash (disabled in Miser Mode).
21200 * (bug 27595) sha1 search of list=filearchive does not work.
21201 * (bug 26763) Make RSS/Atom of user contributions more visible.
21202 * (bug 25133) Allow redirects also for action=parse&pageid.
21203 * (bug 29745) Fatal error in API search.
21204 * (bug 29476) API returns page title instead of sectiontitle for
21205 srprop=sectiontitle.
21206 * Correct the documentation of srprop properties.
21207 * (bug 28817) Add reference help page link to API Modules.
21208 * (bug 29935) Improve formatting of examples in ApiParamInfo.
21209 * (bug 29938) list=users&usprop=rights shows rights the user doesn't have.
21210 * (bug 24781) The API will include an XML namespace if the includexmlnamespace
21212 * (bug 29392) Setting the start or end parameter now works with lists blocks,
21213 categorymembers, deletedrevs, logevents, protectedtitles, usercontributions
21214 and watchlist in Postgres.
21216 === Languages updated in 1.18 ===
21218 MediaWiki supports over 330 languages. Many localisations are updated
21219 regularly. Below only new and removed languages are listed, as well as
21220 changes to languages because of Bugzilla reports.
21222 * Angika (anp) (new).
21223 * Brahui (brh) (new).
21224 * Central Dusun (dtp) (new).
21225 * Jamaican Creole English (jam) (new).
21226 * Khowar (khw) (new).
21228 * Kichwa (qug) (new).
21229 * Tokipona (tp) (removed) 'tokipona' is still valid.
21230 * (bug 17160) Gender specific display text for User namespace.
21231 * Link trail added for sl and sh.
21232 * (bug 27633) Add characters to linkTrail for Portuguese (pt and pt-br).
21233 * (bug 27426) Set $namespaceGenderAliases for Arabic (ar).
21234 * (bug 27385) Set Polish $namespaceGenderAliases.
21235 * (bug 27681) Set $namespaceGenderAliases for Portuguese (pt and pt-br).
21236 * (bug 27785) Fallback language for Kabardian (kbd) is English now.
21237 * (bug 27825) Raw watchlist edit message now uses formatted numbers.
21238 * (bug 28040) Turkish: properly lower case 'I' to 'i' (dotless i) and
21239 uppercase 'i' to 'I' (dotted i).
21240 * Conversion script between Syllabics and Latin for the Inuktitut language.
21241 * Date formats for Indonesian (id) updated.
21242 * Bhojpuri (bho) (renamed from "bh").
21243 * (bug 29031) When translating block log entries, indefinite, infinite, and
21244 infinity are now considered the same.
21245 * Aromanian (rup) (renamed from "rua-rup").
21246 * Kashmiri (ks) split into Kashmiri (Perso-Arabic) (ks-arab) and Kashmiri
21247 (Devanagari) (ks-deva). Defaults to ks-arab.
21248 * (bug 30864) Use bengali numerals for <ol> for Assamese.
21249 * (bug 30817) Restored linktrail for kk (Kazakh).
21250 * (bug 27398) Add $wgExtraGenderNamespaces for configured gendered namespaces.
21251 * (bug 30846) New LanguageOs class.
21253 === Other changes in 1.18 ===
21254 * Removed legacy wgAjaxWatch javascript global object, no longer in use.
21255 * (bug 28556) Upload support for MacBinary files has been removed (Used by
21256 Internet Explorer 5 for Mac OS 9).
21257 * On wiki farm setups using $wgConf, 'wgCanonicalServer' is now expected to be
21258 set for all wikis. This was already the case for 'wgServer'.
21260 == MediaWiki 1.17 ==
21262 == MediaWiki 1.17.5 ==
21265 This is a security release of the MediaWiki 1.17 branch.
21267 === Summary of selected changes in 1.17 ===
21269 Selected changes since MediaWiki 1.16 that may be of interest:
21271 * A new installer has been introduced. It has a wizard-style interface which is
21272 translated into many languages. Many shortcomings in the old installer were
21273 addressed with this rewrite. Note that it is no longer required for the config
21274 directory to be made writable by the webserver. Instead the generated
21275 LocalSettings.php file is offered as a download, which you must then upload
21276 to the wiki's base directory.
21278 * ResourceLoader, a new framework for delivering client-side resources such as
21279 JavaScript and CSS, has been introduced. These resources are now delivered
21280 through the new entry point script "load.php", instead of as static files
21281 served directly by the web server. This allows minification, compression and
21282 client-side caching to be used more effectively, which should provide a net
21283 performance improvement for most users.
21285 * Category sorting has been improved.
21286 ** Sorting is now case insensitive.
21287 ** Sub-categories, pages and files can now be paged separately.
21288 ** When several pages are given the same sort key, they sort by their
21289 names instead of randomly.
21291 * The lowest supported version of PHP is now 5.2.3. If necessary, please
21292 upgrade PHP prior to upgrading MediaWiki.
21294 === Changes since 1.17.4 ===
21296 * (bug 36938) Correctly escape uselang attribute to prevent xss
21297 * Expanded Blacklist for SVG Files
21299 === Changes since 1.17.3 ===
21301 * (bug 35961) Hash comparison should always be strict.
21302 * Fix broken email confirmation expiration caused by MWCryptRand changes.
21303 * (bug 35671) PHP Notice: Undefined index: gettoken in includes/api/ApiMain.php
21306 === Changes since 1.17.2 ===
21308 * (bug 22555) Remove or skip strip markers from tag hooks like <nowiki> in
21309 core parser functions which operate on strings, such as padleft.
21310 * (bug 34212) ApiBlock/ApiUnblock allow action to take place without a token
21312 * (bug 34907) Fixed exposure of tokens through load.php that could have
21313 facilitated CSRF attacks.
21314 * (bug 35317) CSRF in Special:Upload.
21316 === Changes since 1.17.1 ===
21317 * (bug 33117) prop=revisions allows deleted text to be exposed through cache
21319 * (bug 32709) Private Wiki users were always taken to Special:Badtitle on login.
21321 === Changes since 1.17.0 ===
21323 * (bug 29535) Added missing Creative Commons CC0 icon.
21324 * (bug 29726) Fixed failure to load internationalization messages in
21325 client-side scripts on WebKit-based browsers.
21326 * Fixed a bug in message transformation where the previous language could leak
21327 into later transformations in the UI language.
21328 * (bug 29091) Fixed form of native name for Ossetic language (Иронау -> Ирон)
21329 * Fixed maintenance scripts upgrade1_5.php and rebuildImages.php, they did not
21330 work at all since 1.17 beta 1.
21331 * (bug 29531) Fixed img_auth.php for thumbnails and other filenames with
21332 multiple dots, was broken by the fix for bug 28840.
21333 * In the maintenance script purgeList.php, fixed a fatal error when a page
21334 title is given, instead of a URL.
21335 * (bug 19514) Unordered list list-style-image should be IE6-compatible (8-bit).
21336 * Installer checked for magic_quotes_runtime instead of register_globals.
21337 * $wgSVGMaxSize is now applied to the smaller of width or height, making very
21338 wide pano/timeline/diagram SVGs renderable at saner sizes.
21339 * (bug 29959) Installer fatal when cURL and allow_url_fopen is disabled and user
21340 tries to subscribe to mediawiki-announce.
21341 * Installer checked for magic_quotes_runtime instead of register_globals
21342 * (bug 30131) XCache with variable caching disabled no longer used for variable
21343 caching (CACHE_ACCEL)
21344 * (bug 30264) Changed installer-generated LocalSettings.php to use
21345 require_once() instead require() for included extensions.
21346 * (bug 26486) ResourceLoader modules with paths to nonexistent files cause PHP
21347 warnings/notices to be thrown
21348 * (bug 30907) Special:Unusedcategories should sort ascendingly.
21349 * (bug 30219) The page shown when LocalSettings.php does not exist was broken on
21351 * Hardcoded NLS_NUMERIC_CHARACTERS for Oracle DB to prevent type conversion
21353 * Fixed recentchanges FK violation on page delete and cache purge error in
21354 updater for Oracle DB.
21355 * (bug 32276) Skins were generating output using the internal page title which
21356 would allow anonymous users to determine whether a page exists, potentially
21357 leaking private data. In fact, the curid and oldid request parameters would
21358 allow page titles to be enumerated even when they are not guessable.
21359 * (bug 32616) action=ajax requests were dispatched to the relevant internal
21360 functions without any read permission checks being done. This could lead to
21361 data leakage on private wikis.
21363 === Changes since 1.17.0rc1 ===
21365 * Fixed syntax error in generated LocalSettings.php when a non-default user
21366 rights profile is chosen.
21367 * (bug 29399) Fixed PostgreSQL installation when the DB user for installation
21368 is the same as the one for web access.
21369 * (bug 29233) Fixed failover for DB slave servers. When a DB slave went down,
21370 an error was immediately shown to the user, instead of trying another slave.
21371 Was broken since 1.17 beta 1.
21372 * (bug 29278) Fixed PHP fatal error when attempting to add text to a page via a
21374 * (bug 29408) Fixed uploads of files with MIME types that aren't detected by
21376 * Removed DEFAULT '' NOT NULL field definitions from Oracle DB schema because
21377 using the DEFAULT value ('') in DML broke Oracle backend as it treats an
21378 empty VARCHAR2 value as NULL. Indexes on Oracle do not require NOT NULL
21381 === Changes since 1.17 beta 1 ===
21383 * Fixed warning about missing file "password.js".
21384 * When installing on MySQL, don't attempt to create a new database user if the
21385 same user is used for installation and web access.
21386 * Fixed SQL query errors in queries with table aliases.
21387 * (bug 27891) Fixed the "chronology protector", broken since 1.17beta1, which
21388 ensures that when database replication is used, the new version is seen by
21389 the user immediately after they create or edit an article.
21390 * (bug 28845) Allow PostgreSQL installation using a non-root user account which
21391 has role creation abilities.
21392 * When installing on PostgreSQL and the install account is the same as the web
21393 account, check to make sure that the account has suitable privileges in the
21395 * (bug 28172) Fixed error in PostgreSQL installation when creating the wiki
21397 * Fixed an issue with the Oracle installer in cases where the user is different
21398 to the database name.
21399 * Added "unblockself" to the list of available rights.
21400 * In the installer, fixed the "user rights profile" option, it never worked.
21401 * (bug 29117) Fixed Hebrew localisation of the installer.
21402 * (bug 28840) Reduce the collateral damage caused by the fix for bug 28235 (XSS
21403 on Internet Explorer 6 due to a file extension in the query string) by
21404 reducing the number of URLs that are blocked, and by redirecting the request
21405 to a safer URL where possible instead of blocking it.
21406 * (bug 28812) Fixed documentation of API action=parse.
21407 * (bug 28979) Fixed styling of <abbr> and <acronym>.
21408 * Fixed the error message displayed when you try to create an account by email,
21409 but an email address is not given.
21410 * Fixed JS error due to missing dependency for jquery.suggestions.
21411 * Exposed $wgExtensionAssetsPath in JavaScript.
21412 * (bug 28738) Made ResourceLoader support environments with small URL length
21413 limits. The length limit can be configured via
21414 $wgResourceLoaderMaxQueryLength, and this is set automatically in the
21415 generated LocalSettings.php when the php.ini variable
21416 "suhosin.get.max_value_length" is set. When a URL exceeds this limit, the
21417 request is split up. Also, reduced the average length of load.php URLs by
21418 using a more compact parameter format.
21419 * (bug 25262) Fix for minification of hardcoded data: URIs in CSS.
21420 * (bug 25124) Respect $wgStyleDirectory in ResourceLoader.
21421 * Allow installation when no HTTP client is available, don't throw an exception.
21422 * (bug 27465) Fix metadata extraction for SVG files using unusual namespace
21424 * (bug 29174) Fix regression in upload-by-URL: uploading files larger than the
21425 PHP memory limit should work again.
21426 * Fixed the display of comments in the new user log.
21427 * (bug 28237) When installing extensions using the web-based installer, create
21428 any necessary database tables.
21429 * (bug 28983) Fixed automated installation of extensions that overwrite $path.
21430 * Fixed error caused by missing magic words.
21431 * Fixed breakage of article editing in PostgreSQL due to text search
21432 configuration errors.
21433 * Fixed the HTTPS client used when Curl is not available. This avoids an error
21434 during install about failure of the mediawiki-announce subscription.
21435 * (bug 28162) When installing to PostgreSQL, respect the "database port" input,
21438 === Configuration changes in 1.17 ===
21440 * $wgLogAutocreatedAccounts controls whether autocreation of accounts is logged
21442 * (bug 22858) $wgLocalStylePath is by default set to the same value as
21443 $wgStylePath but should never point to a different domain than the site is
21444 on, allowing skins to use .htc files which are not cross-domain friendly.
21445 * $wgFileStore has been deprecated. The only usage $wgFileStore['deleted'] has
21446 been turned into $wgDeletedDirectory.
21447 * $wgDeletedDirectory has been added to specify what directory to place deleted
21449 * IBM DB2 database no longer uses the db specific $wgDBport_db2 variable but the
21451 * $wgCategoryPrefixedDefaultSortkey was removed and is now always false. This
21452 provides more sensible sorting behavior for categories.
21453 * Removed unused globals: $wgEnableSerializedMessages, $wgCheckSerialized,
21454 $wgUseMemCached, $wgDisableSearchContext, $wgColorErrors, $wgUseZhdaemon,
21455 $wgZhdaemonHost and $wgZhdaemonPort.
21456 * (bug 24408) The include_path is not modified in the default LocalSettings.php
21457 * $wgVectorExtraStyles was removed, and is no longer in use.
21458 * Removed $wgUpdates for database updates; extensions should use
21459 DatabaseUpdater::addExtensionUpdate() via the LoadExtensionSchemaUpdates hook.
21460 * Removed $wgServerName. It doesn't need to be set anymore and is no longer
21461 available as input for other configuration items, either.
21462 * It's no longer necessary for LocalSettings.php to include DefaultSettings.php.
21463 * It's no longer necessary to set $wgCacheEpoch to the file modification time
21464 of LocalSettings.php, in LocalSettings.php itself. Instead, this is done
21465 automatically if $wgInvalidateCacheOnLocalSettingsChange is true (which is
21467 * $wgCopyrightIcon is deprecated and $wgFooterIcons['copyright']['copyright']
21468 should be used instead.
21469 * $wgSysopUserBans is deprecated, and will be made permanently true in 1.18.
21470 If you need this functionality, you should use the BlockIp hook to filter and
21471 reject such blocks.
21472 * $wgSysopRangeBans is deprecated, you should set $wgBlockCIDRLimit to maximum
21473 (32 for IPv4, 128 for IPv6), equivalent to allowing rangeblocks of only 1
21476 === New features in 1.17 ===
21478 * (bug 10183) Users can now add personal styles and scripts to all skins via
21479 User:<name>/common.css and /common.js (if user css/js is enabled).
21480 * (bug 22748) Add anchors on Special:ListGroupRights.
21481 * (bug 21981) Add parameter 'showfilename' to <gallery> to automatically
21482 apply the names of the individual files within the gallery.
21483 * Future-proof redirection to fragments in Gecko, so things work a little nicer
21484 if they fix <https://bugzilla.mozilla.org/show_bug.cgi?id=516293>.
21485 * Support git:// and mms:// protocols by default for external links.
21486 * (bug 15810) Blocked admins can no longer unblock themselves without the
21487 'unblockself' permission (which they have by default).
21488 * (bug 18499) Added "enhanced" URL parameter to switch between old and enhanced
21490 * (bug 22925) "sp-contributions-blocked-notice-anon" message now displayed when
21491 viewing contributions of a blocked IP address.
21492 * (bug 22474) {{urlencode:}} now takes an optional second parameter for type of
21494 * Special:Listfiles now supports a username parameter.
21495 * Special:Random carries over query string parameters.
21496 * (bug 23206) Add Special::Search hook for detecting successful "Go".
21497 * When visiting a "red link" of a deleted file, a deletion and move log excerpt
21498 is provided on the Upload form.
21499 * (bug 22647) Add category details in search results.
21500 * (bug 23276) Add hook to Special:NewPages to modify query.
21501 * Add accesskey 's' and tooltip to 'Save' button at Special:Preferences.
21502 * Add accesskey 'b' and tooltip to the summary field of edit mode.
21503 * (bug 20186) Allow filtering Special:Contributions for RevisionDeleted edits.
21504 * ajaxwatch now uses the API and JQuery, and can be used to animate arbitrary
21505 watch links, not just to watch the page the link is on.
21506 * (bug 20976) "searchmenu-new-nocreate" message now displayed when there
21507 is no title match in search and the user has no rights to create pages.
21508 * (bug 23429) Added new hook WatchlistEditorBuildRemoveLine.
21509 * (bug 22844) Added support for WinCache object caching (for IIS).
21510 * (bug 23580) Add two new events to LivePreview so that scripts can be notified
21511 about the beginning and finishing of LivePreview actions.
21512 * (bug 21278) Now the sidebar allows inclusion of wiki markup.
21513 * (bug 23733) Add IDs to messages used on CSS/JS pages.
21514 * Show validity period of the login cookie in Special:UserLogin and
21515 Special:Preferences.
21516 * Interlanguage links display the page title in their tooltip.
21517 * (bug 23621) New Special:ComparePages to compare (diff) two articles.
21518 * (bug 4597) Provide support in Special:Contributions to show only "current"
21520 * (bug 17857) {{anchorencode}} acts more like how the parser creates section ids
21521 * (bug 21477) \& can now be used in <math>
21522 * (bug 11641) \dotsc \dotsm \dotsi \dotso can now be used in <math>
21523 * (bug 21475) \mathtt and \textsf can now be used in <math>
21524 * texvc is now run via ulimit4.sh, to limit execution time.
21525 * SQLite now supports $wgSharedDB.
21526 * (bug 8507) Group file links by namespace:title on image pages.
21527 * Stop emitting named entities, so we can use <!DOCTYPE html> while still being
21529 * texvc now supports \bcancel and \xcancel in addition to \cancel and \cancelto
21530 * Added scriptExtension setting to $wgForeignFileRepos.
21531 * ForeignApiRepo uses scriptDirUrl if apiBase not set.
21532 * (bug 24212) Added MediaWiki:Filepage.css which is also included on foreign
21534 * (bug 14685) Double underscore magic word usage is now tracked in the
21535 page_props table, as well as the behavioral magic words {{DEFAULTSORT}} and
21537 * (bug 24045) MediaWiki:Ipb-needreblock is now wrapped in a div with class
21538 "mw-ipb-needreblock"
21539 * Non-file pages can no longer be moved to the file namespace, nor vice versa.
21540 * (bug 671) The <dfn>, <kbd> and <samp> elements have been whitelisted in user
21542 * (bug 21503) There's now a "reason" field when creating account for other
21544 * (bug 24418) action=markpatrolled now requires a token.
21545 * A variety of category sort-related fixes, including:
21546 ** (bug 164) In English, lowercase and uppercase letters now sort the same.
21547 ** (bug 1211) Subcategories, ordinary pages, and files now page separately.
21548 ** When several pages are given the same sort key, they sort by their names
21549 instead of randomly.
21550 * (bug 23848) Add {{ARTICLEPATH}} Magic Word.
21551 * (bug 8140) Add dedicated CSS classes to Special:Newpages elements.
21552 * (bug 11005) Add CSS class to empty pages in Special:Newpages.
21553 * The parser cache is now shared amongst users whose different settings aren't
21555 * Any attribute beginning with "data-" can now be used in wikitext, per HTML5.
21556 * (bug 24007) Diff pages now mention the number of users having edited
21557 intermediate revisions.
21558 * Added new hook GetIP.
21559 * Special:Version now displays whether a SQLite database supports full-text
21561 * TS_ISO_8691_BASIC was added as a time format, which is used by ResourceLoader
21563 * Maintenance scripts get a --memory-limit option to override defaults (which
21564 is usually to set it to -1 to disable the limit).
21565 * (bug 25397) Allow uploading (not displaying) of WebP images, disabled
21567 * (bug 23194) Special:ListFiles now has thumbnails.
21568 * Use hreflang to specify canonical and alternate links, search engine friendly
21569 when a wiki has multiple variant languages.
21570 * (bug 19593) Specifying --server in now works for all maintenance scripts.
21571 * Now rebuildtextindex.php warns if SQLite doesn't support full-text search.
21572 * (bug 10541) Front/backend separation of installation/upgrade code.
21573 * (bug 10596) Allow installer to enable extensions already in extensions folder.
21574 * (bug 20627) Installer should be in languages other than English.
21575 * Support for metadata in SVG files (title, description).
21576 * Special:Search: Add CSS classes to 'none found' and 'create link' messages.
21577 * Add CSS classes (including namespace and pagename) to the enhanced recent
21578 changes/watchlist entries.
21579 * (bug 22463) Add hook 'SkinGetPoweredBy' to make 'powered by' icon/text
21581 * Added CSS print pagination to the print stylesheets.
21582 * (bug 25960) Add <link rel=canonical"> for File pages of shared/foreign
21584 * When viewing a redirect, the redirect arrow and redirection target are both
21585 wrapped in a div that has the class "redirectMsg" so that the redirection
21586 arrow can be customized with CSS.
21587 * (bug 21911) Hard coded limit for long page warning removed. New message
21588 [[MediaWiki:Longpage-hint]] (empty by default) can be used instead.
21589 Parameters: $1 shows the formatted textsize in Byte/KB/MB, $2 is the raw
21590 number of the textsize in Byte.
21591 * (bug 3276) Give image <gallery>s fluid width.
21592 * Added uploads link to page subtitle in Special:Contributions.
21593 * Added Special:Myuploads special page that redirects to Special:Listfiles.
21594 * The footerlinks used in Monobook/Vector/Modern are now part of common skin
21595 code, SkinTemplateOutputPageBeforeExec can be used to customize the list.
21596 * Special wrapping setups can now define MW_CONFIG_FILE to load a config file
21597 other than LocalSettings.php. This is like MW_CONFIG_CALLBACK but works in
21598 some cases where MW_CONFIG_CALLBACK will not work.
21599 * (bug 26574) Added 'upload' to $wgRestrictionTypes, allowing upload protected
21600 pages to be queried via the API and Special:ProtectedPages, and allowing
21601 disabling upload protection by removing it from $wgRestrictionTypes.
21602 * The name attribute of HTMLForm fields can now be overridden by passing a
21603 'name' key in the descriptor array. Hidden field names are now treated
21604 consistently with other fields and, by default, prefixed with 'wp'.
21605 * (bug 27402) Add support for disabling MWSuggest.
21606 * (bug 26563) Add bytes changed per revision for stub and full article dumps.
21607 * (bug 27508) Add $wgSVGMetadataCutoff to limit the maximum amount of an svg we
21608 look at when finding metadata to prevent excessive resource usage.
21609 * (bug 198) $wgUpgradeKey allows unlocking the web installer for upgrades
21610 without having to move LocalSettings.php
21611 * Added $wgAllowImageTag, which can be set to true to whitelist the <img> tag
21613 * (bug 12797) Add $wgGalleryOptions for adjusting of default gallery display
21615 * Added the $wgAllowUserCssPrefs option which allows disabling CSS-based
21616 preferences; which can improve page loading speed.
21617 * Added $wgSQLMode for setting database SQL modes - either performance (null)
21618 or other reasons (such as enabling stricter checks).
21619 * (bug 20193) Added $wgVectorShowVariantName global configuration variable
21620 which causes Vector to render the variants drop-down menu with a label
21621 showing the current variant name. This is off by default, pending further
21622 research into its user experience implications.
21623 * The upload link for missing files can now be set separately from the
21624 navigation link with $wgUploadMissingFileUrl.
21625 * $wgAdditionalMailParams added to allow setting extra options to mail() calls.
21626 * Added $wgSecureLogin to optionally login using HTTPS.
21627 * (bug 25728) Added $wgPasswordSenderName to make the name associated
21628 with $wgPasswordSender configurable.
21629 * (bug 22463) $wgFooterIcons added to allow configuration of the icons shown in
21630 the footers of skins.
21631 * $wgFileCacheDepth can be used to set the depth of the subdirectory hierarchy
21632 used for the file cache. Default value is 2, which matches former behavior.
21634 === Bug fixes in 1.17 ===
21636 * (bug 17560) Half-broken deletion moved image files to deletion archive
21637 without updating database.
21638 * (bug 22666) Submitting user block form with an invalid user name no longer
21640 * (bug 22665, bug 22667) User '0' can now be unblocked and have its block
21642 * (bug 22606) The body of e-mail address confirmation message is now different
21643 when the address changed.
21644 * (bug 22664) Special:Userrights now accepts '0' as a valid user name.
21645 * (bug 5210) Preload parser now parses <noinclude>, <includeonly> and
21647 * (bug 22709) IIS7 mishandles redirects generated by OutputPage::output() when
21648 the URL contains a colon.
21649 * (bug 22353) Categorised recent changes now works again.
21650 * (bug 22747) "Reveal my e-mail address in notification e-mails" preference is
21651 now only displayed when relevant.
21652 * (bug 22772) {{#special:}} parser function now works with subpages.
21653 * (bug 18664) Relative URIs in interwiki links cause failed redirects.
21654 * (bug 19270) Relative URIs in interwiki links break interwiki transclusion.
21655 * (bug 22903) Revdelete log entries now show in the user preferred language.
21656 * (bug 22905) Correctly handle <abbr> followed by ISBN.
21657 * (bug 22940) Namespace aliases pointing to main namespace don't work.
21658 * (bug 15810) Blocked admins can no longer block/unblock other users.
21659 * (bug 22876) Avoid possible PHP Notice if $wgDefaultUserOptions is not
21661 * (bug 14952) Page titles are renormalized after html entities are removed so
21662 that links with non-NFC character references work correctly.
21663 * (bug 22991) wgUserGroups JavaScript variable now reports * group for
21664 anonymous users instead of null.
21665 * (bug 22627) Remove PHP notice when deleting a page only hidden users edited.
21666 * (bug 21520) Anonymous previews now also gives a warning about not being
21667 logged in (anonpreviewwarning).
21668 * (bug 22935) image/x-ms-bmp mime type added for BMP files.
21669 * (bug 23024) Special:ListFiles now escapes file names correctly.
21670 * (bug 22867) "View source" tab is now only displayed if there's source text.
21671 * (bug 19393) Feeds now format dates in user language rather than content
21673 * (bug 22852) "Served in" comment is now the time used to cache a single page
21674 when using rebuildFileCache.php
21675 * (bug 22496) Viewing diff of a redirect page without specifying "oldid"
21676 parameter no longer makes the page displayed as being the redirect target.
21677 * (bug 22918) Feed cache keys now use $wgRenderHashAppend.
21678 * (bug 21916) Last-Modified header is now correct when outputting cached feed.
21679 * (bug 20049) Fixed PHP notice in search highlighter that occurs in some cases.
21680 * (bug 23017) Special:Disambiguations now list pages in content namespaces
21681 rather than only main namespace.
21682 * (bug 23063) $wgMaxAnimatedGifArea is checked against the total size of all
21683 frames, and $wgMaxImageArea against the size of the first frame, rather than
21684 the other way around. Both now default to 12.5 megapixels. Also, images
21685 exceeding $wgMaxImageArea can still be embedded at original size.
21686 * (bug 23078) "All public logs" option on Special:Log is now always the first
21688 * (bug 16817) Group names in user rights log are now singular and in lowercase.
21689 * Special:Preferences no longer crashes if the wiki default date formatting
21690 style is not valid for the user's interface language.
21691 * (bug 23167) Check the watch checkbox by default if the watchcreations
21693 * Maintenance script cleanupTitles is now able to fix titles stored
21694 in a negative namespace (which is invalid).
21695 * (bug 19858) Removed obsolete <big> in interface messages.
21696 * (bug 21456) "Bad title" error when showing non-local interwiki pages no longer
21697 displays incorrect tabs.
21698 * (bug 23190) Improved math representation for text browsers.
21699 * (bug 22015) Improved upload-by-url error handling and error display.
21700 * (bug 17941) $wgMaxUploadSize is now honored by all upload sources.
21701 * (bug 23080) New usernames now limited to 235 bytes so that custom skin files
21703 * (bug 23075) Correct MediaTransformError default width in gallery.
21704 * (bug 16487) The Anonymous user account used on Postgres is no longer
21705 displayed on Special:Listusers.
21706 * (bug 23313) Move watchlisthidepatrolled above token in watchlist preferences
21707 to enhance preference grouping.
21708 * (bug 23298) Interwiki links with prefix only in log summaries now link to the
21710 * (bug 23284) Times are now rounded correctly.
21711 * (bug 23375) Added ogv, oga, spx as extensions for ogg files.
21712 * (bug 18408) All required permissions for uploading (upload, edit, create)
21713 are now checked when loading Special:Upload. Toolbar link for Special:Upload
21714 is no longer shown if the user does not have the required permissions.
21715 * (bug 23397) texvc in html mode renders \sim as ˜ not ∼
21716 * (bug 23241) License selector should be disabled during upload of a new
21718 * (bug 23240) Add ID to namespace selector form on Special:Watchlist.
21719 * The pipe | character in urls is now escaped.
21720 * (bug 23422) mp3 files can now be moved.
21721 * (bug 23448) MediaWiki:Summary-preview is now displayed instead of
21722 MediaWiki:Subject-preview when previewing summary.
21723 * (bug 23426) The {{REVISIONMONTH}} variable is now zero-padded and added
21724 new variable {{REVISIONMONTH1}} when unpadded version is needed.
21725 * Special:Userrights didn't recognize user as changing his/her own rights if
21726 user did not capitalize first letter of username.
21727 * (bug 23507) Add styles for printing wikitables.
21728 * (bug 19586) Avoid JS errors in mwsuggest when using old browsers such
21730 * (bug 23563) Old skins now support $wgUploadNavigationUrl and take into
21731 account upload rights.
21732 * (bug 1347) Render \phi in math using images, in order to create consistent
21733 and correct render results.
21734 * (bug 16573) Render \epsilon in math using images, in order to create
21735 consistent and correct render results.
21736 * (bug 22541) Support image redirects when using ForeignAPIRepo.
21737 * (bug 22967) Make edit summary length cut-off behave correctly for multibyte
21739 * (bug 8689) Long numeric lines no longer kill the parser.
21740 * (bug 23740) Article::doRedirect() now use $extraQuery parameter correctly if
21741 the $noRedir parameter is set to true.
21742 * (bug 23688) Correct mime types for Office 2007 OpenXML documents.
21743 * (bug 23787) Corrected $wgDefaultSkin's comment in DefaultSettings.php.
21744 * (bug 23797) Xml::input() now allows '0' for the value parameter.
21745 * (bug 23747) Make sure that on History pages, the RevDel button is not
21746 accidentally activated when hitting enter.
21747 * (bug 23845) Special:ListFiles now uses correct file names without underscores.
21748 * Ask for permanent login in Special:Preferences only if $wgCookieExpiration >
21750 * (bug 16356) Repair dumpInterwiki.inc to use proper normalization.
21751 * (bug 24006) deleteArchivedRevisions.php maintenance script now longer throws
21753 * (bug 23465) Don't ignore the predefined destination filename on
21754 Special:Upload after following a red link.
21755 * (bug 23642) Recognize mime types of MS OpenXML documents.
21756 * (bug 22784) Normalise underscores and spaces in autocomments.
21757 * (bug 19910) Headings of the form ===+\s+ are now displayed as valid headings.
21758 * (bug 24022) Only check file extensions on the uploadpage when needed.
21759 * (bug 24076) Recognize Office 2003 files with OpenXML trailers.
21760 * (bug 24244) Updated comments in DefaultSettings.php to reflect
21761 Image: --> File: namespace rename.
21762 * Make wfTimestamp recognize negative unix timestamp values.
21763 * (bug 24401) SimpleSearch: No button/text indicating 'Search' if image is
21765 * (bug 23293) Do not show change tags when Special:RecentChanges(linked) or
21766 Special:Newpages is transcluded into another page as it messes up the page.
21767 * (bug 24517) LocalFile::newFromKey() and OldLocalFile::newFromKey() no longer
21768 throw fatal errors.
21769 * (bug 23380) Uploaded files that are larger than allowed by PHP now show a
21770 useful error message.
21771 * Uploading to a protected title will allow the user to choose a new name
21772 instead of showing an error page.
21773 * (bug 24425) Use Database::replace instead of delete/insert in
21774 SqlBagOStuff::set to avoid query errors about duplicate keynames.
21775 * (bug 15470) First letters of filenames are always capitalized by upload JS.
21776 * (bug 21215) NoLocalSettings.php doesn't tolerate rewrite rules.
21777 * (bug 21052) Fix link color for stubs in NewPages.
21778 * (bug 24714) Usage of {{#dateformat: }} in wikis without $wgUseDynamicDates no
21779 longer pollutes the parser cache.
21780 * (bug 17031) Correct which characters the parser allows in tag attributes (a
21781 letter, colon or underscore followed by 0 or more letters, numbers, colons,
21782 underscores, hyphens, and/or periods).
21783 * Save 200 useless queries on each category page view.
21784 * Shell commands will now work on Linux in filesystems mounted noexec.
21785 * (bug 24804) Corrected commafying in Polish and Ukrainian.
21786 * "Difference between pages" is now displayed instead of "Difference between
21787 revisions" on diffs when appropriate.
21788 * (bug 23703) ForeignAPIRepo fails on findBySha1() when using a 1.14 install as
21789 a repository due to missing 'name' attribute from the API list=allimages.
21790 * (bug 24898) MediaWiki uses /tmp even if a vHost-specific tempdir is set, also
21791 make wfTempDir() return a sane value for Windows on worst-case.
21792 * (bug 24824) Support ImageMagick 6.5.6-2+ JPEG decoder size hint, to reduce
21793 memory usage when such an ImageMagick is used for scaling.
21794 * Disable multithreaded behavior in recent ImageMagick, to avoid a deadlock
21795 when a resource limit such as $wgMaxShellMemory is hit.
21796 * (bug 24981) Allow extensions to access SpecialUpload variables again.
21797 * (bug 20744) Wiki forgets about an uploaded file.
21798 * (bug 17913) Don't show "older edit" when no older edit available.
21799 * (bug 6204) TOC not properly rendered when using $wgMaxTocLevel.
21800 * (bug 24977) The accesskey in history page now lead directly to the diff
21801 instead of alternating focus between the two buttons.
21802 * (bug 24987) Special:ListUsers does not take external groups into account.
21803 * (bug 20633) update.php has mixed language output.
21804 * SQLite system table names are now never prefixed.
21805 * (bug 25292) SkinSubPageSubtitle hook now passes the Skin object as second
21807 * (bug 25167) Correctly load JS fixes for IE6 (fixing a regression in 1.16).
21808 * (bug 25367) wfShellExec() is more explicit when failing due to disabled
21810 * (bug 25462) Fix double-escaping for section edit link tooltips.
21811 * action=raw was removed for Special:Statistics. This information is still
21812 available via the API.
21813 * (bug 23934) Groups defined in $wgRevokePermissions but not in
21814 $wgGroupPermissions now appear on Special:ListGroupRights.
21815 * (bug 23923) Special:Prefixindex no longer shows results if nothing was
21817 * (bug 22308) Search now finds text in default main page immediately after
21819 * (bug 25697) Make sure empty lines render in diff view.
21820 * Use an actual minus sign in diff views, instead of a hyphen.
21821 * (bug 23732) Clarified "n links" message on Special:MostLinkedFiles.
21822 * (bug 23731) Clarified "n links" message on Special:MostLinkedTemplates.
21823 * (bug 25642) A exception is now thrown instead of a fatal error when using
21824 $wgSMTP without PEAR mail package.
21825 * (bug 19633) When possible, Upscale small SVGs when creating thumbnails.
21826 * (bug 11013) Database driver detection needs rewriting for robustness.
21827 * (bug 13409) Installer prompts could use clarification--now has help boxes.
21828 * (bug 16902) Installer spews warnings when exec() and dl() are not available.
21829 * (bug 19129) Only show MyISAM/InnoDB when supported.
21830 * (bug 17762) Only show other e-mail options when e-mail is globally enabled.
21831 * Cache multiple sizes of InstantCommons thumbnails.
21832 * (bug 25488) Disallowing anonymous users to read pages no longer throws error
21833 on discussion pages with vector as default skin.
21834 * (bug 24833) Files name in includes/diff/ are now less confusing.
21835 * (bug 25713) SpecialPage::resolveAlias() now normalise spaces to underscores.
21836 * (bug 25829) Special:Mypage and Special:Mytalk now forward oldid, diff and dir
21838 * (bug 25175) HTML file cache now honor $wgCacheDirectory if
21839 $wgFileCacheDirectory is not set.
21840 * (bug 13353) Diff3 version checks were too strict, did not detect working
21842 * (bug 25843) Links to special pages using link= attribute on images are now
21843 normalised like normal links to special pages.
21844 * (bug 21364) External links using link= attribute on images now respect
21845 $wgExternalLinkTarget.
21846 * (bug 17789) Added a note to the total views on Special:Statistics saying that
21847 is doesn't count non-existing pages and special pages.
21848 * (bug 17996) HTTP redirects are now combined when requesting a special page.
21849 * (bug 19944) Link on image thumbnails no longer link to "Media:" namespace in
21851 * (bug 25670) wfFindFile() now checks the namespace of the given title, only
21852 "File" and "Media" are allowed now.
21853 * (bug 25872) Rename the HttpRequest class to MWHttpRequest to avoid conflict
21854 with php extension that defines same class.
21855 * (bug 20591) There's now a different message on Special:MovePage when
21856 $wgFixDoubleRedirects is set to false.
21857 * Fixed PHP warnings when updating a broken MySQL database.
21858 * (bug 26023) Corrected deleteBacth.php's documentation.
21859 * (bug 25451) Improved datetime representation in 32 bit php >= 5.2.
21860 * Show "skin does not exist error" only when the skin is inputted in the wrong
21862 * (bug 26164) Potential html injection when the database server isn't available.
21863 * (bug 26160) Upload description set by extensions are not propagated.
21864 * (bug 9675) generateSitemap.php now takes an --urlpath parameter to allow
21865 absolute URLs in the sitemap index (as required e.g. by Google).
21866 * Partial workaround for bug 6220: at least make files on shared repositories
21867 show up as (struck-out) bluelinks instead of redlinks on Special:WantedFiles.
21868 * rebuildFileCache.php no longer creates inappropriate cache files for
21870 * (bug 25512) Subcategory list should not include category prefix for members.
21871 * (bug 10871) Javascript and CSS pages in MediaWiki namespace are no longer
21872 treated as wikitext on preview.
21873 * Page existence is now not revealed (in the colour of the tabs) to users who
21874 cannot read the page in question.
21875 * (bug 22753) Output from update.php is more clear when things changed, entries
21876 indicating nothing changed are now all prefixed by "..."
21877 * (bug 16019) $wgArticlePath = "/$1" no longer breaks API edit/watch actions.
21878 * (bug 18372) File types blacklisted by $wgFileBlacklist will no longer be shown
21879 as "Permitted file types" on the upload form.
21880 * (bug 26540) Fixed wrong call to applyPatch in MysqlUpdater.
21881 * (bug 26034) Make the "View / Read" tab in content_navigation style tabs remain
21882 selected when the action is "purge".
21883 * (bug 26733) Wrap initial table creation in transaction.
21884 * (bug 26208) Mark directionality of some interlanguage links.
21885 * (bug 26716) Provide link to instructions for external editor related
21887 * (bug 26961) Hide anon edits in watchlist preference now actually works.
21888 * (bug 1379) Installer directory conflicts with some hosts' configuration panel.
21889 * (bug 27781) Installer does not warn about 5.1.x. Added a compatibility
21890 function for array_key_exists().
21891 * Fix XML well-formedness on a few pages when $wgHtml5 is true (the default).
21892 * (bug 28069) MediaWiki fails streaming files when mod_deflate and ob_gzhandler
21894 * (bug 26223) Concurrently moving an article to different titles leaks a
21895 redirect revision with no page.
21896 * (bug 15641) Fixed permissions checks in Special:Import which allowed users
21897 without the 'import' permission to import pages from configured import
21899 * (bug 26449) Keep underlines from headings outside of tables and thumbs by
21900 adding overflow:hidden to h1,h2,h3,h4,h5,h6 (also fixes editsection bunching).
21901 * (bug 26708) Remove background-color:white from tables in Monobook and Vector.
21902 * (bug 26781) {{PAGENAME}} and related parser functions escape their output
21904 * (bug 26716) Provide link to instructions for external editor related
21905 preferences and add a comment to the ini control file explaining what is going
21907 * (bug 28422) Remove color:black from tables in Monobook and Vector. And add it
21908 to table.wikitable instead.
21909 * (bug 27560) Search queries no longer fail in walloon language.
21910 * (bug 27700) The upload protection can now also be set for files that do not
21912 * (bug 28034) uploading file to local wiki when file exists on shared repository
21913 (commons) gives spurious info in the warning message.
21914 * Usernames get lost when selecting different sorts on Special:listfiles.
21915 * (bug 28166) UploadBase assumes that 'edit' and 'upload' rights are not per
21917 * (bug 28242) Make redirects generated by urls containing a local interwiki
21918 prefix be a 301 instead of a 302.
21919 * (bug 28568) Entries in the iwlinks table are now removed on page deletion.
21920 * (bug 28306) Fix exposure of suppressed usernames in ForeignDBRepo.
21921 * (bug 28444) Fix regression: edit-on-doubleclick retains revision id again.
21922 * UtfNormal::cleanUp on an invalid utf-8 sequence no longer returns false if
21924 * (bug 26729) Category pages should return 404 if they do not exist and have no
21926 * (bug 28214) When page not found, sends malformed HTTP/1.x instead of HTTP/1.1
21927 in header of response.
21928 * (bug 27634) TOC title appears in wrong language.
21929 * (bug 27761) Fix regression: pages with Esperanto titles containing convertible
21930 character sequences became unreachable.
21931 * (bug 27508) SVGMetadataExtractor takes too much resources on huge svgs.
21932 * (bug 27465) SVG thumbnail generation.
21933 * (bug 27467) preload can leave UNIQ.
21934 * (bug 27539) Allow attributes beginning with a digit in wikitext tag
21936 * (bug 27328) using relative paths in CSS imports in MediaWiki:Common.css broken
21938 * (bug 27333) Fix repetitive last-seen time queries on page history.
21939 * (bug 26250, bug 23817) Fix wfObjectToArray() to descend into arrays; fixes
21940 processing of JSON return values for ForeignAPIRepo when native json module
21942 * (bug 25675) Fix search suggestions for Special: pages with spaces.
21943 * (bug 25571) Xml::encodeJsVar now passes floats natively instead of converting
21945 * (bug 27338) Gallery in 1.17 breaks for audio/video + ogghandler.
21946 * (bug 27302) Don't append the current timestamp for user/site modules when no
21947 user/site JS/CSS is present.
21948 * (bug 27016) dumpTextPass.php now consider the "output" parameter.
21949 * (bug 22606) don't send the "someone registred an account" message when setting
21950 email address (i.e. old one empty) in user preferences.
21951 * (bug 26458) Section edit links appear on pages that user does not have right
21953 * (bug 28611) Don't die in SqlBagOStuff::incr() if there's a race condition.
21954 * (bug 16886) Sister projects box moves down the extract of the first result
21956 * (bug 17398) Fixed "link" parameter in image links with "thumb" or "frame"
21959 === API changes in 1.17 ===
21961 * BREAKING CHANGE: action=patrol now requires POST.
21962 * BREAKING CHANGE: patrol token is no longer the same as edit token.
21963 * BREAKING CHANGE: Session keys returned by ApiUpload are now strings instead
21965 * BREAKING CHANGE: (bug 25303) Fix API parameter integer validation to actually
21966 enforce validation on the input values in addition to giving a warning.
21967 Also add flag to enforce (die) if integer out of range.
21968 * (bug 24650) Fix API to work with categorylinks changes.
21969 * action=parse now correctly returns an error for nonexistent pages.
21970 * (bug 27201) Special:WhatLinksHere output no longer contains duplicate IDs.
21971 * (bug 26560) On allusers if limit < total number of users, last user gets
21973 * (bug 27715) imageinfo didn't respect revdelete.
21974 * (bug 27479) API error when using both prop=pageprops and
21975 prop=info&inprop=displaytitle.
21976 * (bug 27862) Useremail module didn't properly return success on success.
21977 * (bug 27590) prop=imageinfo now allows querying the media type.
21978 * (bug 27587) list=filearchive now outputs full title info.
21979 * (bug 27897) list=allusers and list=users list hidden users.
21980 * (bug 22738) Allow filtering by action type on query=logevent.
21981 * (bug 22764) uselang parameter for action=parse.
21982 * (bug 22944) API: watchlist options are inconsistent.
21983 * (bug 22868) don't list infinite block expiry date as "now" in API logevents.
21984 * (bug 22290) prop=revisions now outputs "comment" field even when comment
21985 is empty, for consistency with list=recentchanges.
21986 * (bug 19721) API action=help should have a way to just list for a specific
21988 * (bug 23458) Add support for pageid parameter to action=parse requests.
21989 * (bug 23460) Parse action should have a section option.
21990 * (bug 21346) Make deleted images searchable by hash.
21991 * (bug 23461) Normalise usage of parameter names in parameter descriptions.
21992 * (bug 23548) Allow access of another users watchlist through watchlistraw
21993 using token and username.
21994 * (bug 23524) Api Modules as followup to bug 14473 (Add iwlinks table to
21995 track inline interwiki link usage).
21996 * Add pltitles and tltemplates to prop=links and prop=templates respectively,
21997 similar to prop=categories's clcategories.
21998 * (bug 23834) Invalid "thumbwidth" and "thumbheight" in "imageinfo" query when
21999 thumbnailing larger than original image.
22000 * (bug 23835) Need "thumbmime" result in "imageinfo" query.
22001 * (bug 23851) Repair diff for file redirect pages.
22002 * (bug 24009) Include implicit groups in action=query&list=users&usprop=groups.
22003 * (bug 24016) API: Handle parameters specified in simple string syntax
22004 ( 'paramname' => 'defaultval' ) correctly when outputting help.
22005 * (bug 24089) Logevents causes PHP Notice if leprop=title isn't supplied.
22006 * (bug 23473) Give description of properties on all modules.
22007 * (bug 24136) unknownerror when adding new section without summary, but
22009 * (bug 22339) Added srwhat=nearmatch to list=search to get a "go" result.
22010 * (bug 24303) Added new &servedby parameter to all actions which adds the
22011 hostname that served the request to the result. It is also added
22012 unconditionally on error.
22013 * (bug 24185) Titles in the Media and Special namespace are now supported for
22014 title normalization in action=query. Special pages have their name resolved
22015 to the local alias.
22016 * (bug 24296) Added converttitles parameter to convert titles to their
22017 canonical language variant.
22018 * (bug 23936) Add "displaytitle" to query/info API.
22019 * (bug 24485) Make iwbacklinks a generator, optionally display iwprefix and
22021 * (bug 24564) Fix fatal errors when using list=deletedrevs, prop=revisions or
22022 one of the backlinks generators with limit=max.
22023 * (bug 24656) API's parse module needs option to disable PP report.
22024 * PARAM_REQUIRED parameter flag added. If this flag is set, and the end user
22025 does not set the parameter, the API will automatically throw an error.
22026 * (bug 24665) When starttimestamp is not specified, fake it by setting it to
22027 NOW, not to the timestamp of the last edit.
22028 * (bug 24677) axto= parameters added to allcategories, allimages, alllinks,
22029 allmessages, allpages, and allusers.
22030 * (bug 24236) Add add, remove, add-self, remove-self tags to
22031 meta=siteinfo&siprop=usergroups.
22032 * (bug 24484) Add prop=pageprops module.
22033 * (bug 24330) Add &redirect parameter to ?action=edit.
22034 * (bug 24722) For list=allusers&auprop=blockinfo, only show blockedby and
22035 blockreason if the user is actually blocked.
22036 * Add format=dump and format=dumpfm, outputs results in PHP's var_dump() format.
22037 * For required string parameters, if '' is provided, this is now classed as
22039 * (bug 24724) list=allusers is out by 1 (shows total users - 1).
22040 * (bug 24166) API error when using rvprop=tags.
22041 * Introduced "asynchronous download" mode for upload-by-url. Requires
22042 $wgAllowAsyncCopyUploads to be true.
22043 * sinumberingroup correctly gives size of 'user' group, and omits size of
22044 implicit groups rather than showing 0.
22045 * (bug 25248) API: paraminfo errors with certain modules.
22046 * (bug 24792) API help for action=purge sometimes wrongly stated whether a
22047 POST request was needed due to cache pollution.
22048 * Added iiprop=parsedcomment to prop=imageinfo, similar to prop=revisions.
22049 * Added rvparse to parse revisions. For performance reasons if this option is
22050 used, rvlimit is enforced to 1.
22051 * (bug 25748) If a action=parse request provides an oldid that is actually the
22052 current revision id, try the parser cache, and save it to it if necessary.
22053 * (bug 25463) Export header should not be shown if no pages were requested, to
22055 * (bug 25648) API discovery information has been added as RSD link in page
22056 <head> and by providing an API module action=rsd. Added hook
22057 ApiRsdServiceApis for extensions to add their own service to the services
22059 * The HTML of diff output markers has changed. Hyphens are now minus signs,
22060 empty markers are now filled with non-breaking-space characters.
22061 * (bug 25741) Add more data to list=search's srprop.
22062 * (bug 25760) counter property still reported by the API when
22063 $wgDisableCounters enabled.
22064 * (bug 25987) prop=info&inprop=watched now also works for missing pages.
22065 * (bug 26006) prop=langlinks now allows obtaining full URL.
22066 * (bug 26075) ApiDelete.php now calls correctly ArticleDelete hook.
22067 * (bug 26089) add block expiration to blockinfo.
22068 * (bug 26125) prop=imageinfo&iiprop=size now returns the page count if the
22069 file is a multi-page file.
22070 * (bug 10268) Added linktodiffs parameter on action=feedwatchlist.
22071 * (bug 26219) Show API limits for multi values in description.
22072 * (bug 28070) Fix watchlist RSS for databases that store timestamps in a
22073 real timestamp field.
22074 * (bug 27722) list=filearchive now supports revdel.
22076 === Language support changes in 1.17 ===
22078 MediaWiki supports over 330 languages. Many localizations are updated regularly.
22080 The following languages were added:
22082 * Moroccan Spoken Arabic (ary)
22085 * Kabardian (Cyrillic) (kbd-cyrl)
22087 * Minangkabau (min)
22088 * Dutch (informal) (nl-informal)
22091 Other significant changes to MediaWiki's language support:
22093 * Fiji Hindi (Devangari script) was removed.
22094 * Removed deprecated language code "dk" (Danish), use "da" instead.
22095 * Link trail added for sl and sh.
22096 * (bug 27633) Add characters to linkTrail for Portuguese (pt and pt-br).
22097 * (bug 23156) Commafy and search normalization updated for Belarusian
22099 * (bug 23283) Native name for Old English -> Ænglisc.
22100 * (bug 23364) Native name for Azerbaijani -> Azərbaycanca.
22101 * (bug 24593) Native name for Sorani now uses only Arabic script.
22102 * (bug 24628) Generic translations for NS_USER/NS_USER_TALK for Esperanto.
22103 * (bug 24917) Polish as fallback for Kashubia.
22104 * (bug 24794) Tatar link trail updated.
22105 * Esperanto date format corrected.
22106 * (bug 28159) Change interwiki name of language kbd to Къэбэрдеибзэ /
22108 * (bug 28184) Namespaces for the Latgalian Wikipedia.
22109 * (bug 25010) Bashkir-language interwikis: linktext change from Башҡорт
22111 * (bug 26395) Change name of Cornish language to Kernowek.
22113 === Other changes in 1.17 ===
22115 * DatabaseFunctions.php that was needed for compatibility with pre-1.3
22116 extensions has been removed.
22117 * XmlFunctions.php has been removed. Use the Xml or Html classes as appropriate.
22118 * The FailFunction "error handling" method has now been removed
22119 * Sysops now have the "suppressredirect" right by default
22120 * Removed $wgRemoteUploads. It was not well supported and superseded by
22121 $wgUploadNavigationUrl.
22122 * (bug 26253) $wgPostCommitUpdateList has been removed
22123 * The PHPUnit test suite has been removed from this release due to serious
22124 issues which should be resolved by the 1.18 release.
22125 * Oracle DB now uses the __destruct function to commit/close connection as it
22126 doesn't commit on close if transation is triggered in OCI.
22128 == MediaWiki 1.16 ==
22130 == MediaWiki 1.16.5 ==
22131 === Changes since 1.16.4 ===
22133 * (bug 28534) Fixed XSS vulnerability for IE 6 clients. This is the third
22134 attempt at fixing bug 28235.
22135 * (bug 28639) Fixed potential privilege escalation when $wgBlockDisablesLogin
22138 == MediaWiki 1.16.4 ==
22139 === Changes since 1.16.3 ===
22141 * (bug 28507) The change we made in 1.16.3 to fix bug 28235 (XSS for IE 6
22142 clients) was not actually sufficient to fix that bug. This release contains
22143 a second attempt, hopefully we have fixed it this time.
22145 == MediaWiki 1.16.3 ==
22146 === Changes since 1.16.2 ===
22148 * (bug 28449) Fixed permissions checks in Special:Import which allowed users
22149 without the 'import' permission to import pages from the configured import
22151 * (bug 28235) Fixed XSS affecting IE 6 and earlier clients only, due to those
22152 browsers looking for a file extension in the query string of the URL, and
22153 ignoring the Content-Type header if one is found.
22154 * (bug 28450) Fixed a CSS validation issue involving escaped comments, which
22155 led to XSS for Internet Explorer clients and privacy loss for other clients.
22157 == MediaWiki 1.16.2 ==
22158 === Changes since 1.16.1 ===
22160 * (bug 26642) Fixed incorrect translated namespace due to a regression in the
22161 language converter.
22162 * The interface translations were updated.
22163 * (bug 27093, CVE-2011-0047): Fixed CSS injection vulnerability.
22164 * (bug 27094) Fixed server-side arbitrary script inclusion vulnerability.
22165 Affects Windows servers only. A malicious file with extension ".php" must
22166 exist on the server for the exploit to be effective.
22168 == MediaWiki 1.16.1 ==
22169 === Changes since 1.16.0 ===
22171 * (bug 24981) Allow extensions to access SpecialUpload variables again
22172 * (bug 24724) list=allusers was out by 1 (shows total users - 1)
22173 * (bug 24166) Fixed API error when using rvprop=tags
22174 * For wikis using French as a content language, Special:Téléchargement works
22175 again as an alias for Special:Upload.
22176 * (bug 25167) Correctly load JS fixes for IE6 (fixing a regression in 1.16.0)
22177 * (bug 25248) Fixed paraminfo errors in certain API modules.
22178 * The installer now has improved handling for situations where safe_mode is
22179 active or exec() and similar functions are disabled.
22180 * (bug 19593) Specifying --server in now works for all maintenance scripts.
22181 * Fixed $wgLicenseTerms register globals.
22182 * (bug 26561) Fixed clickjacking vulnerabilities by introducing support for
22183 X-Frame-Options. The header value can be configured using $wgBreakFrames and
22184 $wgEditPageFrameOptions.
22186 == MediaWiki 1.16.0 ==
22187 === Changes since 1.16 beta 3 ===
22189 * (bug 23769) Disabled HTML 5 client-side form validation. Was introduced in
22190 1.16 beta 1, but is currently poorly supported by browsers.
22191 * (bug 23175) Re-added window.ta variable for backwards compatibility.
22192 * (bug 23264) Fixed breakage of various command line scripts due to extra line
22193 endings being inserted by Maintenance::output().
22194 * Fixed HTTP client functionality with safe_mode=On.
22195 * Fixed parser tests broken in 1.16 beta 3.
22196 * For Oracle DB backend: fixed parser tests and table prefix feature.
22197 * (bug 23767) Fixed PHP warning when REQUEST_URI is blank (IIS issue).
22198 * Fixed plural function for Northern Sami (se)
22199 * (bug 23597) Fixed conflicts between ID attributes in the Vector skin and
22200 parser-generated heading IDs. Renamed head, panel, head-base and page-base.
22201 * Disabled $wgHitcounterUpdateFreq>1 feature on SQLite, does not work yet.
22202 * (bug 23465) Don't ignore the predefined destination filename on
22203 Special:Upload after following a red link to a file.
22204 * In SQLite full-text search feature: fixed "move page" feature, was non-
22206 * (bug 24565) Fixed Cache-Control headers sent from API modules, to protect
22207 user privacy in the case where an attacker can access the wiki through the
22208 same HTTP proxy as a logged-in user.
22209 * Fixed an XSS vulnerability in profileinfo.php for installations with
22210 $wgEnableProfileInfo = true (false by default)
22211 * Fixed a case where an X-Vary-Options header was sent despite $wgUseXVO being
22212 false. Fixed a minor header parsing issue when $wgUseXVO = true.
22213 * Fixed a register_globals arbitrary inclusion vulnerability in
22214 MediaWikiParserTest.php, introduced in 1.16 beta 1.
22216 === Changes since 1.16 beta 2 ===
22218 * Fixed bugs in the [[Special:Userlogin]] and [[Special:Emailuser]] handling of
22220 * Fixed sorting in [[Special:Allmessages]]
22221 * (bug 23113) Fixed title in the show/hide links on diff pages
22222 * (bug 23117) Fixed API rollback, was returning "badtoken" for valid requests
22223 * (bug 23127) Re-added missing $1 parameter to the uploadtext message
22224 * Fixed a bug in the Vector skin where personal tools display behind the logo
22225 * (bug 23139) Fixed a bug in edit conflict resolution, where both textboxes
22226 showed the same text.
22227 * (bug 23115, bug 23124) Fixed various problems with <title> and <h1> elements
22228 in page views and previews when the language converter is enabled.
22229 * (bug 23148) Fixed a local path disclosure vulnerability in ImageMagick image
22230 scaling, which was introduced in 1.16 beta 1.
22231 * Improved error checking on installer.
22232 * (bug 22970) Fixed a JavaScript error in the upload destination conflict
22234 * (bug 23167) Check the watch checkbox by default if the watchcreations
22236 * (bug 23171) Improve IE6 version check to avoid false positives.
22237 * (bug 23176) Fixed upload warning override feature "upload new version",
22238 broken in 1.16 beta 1.
22239 * Fixed regression in unwatch links sent out in notification emails. When the
22240 mailing job was deferred via the job queue, the title was incorrect.
22241 * (bug 23534) Fixed SQL query error in API list=allusers.
22242 * Fixed a bug in uploads for non-JavaScript clients. An empty string was used
22243 as the default destination filename, instead of the source filename as
22245 * (bug 23371) Fixed CSRF vulnerability in "e-mail me my password", "create
22246 account" and "create by e-mail" features of [[Special:Userlogin]]
22247 * (bug 23687) Fixed XSS vulnerability affecting IE clients only, due to a CSS
22249 * Fixed a DoS vulnerability in ImageMagick image scaling. ImageMagick
22250 expanded wildcard characters "?" and "*" in image filenames, potentially
22251 causing large numbers of images to be scaled in response to a single request.
22252 The fix for this involves breaking the scaling of such image filenames until
22253 ImageMagick 6.6.1-5 or later is deployed, see bug 23361 for more details.
22254 * (bug 23608) Fixed invalid HTML in diff pages.
22256 === Changes since 1.16 beta 1 ===
22258 * Fixed errors in maintenance/patchSql.php
22259 * (bug 19627) Fix regression from r57867 where HTMLForm would output
22260 <element classes="foo bar"> rather than <element class="foo bar">
22261 * Fixed broken "-r" option to maintenance/lag.php
22262 * (bug 23076) Fixed login CSRF vulnerability. Logins now require a token to
22263 be submitted along with the user name and password.
22265 === Configuration changes in 1.16 ===
22267 * (bug 18222) $wgMinimalPasswordLength default is now 1
22268 * $wgSessionHandler can be used to configure session.save_handler
22269 * $wgLocalFileRepo/$wgForeignFileRepos now have a 'fileMode' parameter to
22270 be used when uploading/moving files
22271 * (bug 18761) $wgHiddenPrefs is a new array for specifying preferences not
22272 to be shown to users
22273 * $wgAllowRealName and $wgAllowUserSkin were deprecated in favor of
22274 $wgHiddenPrefs[] = 'realname', but the former are still retained
22275 for backwards-compatibility
22276 * (bug 9257) $wgRCMaxAge now defaults to three months
22277 * $wgDevelopmentWarnings can be set to true to show warnings about deprecated
22278 functions and other potential errors when developing.
22279 * Subpages are now enabled in the MediaWiki namespace by default. This is
22280 mainly a cosmetic change, and does not in any way affect the MessageCache,
22281 which was already effectively treating the namespace as if it had subpages.
22282 * Oracle: maintenance/ora/user.sql script for creating DB user on oracle with
22283 appropriate privileges. Creating this user with web-install page requires
22284 oci8.privileged_connect set to On in php.ini.
22285 * Removed UserrightsChangeableGroups hook introduced in 1.14
22286 * Added $wgCacheDirectory, to replace $wgFileCacheDirectory,
22287 $wgLocalMessageCache, and any other local caches which need a place to put
22289 * $wgFileCacheDirectory is no longer set to anything by default, and so either
22290 needs to be set explicitly, or $wgCacheDirectory needs to be set instead.
22291 * $wgLocalMessageCache has been removed. Instead, set $wgUseLocalMessageCache
22293 * Removed $wgEnableSerializedMessages and $wgCheckSerialized. Similar
22294 functionality is now available via $wgLocalisationCacheConf.
22295 * $wgMessageCache->addMessages() is deprecated. Messages added via this
22296 interface will not appear in Special:AllMessages.
22297 * $wgRegisterInternalExternals can be used to record external links pointing
22299 * (bug 19907) $wgCrossSiteAJAXdomains and $wgCrossSiteAJAXdomainExceptions added
22300 to control which external domains may access the API via cross-site AJAX.
22301 * $wgMaintenanceScripts for extensions to add their scripts to the default list
22302 * $wgMemoryLimit has been added, default value '50M'
22303 * $wgExtraRandompageSQL is deprecated, the SpecialRandomGetRandomTitle hook
22304 should be used instead
22305 * (bug 20489) $wgIllegalFileChars added to override the default list of illegal
22306 characters in file names.
22307 * (bug 19646) $wgImgAuthDetails added to display reason access to uploaded file
22308 was denied to users(img_auth only)
22309 * (bug 19646) $wgImgAuthPublicTest added to test to see if img_auth set up
22310 correctly (img_auth only)
22311 * $wgUploadMaintenance added to disable file deletions and restorations during
22313 * $wgCapitalLinkOverrides added to configure per-namespace capitalization
22314 * (bug 21172) $wgSorbsUrl can now be an array with multiple DNSBL and renamed
22315 to $wgDnsBlacklistUrls (backward compatibility kept)
22316 * $wgEnableHtmlDiff has been removed
22317 * (bug 3340) $wgBlockCIDRLimit added (default: 16) to configure the low end of
22318 CIDR ranges for blocking
22319 * $wgUseInstantCommons added for quick and easy enabling of Commons as a remote
22321 * $wgDBAhandler added to choose a DBA handler when using CACHE_DBA
22322 * $wgPreviewOnOpenNamespaces for extensions that create namespaces that behave
22323 similarly to the category namespace.
22324 * $wgEnableSorbs renamed to $wgDnsBlacklistUrls ($wgEnableSorbs kept for
22325 backward compatibility)
22326 * $wgUploadNavigationUrl now also affects inline images that do not
22327 exist. In that case the URL will get (?|&)wpDestFile=<filename> appended to
22329 * If $wgLocaltimezone is null, use the server's timezone as the default for
22330 signatures. This was always the behavior documented in DefaultSettings.php
22331 but has not been the actual behavior for some time: instead, UTC was used
22333 * Added $wgExtensionAssetsPath, to decouple assets serving from $wgScriptPath.
22334 If not specified it will default to $wgScriptPath/extensions
22335 * Added $wgCountTotalSearchHits to make search UI display total number of hits
22336 with some search engines.
22337 * Added $wgAdvertisedFeedTypes to decide what feed types (RSS, Atom, both, or
22338 neither) MediaWiki advertises. Default is array( 'atom' ), so RSS is no
22339 longer advertised by default (but it still works).
22340 * Added $wgMemCachedTimeout, controls how long to wait for data from the
22342 * New configuration variables $wgDebugTimestamps and $wgDebugPrintHttpHeaders
22343 for controlling debug output.
22344 * New $wgBlockDisablesLogin when set to true disallows blocked users from
22346 * (bug 8790) Metadata edition ($wgUseMetadataEdit) has been moved to a separate
22347 extension "MetadataEdit".
22349 === New features in 1.16 ===
22351 * Add CSS defintion of the 'wikitable' class to shared.css
22352 * (bug 17163) Added MediaWiki:Talkpageheader which will be displayed when
22354 * Superfluous border="0" removed from images
22355 * Added new hook 'MessageCacheReplace' into MessageCache.php. For instance
22356 to allow extensions to update caches in similar way as MediaWiki invalidates
22357 a cached MonoBook sidebar
22358 * Special:AllPages: Move hardcoded styles from code to CSS
22359 * (bug 18529) New hook: SoftwareInfo for adding information about the software
22361 * Added $wgExtPGAlteredFields to allow extensions to easily alter the data
22362 type of columns when using the Postgres backend.
22363 * (bug 16950) Show move log when viewing/creating a deleted page
22364 * (bug 18242) Show the Subversion revision number per extensions in
22366 * (bug 18420) Missing file revisions are handled gracefully now
22367 * (bug 9219) Auth plugins can control editing RealName/Email/Nick preferences
22368 * (bug 18466) Add note or warning when overruling a move (semi-)protection
22369 * (bug 18342) insertTags works in edit summary box
22370 * (bug 18411) The upload form also checks post_max_size
22371 * Watchlist now has a specialized <div> tag that contains a unique class for
22373 * Added Minguo calendar support for the Taiwan Chinese language
22374 * Database: unionQueries function to be used for UNION sql construction, so
22375 it can be overloaded on DB abstraction level for DB specific functionality
22376 * (bug 18849) Implement Japanese and North Korean calendars
22377 * (bug 5755) Introduce {{CURRENTMONTH1}} and {{LOCALMONTH1}} to display the
22378 month number without the leading zero
22379 * (bug 13456) categoriespagetext supports PLURAL
22380 * (bug 18860) Blocks of IPs affecting registered users can now block email
22381 * (bug 17093) Date and time are separate parameters in Special:BlockList
22382 * (bug 11484) Added ISO speed rating to default collapsed EXIF metadata view
22383 * (bug 14866) Messages 'recentchangeslinked-toolbox' and
22384 'recentchangeslinked-toolbox' were added to allow more fine grained
22385 customisation of the user interface
22386 * DISPLAYTITLE now accepts a limited amount of wiki markup (the single-quote
22388 * Special:Search now could search terms in all variant-forms. ONLY apply on
22389 wikis enabled LanguageConverter.
22390 * Add autopromote condition APCOND_BLOCKED to autopromote blocked users to
22391 various user groups.
22392 * Add $wgRevokePermissions as a means of restricting a group's rights. The
22393 syntax is identical to $wgGroupPermissions, but users in these groups will
22394 have these rights stripped from them.
22395 * Added a PHP port of CDB (constant database), for improved local caching when
22396 the DBA extension is not available.
22397 * Introduced a new system for localisation caching. The system is based around
22398 fast fetches of individual messages, minimising memory overhead and startup
22399 time in the typical case. The database backend will be used by default, but
22400 set $wgCacheDirectory to get a faster CDB-based implementation.
22401 * Expanded the number of variables which can be set in the extension messages
22403 * Added a feature to allow per-article process pool size control for the parsing
22404 task, to limit resource usage when the cache for a heavily-viewed article is
22405 invalidated. Requires an external daemon.
22406 * (bug 19576) Moved the id attributes from the anchors accompanying section
22407 headers to the <span class="mw-headline"> elements within the section headers,
22408 removing the redundant anchor elements.
22409 * Parser::setFunctionTagHook now can be used to add a new tag which is parsed at
22411 * Added $wgShowArchiveThumbnails, allowing sysadmins to disable thumbnail
22412 display for old versions of images.
22413 * In watchlists and Special:RecentChanges, the difference in page size now
22414 appears in dark green if bytes were added and dark red if bytes were removed.
22415 * Added FSRepo configuration properties thumbUrl and thumbDir, to allow the
22416 thumbnails to be stored in a separate location to the source images.
22417 * If config/ directory is not executable, the command to make it executable
22418 now asks the user to cd to the correct directory
22419 * Add experimental new external authentication framework, ExternalAuth
22420 * (bug 18768) Remove AdminSettings requirements. Maintenance environment
22421 will still load it if it exists, but it's not required for anything
22422 * (bug 19900) The "listgrouprights-key" message is now wrapped in a div with
22423 class "mw-listgrouprights-key"
22424 * (bug 471) Allow RSS feeds for watchlist, using an opt-in security token
22425 * (bug 10812) Interwiki links can have names and descriptions, fetched from
22426 message 'interwiki-desc-PREFIX', not really used anywhere yet though
22427 * (bug 9691) Add type (signup or login) parameter to
22428 AuthPlugin::ModifyUITemplate()
22429 * (bug 14454) "Member of group(s)" in Special:Preferences causes language
22431 * (bug 16697) Unicode combining characters are difficult to edit in some
22433 * Parser test supports uploading results to remote CodeReview instance
22434 * (bug 20013) Added CSS class "mw-version-ext-version" is wrapped on the
22435 extension version in Special:Version
22436 * (bug 20014) Added CSS class "mw-listgrouprights-right-name" is wrapped on the
22437 right name in Special:ListGroupRights
22438 * (bug 12920) New CoreParserFunction {{nse:...}} as an url-friendly equivalent
22440 * (bug 16322) Allow maintenance scripts to accept DB user/pass over input or
22442 * (bug 18566) Maintenance script to un/protect pages
22443 * (bug 671) The HTML <abbr> tag is now permitted.
22444 * RecentChanges now has a legend to explain what the Nmb! flags mean, and the
22445 flags have tooltips.
22446 * (bug 15209) New hook BeforeInitialize called after everything has been setup
22447 but before MediaWiki::performRequestForTitle()
22448 * wgMainPageTitle variable now available to JavaScript code to identify the main
22449 page link, so it doesn't have to be extracted from the link URLs.
22450 * (bug 16836) Display preview of signature in user preferences and describe its
22452 * The default output format is now HTML 5 instead of XHTML 1.0 Transitional.
22453 This can be disabled by setting $wgHtml5 = false;. Specific features enabled
22455 ** Some extra inputs will be autofocused, in supporting browsers.
22456 ** The summary attribute has been removed from tables of contents. summary is
22457 obsolete in HTML 5 and wasn't useful here anyway.
22458 ** Unnecessary type="" attribute removed for CSS and JS.
22459 ** If $wgWellFormedXml is set to false, some bytes will be shaved off of HTML
22460 output by omitting some things like quotation marks where HTML 5 allows.
22461 ** (bug 16921) maxlength enabled for page move comments
22462 * The description message in $wgExtensionCredits can be an array with parameters
22463 * New hook SpecialRandomGetRandomTitle allows extensions to modify the selection
22464 criteria used by Special:Random and subclasses, or substitute a custom result,
22465 deprecating the $wgExtraRandompageSQL config variable
22466 * (bug 20318) Distinct CSS classes for ISBN/RFC/PMID special links added
22467 * (bug 20404) Custom fields in the user creation form template can now have
22468 detail labels in prefsectiontip divs.
22469 * MakeSysop and MakeBot are now aliases for Special:UserRights
22470 * IndexPager->mLimitsShown can now be an associative array of limit => text-to-
22471 display-in-limit-form.
22472 * (bug 18880) LogEventsList::showLogExtract() can now take a string-by-reference
22473 and add its HTML to it, rather than having to go straight to $wgOut.
22474 * Added $wgShowDBErrorBacktrace, to allow users to easily gather backtraces for
22475 database connection and query errors.
22476 * Show change block / unblock link on Special:Contributions if user is blocked
22477 * Display note on Special:Contributions if the user is blocked, and provide an
22478 excerpt from the block log.
22479 * (bug 19646) New hook: ImgAuthBeforeStream for tests and functionality before
22480 file is streamed to user, but only when using img_auth
22481 * Note on non-existing user and user talk pages if user does not exist
22482 * New hook ShowMissingArticle so extensions can modify the output for
22483 non-existent pages.
22484 * Admins could disable some variants using $wgDisabledVariants now. ONLY apply
22485 on wikis enabled LanguageConverter.
22486 * (bug 16310) Credits page now lists IP addresses rather than saying the number
22487 of anonymous users that edited the page
22488 * New permission 'sendemail' added. Default right for all registered users. Can
22489 for example be used to prevent new accounts from sending spam.
22490 * (bug 16979) Tracking categories for __INDEX__ and __NOINDEX__
22491 * Two new hooks, ConfirmEmailComplete and InvalidateEmailComplete, which are
22492 called after a user's email has been successfully confirmed or invalidated.
22493 * (bug 19741) Moved the XCF files out of the main MediaWiki distribution, for
22494 a smaller subversion checkout.
22495 * (bug 13750) First letter capitalization can now be a per-namespace setting
22496 * (bug 21073) "User does not exist" message no longer displayed on sub-sub-pages
22498 * (bug 21095) Tracking categories produced by the parser (expensive parser
22499 function limit exceeded, __NOINDEX__ tracking, etc) can now be disabled by
22500 setting the system message ([[MediaWiki:expensive-parserfunction-category]]
22502 * Added maintenance script sqlite.php for SQLite-specific maintenance tasks.
22503 * Rewrote Special:Upload to allow easier extension.
22504 * Upload errors that can be solved by changing the filename now do not require
22506 * Added $wgRateLimitsExcludedIPs, to allow specific IPs to be whitelisted from
22508 * (bug 21222) When $wgUseTeX is not enabled, <math> is no longer registered with
22509 the parser so extensions are free to implement their own <math> tag
22510 * (bug 21047) Wrap 'cannotdelete' into a div with the generic 'error' class and
22511 an own 'mw-error-cannotdelete' class
22512 * New hook AbortNewAccountAuto, called before account creation from AuthPlugin-
22513 or ExtUser-driven requests.
22514 * (bug 3480) The warning saying that the page has a history when deleting it now
22515 contains the number of revisions in the history
22516 * $wgStylePath and $wgLogo are now set in the default LocalSettings.php file.
22517 * (bug 20186) Allow filtering history for revision deletion.
22518 * New hook OtherBlockLogLink, called in Special:IPBlockList and Special:Block
22519 to show links to block logs of other blocking extensions, i.e. GlobalBlocking
22520 * Added search capabilities to SQLite backend
22521 * rebuildtextindex.php maintenance script now supports databases other than
22523 * upgrade1_5.php now requires to be run --update option to prevent confusion
22524 * (bug 17662) Customizable default preload/editintro for new sections in the
22525 respective addsection-preload and addsection-editintro messages
22526 * Added maintenance script checkSyntax.php that checks for PHP syntax errors
22527 and common coding mistakes
22528 * Updated Unicode normalization tables
22529 * (bug 21604) Spellcheck attribute for editsummary
22530 * New wgCategories JavaScript global variable for userscripts.
22531 * (bug 20717) Added checkboxes to hide users with bot and/or sysop group
22532 membership in SpecialActiveusers
22533 * Allow \pagecolor and \definecolor in texvc
22534 * $wgTexvcBackgroundColor contains background color for texvc call
22535 * (bug 21574) Redirects can now have "303 See Other" HTTP status
22536 * EditPage refactored to allow extensions to derive new edit modes much easier.
22537 * (bug 21826) Subsections of Special:Version now also have anchors
22538 * (bug 19791) Add URL of file source as comment to thumbs (for ImageMagick)
22539 * (bug 21946) Sorted wikitables do not properly handle minus signs
22540 * (bug 18885) Red links for media files do not support shared repositories
22541 * Added $wgFixArabicUnicode, to convert deprecated presentation forms in
22542 Arabic text to their modern equivalents, and $wgFixMalayalamUnicode, to
22543 convert ZWJ-based chillu sequences in Malayalam text to their Unicode 5.1
22545 * (bug 22051) Returing false in SpecialContributionsBeforeMainOutput hook now
22546 stops normal output
22547 * Send new password e-mail in users preference language
22548 * LanguageConverter now support nested using of manual convert syntax like
22550 * Upload license preview now uses the API instead of action=ajax
22551 * (bug 7346) Add <guid> to RSS to avoid duplicates
22552 * (bug 19996) Added new hooks for Special:Search, which allow to further
22553 restrict/expand it.
22554 * (bug 21936) When a revision has been patrolled, there's now a link back to the
22556 * (bug 22315) SpecialRecentChangesQuery hook now pass $query_options and checks
22558 * Separate unit test suites under t/ and tests/ were merged and moved to
22559 maintenance/tests/.
22560 * importImages.php maintenance script can now use the original uploader and
22561 comment from another wiki.
22562 * Support for Turck MMCache was removed
22563 * (bug 14592) Warn users when they try to move their user page that their
22564 account will not be renamed
22565 * Show block log on non-existing user (talk) pages of currently blocked users
22567 === Bug fixes in 1.16 ===
22569 * (bug 18031) Make namespace selector on Special:Export remember the previous
22571 * The svn-version version numbers on Special:Version have been removed
22572 * (bug 17374) Special:Export no longer exports two copies of the same page
22573 * (bug 18190) Proper parsing in MediaWiki:Sharedupload message
22574 * (bug 17617) HTML cleanup for ImagePage
22575 * (bug 17964) namespaceDupes.php no longer fails on an empty interwiki table
22576 * Improved error handling for image moving
22577 * (bug 17974) On Special:SpecialPages, restricted special pages are now marked
22578 with <strong> tags, helps with text-based browsers
22579 * (bug 18259) Special:DeletedContributions now also uses
22580 MediaWiki:Sp-contributions-logs for the link to Special:Log
22581 * Don't add empty title="" attributes to links to anchors on the current page
22582 * (bug 18291) rebuildrecentchanges.php failed to add deletion log entries
22583 * (bug 18304) rebuildrecentchanges.php got size changes wrong
22584 * (bug 18170) Fixed a PHP warning in Parser::preSaveTransform() in PHP 5.3
22585 * (bug 18289) Database connection error page now returns correct HTML
22586 * "successbox", "errorbox" and related CSS classes are now available in all
22588 * (bug 18316) Removed superfluous name="fulltext" from Special:Search
22589 * (bug 18331) MediaWiki:Undelete-revision can now have wikitext
22590 * The "noautoblock" flag is no longer displayed in the block log when blocking
22592 * (bug 18009) $wgHooks and $wgExtensionFunctions now support closures
22593 * (bug 17948) Maintenance scripts now exit(0) or exit(1) as appropriate
22594 * (bug 18377) Time in Enhanced ChangesList lacking localisation
22595 * (bug 12998) Allow <sup>, <sub>, etc. in DISPLAYTITLE
22596 * (bug 1553) Lowercase navigation headings in German
22597 * (bug 7830) Pending transactions failed to commit on loginToUse() error
22598 * (bug 11613) session.save_handler being over-ridden
22599 * (bug 11381) session.save_handler being set twice (causes error)
22600 * (bug 17835) ForeignAPIRepo throwing error on first page load for file
22601 * (bug 18115) ForeignAPIRepo cache isn't working
22602 * Fixed a bug caused by LanguageConverter.php, which brings an abnormal '}-'
22603 after some parsed math syntax.
22604 * (bug 18441) rebuildrecentchanges.inc no longer ignores $wgLogRestrictions
22605 * (bug 18317) Bolded selections in 1 | 3 | etc days on RecentChanges now use
22606 <strong> instead of hardcoded styles
22607 * (bug 18449) Fixed items number per column on category pages when the total is
22609 * (bug 18121) maintenance/deleteArchivedRevisions.php no longer deletes
22610 revisions when --delete is not passed
22611 * (bug 13172) GPS coordinates in image Exif data are now actually displayed
22612 * Overhaul of preferences system, includes the following bug fixes:
22613 ** (bug 5363) Changes to default preferences now impact registered users.
22614 ** (bug 14806) Hook to enable putting preferences in existing tabs.
22615 ** (bug 17191) Registration date now listed on preferences page.
22616 ** The user_properties table (now used for storing preferences) has been added
22617 to $wgSharedTables.
22618 ** Note that this change will break some extensions which have not been adapted
22620 * (bug 17020) Adding fallback encodings for Traditional and Simplified Chinese
22621 languages while the text is typed as URLs.
22622 * (bug 17614) Prev / Next links are not shown if all results are shown
22623 * (bug 18207) Strange spacing before [[irc:...]] links
22624 * Removed float from the user login form in RTL interface - caused display
22626 * (bug 15008) Redirect images are now subject to Bad image list rules
22627 * (bug 6802) profileinfo.php now also work on other database servers than MySQL
22628 * (bug 16925) Diffs no longer fail when $wgExternalDiffEngine is set to
22629 'wikidiff' or 'wikidiff2' but extension is not installed
22630 * (bug 18326) Chmod errors in file repos have been hidden
22631 * (bug 18718) Comma after a } create a error in IE
22632 * (bug 18716) Removed redundant class in Modern skin CSS for category links and
22634 * (bug 18656) Use proper directory separators in wfMkdirParents()
22635 * (bug 18549) Make Special:Blockip respect $wgEnableUserEmail and
22637 * (bug 16912) Tooltips on images with link= disappear
22638 * (bug 18389) Localise numbers in EXIF data
22639 * (bug 18522) Wrap MediaWiki:Protect-cascadeon in a div for identification
22640 * (bug 18438) Tweak HTML for preview bar for consistency and accessibility
22641 * (bug 18432) Updated documentation for dumpBackup.php
22642 * Fix array logic in Sanitizer::removeHTMLtags so that it doesn't strip good
22643 tags that were redundantly defined.
22644 * (bug 14118) SpecialPage::getTitleFor does not return a localised name
22645 * (bug 18698) Renaming non entry point maintenance scripts from .inc.php to
22647 * Deprecated methods Title::getInterwikiLink, Title::userCanCreate(),
22648 Title::userCanEdit() and Title::userCanMove() have been removed
22649 * Only show upload links on file description if $wgEnableUploads = true
22650 and user can upload
22651 * Don't say "You need to log in to upload/move", because it's possible that
22652 uploading/moving is disabled for registered users as well (e.g. only sysops)
22653 * (bug 18943) Handle invalid titles gracefully at Special:Mostlinked
22654 * (bug 8873) Enable variant conversion in text on 'alt' and 'title' attributes
22655 * (bug 10837) Introducing the StubUserVariant class to determine the variant
22656 variable instead of using this to overrule the user language preference.
22657 * (bug 19014) If user had deletedhistory right, but not undeleted right, then
22658 show "view" instead of "view/restore" on logs.
22659 * (bug 19017) TOC level calculation error in an odd case
22660 * (bug 18999) CSS update for RTL interwiki links
22661 * (bug 18925) history.js removes class names of list elements on initialization
22662 * Multiple whitespace in TOC anchors is now stripped, for consistency with the
22663 link from the edit comment
22664 * (bug 19112) Preferences now respects $wgUseExternalEditor
22665 * (bug 18173) MediaWiki now fails when unable to determine a client IP
22666 * (bug 19170) Special:Version should follow the content language direction
22667 * (bug 19160) maintenance/purgeOldText.inc is now compatible with PostgreSQL
22668 * Fixed performance regression in "bad image list" feature
22669 * Show user preference 'Use live preview' if $wgLivePreview is enabled only
22670 * (bug 17014) Blocked users can no longer use Special:UserRights unless they
22671 can add/remove *all* groups (have 'userrights' permission).
22672 * (bug 19294) Always show Sp-contributions-footer(-anon)
22673 * Attempts to restrict reading of pages while anonymous viewing is allowed
22674 via extensions not using the userCan hook and via $wgRevokePermissions now
22676 * (bug 8445) Multiple-character search terms are now handled properly for
22678 * (bug 19450) Use formatNum for "Number of edits" in Special:Preferences
22679 * (bug 11242) Check for MySQL storage engines during installation now checks
22680 whether the engines are actually available
22681 * (bug 19390) Omit the "printable version" link on the printable version
22682 * (bug 18394) img_auth.php now respects userCan
22683 * (bug 19509) Uploading to a file named '0' previously treated it as null input
22684 and attempted to upload with the source name. Now warns about not having an
22685 extension (since 0.ext is perfectly valid)
22686 * (bug 19468) Enotif preferences are now only displayed when they are turned on
22687 * (bug 19442) Show/hide options on watchlist only work once
22688 * (bug 19602) PubMed Magic links now use updated NIH url
22689 * (bug 19637) externallinks have links to self
22690 * Don't load Opera 9.5 RTL fixes for Opera 9.6
22691 * Remove five-year-old KHTMLFixes.css, which is unlikely to be relevant anymore
22692 and was causing problems.
22693 * Removed repetition of URIs in the title attributes of external links.
22694 * (bug 19693) User name is now escaped in "Contributions for ..." link on
22696 * (bug 19571) Override buildConcat for SQLite.
22697 * Log in and log out links no longer return to page view when clicked from
22698 history view, edit page, or something similar
22699 * (bug 19513) RTL fixes for new Search UI
22700 * (bug 16497) Special:Allmessages is paginated
22701 * (bug 18708) CSS plainlinks class now available to all skins
22702 * (bug 19590) Database error messages no longer have "MySQL" hardcoded as the
22704 * (bug 19759) successbox on Special:Preferences now correctly aligned on
22705 standard, nostalgia and cologneblue skin
22706 * (bug 19814) interwiki links from file links ([[File:Foo.jpg|link=de:Test]])
22707 are no longer recorded in the pagelinks table
22708 * (bug 19784) date option "ISO 8601" produced illegal id
22709 * (bug 19761) Removed autogenerated <meta keywords> tag with link data.
22710 Keyword set was not useful, and is ignored by modern search engines anyway.
22711 * (bug 19827) Special:SpecialPages title is "Upload file
22712 * (bug 19355) Added .xhtml, .xht to upload file extension blacklist
22713 * (bug 19287) Workaround for lag on history page in Firefox 3.5
22714 * (bug 19564) Updated docs/hooks.txt
22715 * (bug 18751) Fix for buggage in profiling setup for some extensions on PHP 5.1
22716 * (bug 17139) ts_resortTable inconsistent trimming makes date sorting fragile
22717 * (bug 19445) Change oldimage table to use ON UPDATE CASCADE for FK to image
22719 * (bug 14080) Short notation links to subpages didn't work in edit summaries
22720 * (bug 17374) Special:Export no longer exports multiple copies of pages
22721 * (bug 19818) Edits to user CSS/JS subpages can now be marked as patrolled by
22722 users who can't edit them
22723 * (bug 19839) Comments in log items are no more double escaped
22724 * (bug 18161) Fix inconsistent separators in watchlist link toolbars with
22725 "enhanced recent changes"
22726 * (bug 16877) Moving a page over a redirect no longer leaves an orphan entry in
22727 the recentchanges table
22728 * (bug 16009) Limit selection forms based on Pager now links to the correct page
22729 when using long urls
22730 * The display of the language list on the preferences is more comply with the
22732 * (bug 19849) Custom X-Vary-Options header now disabled unless $wgUseXVO is set
22733 * (bug 19301) Duplicate entries in $wgAddGroups, $wgRemoveGroups,
22734 $wgGroupsAddToSelf and $wgGroupsRemoveFromSelf are no more displayed on
22735 Special:ListGroupRights
22736 * (bug 18799) Special:Userlogin now handles correctly the returnto parameter
22737 to not link back to Special:Userlogout when user's language isn't the same as
22739 * (bug 19479) Show proper error message when unable to connect to PostgreSQL
22740 database with username/password in MediaWiki's setup
22741 * (bugs 18407, 18409) Special:Upload is now listed on Special:Specialpages only
22742 if uploads are enabled and the user can access it
22743 * (bug 17988) Spaces before [[Category:]] links are no longer ignored
22744 * (bug 19957) All known-failing tests now marked disabled; added --run-disabled
22745 option to parser test suite to run disabled tests if desired.
22746 * (bug 16311) Make recent change flags (n/m/b) <abbr>s instead of <span>s
22747 * (bug 15680) Split the edit tip message of user CSS/JS subpage into
22748 "usercssyoucanpreview" and "userjsyoucanpreview" respectively.
22749 * (bug 12110) Split the rights for editing users' CSS/JS subpage from
22750 "editusercssjs" into "editusercss" and "edituserjs" respectively.
22751 * (bug 19394) RecentChanges feed URLs for log items with no revisions
22752 (eg Newuser, Userrights) are no longer broken
22753 * (bug 17395) Remote file descriptions use user language ($wgLang), not wiki
22754 language ($wgContLang)
22755 * (bug 11867) Lock error on redirect table when running orphans.php
22756 * (bug 18930) initStats.php now refreshes active users count
22757 * (bug 18699) Using the nosummary URL option no longer triggers the "You have
22758 not provided a summary" warning for those who activated it in their
22760 * (bug 18855) commandLine.inc and Maintenance.php are now properly included
22761 using the full path
22762 * (bug 18497) Fixed broken style sheets in Opera fullscreen mode
22763 * (bug 16084) Default memory limit has be increased to 50M, see $wgMemoryLimit
22764 * (bug 17864/19519) Added proper input normalization in Special:UserRights
22765 * (bug 20086) Add Hook to add extra statistics at the end of Special:Statistics
22766 * (bug 19289) importDump.php can now handle bzip2 and 7zip
22767 * (bug 20131) Fixed a PHP notice for users having the "rollback" right on
22768 Special:RecentChangesLinked
22769 * Do not transform EXIF fields with pure text to avoid results like
22770 foo,bar@example,com
22771 * (bug 20176) Fix login/logout links in skin CologneBlue
22772 * (bug 20203) "Powered by MediaWiki" now has height/width on image tag
22773 * (bug 20273) Fix broken output when no pages are found in the content
22775 * (bug 20265) Make AncientPages and UnusedFiles work on SQLite
22776 * Fixed XSS vulnerability for Internet Explorer clients (only pre-release
22777 versions of MediaWiki were affected).
22778 * (bug 14817) Moving a page to a subpage of itself moves it twice
22779 * (bug 20289) $wgMaximumMovedPages should only count pages actually moved
22780 * (bug 15248) Non-breaking spaces and certain other Unicode space characters
22781 are now normalized to ordinary spaces in titles; if your wiki has existing
22782 titles with such characters, run cleanupTitles.php and/or cleanupImages.php
22783 * (bug 11143) Links containing invalid UTF-8 percent-code sequences are now
22784 cleanly disabled instead of breaking parsing entirely on PHP 5.2.
22785 * (bug 20296) Fixed an PHP warning in Language::getMagic() in PHP 5.3
22786 * (bug 20358) Unprotect tab was missing accesskey; now same as protect tab.
22787 * (bug 20317) Cleaned up default main page link accesskey settings
22788 * (bug 20362) Special:Statistics now produces valid HTML when view counters are
22790 * (bug 19857) maintenance/deleteRevision.php on last revision no longer breaks
22792 * (bug 20365) Page name with c/g/h/j/s/u + x are now correctly handled in
22793 Special:MovePage with Esperanto as content language
22794 * (bug 20364) Fixed regression in GIF metadata loading
22795 * (bug 20299) MediaWiki:Move-subpages and MediaWiki:Move-talk-subpages can now
22797 * (bug 15475) DatabaseBase::setFlag(), DatabaseBase::clearFlag() and
22798 DatabaseBase::getFlag() now have documentation
22799 * (bug 19966) MediaWiki:License-header is now used for the licensing header in
22800 the file description page instead of MediaWiki:License
22801 * (bug 20380) Links to history/deleted edits at the top of
22802 Special:RevisionDelete are no more displayed when doing log suppression
22803 * (bug 8143) Localised parser function names are now correctly case insensitive
22804 if they contain non-ASCII characters
22805 * (bug 19055) maintenance/rebuildrecentchanges.php now purges
22806 Special:Recentchanges's RSS and Atom feed cache
22807 * The installer will now try to bypass PHP's max_execution_time
22808 * (bug 20260) SQLite no longer tries to automatically create the database at
22809 execution time, this now happens only at install time; if it is not available
22810 at script execution, it now throws an exception
22811 * Fixed EditFilterMerged hook so the hookError parameter serves a purpose
22812 (analogous to EditFilter hook)
22813 * (bug 2257) Tag extensions can expand template parameters provided to the tag,
22814 by using a new parameter added to the recursiveTagParse function
22815 * (bug 14900) __INDEX__ and __NOINDEX__ no longer override site config set in
22816 $wgArticleRobotPolicies.
22817 * (bug 20466) Hidden categories are no more displayed when printing
22818 * (bug 20446) When changing user rights with User@remotewiki and remotewiki is
22819 the local wiki, the user is now treated as the local user
22820 * (bug 20494) OutputPage::getArticleBodyOnly() no longer requires an useless
22822 * (bug 20136) Protection form JavaScript now synchronizes the expiry boxes on
22823 any change, in addition to onkeyup.
22824 * Don't link to "edit this page" on MediaWiki:Noarticletext if user is not
22825 allowed to create page. Done via new message
22826 MediaWiki:Noarticletext-nopermission
22827 * Improved compatibility between the Vector skin and addPortletLink() from
22828 wikibits.js: empty portlets are now present but hidden, adding an element to a
22830 * (bug 19531) addPortletLink() now wraps inserted labels in a <span> element to
22831 be compatible with the CSS for the Vector skin
22832 * (bug 20578) Wrong localized image metadata - duplicated string?
22833 * (bug 20556) Stub threshold's "other" <input> in Special:Preferences now has a
22834 correct type="text" parameter
22835 * (bug 482) Don't include TOC in the printable version if it has been hidden
22836 * Adjust the time according to the user configuration on Special:Revisiondelete
22837 * (bug 20624) Installation no longer allows "qqq" as the chosen language
22838 * (bug 20634) The installer-created database user will now have all rights on
22839 the database so that upgrades will go more smoothly.
22840 * (bug 18180) Special:Export ignores limit, dir, offset parameters
22841 * User::getBlockedStatus() works for all kinds of user objects and doesn't
22842 assume the user object is equal to the current-user object ($wgUser)
22843 * (bug 20517) Cancel link from edit page now returns to the old version when
22844 editing an old version
22845 * (bug 16902) Installer no longer shows warnings when exec() has been disabled
22846 by disable_functions
22847 * (bug 20726) Title::getLatestRevID's documentation now says that the function
22848 returns false if the page doesn't exist
22849 * (bug 20751) ForeignApiRepo now urldecodes filenames when saving to local cache
22850 * (bug 20730) Fix to Special:Version ViewVC link for branch checkouts
22851 * (bug 20353) wfShellExec() was adding extra quotes on Windows Vista, causing
22852 command line scripts to fail
22853 * (bug 20702) Parser functions can now be used correctly in
22854 MediaWiki:Missing-article
22855 * (bug 14117) "redirected from" is now also shown on foreign file redirects
22856 * (bug 17747) Only display thumbnail column in file history if the image can
22858 * (bug 3421) Live preview no longer breaks user CSS/JS previews
22859 * (bug 11264) The file logo on a file description page for documents (PDF, ...)
22860 now links to the file rather than the file description page
22861 * Password fields built with HTMLForm now still have the type="password"
22862 attribute if $wgHtml5=false.
22863 * (bug 20836) Preload now works for MediaWiki namespace
22864 * (bug 20885) Search box no longer suggests unavailable special pages
22865 * (bug 20948) "Create this page" on Special:Search is no longer displayed when
22866 searching for special pages
22867 * (bug 20524) Hideuser: Show nice error when trying to block hidden user without
22869 * (bug 21026) Fixed file redirects on shared repos on non-English client wikis
22870 * (bug 21030) Fixed schema choices from being overwritten by defining unique
22871 field names per driver.
22872 * (bug 21115) wgCanonicalSpecialPageName javascript variable is now always
22873 false on non-special pages
22874 * (bug 21113) "Other statistics" header on Special:Statistics is no more
22875 displayed when there isn't any entry in it
22876 * (bug 21114) Special:Contributions no longer shows diff links for new
22878 * (bug 21116) MediaWiki:Templatesused, MediaWiki:Templatesusedpreview and
22879 MediaWiki:Templatesusedsection now support plural
22880 * (bug 21079) There is no more line wrapping between label and field in
22882 * (bug 20256) Fixed SQL errors on Special:Recentchanges and
22883 Special:Recentchangeslinked on SQLite backend
22884 * (bug 20880) Fixed updater failure on SQLite backend
22885 * (bug 21182) Fixed invalid HTML in Special:Listgrouprights
22886 * (bug 20242) Installer no longer promts for user credentials for SQLite
22888 * (bug 20911) Installer failed to create a SQLite database
22889 * (bug 20847) Deprecated deprecated akeytt() removed in wikibits.js leaving
22891 * (bug 21161) Changing $wgCacheEpoch now always invalidates file cache
22892 * (bug 20268) Fixed row count estimation on SQLite backend
22893 * (bug 20275) Fixed LIKE queries on SQLite backend
22894 * (bug 21234) Moving subpages of titles containing \\ now works properly
22895 * (bug 21006) maintenance/updateArticleCount.php now works again on PostgreSQL
22896 * (bug 19319) Add activeusers-intro message at top of SpecialActiveUsers page
22897 * (bug 21255) Fixed hostname construction for DNSBL checking
22898 * (bug 18019) Users are now warned when moving a file to a name in use on a
22899 shared repository and only users with the 'reupload-shared' permission can
22901 * (bug 18909) Add missing Postgres INSERT SELECT wrapper
22902 * User::isValidPassword now only returns boolean results,
22903 User::getPasswordValidity can be used to get an error message string
22904 * The error message shown in Special:ChangePassword now parses wiki markup
22905 * (bug 19859) Removed experimental HTMLDiff feature
22906 * Removed section edit links in edit conflict form
22907 * Allow SpecialActiveusers to work on non-MySQL databases
22908 * (bug 6579) Fixed protecting images from uploading only
22909 * (bug 18609) Search index was empty for some pages
22910 * (bug 13453) rebuildrecentchanges maintenance script works on PG again
22911 * (bug 16583) Reduce false positives when checking for PHP (on upload, etc.)
22912 * (bug 20112) Bitrotted tests in the t/ directory were failing.
22913 * (bug 21470) MediaWiki:Sp-contributions-explain is now wrapped in a <p> with
22914 id "mw-sp-contributions-explain"
22915 * (bug 19159) Fixed \overleftrightarrow in texvc
22916 * (bug 19391) Fix caching for Recent ChangesFeed.
22917 * (bug 21455) Fixed "Watch this page" checkbox appearing on some special pages
22918 even to non-logged in users
22919 * (bug 21551) Rewrote the Squid purge HTTP client to provide a more robust and
22920 general implementation of HTTP, allowing it to purge non-Squid caches such as
22922 * Fixed corruption of long UDP debug log messages by using socket_sendto()
22923 instead of fsockopen() with fwrite().
22924 * (bug 16884) Fixed feed links in sidebar not complying with URL parameters
22925 of the displayed page
22926 * (bug 21403) memcached class renamed to MWMemecached to avoid conflict with
22927 PHP's memcached extension
22928 * (bug 21650) Both calls to SkinTemplateTabs hook are now compatible
22929 * (bug 21672) Add missing Accept-Language to both Vary and XVO headers
22930 * (bug 21679) "Edit block reasons" link at the bottom of Special:Blockip is now
22931 only displayed to the users that have "editinterface" right
22932 * (bug 21740) Attempting to protect a page that doesn't exist (salting) returns
22934 * (bug 18762) both redirects and links get fixed one after another if
22935 redirects-only switch is not present
22936 * (bug 20159) thumbnails rerendered if older than $wgThumbnailEpoch
22937 * Fixed a bug which in some situations causes the job queue to grow forever,
22938 due to an infinite loop of job requeues.
22939 * (bug 21523) File that can have multiple pages (djvu, pdf, ...) no longer have
22940 the page selector when they have only one page
22941 * (bug 21559) "logempty" message is now wrapped in a div with class
22942 "mw-warning-logempty" when used in log extract
22943 * (bug 20549) Parser tests were broken on SQLite backend
22944 * (bug 21776) Interwiki urls like http://en.wikibooks.org/wiki/cs: should give
22945 a redirect instead of a baderror.
22946 * (bug 21803) Special:MyContributions now keeps the query string parameters
22947 * Redirecting special pages now keep query string parameters set to "0" (e.g.
22949 * (bug 20765) Special:ListGroupRights no longer misses addables and removables
22950 groups if there are duplicate entries
22951 * (bug 21814) Message shown when rolling back an edit with a deleted username
22952 now shows '(username deleted)' instead of broken user tool links
22953 * (bug 21536) Fixed JavaScript error on Special:Search caused by an incorrect ID
22954 * (bug 21535) RecentChanges RSS feed now always recognises the namespace filter,
22955 previously it sometimes didn't due to caching.
22956 * (bug 20388) ProfilerSimpleText no longer outputs comment on action=raw
22957 * refreshLinks.php now purges orphaned redirect table rows
22958 * (bug 2971) Swap links of hist & diff location on Special:Contributions for
22959 consistency with RC/WL
22960 * (bug 21986) Special page names are now capitalized by content language
22961 * If two log types have the same description, they're now both displayed in the
22962 type selector on Special:Log
22963 * (bug 20115) Special:Userlogin title says "Log in / create account" even if the
22964 user can't create an account
22965 * (bug 2658) Don't attempt to set the TZ environment variable.
22966 * (bug 9794) User rights log entries for foreign user now links to the foreign
22967 user's page if possible
22968 * (bug 14717) Don't load nonexistent CSS fix files for non-Monobook skins
22969 * (bug 22034) Use wfClientAcceptsGzip() in wfGzipHandler instead of
22971 * (bug 19226) First line renders differently on many UI messages.
22972 * (bug 21303) Comments are no longer stripped from MediaWiki:Common.js and
22973 skin-specific JS pages
22974 * (bug 5061) Use the more precise thumbcaption thumbimage and thumbinner classes
22976 * (bug 22096) IE50Fixes.css and IE55Fixes.css have been dropped from the
22977 Monobook and Chick skins
22978 * Fixed bug involving unclosed "-{" markup in the language converter
22979 * (bug 21870) No longer include Google logo from an external server on wiki
22981 * (bug 22181) Do not truncate if the ellipsis actually make the string longer
22982 * (bug 16039) Text disappearing after a bad image
22983 * (bug 18784) Internal links like [[File:Foo|caption]] should read 'caption',
22984 not 'File:Foo' when Foo is not an image
22985 * (bug 21518) Special:UserRights no longer displays the user name box for users
22986 that can only change their rights
22987 * (bug 21593) Special:UserRights now lists automatic groups membership
22988 * (bug 22364) Setting $wgUseExternalEditor to false no longer hides the reupload
22989 link from file pages
22990 * Fix bug introduced in MediaWiki 1.12: The author field in
22991 $wgExtensionCredits is no longer sorted with sort() but rather used
22992 as it appears in extensions as was the case before r30117 where it
22993 was unintentionally sorted along with other fields.
22994 * (bug 19334) Textarea no longer jumps when editing longer articles in IE8
22995 * Truncate summary of page moves in revision comment field to avoid broken
22996 multibyte characters
22997 * (bug 22540) ForeignApiRepos no longer try to store thumbnails that don't exist
22998 * (bug 22551) Special:Resetpass now has a "Cancel" button that sends the user to
22999 the page set in the &returnto parameter.
23000 * (bug 19194) Search box in Modern skin doesn't focus with Safari/Chrome
23001 * (bug 17790) Users instantly logged off on HughesNet
23002 * (bug 21549) Make foreign key constraints DEFERRABLE INITIALLY DEFERRED
23003 when using Postgres as the database backend.
23005 == API changes in 1.16 ==
23007 * Added uiprop=changeablegroups to meta=userinfo
23008 * Added usprop=gender to list=users
23009 * (bug 18311) action=purge now works for images too
23010 * Add parentid to prop=revisions output
23011 * (bug 17832) action=delete returns 'unknownerror' instead of 'permissiondenied'
23012 when the user is blocked
23013 * (bug 18546) Added timestamp of new revision to action=edit output
23014 * (bug 18554) Also list hidden revisions in list=usercontribs for privileged
23016 * (bug 13049) "API must be accessed from the primary script entry point" error
23017 * (bug 16422) Don't display help for format=jsonfm unless specifically requested
23018 * Added PHP and database version to meta=siteinfo output
23019 * (bug 18533) Add readonly message to meta=siteinfo output
23020 * (bug 18518) Add clprop=hidden to prop=categories
23021 * (bug 18710) Fixed internal error with empty parameter in action=paraminfo
23022 * (bug 18709) Missing descriptions for some parameters in action=paraminfo
23024 * (bug 18731) Show correct SVN links for extension modules in api.php?version
23025 * (bug 18730) Add version information to action=paraminfo output
23026 * (bug 18743) Add ucprop=size to list=usercontribs
23027 * (bug 18749) Add generator flag to action=paraminfo output
23028 * Make action=block respect $wgEnableUserEmail and $wgSysopEmailBans
23029 * Made deleting file description pages without files possible
23030 * (bug 18773) Add content flag to siprop=namespaces output
23031 * (bug 18785) Add siprop=languages to meta=siteinfo
23032 * (bug 14200) Added user and excludeuser parameters to list=watchlist and
23034 * Added index, fromtitle and byteoffset fields to action=parse&prop=sections
23036 * (bug 19313) action=rollback returns wrong revid on master/slave setups
23037 * (bug 19323) action=parse doesn't return section tree on pages with Cite
23039 * (bug 18720) Add anchor field to action=parse&prop=sections output
23040 * (bug 19423) The initial file description page used caption in user lang
23041 rather than UI lang
23042 * (bug 17809) Add number of users in user groups to meta=siteinfo
23043 * (bug 18533) Add readonly reason to readonly exception
23044 * (bug 19528) Added XSLT parameter to API queries in format=xml
23045 * (bug 19040) Fix prependtext and appendtext in combination with section
23046 parameter in action=edit
23047 * (bug 19090) Added watchlist parameter, deprecated watch and unwatch
23048 parameter in action=edit
23049 * Added fields to list=search output: size, wordcount, timestamp, snippet
23050 * Where supported by backend, list=search adds a 'searchinfo' element with
23051 optional info: 'totalhits' count and 'suggestion' alternate query term
23052 * (bug 19907) $wgCrossSiteAJAXdomains added to allow specified (or all)
23053 external domains to access api.php via AJAX, if the browser supports the
23054 Access-Control-Allow-Origin HTTP header
23055 * (bug 19999) Made metadata and properties of search results optional. Added
23057 * (bug 20700) Add amprop=default to meta=allmessages to list default value for
23058 customized messages
23059 * Don't parse magic words in meta=allmessages, output messages unparsed
23060 * (bug 21105) list=usercontribs can now list contribs for User:0
23061 * (bug 21085) list=deletedrevs no longer returns only one revision when
23062 drcontinue param is passed
23063 * (bug 21106) Deprecated parameters now tagged in action=paraminfo
23064 * (bug 19004) Added support for tags
23065 * (bug 21083) list=allusers no longer returns current timestamp for users
23066 without registration date
23067 * (bug 20967) action=edit allows creation of invalid titles
23068 * (bug 19523) Add inprop=watched to prop=info
23069 * (bug 21589) API: Separate summary and initial page text for uploads
23070 * (bug 21817) list=usercontribs returns empty result for empty ucuser
23071 * (bug 21441) meta=userinfo&uiprop=options no longer returns default options
23072 for logged-in users under certain circumstances
23073 * (bug 21945) Add chomp control in YAML
23074 * Expand the thumburl to an absolute url to make it consistent with url and
23076 * (bug 20233) ApiLogin::execute() doesn't handle LoginForm :: RESET_PASS
23077 * (bug 22061) API: add prop=headitems to action=parse
23078 * (bug 22240) API: include time in siteinfo
23079 * (bug 22241) Quick edit is still using the deprecated watch parameter (API:
23080 Setting default for watch/unwatch wrongly set)
23081 * (bug 22245) blfilterredirect=nonredirects in blredirect mode wrongly filtering
23082 * (bug 22248) Output extension URLs in meta=siteinfo&siprop=extensions
23083 * Support key-params arrays in 'descriptionmsg' in
23084 meta=siteinfo&siprop=extensions
23085 * (bug 21922) YAML output should quote asterisk when used as key
23086 * (bug 22297) safesubst: to allow substitution without breaking transclusion
23087 * (bug 18758) API read of watchlist's wl_notificationtimestamp
23088 * (bug 20809) Expose EditFormPreloadText via the API
23089 * (bug 18427) Comment (edit summary) parser option for API
23090 * (bug 18608) API should provide list of CSS styles to apply to rendered output
23091 * (bug 18771) List possible errors in action=paraminfo
23093 === Languages updated in 1.16 ===
23095 MediaWiki supports over 300 languages. Many localisations are updated
23096 regularly. Below only new and removed languages are listed, as well as
23097 changes to languages because of Bugzilla reports.
23099 * Capiznon (cps) (new)
23100 * North Frisian (frr) (new)
23101 * Kirmanjki (kiu) (new)
23102 * Komi-Permyak (koi) (new)
23103 * Karachay-Balkar (krc) (new)
23104 * Hill Mari (mrj) (new)
23105 * Prussian (prg) (new)
23106 * Romagnol (rgn) (new)
23107 * Lower Silesian (sli) (new)
23108 * Picard (pcd) (new)
23109 * Uyghur (Arabic script) (ug-arab) (new)
23110 * Upper Franconian (vmf) (new)
23111 * Votic (vot) (new)
23112 * Eastern Yiddish (ydd) (removed)
23113 * Iriga Bicolano (bto) (removed)
23114 * Ladin (lld) (removed)
23115 * Laz (lzz) (removed)
23116 * Palembang (plm) (removed)
23117 * Megleno-Romanian (Greek script) (ruq-grek) (removed)
23118 * Tamazight (tzm) (removed)
23121 * (bug 18474) Sorani (ckb - Central Kurdish) (renamed from ku-arab)
23122 * Add PLURAL function for Scots Gaelic (gd)
23123 * Add Estonian letters äöõšüž to linktrail (et)
23124 * (bug 18776) Native name of Burmese language (my)
23125 * (bug 18806) Use correct unicode characters in spelling of native Chuvash
23127 * (bug 18864) Updated autonym for Zhuang language
23128 * (bug 18308) Updated date formatting in Occitan (oc)
23129 * (bug 19080) Added ăâîşţșțĂÂÎŞŢȘȚ to Romanion (ro) linktrail
23130 * (bug 19286) Correct commafying function in Polish (pl)
23131 * (bug 19441) Updated date formatting for Lithuanian
23132 * (bug 19630) Added ÄäÇçĞğŇňÖöŞşÜüÝýŽž to Turkmen (tk) linktrail
23133 * (bug 19949) New linktrail for Greek (el)
23134 * (bug 19809) Korean (North Korea) (ko-kp) (new)
23135 * (bug 19968) Fixed "Project talk" namespace name for Maltese (mt)
23136 * (bug 21168) Added áâãàéêçíóôõúü to Portuguese (pt) linktrail
23137 * (bug 21596) Change interwiki link for Kurdish (ku)
23138 * (bug 23767) PHP warning/error when REQUEST_URI returns blank (IIS issue).
23140 == MediaWiki 1.15 ==
23142 == MediaWiki 1.15.5 ==
23143 === Changes since 1.15.4 ===
23145 * (bug 24565) Fixed Cache-Control headers sent from API modules, to protect
23146 user privacy in the case where an attacker can access the wiki through the
23147 same HTTP proxy as a logged-in user.
23148 * Fixed a minor cookie header parsing issue causing incorrect Cache-Control
23149 headers to be sent.
23150 * Fixed an XSS vulnerability in profileinfo.php for installations with
23151 $wgEnableProfileInfo = true (false by default)
23152 * For backwards compatibility with extensions from 1.14.x or before, restored
23153 the original function ApiMain::requestWriteMode().
23154 * In API login "need token" responses, added the cookieprefix and sessionid
23155 fields, as in MediaWiki 1.16.x. This is an improvement to the CSRF fix
23156 introduced in 1.15.3.
23158 == MediaWiki 1.15.4 ==
23159 === Changes since 1.15.3 ===
23161 * (bug 23534) Fixed SQL query error in API list=allusers.
23162 * (bug 23371) Fixed CSRF vulnerability in "e-mail me my password", "create
23163 account" and "create by e-mail" features of [[Special:Userlogin]]
23164 * (bug 23687) Fixed XSS vulnerability affecting IE clients only, due to a CSS
23167 == MediaWiki 1.15.3 ==
23168 === Changes since 1.15.2 ===
23170 * (bug 22828) Fixed deletion on SQLite.
23171 * (bug 23076) Fixed login CSRF vulnerability. Logins now require a token to
23172 be submitted along with the user name and password.
23174 == MediaWiki 1.15.2 ==
23175 === Changes since 1.15.1 ===
23177 * The installer now includes a check for a data corruption issue with certain
23178 versions of libxml2 2.7 and PHP earlier than 5.2.9, and also for a PHP bug
23179 present in the official release of PHP 5.3.1.
23180 * (bug 20239) MediaWiki:Imagemaxsize does not contain anymore a <br /> tag which
23181 was displayed to the user
23182 * (bug 21150) SQLite no longer raise an error when deleting files
23183 * (bug 20880) Fixed updater failure on SQLite backend
23184 * upgrade1_5.php now requires to be run --update option to prevent confusion
23185 * Fixed a CSS validation issue which allowed external images to be included
23186 into wikis where that is disallowed by configuration.
23187 * Fixed a data leakage vulnerability for private wikis using img_auth.php or
23188 similar image access authentication schemes. Check user permissions before
23189 streaming out scaled images from thumb.php.
23191 == MediaWiki 1.15.1 ==
23192 === Changes since 1.15.0 ===
23193 * Fixed fatal errors for unusual file repository configurations, such as
23195 * Fixed the "change password" link on Special:Preferences to have the correct
23196 returnto parameter.
23197 * (bug 19693) Fixed cross-site scripting vulnerability in Special:Block
23199 == MediaWiki 1.15.0 ==
23200 === Changes since 1.15.0rc1 ===
23202 * Removed category redirect feature, implementation was incomplete.
23203 * (bug 18846) Remove update_password_format(), unnecessary, destroys all
23204 passwords if a wiki with $wgPasswordSalt=false is upgraded with the web
23206 * (bug 19127) Documentation warning for PostgreSQL users who run update.php:
23207 use the same user in AdminSettings.php as in LocalSettings.php.
23208 * Fixed possible web invocation of some maintenance scripts, due to the use of
23209 include() instead of require(). A full exploit would require a very strange
23210 web server configuration.
23211 * Localisation updates.
23213 === Configuration changes in 1.15 ===
23215 * Added $wgNewPasswordExpiry, to specify an expiry time (in seconds) to
23216 temporary passwords
23217 * Added $wgUseTwoButtonsSearchForm to choose the Search form behavior/look
23218 * Added $wgNoFollowDomainExceptions to allow exempting particular domain names
23219 from rel="nofollow" on external links
23220 * (bug 12970) Brought back $wgUseImageResize.
23221 * Added $wgRedirectOnLogin to allow specifying a specific page to redirect users
23222 to upon logging in (ex: "Main Page")
23223 * Add $wgExportFromNamespaces for enabling/disabling the "export all from
23224 namespace" option (disabled by default)
23226 === New features in 1.15 ===
23228 * (bug 2242) Add an expiry time to temporary passwords
23229 * (bug 9947) Add PROTECTIONLEVEL parser function to return the protection level
23230 for the current page for a given action
23231 * (bug 17002) Add &minor= and &summary= as parameters in the url when editing,
23232 to automatically add a summary or a minor edit.
23233 * (bug 16852) padleft and padright now accept multiletter pad characters
23234 * When using 'UserCreateForm' hook to add new checkboxes into
23235 Special:UserLogin/signup, the messages can now contain HTML to allow
23236 hyperlinking to the site's Terms of Service page, for example
23237 * Add new hook 'UserLoadFromDatabase' that is called while loading a user
23239 * (bug 17045) Options on the block form are prefilled with the options of the
23240 existing block when modifying an existing block.
23241 * (bug 17055) "(show/hide)" links to Special:RevisionDelete now use a CSS class
23242 rather than hardcoded HTML tags
23243 * Added new hook 'WantedPages::getSQL' into SpecialWantedpages.php to allow
23244 extensions to alter the SQL query which is used to get the list of wanted
23246 * (bugs 16957/16969) Add show/hide to preferences for RC patrol options on
23248 * (bug 11443) Auto-noindex user/user talk pages for blocked user
23249 * (bug 11644) Add $wgMaxRedirects variable to control how many redirects are
23250 recursed through until the "destination" page is reached.
23251 * Add $wgInvalidRedirectTargets variable to prevent redirects to certain
23253 * Use HTML5 rel attributes for some links, where appropriate
23254 * Added optional alternative Search form look - Go button & Advanced search
23255 link instead of Go button & Search button
23256 * (bug 2314) Add links to user custom CSS and JS to Special:Preferences
23257 * More helpful error message on raw page access if PHP_SELF isn't set
23258 * (bug 13040) Gender switch in user preferences
23259 * (bug 13040) {{GENDER:}} magic word for interface messages
23260 * (bug 3301) Optionally sort user list according to account creation time
23261 * Remote description pages for foreign file repos are now fetched in the
23263 * (bug 17180) If $wgUseFileCache is enabled, $wgShowIPinHeader is automatically
23265 * (bug 16604) Mark non-patrolled edits in feeds with "!"
23266 * (bug 16604) Show title/rev in IRC for patrol log
23267 * (bug 16854) Whether a page is being parsed as a preview or section preview
23268 can now be determined and set with ParserOptions.
23269 * Wrap message 'confirmemail_pending' into a div with CSS classes "error" and
23270 "mw-confirmemail-pending"
23271 * (bug 8249) The magic words for namespaces and pagenames can now be used as
23272 parser functions to return the desired namespace or normalized title/title
23273 part for a given title.
23274 * (bug 17110) Styled #mw-data-after-content in cologneblue.css to match the
23276 * (bug 7556) Time zone names in signatures lack i18n
23277 * (bug 3311) Automatic category redirects
23278 * (bug 17236) Suppress 'watch user page link' for IP range blocks
23279 * Wrap message 'searchresulttext' (Special:Search) into a div with
23280 class "mw-searchresult"
23281 * (bug 15283) Interwiki imports can now fetch included templates
23282 * Treat svn:// URLs as external links by default
23283 * New function to convert namespace text for display (only applies on wiki with
23284 LanguageConverter class)
23285 * (bug 17379) Contributions-title is now parsed for magic words.
23286 * Preprocessor output now cached in memcached.
23287 * (bug 14468) Lines in classic RecentChanges and Watchlist have classes
23288 "mw-line-odd" and "mw-line-even" to make styling using css possible.
23289 * (bug 17311) Add a note beside the gender selection menu to tell users that
23290 this information will be public
23291 * Localize time zone regions in Special:Preferences
23292 * Add NUMBEROFACTIVEUSERS magic word, which is like NUMBEROFUSERS, but uses
23293 the active users data from site_stats.
23294 * Add a <link rel="canonical"> tag on redirected page views
23295 * Replace hardcoded '...' as indication of a truncation with the
23297 * Wrap warning message 'editinginterface' into a div with class
23298 'mw-editinginterface'
23299 * (bug 17497) Oasis opendocument added to mime.types
23300 * Remove the link to Special:FileDuplicateSearch from the "file history" section
23301 of image description pages as the list of duplicated files is shown in the
23302 next section anyway.
23303 * Added $wgRateLimitsExcludedIPs, to allow specific IPs to be whitelisted from
23305 * (bug 14981) Shared repositories can now have display names, located at
23306 MediaWiki:Shared-repo-name-REPONAME, where REPONAME is the name in
23307 $wgForeignFileRepos
23308 * Special:ListUsers: Sort list of usergroups by alphabet
23309 * (bug 16762) Special:Movepage now shows a list of subpages when possible
23310 * (bug 17585) Hide legend on Special:Specialpages from non-privileged users
23311 * Added $wgUseTagFilter to control enabling of filter-by-change-tag
23312 * (bug 17291) MediaWiki:Nocontribs now has an optional $1 parameter for the
23314 * Wrap special page summary message '$specialPageName-summary' into a div
23315 with class 'mw-specialpage-summary'
23316 * $wgSummarySpamRegex added to handle edit summary spam. This is used *instead*
23317 of $wgSpamRegex for edit summary checks. Text checks still use $wgSpamRegex.
23318 * New function to convert content text to specified language (only applies on
23319 wiki with LanguageConverter class)
23320 * (bug 17844) Redirect users to a specific page when they log in, see
23322 * Added a link to Special:UserRights on Special:Contributions for privileged
23324 * (bug 10336) Added new magic word {{REVISIONUSER}}, which displays the editor
23325 of the displayed revision
23326 * LinkerMakeExternalLink now has an $attribs parameter for link attributes and
23327 a $linkType parameter for the type of external link being made
23328 * (bug 17785) Dynamic dates surrounded with a <span> tag, fixing sortable tables
23329 with dynamic dates.
23330 * (bug 4582) Provide preference-based autoformatting of unlinked dates with the
23331 dateformat parser function.
23332 * (bug 17886) Special:Export now allows you to export a whole namespace (limited
23334 * (bug 17714) Limited TIFF upload support now built in if 'tif' extension is
23335 enabled. Image width and height are now recognized, and when using
23336 ImageMagick, optional flattening to PNG or JPEG for inline display can be
23337 enabled by setting $wgTiffThumbnailType
23338 * Renamed two input IDs on Special:Log from 'page' and 'user' to 'mw-log-page'
23339 and 'mw-log-user', respectively
23340 * Added $wgInvalidUsernameCharacters to disallow certain characters in
23341 usernames during registration (such as "@")
23342 * Added $wgUserrightsInterwikiDelimiter to allow changing the delimiter
23343 used in Special:UserRights to denote the user should be searched for
23344 on a different database
23345 * Add a class if 'missingsummary' is triggered to allow styling of the summary
23347 * Title attributes are now always blank on framed and thumbnailed images, and
23348 default to blank on inline images instead of defaulting to the image's
23349 filename. Additionally, the alt attribute now defaults to the filename on
23350 framed and thumbnailed images if no caption or alt attribute is specified.
23352 === Bug fixes in 1.15 ===
23353 * (bug 16968) Special:Upload no longer throws useless warnings.
23354 * (bug 17000) Special:RevisionDelete now checks if the database is locked
23355 before trying to delete the edit.
23356 * (bug 16852) padleft and padright now handle multibyte characters correctly
23357 * (bug 17010) maintenance/namespaceDupes.php now add the suffix recursively if
23358 the destination page exists
23359 * (bug 17035) Special:Upload now fails gracefully if PHP's file_uploads has
23361 * Fixing the caching issue by using -{T|xxx}- syntax (only applies on wiki with
23362 LanguageConverter class)
23363 * Improving the efficiency by using -{A|xxx}- syntax (only applies on wiki with
23364 LanguageConverter class)
23365 * (bug 17054) Added more descriptive errors in Special:RevisionDelete
23366 * (bug 11527) Diff on page with one revision shows "Next" link to same diff
23367 * (bug 8065) Fix summary forcing for new pages
23368 * (bug 10569) redirects to Special:Mypage and Special:Mytalk are no longer
23369 allowed by default. Change $wgInvalidRedirectTargets to re-enable.
23370 * (bug 3043) Feed links of given page are now preceded by standard feed icon
23371 * (bug 17150) escapeLike now escapes literal \ properly
23372 * Inconsistent use of sysop, admin, administrator in system messages changed
23374 * (bug 14423) Check block flag validity for block logging
23375 * DB transaction and slave-lag avoidance tweaks for Email Notifications
23376 * (bug 17104) Removed [Mark as patrolled] link for already patrolled revisions
23377 * (bug 17106) Added 'redirect=no' and 'mw-redirect' class to redirects at
23378 "user contributions"
23379 * Rollback links on new pages removed from "user contributions"
23380 * (bug 15811) Re-upload form tweaks: license fields removed, destination locked,
23381 comment label uses better message
23382 * Whole HTML validation ($wgValidateAllHtml) now works with external tidy
23383 * Parser tests no longer fail when $wgExternalLinkTarget is set in
23385 * (bug 15391) catch DBQueryErrors on external storage insertion. This avoids
23386 error messages on save were the edit in fact is saved.
23387 * (bug 17184) Remove duplicate "z" accesskey in MonoBook
23388 * Parser tests no longer fail when $wgAlwaysUseTidy is set in LocalSettings.php
23389 * Removed redundant dupe warnings on reupload for the same title. Dupe warnings
23390 for identical files at different titles are still given.
23391 * Add 'change tagging' facility, where changes can be tagged internally with
23392 certain designations, which are displayed on various summaries of changes,
23393 and the entries can be styled with CSS.
23394 * (bug 17207) Fix regression breaking category page display on PHP 5.1
23395 * Categoryfinder utility class no longer fails on invalid input or gives wrong
23396 results for category names that include pseudo-namespaces
23397 * (bug 17252) Galician numbering format
23398 * (bug 17146) Fix for UTF-8 and short word search for some possible MySQL
23400 * (bug 7480) Internationalize database error message
23401 * (bug 16555) Number of links to mediawiki.org scaled back on post-installation
23402 * (bug 14938) Removing a section no longer leaves excess whitespace
23403 * (bug 17304) Fixed fatal error when thumbnails couldn't be generated for file
23405 * (bug 17283) Remove double URL escaping in show/hide links for log entries
23406 and RevisionDeleteForm::__construct
23407 * (bug 17105) Numeric table sorting broken
23408 * (bug 17231) Transcluding special pages on wikis using language conversion no
23409 longer affects the page title
23410 * (bug 6702) Default system messages updated/improved
23411 * (bug 17190) User ID on preference page no longer has delimeters
23412 * (bug 17341) "Powered by MediaWiki" should be on the left on RTL wikis
23413 * (bug 17404) "userrights-interwiki" right was missing in User::$mCoreRights
23414 * (bug 7509) Separation strings should be configurable
23415 * (bug 17420) Send the correct content type from action=raw when the HTML file
23417 * (bug 12746) Do not allow new password e-mails when wiki is in read-only mode
23418 * (bug 17478) Fixed a PHP Strict standards error in
23419 maintenance/cleanupWatchlist.php
23420 * (bug 17488) RSS/Atom links in left toolbar are now localized in classic skin
23421 * (bug 17472) use print <<<EOF in maintenance/importTextFile.php
23422 * Special:PrefixIndex: Move table styling to shared.css, add CSS IDs to tables
23423 use correct message 'allpagesprefix' for input form label, replace _ with ' '
23425 * (bug 17506) Exceptions within exceptions now respect $wgShowExceptionDetails
23426 * Fixed excessive job queue utilisation
23427 * File dupe messages for remote repos are now shown only once.
23428 * (bug 14980) Messages 'shareduploadwiki' and 'shareduploadwiki-desc' are now
23429 used as a parameter in 'sharedupload' for easier styling and customization.
23430 * (bug 17482) Formatting error in Special:Preferences#Misc (Opera)
23431 * (bug 17556) <link> parameters in Special:Contributions feeds (RSS and Atom)
23432 now point to the actual contributors' feed.
23433 * ForeignApiRepos now fetch MIME types, rather than trying to figure it locally
23434 * Special:Import: Do not show input field for import depth if
23435 $wgExportMaxLinkDepth == 0
23436 * (bug 17570) $wgMaxRedirects is now correctly respected when following
23437 redirects (was previously one more than $wgMaxRedirects)
23438 * (bug 16335) __NONEWSECTIONLINK__ magic word to suppress new section link.
23439 * (bug 17581) Wrong index name in PostgreSQL's updater: was rc_timestamp_nobot,
23440 changed to rc_timestamp_bot
23441 * (bug 17437) Fixed incorrect link to web-based installer
23442 * (bug 17538) Use shorter URLs in <link> elements
23443 * (bug 13778) Hidden input added to the search form so that using the Enter key
23444 on IE will do a fulltext search like clicking the button does
23445 * (bug 1061) CSS-added icons next to links display through the text and makes
23446 it unreadable in RTL
23447 * Special:Wantedtemplates now works on PostgreSQL
23448 * (bug 14414) maintenance/updateSpecialPages.php no longer throws error with
23450 * (bug 17546) Correct Tongan language native name is "lea faka-Tonga"
23451 * (bug 17621) Special:WantedFiles has no link to Special:Whatlinkshere
23452 * (bug 17460) Client ecoding is now correctly set for PostgreSQL
23453 * (bug 17648) Prevent floats from intruding into edit area in previews if no
23455 * (bug 17692) Added (list of members) link to 'user' in Special:Listgrouprights
23456 * (bug 17707) Show file destination as plain text if &wpForReUpload=1
23457 * (bug 10172) Moved setting of "changed since last visit" flags out of the job
23459 * (bug 17761) "show/hide" link in page history in now works for the first
23460 displayed revision if it's not the current one
23461 * (bug 17722) Fix regression where users are unable to change temporary
23463 * (bug 17799) Special:Random no longer throws a database error when a non-
23464 namespace is given, silently falls back to NS_MAIN
23465 * (bug 17751) The message for bad titles in WantedPages is now localized
23466 * (bug 17860) Moving a page in the "MediaWiki" namespace using SuppressRedirect
23467 no longer corrupts the message cache
23468 * (bug 17900) Fixed User Groups interface log display after saving groups.
23469 * (bug 17897) Fixed string offset error in <pre> tags
23470 * (bug 17778) MediaWiki:Catseparator can now have HTML entities
23471 * (bug 17676) Error on Special:ListFiles when using Postgres
23472 * Special:Export doesn't use raw SQL queries anymore
23473 * (bug 14771) Thumbnail links to individual DjVu pages no longer have
23474 two "page" parameters
23475 * (bug 17972) Special:FileDuplicateSearch form now works correctly on wikis that
23476 don't use PathInfo or short urls
23477 * (bug 17990) trackback.php now has a trackback.php5 alias and works with
23479 * (bug 14990) Parser tests works again with PostgreSQL
23480 * (bug 11487) Special:Protectedpages doesn't list protections with pr_expiry
23482 * (bug 18018) Deleting a file redirect leaves behind a malfunctioning redirect
23483 * (bug 17537) Disable bad zlib.output_compression output on HTTP 304 responses
23484 * (bug 11213) [edit] section links in printable version no longer appear when
23485 you cut-and-paste article text
23486 * (bug 17405) "Did you mean" to mirror Go/Search behavior of original request
23487 * (bug 18116) 'edittools' is now output identically on edit and upload pages
23488 * (bug 17241) The diffonly URI parameter should cascade to "Next edit" and
23489 "Previous edit" diff links
23490 * (bug 16823) Sidebar search form should not use Special:Search view URL as
23492 * (bug 16343) Non-existing, but in use, category pages can be "go" match hits
23493 * Fixed a CSS validation issue which allowed external images to be included
23494 into wikis where that is disallowed by configuration.
23495 * Fixed a data leakage vulnerability for private wikis using img_auth.php or
23496 similar image access authentication schemes. Check user permissions before
23497 streaming out scaled images from thumb.php.
23499 == API changes in 1.15 ==
23500 * (bug 16858) Revamped list=deletedrevs to make listing deleted contributions
23501 and listing all deleted pages possible
23502 * (bug 16844) Added clcategories parameter to prop=categories
23503 * (bug 17025) Add "fileextension" parameter to meta=siteinfo&siprop=
23504 * (bug 17048) Show the 'new' flag in list=usercontribs for the revision that
23505 created the page, even if it's not the top revision
23506 * (bug 17069) Added ucshow=patrolled|!patrolled to list=usercontribs
23507 * action=delete respects $wgDeleteRevisionsLimit and the bigdelete user right
23508 * (bug 15949) Add undo functionality to action=edit
23509 * (bug 16483) Kill filesort in ApiQueryBacklinks caused by missing parentheses.
23510 Building query properly now using makeList()
23511 * (bug 17182) Fix pretty printer so URLs with parentheses in them are
23512 autolinked correctly
23513 * (bug 17224) Added siprop=rightsinfo to meta=siteinfo
23514 * (bug 17239) Added prop=displaytitle to action=parse
23515 * (bug 17317) Added watch parameter to action=protect
23516 * (bug 17007) Added export and exportnowrap parameters to action=query
23517 * (bug 17326) BREAKING CHANGE: Changed output format for iiprop=metadata
23518 * (bug 17355) Added auwitheditsonly parameter to list=allusers
23519 * (bug 17007) Added action=import
23520 * BREAKING CHANGE: Removed rctitles parameter from list=recentchanges because
23521 of performance concerns
23522 * Listing (semi-)deleted revisions and log entries as well in prop=revisions
23524 * (bug 11430) BREAKING CHANGE: Modules may return fewer results than the
23525 limit and still set a query-continue in some cases
23526 * (bug 17357) Added movesubpages parameter to action=move
23527 * (bug 17433) Added bot flag to list=watchlist&wlprop=flags output
23528 * (bug 16740) Added list=protectedtitles
23529 * Added mainmodule and pagesetmodule parameters to action=paraminfo
23530 * (bug 17502) meta=siteinfo&siprop=namespacealiases no longer lists namespace
23531 aliases already listed in siprop=namespaces
23532 * (bug 17529) rvend ignored when rvstartid is specified
23533 * (bug 17626) Added uiprop=email to list=userinfo
23534 * (bug 13209) Added rvdiffto parameter to prop=revisions
23535 * Manual language conversion improve: Now we can include both ";" and ":" in
23537 * (bug 17795) Don't report views count on meta=siteinfo if $wgDisableCounters
23539 * (bug 17774) Don't hide read-restricted modules like action=query from users
23540 without read rights, but throw an error when they try to use them.
23541 * Don't hide write modules when $wgEnableWriteAPI is false, but throw an error
23542 when someone tries to use them
23543 * BREAKING CHANGE: action=purge requires write rights and, for anonymous users,
23545 * (bug 18099) Using appendtext to edit a non-existent page causes an interface
23546 message to be included in the page text
23547 * Fixed the circular template inclusion check, was broken when the loop
23548 involved redirects. Without this, infinite recursion within the parser is
23550 * (bug 18601) generator=backlinks returns invalid continue parameter
23551 * (bug 18597) Internal error with empty generator= parameter
23552 * (bug 18617) Add xml:space="preserve" attribute to relevant tags in XML output
23553 * (bug 17611) Provide a sensible error message on install when the SQLite data
23554 directory is wrong.
23556 === Languages updated in 1.15 ===
23558 MediaWiki supports over 300 languages. Many localisations are updated
23559 regularly. Below only new and removed languages are listed, as well as
23560 changes to languages because of Bugzilla reports.
23562 * Austrian German (de-at) (new)
23563 * Swiss Standard German (de-ch) (new)
23564 * Simplified Gan Chinese (gan-hans) (new)
23565 * Traditional Gan Chinese (gan-hant) (new)
23566 * Literary Chinese (lzh) (new)
23567 * Uyghur (Latin script) (ug-latn) (renamed from 'ug')
23569 * Võro (vro) (renamed from fiu-vro)
23570 * (bug 17151) Add magic word alias for #redirect for Vietnamese
23571 * (bug 17288) Messages improved for default language (English)
23572 * (bug 12937) Update native name for Afar
23573 * (bug 16909) 'histlegend' now reuses messages instead of copying them
23574 * (bug 17832) action=delete returns 'unknownerror' instead of 'permissiondenied'
23575 when the user is blocked
23576 * Traditional/Simplified Gan Chinese conversion support
23578 == MediaWiki 1.14 ==
23580 == MediaWiki 1.14.1 ==
23581 === Changes since 1.14.0 ===
23583 * (bug 17737) Fixed russian URLs for Special:BookSources
23584 * (bug 17713) Using links with only an anchor no longer add an dummy entry in
23585 the pagelinks table
23586 * (bug 17897) Fixed string offset error in <pre> tags
23587 * (bug 17832) Fixed action=delete returning 'unknownerror' instead of
23588 'permissiondenied' when the user is blocked
23589 * Fixed performance regression when accessing deleted (archived) files
23590 * (bug 19693) Fixed cross-site scripting vulnerability in Special:Block
23592 == MediaWiki 1.14.0 ==
23593 === Changes since 1.14.0rc1 ===
23595 * Fixed the performance of the backlinks API module
23596 * (bug 17420) Send the correct content type from action=raw when the HTML file
23598 * (bug 17437) Fixed incorrect link to web-based installer
23599 * (bug 17527) Fixed missing MySQL-specific options in installer
23601 === Configuration changes in 1.14 ===
23603 * $wgExemptFromUserRobotsControl is an array of namespaces to be exempt from
23604 the effect of the new __INDEX__/__NOINDEX__ magic words. (Default: null, ex-
23605 empt all content namespaces.)
23606 * $wgForwardSearchUrl has been removed entirely. Documented setting since 1.4
23607 has been $wgSearchForwardUrl.
23608 * (bug 15080) $wgOverrideSiteFeed has been added. Setting either
23609 $wgSiteFeed['rss'] or 'atom' to a URL will override the default Recent
23610 Changes feed that appears on all pages.
23611 * $wgSQLiteDataDirMode has been introduced as the default directory mode for
23612 SQLite data directories on creation. Note that this setting is separate from
23613 $wgDirectoryMode, which applies to all normal dirs created by MediaWiki.
23614 * $wgGroupsAddToSelf and $wgGroupsRemoveFromSelf now work more like
23615 $wgAddGroups and $wgRemoveGroups, where the user must belong to a specified
23616 group in order to add or remove those groups from themselves.
23617 Backwards compatibility is maintained.
23618 * $wgRestrictDisplayTitle controls if the use of the {{DISPLAYTITLE}} magic
23619 word is restricted to titles equivalent to the actual page title. This
23620 is true by default, but can be set to false to allow any title.
23621 * $wgSpamRegex may now be an array of multiple regular expressions.
23622 * $wgAjaxSearch has been removed; use $wgEnableMWSuggest instead.
23623 * Editing the MediaWiki namespace is now unconditionally restricted to people
23624 with the editinterface right, configuring this in $wgNamespaceProtection
23626 * $wgAllowExternalImagesFrom may now be an array of multiple strings.
23627 * Introduced $wgEnableImageWhitelist to toggle the on-wiki external image
23628 whitelist on or off.
23629 * Added $wgRenderHashAppend to append some string to the parser cache and the
23630 sitenotice cache keys.
23631 * $wgRCChangedSizeThreshold is now a positive integer by default,
23632 * (bug 16006) $wgEnableWriteAPI is now true by default. Authorized can perform
23633 write actions using the API.
23634 * Added $wgRC2UDPInterwikiPrefix which adds an interwiki prefix
23635 ($wgLocalInterwiki) onto the page names in the UDP feed.
23636 * Added $wgAllowUserSkin to let the wiki's owner disable user selectable skins
23637 on the wiki. If it's set to false, then the skin used will *always* be
23639 * Added $wgEnotifUseRealName, which allows UserMailer to send out e-mails based
23640 on the user's real name if one is set. Defaults to false (use the username)
23641 * Removed the 'apiThumbCacheDir' option from $wgForeignFileRepos (only used in
23643 * (bug 44) Image namespace and accompanying talk namespace renamed to File.
23644 For backward compatibility purposes, Image still works. External tools may
23645 need to be updated.
23646 * The constants NS_FILE and NS_FILE_TALK can now be used instead of NS_IMAGE and
23647 NS_IMAGE_TALK. The old constants are retained as aliases for compatibility,
23648 and should still be used in code meant to be compatible with v1.13 or older.
23649 * MediaWiki can be forced to use private IPs forwarded by a proxy server by
23650 using $wgUsePrivateIPs.
23651 * The 'BeforeWatchlist' hook has been removed due to internal changes in
23652 Special:Watchlist. 'SpecialWatchlistQuery' should now be used by extensions
23653 to customize the watchlist database query.
23655 === Migrated extensions ===
23656 The following extensions are migrated into MediaWiki 1.14:
23658 * Special:DeletedContributions to show deleted user contributions (was
23659 extension DeletedContributions)
23660 * Special:Log/newusers recording new users (was extension Newuserlog)
23661 * Special:LinkSearch to search for external links (was extension LinkSearch)
23664 * UniversalEditButton
23666 === New features in 1.14 ===
23668 * New URL syntaxes for Special:ListUsers - 'Special:ListUsers/USER' and
23669 'Special:ListUsers/GROUP/USER', in addition to the older syntax
23670 'Special:ListUsers/GROUP' where GROUP is a valid group name.
23671 * Configurable per-namespace and per-page notices for the edit form,
23672 respectively MediaWiki:Editnotice-# where # is the namespace number, and
23673 MediaWiki:Editnotice-#-PAGENAME where # is the page's namespace number and
23674 PAGENAME is the page name minus the namespace prefix.
23675 * (bug 8068) New __INDEX__ and __NOINDEX__ magic words allow user control of
23676 search engine indexing on a per-article basis.
23677 * Handheld stylesheet options
23678 * Added 'DoEditSectionLink' hook as a cleaner unified version of the old
23679 'EditSectionLink' and 'EditSectionLinkForOther' hooks. Note that the
23680 'EditSectionLinkForOther' hook has been removed, but 'EditSectionLink' is
23681 run in all cases instead, so extensions using the old hooks should still work
23682 if they ran roughly the same code for both hooks (as is almost certain).
23683 * Signature (~~~~) "cleaning", i.e. template removal, can be disabled with
23684 $wgCleanSignatures=false
23685 * Extensions can use the SkinBuildSidebar hook to modify the content of the
23686 sidebar and add custom portlets to it
23687 * Added 'MakeGlobalVariablesScript' hook for extensions to be able to add vari-
23688 ables into the output of Skin::makeVariablesScript
23689 * (bug 13846) Added $wgAddGroups and $wgRemoveGroups display on
23690 Special:ListGroupRights
23691 * (bug 14377) Add a date selector to history pages
23692 * (bug 15007) New 'pagetitle-view-mainpage' message allows the HTML <title> of
23693 the main page to be customized
23694 * Added $wgDisableTitleConversion to disabling the conversion for all pages on
23696 * Added 'noconvertlink' toggle that can be set per user preferences, also
23697 added 'convertlink=no|yes' on GET requests whether have the link titles
23698 being converted or not
23699 * (bug 14921) Special:Contributions/: add user name to <title>
23700 Patch by Emufarmers
23701 * Unescape more "safe" characters when producing URLs, for added prettiness
23702 * Introduced a new hook 'SkinAfterContent' that allows extensions to add text
23703 after the page content and article metadata. Updated all skins and skin
23704 templates to work with that hook.
23705 * (bug 14929) removeUnusedAccounts.php now supports 'ignore-touched' and
23706 'ignore-groups'. Patch by Louperivois
23707 * (bug 15127) Work around minor display glitch in Opera.
23708 * By default, reject file uploads that look like ZIP files, to avoid the
23709 so-called GIFAR vulnerability.
23710 * (bug 15141) Give ability to only list protected pages with the cascading
23711 option enabled on Special:ProtectedPages
23712 * (bug 15157) Special:Watchlist has the same options as Special:Watchlist:
23713 Show/Hide logged in users, Show/Hide anonymous, Invert namespace selection
23714 * Added hook 'UserrightsChangeableGroups' to allow modification of what
23715 groups may be added or removed via the Special:UserRights interface.
23716 * HTML entities like now work (are not escaped) in edit summaries.
23717 * (bug 13815) In the comment for page moves, use the colon-separator message
23718 instead of a hardcoded colon.
23719 * Allow <gallery> to accept image names without an Image: prefix
23720 * Add tooltips to rollback and undo links
23721 * BMP images are now displayed as PNG
23722 * (bug 13471) Added NUMBERINGROUP magic word
23723 * (bug 11884) Now support Flash EXIF attribute
23724 * Show thumbnails in the file history list, patch by User:Agbad
23725 * Added support of piped wikilinks using double-width brackets
23726 * Added an on-wiki external image whitelist. Items in this whitelist are
23727 treated as regular expression fragments to match for when possibly
23728 displaying an external image inline.
23729 * (bugs 15405, 15436) Sort more currency types correctly in sortable tables
23730 * (bug 15422) Sort more different types of numbers in sortable tables
23731 * (bug 2889) MediaWiki:Print.css applies to the printable version
23732 * Category counts (e.g. from {{PAGESINCATEGORY:}}) should be more accurate for
23734 * After logging in, automatically redirect to wherever you logged in from
23735 * (bug 5619) Break messages used in Special:Statistics down further
23736 * (bug 11029) Add link to Special:Listusers?group=sysop etc at
23738 * (bug 15514) Setting $wgRightsText without $wgRightsUrl now produces a
23739 plaintext copyright notice. Patch by Juliano F. Ravasi.
23740 * (bug 15551) Deletion log excerpt is now shown whenever a user vists a
23741 deleted page, even if they are unable to edit it.
23742 * Added Wantedfiles special pages, allowing users to find image links with no
23744 * (bug 12650) It is now possible to set different expiration times for
23745 different restriction types on the protection form.
23746 * (bug 8440) Allow preventing blocked users from editing their talk pages
23747 * Improved upload file type detection for OpenDocument formats
23748 * Added the ability to set the target attribute on external links with
23749 $wgExternalLinkTarget
23750 * api.php now sends "Retry-After" and "X-Database-Lag" HTTP headers if the
23751 maxlag check fails, just like index.php does
23752 * Added "link" parameter to image links, to allow images to link to an
23753 arbitrary title or URL. This should replace inaccessible and incomplete
23754 solutions such as CSS-based overlays and ImageMap.
23755 * (bug 368) Don't use caption for alt attribute; allow manual specification
23756 using new "alt=" parameter for images
23757 * (bug 44) The {{ns:}} core parser function now also accepts localized
23758 namespace names and aliases; also, its output now uses spaces instead of
23759 underscores to match the behavior of the {{NAMESPACE}} magic word
23760 * Added the ability to display user edit counts in Special:ListUsers. Off by
23761 default, enabled with $wgEdititis = true (named after the medical condition
23762 marked by unhealthy obsession with edit counts).
23763 * Added a file cache to the parser to improve page rendering time on pages with
23764 several uses of the same image.
23765 * (bug 1250) Users can still use "show preview" and "show changes" even if the
23766 wiki is set to read-only mode.
23767 * Added a call to the 'UnwatchArticleComplete' hook to the watchlist editor.
23768 This should make it so that ALL user-accessible methods of removing a page
23769 from a watchlist lead to this hook being called (it was previously only
23770 called from within Article.php
23771 * Maximum execution time for shell processes on linux is now configured with
23772 $wgMaxShellTime (180 seconds by default)
23773 * (bug 1306) 'Email user' link no longer shown on user page when emailing
23774 is not available due to lack of confirmed address or disabled preference
23775 * Special:Wanted templates special page added to display missing templates
23776 linked from articles
23777 * Make search matches bold only, not red as well
23778 * (bug 10080) Blocks can be modified without unblocking first
23779 * (bug 15820) Special:BlockIP shows a notice if the user being blocked is
23780 already directly blocked
23781 * (bug 13710) Allow to force "watch this" checkbox via URL using parameter
23783 * (bug 15125) Add Public Domain to default options when installing. Patch by
23785 * Set a special temporary directory for ImageMagick with $wgImageMagickTempDir
23786 * (bug 16113) Show/hide for redirects in Special:NewPages
23787 * (bug 15903) Upload link was added to Nostalgia skin
23788 * (bug 15761) Add user toggle to omit diff after rollback
23789 * Added the BitmapHandler_ClientOnly media handler, which allows server-side
23790 image scaling to be completely disabled for specific media types, via the
23791 $wgMediaHandlers configuration variable.
23792 * New 'AbortDiffCache' hook can be used to cancel the caching of a diff
23793 * (bug 15835) Added Content-Style-Type meta tag
23794 * (bug 11027) Add parameter to MW:Randompage-nopages so that user can see the
23796 * Add id="mw-user-domain-section" to <tr> tag in Userlogin.php template so that
23797 admins with a single domain can hide the domain section using CSS
23798 * Dropped old Paser_OldPP class. Only new parser with preprocessor is used.
23799 * Moved password reset form from Special:Preferences to Special:ResetPass
23800 * Added Special:ChangePassword as a special page alias for Special:ResetPass
23801 * Added complementary function for addHandler() called removeHandler() for
23803 * Improved security of file uploads for IE clients, using a reverse-engineered
23804 algorithm very similar to IE's content detection algorithm.
23805 * Cascading protection no longer requires that both edit and move are restricted
23806 to sysop, just edit=sysop is enough
23807 * (bug 2391) A warning is now shown for invalid ISBN numbers on
23808 Special:Booksources.
23809 * Installer has been updated to reflect the release of the GFDL 1.3. The URL for
23810 1.2 has been updated, and the 1.3 URL has been given. 1.2 is still
23811 Wikipedia-compatible. RightsCode was changed from 'gfdl' to 'gfdl1_2', so we
23812 can now support 1.2 as well as 1.3 (gfdl1_3).
23813 * (bug 16293) PD URL was changed to the CreativeCommons site on PD (which
23814 auto-detects your language) instead of Wikipedia.
23815 * (bug 16635) The "view and edit watchlist" page (Special:Watchlist/edit) now
23816 includes a table of contents
23817 * File objects returned by wfFindFile() are now cached by default
23818 * (bug 7492) Rights can now be assigned to specific IP addresses and ranges by
23819 using $wgAutopromote (new defines: APCOND_ISIP and APCOND_IPINRANGE)
23820 * Add a 'change block' link to Special:IPBlockList and Special:Log
23821 * (bug 16459) Use native getElementsByClassName where possible, for better
23822 performance in modern browsers
23823 * Enable \cancel and \cancelto in texvc (recompile required)
23824 * Added 'UserCryptPassword' and 'UserComparePasswords' hooks to allow extensions
23825 to implement their own password hashing methods.
23826 * (bug 16760) Add CSS-class to action links of Special:Log
23827 * (bug 505) Time zones can now be specified by location in user preferences,
23828 avoiding the need to manually update for DST. Patch by Brad Jorsch.
23829 * (bug 2585) HTTP 404 return code is now given for a page view if the page
23830 does not exist, allowing spiders and link checkers to detect broken links.
23831 * Special:Log: Add 'change protection' link for unprotected pages too
23832 * Special:Log: Add log type specific CSS classes 'mw-logline-$logtype' to
23834 * (bug 16754) Making arbitrary rows of sortable tables sticky:
23835 |- class="unsortable"
23836 * Show subversion too even if a "normal" version number is available
23837 * (bug 16121) Add a note that a page move was without creating a redirect in the
23839 * Image moving is now enabled for sysops by default
23840 * Make "Did you mean" search feature more noticeable
23841 * (bug 16720) Transcluded Special:NewPages processes "/username="
23843 === Bug fixes in 1.14 ===
23845 * (bug 14907) DatabasePostgres::fieldType now defined.
23846 * (bug 14659) Passing the default limit param to Special:Recentchanges no more
23847 falls back to the user option
23848 * (bug 14954) Fix regression in Modern and Simple skins
23849 * Recursion loop check added to Categoryfinder class
23850 * Fixed few performance troubles of large job queue processing
23851 * Not setting various parameters in Foreign Repos now fails more gracefully
23852 * (bug 2333) Redirects are properly rendered when previewing an edit.
23853 * (bug 14972) Use localized alias of Special:Search on all search forms
23854 * (bug 11035) Special:Search should have descriptive <title>
23855 * Special pages are now not subject to special handling for "self-links"
23856 * (bug 15053) Syntactically incorrect redirects with another link in them
23857 no longer redirect to the second link
23858 * (bug 15049) Fix for CheckUser extension's log search: usernames containing
23859 a "-" were incorrectly turned into bogus IP range searches.
23860 Patch by Max Semenik.
23861 * (bug 15055) Talk page notifications no longer attempt to send mail when
23862 user's e-mail address is invalid or unconfirmed
23863 * (bug 12370) Add throttle on password attempts. Defaults to max 5 attempts in
23865 * (bug 15016) 'Templates used on this page' list in view source should be
23866 wrapped in a div with class "templatesUsed"
23867 * (bug 14868) Setting $wgFeedDiffCutoff to 0 now disables generation of the
23868 diff entirely, not just the display of it.
23869 * (bug 6387) Introduced new setting $wgCategoryPrefixedDefaultSortkey which
23870 allows having the unprefixed page title as the default category sortkey
23871 * (bug 15079) Add class="ns-talk" / "ns-subject" to <body>. Also added
23872 ns-special to special pages.
23873 * (bug 15052) Skins should add their name as a class in <body>
23874 * (bug 14165, bug 14294) Wikimedia specific configuration in convertGrammar()
23875 for several languages was removed. The settings have been put in extension
23876 WikimediaMessages. Patch for Czech by Danny B.
23877 * (bug 15101) Displaying only bots edits in Special:Recentchanges now works
23879 * (bug 13770) Fixed incorrect detection of PHP's DOM module
23880 * (bug 14790) Export of category pages when using Category: prefix now actually
23882 * Avoid recursive crazy expansions in section edit comments for pages which
23883 contain '/*' in the title
23884 * Fix excessive memory usage when parsing pages with lots of links
23885 * $wgSpamRegex now matches the edit summary and page move descriptions in
23886 addition to body text.
23887 * Navigation links to images available from a shared repository (like Commons)
23888 from their local talk pages no longer appear as redlinks
23889 * Action=purge on ForeignApiFiles now works (purges their thumbnails and
23890 description pages).
23891 * (bug 15303) Title conversion for templates wasn't working in some cases.
23892 * (bug 15264) Underscores in Special:Search/Foo_bar parameters were taken
23893 literally; now converting them to spaces per expectation.
23894 * (bug 15342) "Invert" checkbox now works correctly when selecting main
23895 namespace in Special:Watchlist
23896 * (bug 15172) 'Go' button of Special:Recentchanges now on the same line as the
23897 last input element (like Special:Watchlist too)
23898 * (bug 15351) Fix fatal error for invalid section fragments in autocomments
23899 * Fixed intermittent deadlock errors involving objectcache table queries.
23900 Use a separate database connection for the objectcache table to avoid
23901 long-lasting locks on that table.
23902 * Respect file restrictions in the file history list
23903 * (bug 15399) Odd/even classes on sortable tables' rows could be slow for large
23904 tables, and have been disabled by default.
23905 * (bug 15482) Special:Recentchangeslinked has no longer two submit buttons
23906 * (bug 15292) New message notification for unregistred users now works again
23907 * (bug 14398) mwsuggest.js: Let width of container be configurable
23908 * (bug 15543) Only include user touched timestamp to generated CSS
23909 * (bug 15497) Removed encoding attribute from <?xml ?> tag
23910 * (bug 12284) Special:Preferences now sets a returnto parameter on the link to
23911 Special:UserLogin. Patch by Marooned.
23912 * Fixed the HTTP accept language string detection length in
23913 LanguageConverter.php, instead of the fixed length language codes.
23914 * Special:RecentChangesLinked no longer shows outgoing links for nonexistent
23915 pages even if there are broken link records with source article id 0 in the
23917 * (bug 15598) Special:Newpages default limit uses user preference for
23918 recentchanges limit instead of hardcoded 50.
23919 * (bug 15617) $wgFeedClassesOutputPage::getHeadLinks() respects $wgFeedClasses,
23920 instead of hardcoding rss and atom. Patch by Juliano F. Ravasi.
23921 * (bug 14638) Special:Blockip now provides a link to the block log if the user
23922 has been blocked more than 10 times. Patch by Matt Johnston.
23923 * (bug 12678) Skins don't show Upload link if the user isn't allowed to upload.
23924 * Fixed incorrect usage of DB_LAST in Special:Export. Deprecated DB_LAST.
23925 * (bug 15642) Blocked sysops can no longer block other users
23926 * Http::request() now respects $wgHTTPtimeout when not using cURL
23927 * (bug 15158) Userinvalidcssjstitle not shown on preview
23928 * (bug 15196) Free external links should be numbered in a localised manner
23929 * (bug 15388) Title of Special:PrefixIndex
23930 * Links with no title but a curid parameter now use the curid to pick a page
23931 * (bug 10323) Special:Undelete should have "inverse selection" button
23932 * (bug 15831) Modern skin RTL support is bugous
23933 * (bug 15869) Nostalgia skin does not show page title in printable mode
23934 * (bug 15795) Special:Userrights is now listed on Special:SpecialPages when the
23935 user can only change his rights
23936 * (bug 15846) Categories "leak" from older revisions in certain circumstances
23937 * (bug 15928) Special pages dropdown should be inline in non-MonoBook skins
23938 * (bug 14178) Some uses of UserLoadFromSession hook cause segfault
23939 * (bug 15925) Postitive bytes added on recentchanges and watchlists are now
23940 bolded if above the threshold, previously it only worked for negatives
23941 * Specify apple-touch-icon before favicon in HTML head section to make the
23942 Konqueror browser correctly use the latter
23943 * (bug 15717) Set $separatorTransformTable for language 'eu'
23944 * (bug 15605) Enabled $datePreferences for language 'hr'. Added standard date
23946 * (bug 13701) {{NUMBEROFVIEWS}} magic word to show number of total views.
23947 * (bug 5101) Image from Commons doesn't show up when searched in Wikipedia
23949 * (bug 14609) User's namespaces to be searched default not updated after adding
23951 * Purge form uses valid XHTML
23952 * (bug 12764) Special:LonelyPages shows transcluded pages
23953 * (bug 16073) Enhanced RecentChanges uses onclick handler with better fallback
23954 if JavaScript is disabled
23955 * (bug 4253) Recentchanges IRC messages no longer include title in diff URLs
23956 * Allow '0' to be an accesskey.
23957 * (bug 8063) Use language-dependent sorting in client-side sortable tables
23958 * (bug 16160) Suggestions box should be resized from left for RTL wikis
23959 * (bug 11533) Fixed insane slowdown when in read-only mode for long periods
23960 of time with CACHE_NONE (default objectcache table configuration).
23961 * Trying to set two different default category sort keys for one page now
23963 * (bug 16143) Fix redirect loop on special pages starting with lower case
23965 * (bug 15737) Fix notices while expanding using PPCustomFrame
23966 * (bug 15544) Non-index entry points cause the "Wiki not set up" message to
23968 * (bug 5101) Image from Commons doesn't show up when searched in Wikipedia
23970 * (bug 4362) [[MediaWiki:History copyright]] no more used with most recent
23971 revision when passing oldid parameter in the url
23972 * (bug 16265) When caching thumbs with the ForeignApiRepo, we now use the same
23973 filename as the remote site.
23974 * (bug 8345) Don't autosummarize where a redirect was left unchanged
23975 * Made thumb caching in ForeignApiFile objects integrated with normal thumb
23976 path naming (/thumbs/hash/file), retired 'apiThumbCacheDir' as a result.
23977 * (bug 5530) Consistency between character encoding in {{PAGENAMEE}},
23978 {{SUBPAGENAMEE}} and {{FULLPAGENAMEE}}
23979 * Safer handling of non-MediaWiki exceptions -- now obeys our settings for
23980 formatting and path exposure.
23981 * Less verbose errors from profileinfo.php when not configured
23982 * Blacklist redirects via Special:Filepath, hard to use.
23983 * Improved input validation on Special:Import form
23984 * Add a .htaccess to deleted images directory for additional protection
23985 against exposure of deleted files with known SHA-1 hashes on default
23987 * Improved scripting safety heuristics for IE 5/6 content-type detection.
23988 * Improved scripting safety heuristics on SVG uploads.
23989 * (bug 11728) Unify layout of enhanced watchlist/recent changes
23990 * (bug 8702) Properly update stats when running nukePage maintenance script
23991 * (bug 7726) Searches for words less than 4 characters now work without
23992 requiring customization of MySQL server settings
23993 * Honour unchecked "Leave a redirect behind" for moved subpages
23994 * (bug 16440) Broken 0-byte math renderings are now deleted and re-rendered
23995 when page is re-parsed.
23996 * (bug 6100) Unicode BiDi embedding/override characters (U+202A - U+202E) are
23997 now automatically removed from titles; these characters can accidentally end
23998 up in copy-and-pasted titles, and, by overriding normal bidirectional text
23999 handling, can lead to annoying behavior such as text rendering backwards
24000 * Fixed minor bug where the memcached value for how many accounts an IP had
24001 created that day would be increased even if $wgAccountCreationThrottle was
24002 hit. This meant if an IP hit the throttle and then the throttle was raised
24003 later that day, the IP still couldn't create another account, because it
24004 had marked them as having created another account, when their last account
24005 creation had actually failed.
24006 * (bug 12647) Allow autogenerated edit summary messages to be blanked with '-'
24007 * (bug 16026) 'Revision-info' and 'revision-info-current' both accept wiki
24009 * (bug 16529) Fix for search suggestions with some third-party JS libraries
24010 * (bug 13342) importScript() generates more consistent URI encoding
24011 * (bug 16577) When a blocked user tries to rollback a page, the block message
24012 is now only displayed once
24013 * (bug 14268) SVG image sizes now extracted with proper XML parser
24014 * (bug 14365) RepoGroup::findFiles() no longer crashes if passed an invalid
24016 * (bug 4253, bug 16586) Revision ID is now given instead of title in URLs for
24017 new pages in the recent changes IRC feed
24018 * Ugly tooltips in Special:Statistics were phased out in favor of more direct
24019 information. Went ahead and rewrote SpecialStatistics to subclass SpecialPage
24020 * (bug 5506) Links to files on foreign repositories are now shown consistently
24021 as bluelinks e.g. in logs and edit summaries
24022 * (bug 16623) Add missing </p> tag in Special:LockDB
24023 * (bug 15849) Special:Movepage now throws a more specific error when trying to
24024 move a title to an interwiki target
24025 * (bug 16638) 8-bit URL fallback encoding now set on additional languages using
24026 Arabic script (Persian, Urdu, Sindhi, Punjabi)
24027 * (bug 16656) cleanupTitles and friends should now work in load-balanced
24028 DB environments when $wgDBserver isn't set.
24029 * (bug 3691) Aspect ratio from viewBox attribute is now preserved for SVG
24030 images which do not specify width and height attributes.
24031 * (bug 15027) Internet domain names and IP addresses can now be indexed and
24032 searched sensibly with the default MySQL search backend.
24033 * (bug 11733) Fixed parameter validation in importTextFile.php
24034 * (bug 16712) Special:NewFiles updated to use "newer"/"older" paging messages
24035 for clarity over "previous/next"
24036 * (bug 16612) Fixed "noprint" class for Modern skin print style
24037 * Section anchors now have an "id" attribute as well as a "name" attribute,
24038 even when Tidy is not used
24039 * (bug 16026) revision-info, revision-info-current, cannotdelete,
24040 redirectedfrom, historywarning and difference messages now use Wiki text
24041 rather than raw HTML markup
24042 * (bug 13835) Fix rendering of {{filepath:Wiki.png|nowiki}}
24043 * (bug 16772) Special:Upload now correctly rejects files with spaces in the
24044 file extension (e.g. Foo. jpg).
24045 * Image moving over an existing file no longer throws a database error
24046 * (bug 16786) Restored "redundant" links recently removed from Classic sidebar
24047 * (bug 16850) $wgActionPaths can have query strings now, previously, this broke
24049 * (bug 16376) Mention in deleteBatch.php and moveBatch.php maintenance scripts
24050 that STDIN can be used for page list
24051 * (bug 16560) Special:Random returns a page from ContentNamespaces, and no
24052 longer from NS_MAIN
24054 === API changes in 1.14 ===
24056 * Registration time of users registered before the DB field was created is now
24057 shown as empty instead of the current time.
24058 * API search now falls back to fulltext search by default when using Lucene
24059 or other engine which doesn't support a separate title search function.
24060 This means you can use API search on Wikipedia without explicitly adding
24061 &srwhat=text to the query.
24062 * Added iiprop=bitdepth to imageinfo and aiprop=bitdepth to allimages
24063 * (bug 14713) API-specific permissions (such as 'writeapi' and 'apihighlimits'
24064 are now listed on action=help
24065 * (bug 15044) Added requestid parameter to api.php to facilitate distinguishing
24067 * (bug 15048) Added limit field for multivalue parameters to action=paraminfo
24069 * When the limit on multivalue parameters is exceeded, a warning is issued
24070 * list=search doesn't list missing pages any more
24071 * (bug 15178) Added clshow to prop=categories to allow filtering for hidden/
24072 non-hidden categories
24073 * (bug 15228) Combining revids= and redirects now throws a warning instead of
24074 an error, and still resolves redirects generated by the generator.
24075 * list={backlinks,embeddedin,imageusage} now return arrays with keys 0, 1, 2,
24076 etc. (AKA lists) instead of arrays with pageIDs as keys (AKA hash tables)
24077 for consistency with other list modules.
24078 * Added action=watch
24079 * (bug 15275) apprefix and related parameters ignore spaces at the end
24080 * action=edit no longer throws unknown error 228 when trying to create an
24081 empty section with section=new
24082 * Database replication lag doesn't cause all action=edit requests to return the
24083 nochange flag any more
24084 * (bug 15392) ApiFormatBase::formatHTML now uses $wgUrlProtocols.
24085 * (bug 15444) action=edit returns "Unknown error: ``AS_END''" where it should
24086 return just "Unknown error"
24087 * (bug 15448) YAML output returns empty values instead of 0
24088 * (bug 15445) Added action=patrol
24089 * (bug 15466) Added action=purge
24090 * (bug 15486) action=block ignores autoblock parameter
24091 * (bug 15492) added rcprop=loginfo to list=recentchanges
24092 * (bug 15527) action=rollback can now revert anonymous editors
24093 * (bug 15535) prop=info&inprop=protection doesn't list pre-1.10 protections
24094 if the page is also protected otherwise (1.10+ style or cascading)
24095 * list=random now has rnredirect parameter, to get random redirects.
24096 * Added APIAfterExecute, APIQueryAfterExecute and APIQueryGeneratorAfterExecute
24097 hooks which allow for extending core modules in a cleaner way
24098 * action=protect checks for invalid protection types and levels
24099 * (bug 15673) Added indentation to format=wddxfm output and improved built-in
24100 WDDX formatter to resemble PHP's more
24101 * (bug 15706) Empty values for apprtype and apprlevel are now silently ignored
24102 rather than causing an exception
24103 * Added uiprop=preferencestoken to meta=userinfo
24104 * (bug 15609) Add inprop=url and inprop=readable to prop=info
24105 * Add ApiDisabled and ApiQueryDisabled classes so individual modules can
24106 be disabled in LocalSettings.php
24107 * (bug 15653) Add prop=duplicatefiles
24108 * (bug 15768) Add list=watchlistraw
24109 * (bug 15647) action=edit with basetimestamp fails if the page has been deleted
24110 and undeleted since the last edit
24111 * (bug 15785) Allow for different expiry times for different protections in
24113 * Added allowsduplicates attribute to action=paraminfo output
24114 * (bug 15767) apfilterlanglinks returns duplicate results
24115 * (bug 15845) Added pageid/fromid parameter to action=delete/move, making
24116 manipulation of legacy pages with invalid titles possible
24117 * (bug 15881) Empty or invalid parameters cause database errors
24118 * The maxage and smaxage parameters are now properly validated
24119 * (bug 15945) list=recentchanges doesn't check $wgUseRCPatrol, $wgUseNPPatrol
24120 and patrolmarks right
24121 * (bug 15985) acfrom and aifrom parameters didn't work when sorting in
24123 * (bug 15995) Add cmstartsortkey and cmendsortkey parameters to
24124 list=categorymembers
24125 * (bug 16017) list=categorymembers sets invalid continue parameters for
24126 sortkeys containing pipes
24127 * (bug 16018) Added uccontinue parameter to list=usercontribs so paging
24128 works properly when multiple users are queried or a userprefix is used
24129 * (bug 16047) Added activeusers attribute to meta=siteinfo&siprop=statistics
24131 * Added redirect resolution to action=parse
24132 * (bug 16074) rvprop=content combined with a generator with a high limit causes
24134 * (bug 16105) Image metadata attributes containing spaces result in invalid XML
24135 * (bug 16126) Added siprop=magicwords to meta=siteinfo
24136 * (bug 16159) Added wlshow=patrolled|!patrolled to list=watchlist
24137 * (bug 16225) Titles like Talk:Talk:Foo broke apfrom and friends
24138 * meta=siteinfo&siprop=interwikimap no longer throws an exception for empty
24139 sifilter parameter.
24140 * (bug 12760) meta=userinfo&uiprop=ratelimits doesn't list group-specific rate
24142 * (bug 16398) meta=userinfo&uiprop=rights lists some rights twice in some cases
24143 * (bug 16408) Added rvgeneratexml to prop=revisions
24144 * (bug 16421) Made list=logevents's leuser accept user names with underscores
24146 * (bug 16516) Made rvsection=T-2 work
24147 * (bug 16526) Added usprop=emailable to list=users
24148 * (bug 16548) list=search threw errors with an invalid error code
24149 * (bug 16515) Added pst and onlypst parameters to action=parse
24150 * (bug 16541) Added block expiry timestamp to list=logevents output
24151 * (bug 16613) action=protect doesn't tell when &cascade was set but cascading
24152 protection wasn't allowed
24153 * (bug 16626) action=delete now correctly handles empty "reason" param
24154 * (bug 15579) clshow considers all categories !hidden
24155 * (bug 16647) list=allcategories, prop=categories don't return "hidden"
24156 property for hidden categories
24157 * New siprop parameter of 'extensions' to list all installed extensions
24158 * (bug 16672) Include canonical namespace name in
24159 meta=siteinfo&siprop=namespaces.
24160 * (bug 16726) siprop=namespacealiases should also list localized aliases
24161 * (bug 16730) Added apprfiltercascade parameter to list=allpages to filter
24162 cascade-protected pages
24164 === Languages updated in 1.14 ===
24166 MediaWiki supports over 300 languages. Many localisations are updated
24167 regularly. Below only new and removed languages are listed.
24169 * Bakhtiari (bqi) (new)
24170 * Fiji Hindi (Devanagari script) (hif-deva) (new)
24172 * Lezghian (lez) (new)
24174 * Eastern Mari (mhr) (new)
24175 * Niuean (niu) (new)
24177 * Plautdietsch (pdt) (new)
24178 * Western Punjabi (pnb) (new)
24179 * Tarantino (roa-tara) (new)
24180 * Serbo-Croatian (sh) (new)
24184 == MediaWiki 1.13 ==
24186 == MediaWiki 1.13.5 ==
24190 This is a maintenance update to the Summer 2008 snapshot release of MediaWiki.
24192 MediaWiki is now using a "continuous integration" development model with
24193 quarterly snapshot releases. The latest development code is always kept
24194 "ready to run", and in fact runs our own sites on Wikipedia.
24196 Release branches will continue to receive security updates for about a year
24197 from first release, but nonessential bugfixes and feature developments
24198 will be made on the development trunk and appear in the next quarterly release.
24200 Those wishing to use the latest code instead of a branch release can obtain
24201 it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
24203 == Changes since 1.13.4 ==
24205 * (bug 17449) Fixed PostgreSQL installation
24206 * (bug 17527) Fixed missing MySQL-specific options in installer
24208 == Changes since 1.13.3 ==
24210 A number of cross-site scripting (XSS) security vulnerabilities were discovered
24211 in the web-based installer (config/index.php). These vulnerabilities all
24212 require a live installer -- once the installer has been used to install a wiki,
24215 Note that cross-site scripting vulnerabilities can be used to attack any website
24216 in the same cookie domain. So if you have an uninstalled copy of MediaWiki on
24217 the same site as an active web service, MediaWiki could be used to attack the
24220 If you are hosting an old copy of MediaWiki that you have never installed, you
24221 are advised to remove it from the web.
24223 == Changes since 1.13.2 ==
24225 David Remahl of Apple's Product Security team has identified a number of
24226 security issues in previous releases of MediaWiki. Subsequent analysis by the
24227 MediaWiki development team expanded the scope of these vulnerabilities. The
24228 issues with a significant impact are as follows:
24230 * An XSS vulnerability affecting all MediaWiki installations between 1.13.0 and
24231 1.13.2. [CVE-2008-5249]
24232 * A local script injection vulnerability affecting Internet Explorer clients for
24233 all MediaWiki installations with uploads enabled. [CVE-2008-5250]
24234 * A local script injection vulnerability affecting clients with SVG scripting
24235 capability (such as Firefox 1.5+), for all MediaWiki installations with SVG
24236 uploads enabled. [CVE-2008-5250]
24237 * A CSRF vulnerability affecting the Special:Import feature, for all MediaWiki
24238 installations since the feature was introduced in 1.3.0. [CVE-2008-5252]
24240 XSS (cross-site scripting) vulnerabilities allow an attacker to steal an
24241 authorised user's login session, and to act as that user on the wiki. The
24242 authorised user must visit a web page controlled by the attacker in order to
24243 activate the attack. Intranet wikis are vulnerable if the attacker can
24244 determine the intranet URL.
24246 Local script injection vulnerabilities are like XSS vulnerabilities, except
24247 that the attacker must have an account on the local wiki, and there is no
24248 external site involved. The attacker uploads a script to the wiki, which another
24249 user is tricked into executing, with the effect that the attacker is able to act
24250 as the privileged user.
24252 CSRF vulnerabilities allow an attacker to act as an authorised user on the wiki,
24253 but unlike an XSS vulnerability, the attacker can only act as the user in a
24254 specific and restricted way. The present CSRF vulnerability allows pages to be
24255 edited, with forged revision histories. Like an XSS vulnerability, the
24256 authorised user must visit the malicious web page to activate the attack.
24258 These four vulnerabilities are all fixed in this release.
24260 David Remahl also reminded us of some security-related configuration issues:
24262 * By default, MediaWiki stores a backup of deleted images in the images/deleted
24263 directory. If you do not want these images to be publically accessible, make
24264 sure this directory is not accessible from the web. MediaWiki takes some steps
24265 to avoid leaking these images, but these measures are not perfect.
24266 * Set display_errors=off in your php.ini to avoid path disclosure via PHP fatal
24267 errors. This is the default on most shared web hosts.
24268 * Enabling MediaWiki's debugging features, such as $wgShowExceptionDetails, may
24269 lead to path disclosure.
24271 Other changes in this release:
24273 * Avoid fatal error in profileinfo.php when not configured.
24274 * Add a .htaccess to deleted images directory for additional protection against
24275 exposure of deleted files with known SHA-1 hashes on default installations.
24276 * Avoid streaming uploaded files to the user via index.php. This allows
24277 security-conscious users to serve uploaded files via a different domain, and
24278 thus client-side scripts executed from that domain cannot access the login
24279 cookies. Affects Special:Undelete, img_auth.php and thumb.php.
24280 * When streaming files via index.php, use the MIME type detected from the
24281 file extension, not from the data. This reduces the XSS attack surface.
24282 * Blacklist redirects via Special:Filepath. Such redirects exacerbate any
24283 XSS vulnerabilities involving uploads of files containing scripts.
24284 * Internationalisation updates.
24286 == Changes since 1.13.1 ==
24288 * Security: Work around misconfiguration by requiring strict comparisons for
24289 in_array in User::isAllowed().
24290 * (bug 14944) Added $wgShellLocale for configuration of an appropriate locale
24291 to use for LC_CTYPE during shell invocation. For servers that don't have
24292 en_US.utf8. Also added locale detection during install.
24293 * Localisation updates
24294 * Security: Fixed XSS vulnerability in useskin parameter.
24296 == Changes since 1.13.0 ==
24298 * (bug 15460) Fixed intermittent deadlock errors and poor concurrent
24299 performance for installations without memcached.
24300 * (bug 13770) Fixed DOM module detection for installations with both dom
24302 * (bug 15148) Fixed Special:BlockIP for PostgreSQL
24303 * Fixed SQLite support for non-memcached installations
24304 * Localisation updates, Achinese (ace) added.
24306 == Changes since 1.13.0rc2 ==
24308 * (bug 13770) Fixed incorrect detection of PHP's DOM module
24309 * Fix regression from r37834: accesskey tooltip hint should be given for the
24310 minor edit and watch labels on the edit page.
24311 * Updated Chinese simplified/traditional conversion tables
24313 == Changes since 1.13.0rc1 ==
24315 * $wgForwardSearchUrl has been removed entirely. Documented setting since 1.4
24316 has been $wgSearchForwardUrl.
24317 * (bug 14907) DatabasePostgres::fieldType now defined.
24318 * (bug 14966) Fix SearchEngineDummy class for silently non-functional search
24319 on Sqlite instead of horribly fatal error breaky one.
24320 * (bug 14987) Only fix double redirects on page move when the checkbox is
24322 * (bug 13376) Use $wgPasswordSender, not $wgEmergencyContact, as return
24323 address for page update notification mails.
24324 * API: Registration time of users registered before the DB field was created is
24325 now shown as empty instead of the current time.
24326 * (bug 14904): fragments were lost when redirects were fixed.
24327 * Added magic word __STATICREDIRECT__ to suppress the redirect fixer
24328 * (bug 15035) Revert English linkTrail to /^([a-z]+)(.*)$/sD, as it was before
24329 r36253. Multiple reports of breakage due to old (pre-5.0) PCRE libraries,
24330 both bundled with PHP and packaged with distros such as RHEL.
24331 * (bug 14944) Shell invocation of external programs such as ImageMagick convert
24332 was broken in PHP 5.2.6, if the server had a non-UTF-8 locale.
24335 === Configuration changes in 1.13 ===
24337 * New option $wgFeed can be set false to turn off syndication feeds
24338 * (bug 5745) Special:Whatlinkshere now shows up to $wgMaxRedirectLinksRetrieved
24339 links through each redirect instead of hardcoded 500
24340 * Set $wgUploadSizeWarning to false by default
24341 * Added $wgLBFactoryConf, for generic configuration of multi-master wiki farms
24342 * Removed $wgAlternateMaster, use $wgLBFactoryConf
24343 * (bug 13562) Misspelled option $wgUserNotifedOnAllChanges changed to
24344 $wgUserNotifiedOnAllChanges
24345 * (bug 12860) New option $wgSitemapNamespaces allows sitemaps to be generated
24346 for only some namespaces
24347 * Removed the emailconfirmed implicit group by default. To re-add it, use:
24348 $wgAutopromote['emailconfirmed'] = APCOND_EMAILCONFIRMED;
24349 in your LocalSettings.php.
24350 * (bug 2396) New shared database configuration variables. $wgSharedPrefix allows
24351 you to use a shared database with a different prefix. Or you can now use a
24352 local database and use prefixes to separate wiki and the shared tables. And
24353 the new $wgSharedTables variable allows you to specify a list of tables to
24355 * Automatic edit summaries can be disabled with $wgUseAutomaticEditSummaries
24356 * Duplicates of images are now shown on the image page
24357 * $wgRCFilterByAge allows for the list of dates in recent changes special pages
24358 to be filtered to only those within the range of $wgRCMaxAge
24359 * $wgRCLinkLimits and $wgRCLinkDays allow for customization of the list and
24360 limits displayed on the recent changes special pages
24361 * The "createpage" permission is no longer required when uploading if the target
24362 image page already exists
24363 * $wgMaximumMovedPages restricts the number of pages that can be moved at once
24364 (default 100) with the new subpage-move functionality of Special:Movepage
24365 * Hooks display in Special:Version is now disabled by default, use
24366 $wgSpecialVersionShowHooks = true; to enable it.
24367 * $wgActiveUserEditCount sets the number of edits that must be performed over
24368 a certain number of days to be considered active
24369 * $wgActiveUserDays is that number of days
24370 * $wgRateLimitsExcludedGroups has been deprecated in favor of
24371 $wgGroupPermissions[]['noratelimit']. The former still works, however.
24372 * New $wgGroupPermissions option 'move-subpages' added to control bulk-moving
24373 subpages along with pages. Assigned to 'user' and 'sysop' by default.
24374 * New $wgRC2UDPOmitBots allows user to omit bot edits from UDP output.
24376 * Removed $wgEnableCascadingProtection option. Disabling cascading protection
24377 is no longer possible.
24378 * $wgMessageCacheType defines now the type of cache used by the MessageCache
24379 class, previously it was choosen based on $wgParserCacheType
24380 * $wgExtensionAliasesFiles option to simplify adding aliases to special pages
24381 provided by extensions, in a similar way to $wgExtensionMessagesFiles
24382 * Added $wgXMLMimeTypes, an array of XML mimetypes we can check for
24384 * Added $wgDirectoryMode, which allows for setting the default CHMOD value when
24385 creating new directories.
24386 * (bug 14843) $wgCookiePrefix can be set by LocalSettings now, false defaults
24389 === New features in 1.13 ===
24391 * __HIDDENCAT__ on a category page causes the category to be hidden on the
24393 * Do not show edit permissions errors on a red link click, just redirect to the
24394 article. This is so that readers who don't know what a red link is are not
24395 confused when they are told they are range-blocked.
24396 * Add a new hook ImageBeforeProduceHTML to allow extensions to modify wikitext
24397 image syntax output
24398 * (bug 13100) Added 'preloadtitle' parameter to action=edit§ion=new that
24399 pre-fills the section title field
24400 * (bug 13112) Added Special:RelatedChanges alias to Special:RecentChangesLinked
24401 * (bug 13130) Moved edit token and autosummary fields above edit tools to
24402 reduce broken form submissions
24403 * Add --old-redirects-only option to maintenance/refreshLinks.php, to add old
24404 redirects to the redirect table
24405 * Add links to page and file deletion forms to edit predefined delete reasons
24406 * (bug 13269) Added MediaWiki:Uploadfooter to the bottom of Special:Upload
24407 * (bug 2815) Search results for media now use thumbnail instead of text extract
24408 * When a page doesn't exist, the tab should say "create", not "edit"
24409 * (bug 12882) Added a span with class "patrollink" around "Mark as patrolled"
24411 * Magic word formatnum can now take raw suffix to undo formatting
24412 * Add updatelog table to reliably permit updates that don't change the schema
24413 * Add category table to allow better tracking of category membership counts
24414 ** (bug 1212) Give correct membership counts on the pages of large categories
24415 ** Use category table for more efficient display of Special:Categories
24416 * (bug 1459) Search for duplicate files by hash: Special:FileDuplicateSearch
24417 * (bug 9447) Added hooks for search result headings
24418 * Image redirects are now enabled by default
24419 * (bug 13450) Email confirmation can now be canceled before the expiration
24420 * (bug 13490) Show upload/file size limit on upload form
24421 * Redesign of Special:UserRights
24422 * Make rev_deleted log entries more intelligible
24423 * (bug 6943) Added PAGESINCATEGORY: magic word
24424 * (bug 13604) Added Special:ListGroupRights
24425 * (bug 6332, 8617) Added message 'mainpage-description' as duplicate of
24426 'mainpage' and added it to message 'sidebar'
24427 * Automatically add old redirects to the redirect table when needed
24428 * (bug 6934) Allow inclusions, links, redirects to be separately toggled on or
24429 off on Special:WhatLinksHere
24430 * Cache image redirects
24431 * (bug 10457) Organize Special:SpecialPages into sections
24432 * Add a new hook EditPageBeforeConflictDiff to allow extensions like FCKeditor
24433 to modify the output for edit conflicts
24434 * Add class="nested" for <fieldset>s so fieldsets inside fieldsets get
24435 a slightly less huge margin and padding
24436 * (bug 13527) Use sitemaps.org format 0.9 instead of a Google-specific format
24437 * Allow \C and \Q as TeX commands to match \R, \N, \Z
24438 * On Special:UserRights, when you can add a group you can't remove or remove
24439 one you can't add, a notice is printed to warn you
24440 * (bug 12698) Create PAGESIZE parser function, to return the size of a page
24441 * Allow the "log in / create account" link in the toolbar to have different
24442 text from Special:UserLogin title (new message 'nav-login-createaccount')
24443 * Say "log in / create account" if an anonymous user can create an account,
24444 otherwise just "log in", consistently across skins
24445 * Special:Shortpages and Special:Longpages now returns pages in all content
24446 namespaces, not just NS_MAIN.
24447 * (bug 889) Improve conflict-handling between shared upload repository
24449 * Update documentation links in auto-generated LocalSettings.php
24450 * (bug 13584) The new hook SkinTemplateToolboxEnd was added.
24451 * (bug 709) Cannot rename/move images and other media files [EXPERIMENTAL]
24452 * Custom rollback summaries now accept the same arguments as the default message
24453 * (bug 12542) Added hooks for expansion of Special:Listusers
24454 * Drop-down AJAX search suggestions (turn on $wgEnableMWSuggest)
24455 * More relevant search snippets (turn on $wgAdvancedSearchHighlighting)
24456 * (bug 13950) Allow users to watch the user/talk pages of users they block.
24457 * (bug 13970) Allow MonoBook-based skins to specify their own print stylesheet
24458 * Show image links on Special:Whatlinkshere
24459 * Use rel="start", "prev", "next" appropriately on Pager-based pages
24460 * Add support for SQLite
24461 * AutoAuthenticate hook renamed to UserLoadFromSession
24462 * (bug 13232) importScript(), importStylesheet() funcs available to custom JS
24463 * (bug 13095) Search by first letters or digits in [[Special:Categories]]
24464 * Users moving a page can now move all subpages automatically as well
24465 * (bug 14259) Localisation message for upload button on Special:Import is now
24466 'import-upload' instead of 'upload'
24467 * Add information about user group membership to Special:Preferences
24468 * (bug 14146) Wrap usage section on imagepages into <div>s.
24469 * New layout for Special:Specialpages. Restricted pages are marked but not
24470 separated from other pages in their group.
24471 * (bug 14263) Show a diff of the revert on rollback notification page.
24472 * (bug 13434) Show a warning when hash identical files exist
24473 * Sidebar is now cached for all languages
24474 * The User class now contains a public function called isActiveEditor. Figures
24475 out if a user is active based on at least $wgActiveUserEditCount number of
24476 edits in the last $wgActiveUserDays days.
24477 * SpecialSearchResults hook now passes results by reference, so they can be
24478 changed by extensions.
24479 * Add a new hook LinkerMakeExternalLink to allow extensions to modify the output
24481 * (bug 14132) Allow user to disable bot edits from being output to UDP.
24482 * (bug 14328) jsMsg() within Wikibits now accepts a DOM object, not just a
24484 * (bug 14558) New system message (emailuserfooter) is now added to the footer of
24485 e-mails sent with Special:Emailuser
24486 * Add support for Hijri (Islamic) calendar
24487 * Add a new hook LinkerMakeExternalImage to allow extensions to modify the
24488 output of external (hotlinked) images.
24489 * (bug 14604) Introduced the following features for the LanguageConverter:
24490 Multi-tag support, single conversion flag, remove conversion flag on a single
24491 page, description flag, variant name, multi-variant fallbacks.
24492 * Add zh-mo and zh-my variants for the zh language
24493 * (bugs 4832, 9481, 12890) Special:Recentchangeslinked now has all options that
24494 are in Special:Recentchanges
24495 * Allow an $error message to be passed to ArticleDelete hook
24496 * Allow extensions to modify the user creation form by calling addInputItem();
24497 * Add meta generator tag to HTML output
24498 * MediaWikiPerformAction hook is now passed the MediaWiki object
24499 * Added blank special page Special:BlankPage for benchmarking, etc.
24500 * Foreign repo file descriptions and thumbnails are now cached.
24501 * (bug 11732) Allow localisation of edit button images
24502 * Allow the search box, toolbox and languages box in the Monobook sidebar to be
24503 moved around arbitrarily using special sections in [[MediaWiki:Sidebar]]:
24504 SEARCH, TOOLBOX and LANGUAGES
24505 * Add a new hook NormalizeMessageKey to allow extensions to replace messages
24506 before the database is potentially queried
24507 * (bug 9736) Redirects on Special:Fewestrevisions are now marked as such.
24508 * New date/time formats in Cs localization according to ČSN and PČP.
24509 * Special:Recentchangeslinked now includes changes to transcluded pages and
24510 displayed images; also, the "Show changes to pages linked" checkbox now works
24511 on category pages too, showing all links that are not categorizations
24512 * (bug 4578) Automatically fix redirects broken by a page move
24514 === Bug fixes in 1.13 ===
24516 * (bug 10677) Add link to the file description page on the shared repository
24517 * (bug 13084) Increase size of source/destination filename fields in upload form
24518 * (bug 13115) rebuildrecentchanges should print the current value of $wgRCMaxAge
24519 * (bug 13140) Show parent categories in category namespace
24520 * (bug 13149) Correctly format 'fileexists' message on Upload page
24521 * Make the default filepageexists message accurate
24522 * (bug 12988) $wgMinimalPasswordLength no longer breaks create user by email
24523 * (bug 13022) Fix upload from URL on PHP 5.0.x
24524 * (bug 13132) Unable to unprotect pages protected with earlier versions of
24526 * (bug 12723) OpenSearch description name now uses more compact language code
24527 to avoid passing the length limit as often, is customizable per site via
24528 'opensearch-desc' message.
24529 * (bug 13135) Special:Userrights now passes IDs through form submission
24530 to allow functionality on not-quite-right usernames
24531 * (bug 12575) Prevent duplicate patrol log entries from being created
24532 * (bug 13174) __HIDDENCAT__ now applies only to category pages
24533 * (bug 13031) Add links to user pages in e-mail form
24534 * (bug 13147) Description for categoriespagetext (used in Special:Categories)
24536 * (bug 11561) Fix fatal error when calling action=revert to non-image page
24537 * (bug 12430) Fix call to private method LinkFilter::makeRegex fatal error in
24538 maintenance/cleanupSpam.php
24539 * All skins should have the "mediawiki" class on the body element
24540 * (bug 13019) Message cache for some extensions not loaded at time of editing
24541 * (bug 13247) Prettified ISBN links
24542 * maintenance/refreshLinks.php did not fix page_id 1 with the --new-only option
24543 * (bug 13110) Don't show "Permission error" page if the edit is already rolled
24544 back when using rollback
24545 * (bug 13012) Use content messages for block options when generating the
24546 recentchanges entry
24547 * (bug 13274) Change links for messages to ucfirst
24548 * (bug 13273) Un-hardcode some punctuation (add new messages colon-separator,
24549 autocomment-prefix)
24550 * Parse MediaWiki message translations with a correct language setting on
24552 * (bug 13281) Treat X-Forwarded-For, Client-ip and User-Agent headers as
24553 case-insensitive names.
24554 * Adding the fix for lists in RTL wikis to more skins, and fixing the image toc
24555 * (bug 8157) Remove redirects from Special:Unusedtemplates. Patch by WebBoy.
24556 * (bug 10721) Duplicate section anchors with differing case now disambiguated
24557 for Internet Explorer's sake and standards compliance
24558 * (bug 13298) Tighter limits on Special:Newpages limits when embedding
24559 * Email subject in content language instead of sending user's UI language
24560 * (bug 13251) Allow maintenance rebuild scripts to work with Postgres
24561 * (bug 2084) Fixed incorrect regex to match redirects
24562 * (bug 3131) Manually-specified upload destination filename is no longer
24563 overwritten by browsing for a file after you wrote it.
24564 * (bug 7251) Sidebars generated by MediaWiki:Sidebar now have the class
24565 'generated-sidebar'.
24566 * (bug 13265) Media handler is missing 'image/x-bmp'
24567 * (bug 13407) MediaWiki:Powersearch is used in two places
24568 * (bug 13403) Fix cache invalidation of history pages when old revisions change
24569 * (bug 11563) Deprecated SearchMySQL4 class; merged code to SearchMySQL
24570 * (bug 12801) Fix link in subtitle message in AJAX search
24571 * (bug 13428) Fix regression in protection form layout HTML validity
24572 * (bug 9403) Sanitize newlines from search term input
24573 * (bug 13429) Separate date and time in message sp-newimages-showfrom
24574 * (bug 13137) Allow setting 'editprotected' right separately from 'protect',
24575 so groups may optionally edit protected pages without having 'protect' perms
24576 * Disallow deletion of big pages by means of moving a page to its title and
24577 using the "delete and move" option.
24578 * (bug 13466, 13632) White space differences not shown in diffs
24579 * (bug 1953) Search form now honors namespace selections more reliably
24580 * (bug 12294) Namespace class renamed to MWNamespace for PHP 5.3 compatibility
24581 * PHP 5.3 compatibility fix for wfRunHooks() called with no parameters
24582 * (bug 6447) Trackbacks now work with transactional tables, if enabled
24583 * (bug 6892, 7147) Trackback error handling, optional fields more robust
24584 * (bug 6813) Don't break HTML validator when using trackbacks
24585 * Fix for size checks on SVG images with global 'stroke-width' attribute
24586 * (bug 11874) Inline CSS with !important no longer borken
24587 * (bug 1600) Strip extra == section markup == in new-comment field
24588 * (bug 11325) Wrapped page titles in MonoBook skin spaced more nicely
24589 * (bug 12077) Fix HTML nesting for TOC
24590 * (bug 344) Purge cache for talk/article pages when deleting the other tab
24591 * (bug 13436) Treat image captions correctly when they include option keywords
24592 (like ending with "px" or starting with "upright")
24593 * Trackback display formatting fixed
24594 * Don't die when single-element arrays are passed to SQL query constructors
24595 that have an array index other than 0
24596 * (bug 13522) Fix fatal error in Parser::extractTagsAndParams
24597 * (bug 13532) Use proper timestamp call when reverting images
24598 * (bug 13543) Updated FAQ link in the installer sidebar
24599 * (bug 13540) Date format in confirmation e-mail now matches message language
24600 * (bug 13554) PHP Notice in old pre-processor when list item is empty.
24601 * (bug 13556) Don't show a blank form if no image is attached in Special:Upload
24602 * (bug 13576) maintenance/rebuildrecentchanges.php fails
24603 * (bug 13441) Allow Special:Recentchanges to show bots only
24604 * (bug 13431) Show true message source in Special:Allmessages&ot=php / xml
24605 * (bug 13463) Login successful page doesn't use user's preferred interface
24607 * (bug 13630) Fixed warnings for pass by reference at call time in
24608 Special:Revisiondelete when generating the log entry.
24609 * (bug 12064) BeforePageDisplay hook is now called for all skins
24610 * (bug 13624) Fix regression with manual thumb= parameter on images
24611 * (bug 11039) Add missing labels on protection form
24612 * (bug 13458) Preview/edit toolbar spacing now works consistently
24613 * (bug 13433) Fix action=render on Image: pages
24614 * (bug 13678) Fix CSS validation for Monobook
24615 * (bug 13684) Links in Special:ListGroupRights should be in content language
24616 * (bug 13690) Fix PHP notice on accessing some URLs
24617 * Hide (undo) link if user isn't able to edit page
24618 * Invalidate cache of pages that includes images via redirects on upload
24619 * (bug 13705) Don't show rollback link in page history on incorrect revisions
24620 * (bug 13708) Don't set "Search results" title when loading Special:Search
24622 * (bug 13736) Don't show MediaWiki:Anontalkpagetext on non-existent IP addresses
24623 * (bug 13728) Don't trim initial whitespace during section edits
24624 * (bug 13727) Don't delete log entries from recentchanges on page deletion
24625 * (bug 13752) Redirects to sections now work again
24626 * (bug 13725) Upload form watch checkbox state set correctly with wpDestFile
24627 * (bug 13756) Don't show the form and navigation links of Special:Newpages if
24628 the page is included
24629 * When hiding things on WhatLinksHere, generated URLs should hide them too
24630 * Properly escape search terms with regex chars so they appear highlighted in
24632 * (bug 13768) pt_title field encoding fixed
24633 * Do not display empty columns on Special:UserRights if all groups are
24634 changeable or all unchangeable
24635 * Fix fatal error on calling PAGESINCATEGORY with invalid category name
24636 * (bug 13793) Special:Whatlinkshere filters wrong - after paginating instead of
24638 * (bug 13796) Show links to parent pages even if some of them are missing
24639 * (bug 13816) Filter by main namespace doesn't work on WhatLinksHere
24640 * (bug 13822) Fatal error on some pages when calculating subpage subtitle
24641 * (bug 13824) AJAX search suggestion now works with non-SkinTemplate skins
24642 * Added 'application/x-dia-diagram' MediaWiki's known MIME types
24643 * (bug 13866) skins/common/shared.css - invalid attribute fixing
24644 * Hide edit section links on Special:Undelete
24645 * (bug 13860) Fix "Justify paragraphs" option for Modern skin
24646 * (bug 13168) accessibility links in Modern skin link to wrong anchor id
24647 * (bug 13185) No line break after 'subpages' class in Modern skin
24648 * (bug 13583) No "poweredby" in Modern skin
24649 * (bug 13880) "Printable" link in Modern skin now formats as print mode
24650 * (bug 13885) Bump default $wgSVGMaxSize from 1024 to 2048 pixels
24651 * (bug 13891) Show categories box even if all categories are hidden and user has
24652 "show hidden categories" option on
24653 * (bug 13915) Undefined variable $wltsfield in includes/SpecialWatchlist.php
24654 * (bug 13913) Special:Whatlinkshere now has correct HTML markup
24655 * (bug 13905) Blacklist Mac IE from HttpOnly cookies; it eats them sometimes
24656 * (bug 13922) Fix bad HTML on empty Special:Prefixindex and Special:Allpages
24657 * (bug 13924) Fix bad HTML on power search form
24658 * (bug 13820) Fix updater for rev_parent_id population
24659 * (bug 13925) Fix bad HTML on search results list
24660 * (bug 13934) Fixing the link to GNU General Public License Version 2
24661 * Show correct accesskey prefix for Firefox 3 beta (Alt-Shift-, not Alt-)
24662 * (bug 13949) Special:PrefixIndex/AllPages paging links contain invalid XML
24663 * (bug 13770) Use Preprocessor_Hash by default to avoid missing DOM module
24665 * (bug 13982) Disable ccmeonemails preference when user-to-user mails disabled
24666 * (bug 13615) Update case mappings and normalization to Unicode 5.1.0
24667 Note that case mappings will only be used if mbstring extension is not
24669 * (bug 14044) Don't increment page view counters on views from bot users
24670 * (bug 14042) Calling Database::limitResult() misplaced the comment in the log
24672 * (bug 14047) Fix regression in installer which hid DB-specific options
24673 Also makes SQLite path configurable in the installer.
24674 * (bug 13546) Follow image redirects on image page
24675 * (bug 12644) Template list on edit page now sorted on preview
24676 * (bug 14058) Support pipe trick for namespaces and interwikis with "-"
24677 * Message name filter on Special:Allmessages now case-insensitive
24678 * (bug 13943) Fix image redirect behavior on image pages
24679 * (bug 14093) Do 'sysop' => 'protect' magic in Title::isValidMoveOperation
24680 * (bug 14063) Power search form missing <label> for redirects check
24681 * (bug 14111) Similar filename warning links now lead to correct page
24682 * (bug 14082) Fix for complex text input vs AJAX suggestions on some browsers
24683 * (bug 13693) Categories sometimes claim to have a negative number of members
24684 * (bug 1701) Korean Hangul syllables now broken down properly in Category lists
24685 even if the wiki's overall content language is not Korean
24686 * (bug 12773) addOnloadHook() now calls functions immediately when scripts are
24687 loaded after the primary page completion, instead of dropping them
24688 * (bug 14199) Fix deletion form for image redirect pages
24689 * (bug 14220) Disabling $wgCheckFileExtensions now works without also
24690 disabling $wgStrictFileExtensions
24691 * (bug 14241) Pages can no longer be protected to levels you are not in
24692 * (bug 14296) Fix local name of ang: (Anglo-Saxon)
24693 * (bug 4871) Hardcoded superscript in time zone preferences moved to message
24694 * (bug 6957) E-mail confirmation links now using English special page name
24695 for better compatibility and keeping the links shorter. Avoids problem
24696 with corrupt links in Gmail on IE 6.
24697 * (bug 14273) Fix for HTTP Accept header parsing with spaces as from Konqueror
24698 * (bug 14312) Update LanguageKaa.php for handling transform issues with i to İ
24700 * (bug 13826) MediaWiki:Defaultns accepts Wikicode
24701 * (bug 14324) Creating an account is again possible with $wgEmailConfirmToEdit
24703 * (bug 13034) Interwiki pages can now be reached using Go search button
24704 * (bug 14362) Change interwiki names of Erzya and Moksha Wikipedias
24705 * (bug 14370) When a grouppage-x message does not exist the entry on the
24706 ListGroupRights special page now links to the project namespace page for it,
24707 not the main namespace page.
24708 * (bug 11659) Urldecode image names in galleries
24709 * (bug 14258, 14368) Fix for subpage renames in replication environments
24710 * (bug 14367) Failed block no longer adds phantom watchlist entry
24711 * (bug 14385) "Move subpages" option no longer tries to move to invalid titles
24712 * (bug 14386) Fix subpage namespace oddity when moving a talk page
24713 * (bug 11771) Signup form now not shown if in read-only mode.
24714 * (bug 12859) $wgRateLimitsExcludedGroups has been deprecated in favor of
24715 $wgGroupPermissions[]['noratelimit'].
24716 * (Bug 13828) Split parameter $1 of MediaWiki:Missingarticle into $1 (=title)
24717 and $2 (=revision numbers)
24718 * (bug 14401) Fix Safari access key tooltips for Windows and >3.1 Mac versions
24719 * (bug 14432) Fix notice regression in Special:Newpages feed mode
24720 * (bug 11951) EditPage::getEditToolbar() is now static.
24721 * (bug 14392) Fix regression breaking table prefix in installer
24722 * (bug 11084) $wgDBprefix replacement for updater SQL will now work for
24723 extension tables using uppercase letters or digits in their names.
24724 * (bug 12311) Fix regression with lists at start of undeletion preview
24725 * (bug 14496) Fix regression with parseinline on Special:Upload.
24726 * We no longer just give up on a missing upload base directory; it's now
24727 created automatically if we have sufficient permissions!
24728 * (bug 14479) MediaWiki:upload-maxfilesize should have a div id wrapper
24729 * (bug 14497) Throw visible errors in installer scripts when SQL files
24730 fail due to database permission or other error
24731 * (bug 14500) Site feed (Recentchanges) no longer shows up on the actual
24732 recent changes page.
24733 * (bug 14511) MediaWiki:Delete-legend is no longer double escaped
24734 * Generate correct section anchors for numeric headers
24735 * (bug 14520) Don't load nonexistent CSS files for Chick/Myskin/Simple skins
24736 * (bug 14551) Cancel upload no longer automatically suppresses warnings
24737 * (bug 13878) Deprecate Article::getDB() in favor of direct wfGetDB() calls
24738 * (bug 4977) Fix for possible squid purging errors when using HTTP purges
24739 and multiple servers
24740 * (bug 14572) Redirects listed on file links on image pages no longer redirect.
24741 * (bug 14537) Change interwiki name for Old Church Slavonic (cu)
24742 * (bug 14583) Fix regression in recent changes "limit to certain categories."
24743 * (bug 14515) HTML nesting cleanup on edit form
24744 * (bug 14647) Removed unused 'townBox' CSS classes
24745 * (bug 14687) OutputPage::addStyle() now adds type="text/css" like it should.
24746 * OpenSearch cleanup; Firefox now sends you to the search page for empty
24747 searches instead of the domain root (which may not even be a wiki).
24748 * (bug 3481) Pages moved shortly after creation are shown at their new title
24749 on Special:Newpages.
24750 * (bug 12716) Trying to unprotect a title that isn't protected no longer
24751 generates a log entry.
24752 * (bug 14088) Excessively long block expiry times are rejected as invalid,
24753 keeps the log page from being distorted.
24754 * (bug 14708) Emulate INSERT...IGNORE with standard SQL for Postgres backend.
24755 * (bug 14646) Fix some double-escaping of HTML in feed output
24756 * (bug 14709) Fix login success message formatting when using cookie check
24757 * (bug 14710) Remove "donate" link from default sidebar
24758 * (bug 14745) Image moving works on sites that transform thumbnails via 404
24759 * (bug 2186) Document.write() in wikibits caused failures when using
24760 application/xhtml+xml. The calls to this have been removed.
24761 * (bug 14764) Fix regression in from Article::lastModified(), failed to work
24762 on non-mySQL schemas.
24763 * (bug 14763) Child classes of Database (DatabasePostgres and DatabaseOracle)
24764 had strict standards issues with setFakeSlaveLag() and setFakeMaster().
24765 * (bug 451) Improve the phrase mappings of the Chinese converter arrays.
24766 * (bug 12487) Rights log is not fully internationalized
24767 * (bug 10837) Language variants no longer override other languages than base
24768 * (bug 14778) 'limit' parameter now applies to history feeds as well as
24770 * (bug 14845) Bug in prefs javascript: Calling an array item without checking
24772 * Accesskeys for minor edit/watch checkboxes on edit now work in Firefox 3
24773 * (bug 12384) Comments in maintenance/*php
24774 * (bug 12441) ./maintenance/generateSitemap.php fix -fspath requiring
24776 * (bug 12568) configuration script now produce valid XHTML.
24777 * The accesskey to edit a page is now disabled when editing the page, to pre-
24778 vent conflicts with Safari shortcuts.
24780 === API changes in 1.13 ===
24782 * Fixing main page display in meta=siteinfo
24783 * (bug 13128) Added patrolled flag to list=recentchanges
24784 * Implemented {bl,ei,iu}redirect (lists links through redirects as well)
24785 * (bug 13154) Introduced subpages flag to meta=siteinfo&siprop=namespaces
24786 * (bug 13157) Added ucuserprefix parameter to list=usercontribs
24787 * (bug 12394) Added rctitles parameter to list=recentchanges, making rcid
24789 * (bug 13218) Fix inclusion of " character in hyperlinks
24790 * Added watch and unwatch parameters to action=delete and action=move
24791 * Added action=edit
24792 * (bug 11401) Added xmldoublequote to xml formatter
24793 * Added rvsection parameter to prop=revisions to allow fetching the content of
24794 a certain section only
24795 * Introduced list=allimages
24796 * (bug 13371) Build page set from image hashes
24797 * Mark non-existent messages in meta=allmessages as missing
24798 * (bug 13390) One invalid title no longer kills an entire API query
24799 * (bug 13419) Fix gblredirect so it actually works
24800 * (bug 13418) Disable eiredirect because it's useless
24801 * (bug 13395) list=allcategories should use category table
24802 * (bug 13442) Missing pages in prop=langlinks and prop=extlinks are now
24804 * (bug 13444) Add description to list=watchlist
24805 * (bug 13482) Disabled search types handled properly
24806 * Added inprop=talkid,subjectid to prop=info
24807 * Added help text message that specifies whether a module is POST-only
24808 * Added createonly parameter to action=edit
24809 * Replaced $wgAPIUCUserPrefixMinLength by the more generic $wgAPIMaxDBRows
24810 * (bug 11719) Remove trailing blanks in YAML output.
24811 * (bug 13541) Added siprop=specialpagealiases to meta=siteinfo
24812 * Added fallback8bitEncoding and readonly fields to
24813 meta=siteinfo&siprop=general output
24814 * (bug 13544) Added prop=revid to action=parse
24815 * (bug 13603) Added siprop=usergroups to meta=siteinfo
24816 * Cleaned up redirect resolution
24817 * Added possibility to obtain all external links through list=exturlusage
24818 * (bug 13606) Added archivename to iiprop
24819 * (bug 11633) Explicitly convert redirect titles to strings due to PHP's
24820 very weak typing on array keys.
24821 * (bug 12136) Extend allowed characters in JSON callback to ][.'"_A-Za-z0-9
24822 * (bug 11673) Return error 'unknown_action' in specified format
24823 * (bug 13618) Added rcprop=redirect and rcshow=redirect to list=recentchanges
24824 * (bug 13544) Added oldid parameter to action=parse to allow for parsing of old
24826 * (bug 13718) Return the proper continue parameter for cmsort=timestamp
24827 * action=login now returns the correct waiting time in the details property
24828 * (bug 13792) Broken titles are now silently skipped in search results.
24829 * (bug 13819) exturlusage paging skipped an item
24830 * Fixed handling of usernames containing spaces in list=block
24831 * (bug 13836) Fixed fatal errors resulting from combining iiprop=metadata with
24833 * (bug 13735) Added prop=categoryinfo module
24834 * (bug 13945) Retrieve cascading protection sources via inprop=protection
24835 * (bug 13965) Hardcoded 51 limit on titles is too limiting
24836 * (bug 13993) apfrom doesn't work with apdir=descending
24837 * (bug 14018) Introduced alcontinue to list=alllinks to improve paging
24838 * (bug 14013) Added rcshow=patrolled to list=recentchanges
24839 * (bug 14028) Added language attribute to interwiki map in meta=siteinfo
24840 * (bug 14022) Added usprop=registration and auprop=blockinfo
24841 * (bug 14021) Removed titles= support from list=backlinks (has been obsolete
24843 * (bug 13829) Expose parse tree via action=expandtemplates
24844 * (bug 13606) Allow deletion of images
24845 * Added iiprop=mime and aiprop=metadata
24846 * Handled unrecognized values for parameters more gracefully
24847 * Handled requesting disallowed tokens more gracefully
24848 * (bug 14140) URL-encoded page titles are now decoded in edit summaries
24849 * (bug 14243) Only accept post requests in action=edit; patch by HardDisk
24850 * action=block now returns an ISO8601 timestamp, like all other modules do
24851 * Added md5 parameter to action=edit
24852 * (bug 14335) Logging in to unified account using API not possible
24853 * Added action=emailuser to send an email to a user
24854 * (bug 14471) Use HTMLTidy and generate limit report in action=parse
24855 * (bug 14459) Added prependtext and appendtext parameters to action=edit
24856 * (bug 14526) Unescaped SQL in list=backlinks
24857 * Added 'hidden' flag to list=allcategories and prop=categoryinfo output
24858 * Added nocreate parameter to action=edit
24859 * (bug 14402) Added maxage and smaxage parameters to api.php
24860 * Added bkip parameter to list=blocks
24861 * (bug 14651) apprefix and similar parameters are now canonicalized
24862 * Added clprop=timestamp to prop=categories
24863 * (bug 14678) API errors now respects $wgShowExceptionDetails and
24865 * (bug 14723) Added time zone and writing direction to meta=siteinfo
24866 * Added APIQueryInfoTokens and APIQueryRevisionsTokens hooks so extensions
24867 can add their own tokens
24868 * Added block and unblock tokens to prop=info as well
24869 * Added paging (limit and continue parameters) to
24870 prop={links,templatelinks,langlinks,extlinks,categories,images}
24871 * Added flag "top" to list=usercontribs if the user is the last contributor to
24873 * list=exturlusage in "list all links" mode can now filter by protocol
24875 == MediaWiki 1.12 ==
24877 == MediaWiki 1.12.4 ==
24881 A number of cross-site scripting (XSS) security vulnerabilities were discovered
24882 in the web-based installer (config/index.php). These vulnerabilities all
24883 require a live installer -- once the installer has been used to install a wiki,
24886 Note that cross-site scripting vulnerabilities can be used to attack any
24887 website in the same cookie domain. So if you have an uninstalled copy of
24888 MediaWiki on the same site as an active web service, MediaWiki could be used to
24889 attack the active service.
24891 If you are hosting an old copy of MediaWiki that you have never installed, you
24892 are advised to remove it from the web.
24894 == MediaWiki 1.12.3 ==
24896 * Fixed packaging/distribution error. Many files were missing from the
24897 distributed tarball.
24899 == MediaWiki 1.12.2 ==
24901 David Remahl of Apple's Product Security team has identified a number of
24902 security issues in previous releases of MediaWiki. Subsequent analysis by the
24903 MediaWiki development team expanded the scope of these vulnerabilities. The
24904 issues with a significant impact are as follows:
24906 * A local script injection vulnerability affecting Internet Explorer clients
24907 for all MediaWiki installations with uploads enabled. [CVE-2008-5250]
24908 * A local script injection vulnerability affecting clients with SVG scripting
24909 capability (such as Firefox 1.5+), for all MediaWiki installations with SVG
24910 uploads enabled. [CVE-2008-5250]
24911 * A CSRF vulnerability affecting the Special:Import feature, for all MediaWiki
24912 installations since the feature was introduced in 1.3.0. [CVE-2008-5252]
24914 A local script injection vulnerability allows an attacker with a wiki account
24915 to steal another user's login session, and to act as that user on the wiki. The
24916 attacker uploads a malicious script file, and tricks the victim into executing
24919 CSRF vulnerabilities allow an attacker to act as an authorised user on the
24920 wiki, but unlike an XSS vulnerability, the attacker can only act as the user in
24921 a specific and restricted way. The present CSRF vulnerability allows pages to
24922 be edited, with forged revision histories. Like an XSS vulnerability, the
24923 authorised user must visit the malicious web page to activate the attack.
24925 These three vulnerabilities are all fixed in this release.
24927 David Remahl also reminded us of some security-related configuration issues:
24929 * By default, MediaWiki stores a backup of deleted images in the images/deleted
24930 directory. If you do not want these images to be publically accessible, make
24931 sure this directory is not accessible from the web. MediaWiki takes some steps
24932 to avoid leaking these images, but these measures are not perfect.
24933 * Set display_errors=off in your php.ini to avoid path disclosure via PHP fatal
24934 errors. This is the default on most shared web hosts.
24935 * Enabling MediaWiki's debugging features, such as $wgShowExceptionDetails, may
24936 lead to path disclosure.
24938 Other changes in this release:
24940 * Avoid fatal error in profileinfo.php when not configured.
24941 * Add a .htaccess to deleted images directory for additional protection against
24942 exposure of deleted files with known SHA-1 hashes on default installations.
24943 * Avoid streaming uploaded files to the user via index.php. This allows
24944 security-conscious users to serve uploaded files via a different domain, and
24945 thus client-side scripts executed from that domain cannot access the login
24946 cookies. Affects Special:Undelete, img_auth.php and thumb.php.
24947 * When streaming files via index.php, use the MIME type detected from the file
24948 extension, not from the data. This reduces the XSS attack surface.
24949 * Blacklist redirects via Special:Filepath. Such redirects exacerbate any XSS
24950 vulnerabilities involving uploads of files containing scripts.
24951 * Internationalisation updates.
24953 == MediaWiki 1.12.1 ==
24955 Changes since 1.12.0:
24956 * (bug [[bugzilla:13522|13522]]) Fix fatal error in Parser::extractTagsAndParams
24957 * (bug [[bugzilla:12077|12077]]) Fix HTML nesting for TOC
24958 * (bug [[bugzilla:13532|13532]]) Use proper timestamp call when reverting images
24959 * (bug [[bugzilla:13649|13649]], [[bugzilla:14084|14084]]) Bad call to
24961 * (bug [[bugzilla:13770|13770]]) Use Preprocessor_Hash by default to avoid
24962 missing DOM module errors
24963 * (bug [[bugzilla:13442|13442]]) API: Missing pages in prop=langlinks and
24964 prop=extlinks are now handled properly.
24965 * (bug [[bugzilla:13482|13482]]) API: Disabled search types handled properly
24966 * (bug [[bugzilla:13836|13836]]) API: Fixed fatal errors resulting from
24967 combining iiprop=metadata with format=xml
24968 * (bug [[bugzilla:11633|11633]]) API: Explicitly convert redirect titles to
24969 strings due to PHP's very weak typing on array keys.
24970 * API: Fixing main page display in meta=siteinfo
24971 * (bug [[bugzilla:11719|11719]]) API: Remove trailing blanks in YAML output.
24972 * (bug [[bugzilla:13718|13718]]) API: Return the proper continue parameter for
24974 * Security: Work around misconfiguration by requiring strict comparisons for
24975 in_array in User::isAllowed().
24976 * Security: Fixed XSS vulnerability in useskin parameter.
24978 == MediaWiki 1.12.0 ==
24980 This is the quarterly branch release of [[MediaWiki]] for Winter 2008.
24982 MediaWiki is now using a "continuous integration" development model with
24983 quarterly snapshot releases. The latest development code is always kept "ready
24984 to run", and in fact runs our own sites on [[wikipedia:|Wikipedia]].
24986 Release branches will continue to receive security updates for about a year
24987 from first release, but nonessential bugfixes and feature developments will be
24988 made on the development trunk and appear in the next quarterly release.
24990 Those wishing to use the latest code instead of a branch release can obtain it
24991 from source control: [[Download from SVN]].
24993 Changes since 1.12.0rc1:
24994 *(bug [[bugzilla:13359|13359]]) Double-escaping in [[Special:Allpages]].
24995 *Localization updates.
24997 == MediaWiki 1.12.0rc1 ==
24999 This is a release candidate of the Winter 2008 quarterly snapshot release of
25002 MediaWiki is now using a "continuous integration" development model with
25003 quarterly snapshot releases. The latest development code is always kept "ready
25004 to run", and in fact runs our own sites on [[wikipedia:|Wikipedia]].
25006 Release branches will continue to receive security updates for about a year
25007 from first release, but nonessential bugfixes and feature developments will be
25008 made on the development trunk and appear in the next quarterly release.
25010 Those wishing to use the latest code instead of a branch release can obtain it
25011 from source control: [[Download from SVN]].
25013 This is the Winter 2007 quarterly release.
25015 MediaWiki is now using a "continuous integration" development model with
25016 quarterly snapshot releases. The latest development code is always kept
25017 "ready to run", and in fact runs our own sites on Wikipedia.
25019 Release branches will continue to receive security updates for about a year
25020 from first release, but nonessential bugfixes and feature developments
25021 will be made on the development trunk and appear in the next quarterly release.
25023 Those wishing to use the latest code instead of a branch release can obtain
25024 it from source control: https://www.mediawiki.org/wiki/Download_from_SVN
25026 === Configuration changes in 1.12 ===
25027 * Marking edits as bot edits with Special:Contributions?bot=1 now requires the
25028 markbotedit permission, rather than the rollback permission previously used.
25029 This permission is assigned by default to the sysop group.
25030 * MediaWiki now checks if serialized files are out of date. New configuration
25031 variable $wgCheckSerialized can be set to false to enable old behavior (i.e.
25032 to not check and assume they are always up to date)
25033 * The rollback permission can now be rate-limited using the normal mechanism.
25034 * New configuration variable $wgExtraLanguageNames
25035 * Behavior of $wgAddGroups and $wgRemoveGroups changed. New behavior:
25036 * * Granting the userrights privilege allows arbitrary changing of rights.
25037 * * Without the userrights privilege, a user will be able to add and/or
25038 remove the groups specified in $wgAddGroups and $wgRemoveGroups for
25039 any groups they are in.
25040 * New permission userrights-interwiki for changing user rights on foreign wikis.
25041 * $wgImplicitGroups for groups that are hidden from Special:Listusers, etc.
25042 * $wgAutopromote: automatically promote users who match specified criteria
25043 * $wgGroupsAddToSelf, $wgGroupsRemoveFromSelf: allow users to add or remove
25044 themselves from specified groups via Special:Userrights.
25045 * When $wgUseTidy has been enabled, PHP's Tidy module is now used if it is
25046 present, in preference to an external Tidy executable which may or may not
25047 be present. To force use of external Tidy even when the PHP module is
25048 available, set $wgTidyInternal to false.
25051 === New features in 1.12 ===
25052 * (bug 10735) Add a warning for non-descriptive filenames at Special:Upload
25053 * Add {{filepath:}} parser function to get full path to an uploaded file,
25054 complementing {{fullurl:}} for pages.
25055 * (bug 11136) If using Postgres, search path is explicitly set if wgDBmwschema
25056 is not set to 'mediawiki', allowing multiple mediawiki instances per user.
25057 * (bug 11151) Add descriptive <title> to revision history page
25058 * (bug 5412) Add feed links for the site to all pages
25059 * (bug 11353) Add ability to retrieve raw section content via action=raw
25060 * (bug 6909) Show relevant deletion log lines when uploading a previously
25062 * On SkinTemplate based skins (like MonoBook), omit confusing "edit"/"view
25063 source" tab entirely if the page doesn't exist and the user isn't allowed to
25065 * Clarify instructions given when an exception is thrown
25066 * AuthPlugin added strictUserAuth() method to allow per-user override
25067 of the strict() authentication behavior.
25068 * (bug 7872) Deleted revisions can now be viewed as diffs showing changes
25069 against the previous revision, whether currently deleted or live.
25070 * Added tooltips for the "Go" and "Search" buttons
25071 * (bug 11649) Show input form when Special:Whatlinkshere has no parameters
25072 * isValidEmailAddr hook added to User method of that name, to allow, e.g., re-
25073 stricting e-mail addresses to a specific domain
25074 * Removed "Clear" link in watchlist editor tools, as people were afraid to
25075 click it. Existing clear links will fall back to the raw editor, which is
25076 very easy to clear your watchlist with.
25077 * (bug 1405) Add wgUseNPPatrol option to control patroling for new articles
25078 on Special:Newpages
25079 * LogLine hook added to allow formatting custom entries in Special:Log.
25080 * Support for Iranian calendar
25081 * (bug 1401) Allow hiding logged-in users, bots and patrolled pages on
25083 * ChangesListInsertArticleLink hook added for adding extra article info to RC.
25084 * MediaWikiPerformAction hook added for diverting control after the main
25085 globals have been set up but before any actions have been taken.
25086 * BeforeWatchlist hook added for filtering or replacing watchlist.
25087 * SkinTemplateTabAction hook added for altering the properties of tab links.
25088 * OutputPage::getRedirect public method added.
25089 * (bug 11848, 12506) Allow URL parameters 'section', 'editintro' and 'preload'
25090 in Special:Mypage and Special:Mytalk
25091 * Add ot=raw to Special:Allmessages
25092 * Support for Hebrew calendar
25093 * Support for Hebrew numerals in dates and times
25094 * (bug 11315) Signatures can be configured in [[MediaWiki:Signature]] and
25095 [[MediaWiki:Signature-anon]]
25096 * Signatures for anonymous users link to Special:Contributions page rather than
25098 * Added --override switch for disabled pages in updateSpecialPages.php
25099 * Provide a unique message (ipb_blocked_as_range) if unblock of a single IP
25101 because it is part of a blocked range.
25102 * (bug 3973) Use a separate message for the email content when an account is
25103 created by another user
25104 * dumpTextPass.php can spawn fetchText.php as a subprocess, which should restart
25105 cleanly if database connections fail unpleasantly.
25106 * (bug 12028) Add Special:Listbots as shortcut for Special:Listusers/bot
25107 * (bug 9633) Add a predefined list of delete reasons to the deletion form
25108 * Show a warning message when creating/editing a user (talk) page but the user
25110 * (bug 8396) Ignore out-of-date serialised message caches
25111 * (bug 12195) Undeleting pages now requires 'undelete' permission
25112 * (bug 11810) Localize displayed semicolons
25113 * (bug 11657) Support for Thai solar calendar
25114 * (bug 943) RSS feed for Recentchangeslinked
25115 * Introduced AbortMove hook
25116 * (bug 2919) Protection of nonexistent pages with regular protection interface.
25117 * Special:Upload now lists permitted/prohibited file extensions.
25118 * Split ambiguous filetype-badtype message into two new messages,
25119 filetype-unwanted-type and filetype-banned-type.
25120 * Added link to the old title in Special:Movepage
25121 * On Special:Movepage, errors are now more noticeable.
25122 * It is now possible to change rights on other local wikis without the MakeSysop
25124 * Add HTML ID's mw-read-only-warning and mw-anon-edit-warning to warnings when
25125 editing to allow CSS styling.
25126 * Parser now returns list of sections
25127 * When a user is prohibited from creating a page, a title of "View source"
25128 makes no sense, and there should be no "Return to [[Page]]" link.
25129 * (bug 12486) Protected titles now give a warning for privileged editors.
25130 * (bug 9939) Special:Search now sets focus to search input box when no existing
25132 * For Special:Userrights, use GET instead of POST to search for users.
25133 * Allow subpage syntax for Special:Userrights, i.e., Special:Userrights/Name.
25134 * When submitting changes on Special:Userrights, show the full form again, not
25135 just the search box.
25136 * Added exception hooks
25137 * (bug 12574) Allow bots to specify whether an edit should be marked as a bot
25138 edit, via the parameter 'bot'. (Default: '1')
25139 * (bug 12536) User should be able to get MediaWiki version from any page
25140 * (bug 12622) A JavaScript constant to declare whether api.php is available
25141 * Add caching to the AJAX search
25142 * Add APCOND_INGROUPS
25143 * Add DBA caching to installer
25144 * (bug 12585) Added a bunch of parameters to the revertpage message
25145 * Support redirects in image namespace
25146 * (bug 10049) Prefix index search and namespaces in Special:Withoutinterwiki
25147 * (bug 12668) Support for custom iPhone bookmark icon via $wgAppleTouchIcon
25148 * Add option to include templates in Special:Export.
25149 * (bug 12655) Added $wgUserEmailUseReplyTo config option to put sender
25150 address in Reply-To instead of From for user-to-user emails.
25151 This protects against SPF problems and privacy-leaking bounce messages
25152 when using mailers that set the envelope sender to the From header value.
25153 * (bug 11897) Add alias [[Special:CreateAccount]] & [[Special:Userlogin/signup]]
25154 for Special:Userlogin?type=signup
25155 * (bug 12214) Add a predefined list of delete reasons to the file deletion form
25156 * Merged backends for OpenSearch suggestions and AJAX search.
25157 Both now accept namespace prefixes, handle 'Media:' and 'Special:' pages,
25158 and reject interwiki prefixes. PrefixSearch class centralizes this code,
25159 and the backend part can be overridden by the PrefixSearchBackend hook.
25160 * (bug 10365) Localization of Special:Version
25161 * When installing using Postgres, the Pl/Pgsql language is now checked for
25162 and installed when at the superuser level.
25163 * The default robot policy for the entire wiki is now configurable via the
25164 $wgDefaultRobotPolicy setting.
25165 * (bug 12239) Use different separators for autocomments
25166 * (bug 12857) Patrol link on new pages should clear floats
25167 * (bug 12968) Render redirect wikilinks in a redirect class for customization
25169 * EditPageBeforeEditButtons hook added for altering the edit buttons below the
25172 === Bug fixes in 1.12 ===
25174 * Subpages are now indexed for searching properly when using PostgreSQL
25175 * (bug 3846) Suppress warnings from, e.g. open_basedir when scanning for
25176 ImageMagick, diff3 et al. during installation [patch by Jan Reininghaus]
25177 * (bug 7027) Shift handling of deletion permissions-checking to
25178 getUserPermissionsErrors.
25179 * Login and signup forms are now more correct for right-to-left languages.
25180 * (bug 5387) Block log items on RecentChanges don't make use of possible
25182 * (bug 11211) Pass, as a parameter to the protectedpagetext interface
25183 message, the level of protection.
25184 * (bug 9611) Supply the blocker and reason for the cantcreateaccounttext
25186 * (bug 8759) Fixed bug where rollback was allowed on protected pages for wikis
25187 where rollback is given to non-sysops.
25188 * (bug 8834) Split off permission for editing user JavaScript and CSS from
25189 editinterface to a new permission key editusercssjs.
25190 * (bug 11266) Set fallback language for Fulfulde (ff) to French
25191 * (bug 11179) Include image version deletion comment in public log
25192 * Fixed notice when accessing special page without read permission and whitelist
25194 * (bug 9252) Fix for tidy funkiness when using editintro mode
25195 * (bug 4021) Fix for MySQL wildcard search
25196 * (bug 10699) Fix for MySQL phrase search
25197 * (bug 11321) Fix width of gallerybox when option "width=xxx" is used
25198 * (bug 7890) Special:BrokenRedirects links deleted redirects to a non-existent
25200 * Fix initial statistics when installing: add correct values
25201 * (bug 11342) Fix several 'returnto' links in permissions/error pages which
25202 linked to the main page instead of targetted page
25203 * Strike the link to the redirect rather than using an asterisk in
25204 Special:Listredirects
25205 * (bug 11355) Fix false positives in Safe Mode and other config detection
25206 when boolean settings are disabled with 'Off' via php_admin_value/php_value
25207 * (bug 11292) Fixed unserialize errors with Postgres by creating special Blob
25209 * (bug 11363) Make all metadata fields bytea when using Postgres.
25210 * (bug 11331) Add buildConcat() and use CASE not IF for DB compatibility. Make
25211 oldimage cascade delete via image table for Postgres, change fa_storage_key
25213 * (bug 11438) Live Preview chops returned text
25214 * Show the right message on account creation when the user is blocked
25215 * (bug 11450) Fix creation of objectcache table on upgrade
25216 * Fix namespace selection after submit of Special:Newpages
25217 * Make input form of Special:Newpages nicer for RTL wikis
25218 * (bug 11462) Fix typo in LanguageGetSpecialPageAliases hook name
25219 * (bug 11474) Fix unintentional fall-through in math error handling
25220 * (bug 11478) Fix undefined method call in file deletion interface
25221 * (bug 278) Search results no longer highlight incorrect partial word matches
25222 * Compatibility with incorrectly detected old-style DJVU mime types
25223 * (bug 11560) Fix broken HTML output from weird link nesting in edit comments.
25224 Nested links (as in image caption text) still don't work _right_ but they're
25226 * (bug 9718) Remove unnecessary css from main.css causing spacing issues on
25228 * (bug 11574) Add an interface message loginstart, which, similarly to loginend,
25229 appears just before the login form. Patch by MinuteElectron.
25230 * Do not cache category pages if using 'from' or 'until'
25231 * Created new hook getUserPermissionsErrors, to go with userCan changes.
25232 * Diff pages did not properly display css/js pages.
25233 * (bug 11620) Add call to User::isValidEmailAddr during accout creation.
25234 * (bug 11629) If $wgEmailConfirmToEdit is true, require people to supply an
25235 email address when registering.
25236 * (bug 11612) Days to show in recent changes cannot be larger than 7
25237 * (bug 11131) Change filearchive width/height columns to int for Postgres
25238 * Support plural in undeleted{revisions,revisions-files,files}
25239 * (bug 11343) If the database is read-only, ensure that undelete fails.
25240 * (bug 11690) Show revert link for page moves in Special:Log to allowed users
25242 * Initial-lowercase prefix checks in namespaceDupes.php now actually work.
25243 * Fix regression in LinkBatch.php breaking PHP 5.0
25244 * (bug 11452) wfMsgExt uses sometimes wrong language object for parsing magic
25245 words when called with options ''parsemag'' or ''content''.
25246 * (bug 11727) Support plural in 'historysize' message
25247 * (bug 11744) Incorrect return value from Title::getParentCategories()
25248 * (bug 11762) Fix native language name of Akan (ak)
25249 * (bug 11722) Fix inconsistent case in unprotect tabs
25250 * (bug 11795) Be more paranoid about confirming accept-encoding header is
25252 * (bug 11809) Use formatNum() for more numbers
25253 * (bug 11818) Fix native language name of Inuktitut (iu)
25254 * Remove all commas when parsing float numbers in sorted tables
25255 * Limit text field of deletion, protection and user rights changes reasons to
25256 255 characters (already restricted in the database)
25257 * In the deletion default reasons, calculate how much text to get from the
25258 article text, rather than getting 150 characters (which may be too much)
25259 * Add two messages for Special:Blockme which were used but undefined
25260 * (bug 11921) Support plural in message number_of_watching_users_pageview
25261 * If an IP address is blocked as part of a rangeblock, attempting to unblock
25262 the single IP should not unblock the entire range.
25263 * (bug 6695) Fix native language name of Southern Sotho (Sesotho) (st)
25264 * Make action=render follow redirects by default
25265 * If restricted read access was enabled, whitelist didn't work with special
25266 pages which had spaces in theirs names
25267 * If restricted read access was enabled, requests for non-existing special pages
25269 * Feeds for recent changes now provide correct URLs for the change, not just
25271 * Check for if IP is blocked as part of a range when unblocking (see above bug-
25272 fix) was faulty. Now fixed.
25273 * Fixed wpReason URL parameter to action=delete.
25274 * Do not force a password for account creation by email
25275 * Ensure that rate-limiting is applied to rollbacks.
25276 * Make a better rate-limiting error message (i.e. a normal MW error,
25277 rather than an "Internal Server Error").
25278 * Do not present an image bigger than the source when 'frameless' option is used
25279 (to be consistent with the 'thumb' option now)
25280 * Support {{PLURAL}} for import log
25281 * Make sure that the correct log entries are shown on Special:Userrights even
25282 for users with special characters in their names
25283 * The number of watching users in watchlists was always reported as 1
25284 * namespaceDupes.php no longer dies when coming across an illegal title
25285 * (bug 12143) Do not show a link to patrol new pages for non existent pages
25286 * (bug 12166) Fix XHTML validity for Special:Emailuser
25287 * (bug 11346) Users who cannot edit a page can now no longer unprotect it.
25288 * (bug 451) Add a generic Traditional / Simplified Chinese conversion table,
25289 instead of a Traditional conversion with Taiwan variant, and a Simplified
25290 conversion with China variant.
25291 * (bug 12178) Fix wpReason parameter to action=delete, again.
25292 * Graceful behavior for updateRestrictions.php if a page already has records
25293 in the page_restrictions matching its old page_restrictions field.
25294 May help with odd upgrade issues or race condition.
25295 * (bug 11993) Remove contentsub "revision history"
25296 * (bug 11952) Ensure we quote_ident() all schema names as needed
25297 inside of the DatabasePostgres.php file.
25298 * (bug 12184) Exceptions now sent to stderr instead of stdout for command-line
25299 scripts, making for cleaner reporting during batch jobs. PHP errors will also
25300 be redirected in most cases on PHP 5.2.4 and later, switching 'display_errors'
25301 to 'stderr' at runtime.
25302 * (bug 12148) Text highlight wasn't applied to cleanly deleted and added
25303 lines in diff output
25304 * (bug 10166) Fix a PHP warning in Language::getMagic
25305 * Only mark rollback edits as minor if the user can normally mark edits minor
25306 * Escape page names in the move successful page (e.g. for pages with two
25308 * (bug 12145) Add localized names of kk-variants
25309 * (bug 12259) Localize the numbers in deleted pages on the sysop view
25310 * Set proper page title for successful file deletion
25311 * (bug 11221) Do not show 'Compare selected versions' button for a history page
25312 with one revision only
25313 * (bug 12267) Set the default date format to Thai solar calender for the Thai
25315 * (bug 10184) Extensions' stylesheets and scripts should be loaded before
25316 user-customized ones (like Common.css, Common.js)
25317 * (bug 12283) Special:Newpages forgets parameters
25318 * (bug 12031) All namespaces doesn't work in Special:Newpages
25319 * (bug 585) Only create searchindex replica table for parser tests if db is
25321 * Allow --record option if parserTests.php to work when using Postgres
25322 * (bug 12296) Simplify cache epoch in default LocalSettings.php
25323 * (bug 12346) XML fix when body double-click and click handlers are present
25324 * Fix regression -- missing feed links in sidebar on Special:Recentchanges
25325 * (bug 12371) Handle more namespace case variants in namespaceDupes.php
25326 * (bug 12380) Bot-friendly EditPage::spamPage
25327 * (bug 8066) Spaces can't be entered in special page aliases
25328 * Hide undo link if user can't edit article
25329 * (bug 12416) Fix password setting for createAndPromote.php
25330 * (bug 3097) Inconsistently usable titles containing HTML character entities
25331 are now forbidden. A run of cleanupTitles.php will fix up existing pages.
25332 * (bug 12446) Permissions check fix for undelete link
25333 * (bug 12451) AJAX title normalization tweaks
25334 * When a user creating a page is not allowed to either create the page nor edit
25335 it, all applicable reasons are now shown.
25336 * (bug 11428) Allow $wgScript inside $wgArticlePath when emulating PATH_INFO
25337 Fixes 'root'-style rewrite configurations
25338 * (bug 12493) Removed hardcoded MAX_FILE_SIZE from Special:Import upload form
25339 * (bug 12489) Special:Userrights listed in restricted section again
25340 * (bug 12553) Fixed invalid XHTML in edit conflict screen
25341 * (bug 12505) Fixed section=0 with action=raw
25342 * (bug 12614) Do not log user rights change that didn't change anything
25343 * (bug 12584) Don't reset cl_timestamp when auto-updating sort key on move
25344 * (bug 12588) Fix selection in namespace selector on Special:Newpages
25345 * Use only default options when generating RSS and Atom syndication links.
25346 This should help prevent infinite link loops that some software may follow,
25347 and will generally keep feed behavior cleaner.
25348 * (bug 12608) Unifying the spelling of getDBkey() in the code.
25349 * (bug 12611) Bot flag ignored in recent changes
25350 * (bug 12617) Decimal and thousands separators for Romanian
25351 * (bug 12567) Fix for misformatted read-only messages on edit, protect.
25352 Also added proper read-only checks to several special pages.
25353 Have removed read-only checks from the general user permission framework.
25354 * Creating a site with a name containing '#' is no longer permitted, since the
25355 name will not work (but $wgSiteName is not checked if manually set).
25356 * (bug 12695) Suppress dvips verbiage from web server error log
25357 * (bug 12716) Unprotecting a non-protected page leaves a log entry
25358 * Log username blocks with canonical form of name instead of input form
25359 * (bug 11593, 12719) Fixes for overzealous invocation of thumb.php.
25360 Non-image handlers and full-size images may now decline it, fixing
25361 mystery failures when using $wgThumbnailScriptPath.
25362 * (bug 12327) Comma in username no longer disrupts mail headers
25363 * (bug 6436) Localization of Special:Import XML parser Error message(s).
25364 * Security fix for API on MSIE
25365 * (bug 12768) Database query syntax error in maintenance/storage/compressOld.inc
25366 * (bug 12753) Empty captions in MediaWiki:Sidebar result in PHP errors
25367 * (bug 12790) Page protection is not logged when edit-protection is used
25368 and move-protection is not
25369 * (bug 12793) Fix for restricted namespaces/pages in Special:Export
25370 * Fix for Special:Export so it doesn't ignore the page named '0'
25371 * Don't display rollback link if the user doesn't have all required permissions
25372 * The comment of a time-limited protection now contains the date in the default
25374 * (bug 12880) wfLoadExtensionMessages does not use $fallback from MessagesXx.php
25375 * (bug 12885) Correction for Russian convertPlural function
25376 * (bug 12768) Make DatabasePostgres->hasContraint() schema aware.
25377 * (bug 12735) Truncate usernames in comments using mb_ functions.
25378 * (bug 12892) Poor tab indexing on "delete file" form
25379 * (bug 12660) When creating an account by e-mail, do not send the creator's IP
25381 * (bug 12931) Fix wrong global variable in SpecialVersion
25382 * (bug 12919) Use 'deletedrevision' message as content when deleting an old file
25384 * (bug 12952) Using Nosuchusershort instead of Nosuchuser when account creation
25386 * (bug 12869) Magnify icon alignment should be adjusted using linked CSS
25387 * Fixing message cache updates for MediaWiki messages moves
25388 * (bug 12815) Signature timestamps were always in UTC, even if the timezone code
25389 in parentheses after them claimed otherwise
25390 * (bug 12732) Fix installer and searching to handle built-in tsearch2 for
25392 * (bug 12784) Change "bool" types to smallint to handle Postgres 8.3 strictness.
25393 * (bug 12301) Allow maintenance/findhooks.php to search hooks in multiple
25395 * (bug 7681, 11559) Cookie values no longer override GET and POST variables.
25396 * (bug 5262) Fully-qualified $wgStylePath no longer corrupted on XML feeds
25397 * (bug 3269) Inaccessible titles ending in '/.' or '/..' now forbidden.
25398 * (bug 12935, 12981) Fully-qualify archive URLs in delete, revert messages
25399 * (bug 12938) Fix template expansion and 404 returns for action=raw with section
25400 * (bug 11567) Fix error checking for PEAR::Mail. UserMailer::send() now returns
25401 true-or-WikiError, which seems to be the calling convention expected by half
25402 its callers already
25403 * (bug 12846) IE rtl.css issue in RTL wikis special:Preferences when selecting
25404 an LTR user language
25405 * (bug 13005) DISPLAYTITLE does not work on preview
25406 * (bug 13004) Fix error on Postgres searches that return too many results.
25408 == Parser changes in 1.12 ==
25410 For help with migration to the MediaWiki 1.12 parser, please visit:
25412 http://meta.wikimedia.org/wiki/Migration_to_the_new_preprocessor
25414 The parser pass order has changed from
25416 * Extension tag strip and render
25417 * HTML normalisation and security
25418 * Template expansion
25423 * Template and extension tag parse to intermediate representation
25424 * Template expansion and extension rendering
25425 * HTML normalisation and security
25428 The main effect of this for the user is that the rules for uncovered syntax
25431 Uncovered main-pass syntax, such as HTML tags, are now generally valid, whereas
25432 previously in some cases they were escaped. For example, you could have "<ta" in
25433 one template, and "ble>" in another template, and put them together to make a
25434 valid <table> tag. Previously the result would have been "<table>".
25436 Uncovered preprocessor syntax is generally not recognised. For example, if you
25437 have "{{a" in Template:A and "b}}" in Template:B, then "{{a}}{{b}}" will be
25438 converted to a literal "{{ab}}" rather than the contents of Template:Ab. This
25439 was the case previously in HTML output mode, and is now uniformly the case in
25440 the other modes as well. HTML-style comments uncovered by template expansion
25441 will not be recognised by the preprocessor and hence will not prevent template
25442 expansion within them, but they will be stripped by the following HTML security
25445 Bug 5678 has been fixed. This has a number of user-visible effects related to
25446 the removal of this double-parse. Please see the wiki page for examples.
25448 Message transformation mode has been removed, and replaced with "preprocess"
25449 mode. This means that some MediaWiki namespace messages may need to be updated,
25450 especially ones which took advantage of the terribly counterintuitive behavior
25451 of the former message mode.
25453 The header identification routines for section edit and for numbering section
25454 edit links have been merged. This removes a significant failure mode and fixes a
25455 whole category of bugs (tracked by bug #4899). Wikitext headings uncovered by
25456 template expansion will still be rendered into a heading tag, and will get an
25457 entry in the TOC, but will not have a section edit link. HTML-style headings
25458 will also not have a section edit link. Valid wikitext headings present in the
25459 template source text will get a template section edit link. This is a major
25460 break from previous behavior, but I believe the effects are almost entirely
25463 The main motivation for making these changes was performance. The new two-pass
25464 preprocessor can skip "dead branches" in template expansion, such as unfollowed
25465 #switch cases and unused defaults for template arguments. This provides a
25466 significant performance improvement in template-heavy test cases taken from
25467 Wikipedia. Parser function hooks can participate in this performance improvement
25468 by using the new SFH_OBJECT_ARGS flag during registration.
25470 The pre-expand include size limit has been removed, since there's no efficient
25471 way to calculate such a figure, and it would now be meaningless for performance
25472 anyway. The "preprocessor node count" takes its place, with a generous default
25475 The context in which XML-style extension tags are called has changed, so
25476 extensions which make use of the parser state may need compatibility changes.
25478 The new preprocessor syntax has been documented in Backus-Naur Form at:
25480 https://www.mediawiki.org/wiki/Preprocessor_ABNF
25482 The ExpandTemplates extension now has the ability to generate an XML parse
25483 tree from wikitext source. This parse tree corresponds closely to the grammar
25484 documented on that page.
25486 === API changes in 1.12 ===
25488 Full API documentation is available at https://www.mediawiki.org/wiki/API
25490 * (bug 11275) Enable descending sort in categorymembers
25491 * (bug 11308) Allow the API to output the image metadata
25492 * (bug 11296) Temporary fix for escaping of ampersands inside links in
25495 * (bug 11405) Expand templates implementation in the API
25496 * (bug 11218) Add option to feedwatchlist to display multiple revisions for each
25498 * (bug 11404) Provide name of exception caught in error code field of internal
25499 api error messages.
25500 * (bug 11534) rvendid doesn't work
25501 * Fixed rvlimit of the revisions query to only enforce the lower query limit if
25502 revision content is requested.
25503 * Include svn revision number (if install is checked-out from svn) in siteinfo
25505 * (bug 11173) Allow limited wikicode rendering via api.php
25506 * (bug 11572) API should provide interface for expanding templates
25507 * (bug 11569) Login should return the cookie prefix
25508 * (bug 11632) Breaking change: Specify the type of a change in the recentchanges
25509 list as 'edit', 'new', 'log' instead of 0, 1, 2, respectively.
25510 * Compatibility fix for PHP 5.0.x.
25511 * Add rctype parameter to list=recentchanges that filters by type
25512 * Add apprtype and apprlevel parameters to filter list=allpages by protection
25514 * Add apdir parameter to enable listing all pages from Z to A
25515 * (bug 11721) Use a different title for results than for the help page.
25516 * (bug 11562) Added a user_registration parameter/field to the list=allusers
25518 * (bug 11588) Preserve document structure for empty dataset in backlinks query.
25519 * Outputting list of all user preferences rather than having to request them by
25521 * (bug 11206) api.php should honor maxlag
25522 * Make prop=info check for restrictions in the old format too.
25523 * Add apihighlimits permission, default for sysops and bots
25524 * Add limit=max to use maximal limit
25525 * Add action=parse to render parser output. Use it instead of action=render
25526 which has been removed
25527 * Add rvtoken=rollback to prop=revisions
25528 * Add meta=allmessages to get messages from site's messages cache.
25529 * Use bold and italics highlighting only in API help
25530 * Added action={block,delete,move,protect,rollback,unblock,undelete} and
25531 list={blocks,deletedrevs}
25532 * Fixed sessionid attribute in action=login
25533 * Standardized limits. Revisions and Deletedrevisions formerly using
25534 200 / 10000, now 500 / 5000, in line with other modules.
25535 * Added list=allcategories module
25536 * (bug 12321) API list=blocks reveals private data
25537 * Fix output of wfSajaxSearch
25538 * (bug 12413) meta=userinfo missing <query> tag
25539 * Add list of sections to action=parse output
25540 * Added action=logout
25541 * Added cascade flag to prop=info&inprop=protections
25542 * Added wlshow parameter to list=watchlist, similar to rcshow
25543 (list=recentchanges)
25544 * Added support for image thumbnailing to prop=imageinfo
25545 * action={login,block,delete,move,protect,rollback,unblock,undelete} now must be
25547 * prop=imageinfo interface changed: iihistory replaced by iilimit, iistart and
25549 * Added amlang parameter to meta=allmessages
25550 * Added apfilterlanglinks parameter to list=allpages, replacing
25551 query.php?what=nolanglinks
25552 * (bug 12718) Added action=paraminfo module that provides information about API
25553 modules and their parameters
25554 * Added iiurlwidth and iiurlheight parameters to prop=imageinfo
25555 * Added format=txt and format=dbg, imported from query.php
25556 * Added uiprop=editcount to meta=userinfo
25557 * Added list=users which fetches user information
25558 * Added list=random which fetches a list of random pages
25559 * Added page parameter to action=parse to facilitate parsing of existing pages
25560 * Added uiprop=ratelimits to meta=userinfo
25561 * Added siprop=namespacealiases to meta=siteinfo
25562 * Made multiple values for ucuser possible in list=usercontribs
25563 * (bug 12944) Added cmstart and cmend parameters to list=categorymembers
25564 * Allow queries to have a where range that does not match the range field
25566 == MediaWiki 1.11 ==
25568 == MediaWiki 1.11.2 ==
25572 This is a security release of the Fall 2007 snapshot release of MediaWiki.
25573 Possible cross-site information leaks using the callback parameter for
25574 JSON-formatted results in the API are prevented by dropping user credentials.
25576 MediaWiki release versions prior to 1.11 are not vulnerable, as they do not
25577 include the callback feature which allows client-side JavaScript on other sites
25580 Changes in this release:
25582 * User credentials are dropped for API JSON requests using a callback
25583 * Edit tokens are not reported for API JSON requests using a callback
25585 == MediaWiki 1.11.1 ==
25589 This is a security and bugfix release of the Fall 2007 snapshot release of
25590 MediaWiki. A potential XSS injection vector affecting api.php only for
25591 Microsoft Internet Explorer users has been closed.
25593 Changes in this release:
25594 * (bug [[bugzilla:11450|11450]]) Fix creation of objectcache table on upgrade
25595 * (bug [[bugzilla:11462|11462]]) Fix typo in LanguageGetSpecialPageAliases hook
25597 * Fix regression in LinkBatch.php breaking PHP 5.0
25598 * Security fix for API on MSIE
25600 To work around the vulnerability without upgrading, you may disable the API if
25602 :[[Manual:$wgEnableAPI|$wgEnableAPI]] = false;
25604 Not vulnerable versions:
25609 * 1.8 any version (if $wgEnableAPI has been left off)
25611 Vulnerable versions:
25612 * 1.11 <= 1.11.0rc1
25615 * 1.8 any version (if $wgEnableAPI has been switched on)
25617 MediaWiki 1.7 and below are not affected as they do not include the API
25618 functionality, however the BotQuery extension is similarly vulnerable unless
25619 updated to the latest SVN version.
25621 == MediaWiki 1.11.0 ==
25625 This is the Fall 2007 snapshot release of MediaWiki.
25627 MediaWiki is now using a "continuous integration" development model with
25628 quarterly snapshot releases. The latest development code is always kept "ready
25629 to run", and in fact runs our own sites on Wikipedia.
25631 Release branches will continue to receive security updates for about a year
25632 from first release, but nonessential bugfixes and feature developments will be
25633 made on the development trunk and appear in the next quarterly release.
25635 Those wishing to use the latest code instead of a branch release can obtain it
25636 from source control: [[Download from SVN]]
25638 This is the Summer 2007 branch release of MediaWiki.
25640 MediaWiki is now using a "continuous integration" development model with
25641 quarterly snapshot releases. The latest development code is always kept
25642 "ready to run", and in fact runs our own sites on Wikipedia.
25644 Release branches will continue to receive security updates for about a year
25645 from first release, but nonessential bugfixes and feature developments
25646 will be made on the development trunk and appear in the next quarterly release.
25648 Those wishing to use the latest code instead of a branch release can obtain
25649 it from source control: https://www.mediawiki.org/wiki/Download_from_SVN
25651 == Changes since 1.11.0rc1 ==
25653 A possible HTML/XSS injection vector in the API pretty-printing mode has been
25656 The vulnerability may be worked around in an unfixed version by simply
25657 disabling the API interface if it is not in use, by adding this to
25658 [[Manual:LocalSettings.php|LocalSettings.php]]:<br />
25659 <code>[[Manual:$wgEnableAPI|$wgEnableAPI]] = false;</code> <br />
25660 (This is the default setting in 1.8.x.)
25662 Not vulnerable versions:
25668 Vulnerable versions:
25669 * 1.11 <= 1.11.0rc1
25672 * 1.8 <= 1.8.4 (if [[Manual:$wgEnableAPI|$wgEnableAPI]] has been switched on)
25674 MediaWiki 1.7 and below are not affected as they do not include the faulty
25675 function, however the [[Extension:BotQuery|BotQuery extension]] is similarly
25676 vulnerable unless updated to the latest SVN version.
25678 == Configuration changes since 1.10 ==
25680 * $wgThumbUpright - Adjust width of upright images when parameter 'upright' is
25682 * $wgAddGroups, $wgRemoveGroups - Finer control over who can assign which
25684 * $wgEnotifImpersonal, $wgEnotifUseJobQ - Bulk mail options for large sites
25685 * $wgShowHostnames - Expose server host names through the API and HTML comments
25686 * $wgSaveDeletedFiles has been removed, the feature is now enabled
25689 == New features since 1.10 ==
25691 * (bug 8868) Separate "blocked" message for autoblocks
25692 * Adding expiry of block to block messages
25693 * Links to redirect pages in categories are wrapped in
25694 <span class="redirect-in-category"></span>
25695 * Introduced 'ImageOpenShowImageInlineBefore' hook; see docs/hooks.txt for
25697 * (bug 9628) Show warnings about slave lag on Special:Contributions,
25699 * (bug 8818) Expose "wpDestFile" as parameter $1 to "uploaddisabledtext"
25700 * Introducing new image keyword 'upright' and corresponding variable
25701 $wgThumbUpright. This allows better proportional view of upright images
25702 related to landscape images on a page without nailing the width of upright
25703 images to a fix value which makes views for anon unproportional and user
25704 preferences useless
25705 * (bug 6072) Introducing 'border' keyword to the [[Image:]] syntax
25706 * Introducing 'frameless' keyword to [[Image:]] syntax which respects the
25707 user preferences for image width like 'thumb' but without a frame.
25708 * (bug 7960) Link to "what links here" for each "what links here" entry
25709 * Added support for configuration of an arbitrary number of commons-style
25711 * Added a Content-Disposition header to thumb.php output
25712 * Improved thumb.php error handling
25713 * Display file history on local image description pages of shared images
25714 * Added $wgArticleRobotPolicies
25715 * (bug 10076) Additional parameter $7 added to MediaWiki:Blockedtext
25716 containing, the ip, ip range, or username whose block is affecting the
25717 * (bug 7691) Show relevant lines from the deletion log when re-creating a
25718 previously deleted article
25719 * Added variables 'wgRestrictionEdit' and 'wgRestrictionMove' for JS to header
25720 * (bug 9898) Allow viewing all namespaces in Special:Newpages
25721 * (bug 10139) Introduce 'EditSectionLink' and 'EditSectionLinkForOther' hooks;
25722 see docs/hooks.txt for details
25723 * (bug 9769) Provide "watch this page" toggle on protection form
25724 * (bug 9886) Provide clear example "stub link" in Special:Preferences
25725 * (bug 10055) Populate email address and real name properties of User objects
25726 passed to the 'AbortNewAccount' hook
25727 * Show result of Special:Booksources in wiki content language always, it's
25728 normally better maintained than the generic list from the standard message
25730 * (bug 7997) Allow users to be blocked from using Special:Emailuser
25731 * (bug 8989) Blacklist 'mhtml' and 'mht' files from upload
25732 * (bug 8760) Allow wiki links in "protectexpiry" message
25733 * (bug 5908) Add "DEFAULTSORTKEY" and "DEFAULTCATEGORYSORT" aliases for
25734 "DEFAULTSORT" magic word
25735 * (bug 10181) Support the XCache object caching mechanism
25736 * (bug 9058) Introduce '--aconf' option for all maintenance scripts, to provide
25737 a path to the AdminSettings.php file
25738 * (bug 8781) Remind users to check file permissions for LocalSettings.php
25740 * Use shared.css for all skins and oldshared.css in place of common.css for
25741 pre-Monobook skins. As always, modifications should go in-wiki to MediaWiki:
25742 Common.css and MediaWiki:Monobook.css.
25743 * (bug 8869) Introduce Special:Uncategorizedtemplates
25744 * (bug 8734) Different log message when article protection level is changed
25745 * (bug 8458, 10338) Limit custom signature length to $wgMaxSigChars Unicode
25747 * (bug 10096) Added an ability to query interwiki map table
25748 * On reupload, add a null revision to the image description page
25749 * Group log output by date
25750 * Kurdish interface latin/arabic writing system with transliteration
25751 * Support wiki text in all query page headers
25752 * Add 'Orphanedpages' as an alias to Special:Lonelypages
25753 * (bug 9328) Use "revision-info-current" message in place of "revision-info"
25754 when viewing the current revision of a page, if available
25755 * (bug 8890) Enable wiki text for "license" message
25756 * Throw a showstopper exception when a hook function fails to return a value.
25757 Forgetting to give a 'true' return value is a very common error which tends
25758 to cause hard-to-track-down interactions between extensions.
25759 * Use $wgJobClasses to determine the correct Job to instantiate for a particular
25760 queued task; allows extensions to introduce custom jobs
25761 * (bug 10326) AJAX-based page watching and unwatching has been cleaned up and
25762 enabled by default.
25763 * Added option to install to MyISAM
25764 * (bug 9250) Remove hardcoded minimum image name length of three characters
25765 * Fixed DISPLAYTITLE behavior to reject titles which don't normalise to the
25766 same title as the current page, and enabled by default
25767 * Wrap site CSS and JavaScript in a <pre> tag, like user JS/CSS
25768 * (bug 10196) Add classes and dir="ltr" to the <pre>s on CSS and JS pages (new
25769 classes: mw-code, mw-css, mw-js)
25770 * (bug 6711) Add $wgAddGroups and $wgRemoveGroups to allow finer control over
25771 usergroup assignment.
25772 * Introduce 'UserEffectiveGroups' hook; see docs/hooks.txt for more information
25773 * (bug 10387) Detect and handle '.php5' extension environments at install time
25774 * Introduce 'ShowRawCssJs' hook; see docs/hooks.txt for more information
25775 * (bug 10404) Show rights log for the selected user in Special:Userrights
25776 * New javascript for upload page that will show a warning if a file with the
25777 "destination filename" already exists.
25778 * Add 'editsection-brackets' message to allow localization (or removal) of the
25779 brackets in the "[edit]" link for sections
25780 * (bug 10437) Move texvc styling to shared.css
25781 * Introduce "raw editing" mode for the watchlist, to allow bulk additions,
25782 removals, and convenient exporting of watchlist contents
25783 * Show "undo" links in page histories
25784 * Option to jump to specified time period in user contributions
25785 * Improved feedback on "rollback success" page
25786 * Show distinct 'namespaceprotected' message to users when namespace protection
25787 prevents page editing
25788 * (bug 9936) Per-edit suppression of preview-on-first edit with "preview=no"
25789 * Allow showing a one-off preview on first edit with "preview=yes"
25790 * (bug 9151) Remove timed redirects on "Return to X" pages for accessibility.
25791 * Link to user logs in toolbox when viewing a user page
25792 * (bug 10508) Allow HTML attributes on <gallery>
25793 * (bug 1962) Allow HTML attributes on <math>
25794 * (bug 10530) Introduce optional "sp-contributions-explain" message for
25795 additional explanation in Special:Contributions
25796 * (bug 10520) Preview licences during upload via AJAX (toggle with
25797 $wgAjaxLicensePreview)
25798 * New Parser::setTransparentTagHook for parser extension and template
25800 * Introduced 'ContributionsToolLinks' hook; see docs/hooks.txt for more
25802 * Add a message if category is empty
25803 * Add CSS compatibility for Opera 9.5
25804 * Remove largely untested handheld stylesheet, which was causing more trouble
25805 than good. Proper handheld support will be added at a future date. For now,
25806 display should be acceptable either with CSS turned off or when using a so-
25807 phisticated handheld browser.
25808 * (bug 3173) Option to offer exported pages as a download, rather than
25809 displaying inline, as in most browsers
25810 * Pass the user as an argument to 'isValidPassword' hook callbacks; see
25811 docs/hooks.txt for more information
25812 * Introduce 'UserGetRights' hook; see docs/hooks.txt for more information
25813 * (bug 9595) Pass new Revision to the 'ArticleInsertComplete' and
25814 'ArticleSaveComplete' hooks; see docs/hooks.txt for more information
25815 * (bug 9575) Accept upload description from GET parameters
25816 * Skip the difference engine cache when 'action=purge' is used while requesting
25817 a difference page, to allow refreshing the cache in case of errors
25818 * (bug 10701) Link to Special:Listusers in default Special:Statistics messages
25819 * Improved file history presentation
25820 * (bug 10739) Users can now enter comments when reverting files
25821 * Improved handling of permissions errors
25822 * (bug 10793) "Mark patrolled" links will now be shown for users with
25823 patrol permissions on all eligible diff pages
25824 * (bug 10655) Show standard tool links for blocked users in block log messages
25825 * Show standard tool links for blocked users in Special:Ipblocklist
25826 * Miscellaneous aesthetic improvements to Special:Ipblocklist
25827 * (bug 10826) Added link trail with Cyrillic characters for Mongolian language
25828 * (bug 10859) Introduce 'UserGetImplicitGroups' hook; see docs/hooks.txt for
25830 * (bug 10832) Include user information when viewing a deleted revision
25831 * (bug 10872) Fall back to sane defaults when generating protection selector
25832 labels for custom restriction levels
25833 * Show edit count in user preferences
25834 * Improved support for audio/video extensions
25835 * (bug 10937) Distinguish overwritten files in upload log
25836 * Introduce 'ArticleUpdateBeforeRedirect' hook; see docs/hooks.txt for more
25838 * Confirmation is now required when deleting old versions of files
25839 * (bug 7535) Users can now enter comments when deleting old versions of files
25840 * (bug 11001) Submit Special:Newpages as a GET, rather than a POST request
25841 * The <strong></strong> around links to watched pages in change lists now
25842 has a class - "mw-watched"
25843 * (bug 9002) Provide a "view/restore deleted edits" link on Special:Upload
25844 when a destination filename is provided that corresponds with previous
25846 * Make the "invalid special page" message clearer
25847 * Add accesskey 's' and tooltip to 'upload file' button at Special:Upload
25848 * Introduced 'SkinAfterBottomScripts' hook; see docs/hooks.txt for
25850 * (bug 11095) Honour "preview on first edit" preference when preloading
25851 text for a non-existent page
25852 * (bug 11022) Use a more accurate page title for Special:Whatlinkshere and
25853 Special:Recentchangeslinked
25854 * Add link to user contributions in normal watchlist edit mode
25855 * (bug 9426) Add 'newsectionheaderdefaultlevel' message to allow
25856 modification of the heading formatting for new sections when section=new
25857 argument is supplied
25858 * (bug 10836) Add 'newsectionsummary' message to allow modification of the
25859 text that prefixes a new section link in Recent Changes
25861 == Bugfixes since 1.10 ==
25863 * (bug 9712) Use Arabic comma in date/time formats for Arabic and Farsi
25864 * (bug 9670) Follow redirects when render edit section links to transcluded
25866 * (bug 6204) Fix incorrect unindentation with $wgMaxTocLevel
25867 * (bug 3431) Suppress "next page" link in Special:Search at end of results
25868 * Don't show unblock form if the user doesn't have permission to use it
25869 (cosmetic change, no vulnerabilities existed)
25870 * Subtitle success message when unblocking a block ID instead of a pseudo link
25871 like [[User:#123|#123]]
25872 * Use the standard HTTP fetch functions when retrieving remote wiki pages
25873 through transwiki, so we can take advantage of cURL goodies if available
25874 * Disable user JavaScript on Special:Userlogin, Special:Resetpass and
25875 Special:Preferences, to avoid a compromised script sniffing passwords, etc.
25876 * (bug 9854, 3770) Clip overflow text in gallery boxes for visual cleanliness
25877 instead of letting it flow outside the box or trigger ugly scroll bars.
25878 * Tooltips for print version and permalink
25879 * Links to the MediaWiki namespace for system messages having their default
25880 values are no longer shown as nonexistent (e.g., in red)
25881 * Special:Ipblocklist differentiates between empty list and no search results.
25882 * (bug 5375) profiling does not respect read-only mode.
25883 * (bug 7070) monobook/user.gif has antialias artifacts
25884 * (bug 9123) Safer way when applying $wgLocalTZoffset
25885 * (bug 9896) Documentation for $wgSquidServers and X-FORWARDED-FOR
25886 * (bug 9417) Uploading new versions of images when using Postgres no longer
25888 * (bug 9908) Using tsearch2 with Postgres 8.1 no longer gives an error.
25889 * (bug 1438) Fix for diff table layout on very wide lines.
25890 Diff style rules have been broken out to common/diff.css,
25891 and the dupes removed from the default skin files.
25892 Skins can still override the default rules.
25893 * (bug 1229) Balance columns in diff display evenly
25894 * Right-align diff line numbers in RTL language display
25895 * (bug 9332) Fix instructions in tests/README
25896 * (bug 9813) Reject usernames containing '#' to avoid silent truncation
25897 of fragments during the normalisation process
25898 * (bug 7989) RSS feeds content now use black text when using white background.
25899 * (bug 9971) Typo in a french language message.
25900 * (bug 9973) Changed size was shown in advanced recentchanges collapsible items
25901 with $wgRCShowChangedSized = false.
25902 * Fix PHP strict standards warning in enhanced recent changes.
25903 * (bug 5850) Added hexadecimal html entities comments for $digitTransformTable
25905 * (bug 7432) Change language name for Aromanian (roa-rup)
25906 * (bug 908) Unexistent special pages now generate a red link.
25907 * (bug 7899) Added \hline and \vline to the list of allowed TeX commands
25908 * (bug 7993) support mathematical symbol classes
25909 * (bug 10007) Allow Block IP to work with Postgrs again.
25910 * Add Google Wireless Transcoder to the Unicode editing blacklist
25911 * (bug 10083) Fix for Special:Version breakage on PHP 5.2 with some hooks
25912 * (bug 3624) TeX: \ker, \hom, \arg, \dim treated like \sin & \cos
25913 * (bug 10132, 10134) Restore back-compatibility Image::imageUrl() function
25914 * (bug 10113) Fix double-click for view source on protected pages
25915 * (bug 10117) Special:Wantedpages doesn't handle invalid titles in result
25916 set [now prints out a warning]
25917 * (bug 10118) Introduced Special:Mostlinkedtemplates, report which lists
25918 templates with a high number of inclusion links
25919 * (bug 10104) Fixed Database::getLag() for PostgreSQL and Oracle
25920 * (bug 9820) session.save_path check no longer halts installation, but
25921 warns of possible bad values
25922 * (bug 9978) Fixed session.save_path validation when using extended
25923 configuration format, e.g. "5;/tmp"
25924 * Don't generate a diff link in the patrol log if the page doesn't exist
25925 * (bug 10067) Translations for former skins removed from message files
25926 * (bug 9993) Force $wgShowExceptionDetails on during installation
25927 * (bug 9980) Validate administrator username and password during
25929 * (bug 9383) Don't set a default value for BLOB column in rc-deleted
25931 * (bug 10149) Don't show full template list on section-0 edit
25932 * (bug 9909) Ensure access to binary fields in the math table use encodeBlob()
25934 * (bug 6743) Don't link broken image links to the upload form when uploads
25936 * (bug 9679) Improve documentation for $wgSiteNotice
25937 * (bug 10215) Show custom editing introduction when editing existing pages
25938 * (bug 10223) Fix edit link in noarticletext localizations for fr, oc
25939 * (bug 10247) Fix IP address regex to avoid false positive IPv6 matches
25940 * (bug 9948) Workaround for diff regression with old Mozilla versions
25941 * (bug 10265) Fix regression in category image gallery paging
25942 * (bug 8577) Fix some weird misapplications of time zones.
25943 {{CURRENT*}} functions now consistently use UTC as intended, while
25944 {{LOCAL*}} functions return local time per server config or $wgLocaltimezone.
25945 Signature dates for Japanese and other languages including weekday now show
25946 the correct day to match the rest of the time in local time.
25947 * Escape the output of magic variables that return page name or part of it
25948 * (bug 10309) Initialise parser state properly in extractSections(), fixes
25949 some cases where section edits broke because tags were improperly stripped
25950 * Avoid PHP notice errors when doing HTTP proxy purges for an empty list
25951 * As intended, *skip* the HTTP proxy purges when doing HTCP purges
25952 * (bug 9696) Fix handling of brace transformations in "pagemovedtext"
25953 * (bug 10325) Fix regression in form action on Special:Listusers
25954 * Fixed installation on MyISAM or old InnoDB with charset=utf8, was giving
25955 overlong key errors.
25956 * Fixed zero-padding issues with MySQL 5 binary schema
25957 * (bug 10344) Don't follow a redirect after changing its protection level
25958 * (bug 10333) Correct date format in Slovenian
25959 * (bug 10160) Show error message for unknown namespace on Special:Allpages and
25960 Special:Prefixindex; making forms prettier for RTL wikis.
25961 * (bug 10334) Replace normal spaces before percent (%) signs with non-breaking
25963 * (bug 10372) namespaceDupes.php no longer ignores namespace aliases
25964 * (bug 10198) namespaceDupes.php no longer ignores interwiki prefixes
25965 * namespaceDupes.php should work better for initial-lowercase wikis
25966 * (bug 10377) "Permanent links" to revisions still work if the page is moved
25967 and the redirect deleted
25968 * (bug 7071) Properly handle an 'oldid' passed to view or edit that doesn't
25969 match the given title. Fixes inconsistencies with talk, history, edit links.
25970 * (bug 10397) Fix AJAX watch error fallback when we receive a bogus result
25971 * (bug 10396) Fix AJAX error when $wgScriptPath/index.php is not valid;
25972 using $wgScript now included in JS info
25973 * Use native XMLHttpRequest class in preference to ActiveX on IE 7; this
25974 avoids the "ActiveX "Do you want to allow ActiveX?" prompt when something
25975 security settings are cranked this way and AJAX-y gets used.
25976 * Delay AJAX watch initialization until click so IE 6 with ugly security
25977 settings doesn't prompt you until you use the link.
25978 * (bug 10401) Provide non-redirecting link to original title in Special:Movepage
25979 * Fix broken handling of log views for page titles consisting of one
25980 or more zeros, e.g. "0", "00" etc.
25981 * Fix read permission check for special pages with subpage parameters, e.g.
25982 Special:Confirmemail
25983 * Fix read permission check for unreadable page titles which are numerically
25984 equivalent to a whitelisted title
25985 * '?>' closing tag removed from all files to help avoid problems with extraneous
25986 whitespace (broken XML feeds, etc.)
25987 * Don't use garbled parser cache output when viewing custom CSS or JavaScript
25989 * (bug 10406) Fix Special:Listusers filter form for non-ASCII localizations
25990 * Fix empty message checks for message names containing &
25991 This corrects some odd behavior with sidebar items and custom namespaces
25992 containing ampersands.
25993 * (bug 10375) Change thousands separator character to for Latin (la)
25994 * (bug 10477) Fix AJAX watch for Farsi on Firefox: JavaScript encoding tweak
25995 * (bug 10496) Fix broken DISTINCT option logic in database backend
25996 * Fix CSS media declaration for "screen, projection"; was causing some
25998 * (bug 10495) $wgMemcachedDebug set twice in includes/DefaultSettings.php
25999 * (bug 10316) Prevent inconsistent cached skin settings in gen=js by setting
26000 the intended skin directly in the URL.
26001 * (bug 9903) Don't mark redirects in categories as stubs
26002 * (bug 6965) Cannot include "Template:R" with {{R}} (magic word conflict)
26003 * Padding parser functions now work with strings like '0' that evaluate to false
26004 * (bug 10332) Title->userCan( 'edit' ) may return false positive
26005 * Fix bug with <nowiki> in front of links for wikis where linkPrefixExtension is
26007 * (bug 10552) Suppress rollback link in history for single-revision pages
26008 * (bug 10538) Gracefully handle invalid input on move success page
26009 * Fix for Esperanto double-x-encoding in move success page
26010 * (bug 10526) Fix toolbar/insertTags behavior for IE 6/7 and Opera (8+)
26011 Now matches the selection behavior on Mozilla / Safari.
26012 Patch by Alex Smotrov.
26013 * Don't show non-functional toolbar buttons on Opera 7 anymore
26014 * (bug 9151) Fix relative subpage links with section fragments
26015 * (bug 10560) Adding a space between category letter heading and "continues"
26016 * (bug 4650) Keep impossibly large/small counts off Special:Statistics
26017 * (bug 10608) PHP notice when installing with PostgreSQL
26018 * (bug 10615) Fix for transwiki import when CURL not available
26019 * (bug 8054) Return search page for empty search requests with ugly URLs
26020 * (bug 10572) Force refresh after clearing visitation timestamps on watchlist
26021 * (bug 10631) Warn when illegal characters are removed from filename at upload
26022 * Fix several JavaScript bugs under MSIE 5/Macintosh
26023 * (bug 10591) Use Arabic numerals (0,1,2...) for the Malayam language
26024 * (bug 10642) Fix shift-click checkbox behavior for Opera 9.0+ and 6.0
26025 * Work around Safari bug with pages ending in ".gz" or ".tgz"
26026 * Removed obsolete maintenance/changeuser.sql script; use RenameUser extension
26027 * (bug 2735) "Preview" shown in title bar for action=submit on special pages
26028 * Removed "restore" links from the deletion log embedded in Special:Undelete
26029 * Improved error reporting and robustness for file delete/undelete.
26030 * Improved speed of file delete by storing the SHA-1 hash in image/oldimage
26031 * Fixed leading zero in base 36 SHA-1 hash
26032 * Protection form no longer produces JavaScript errors
26033 * (bug 10741) File histories show "delete" links for non-sysops
26034 * (bug 10744) Treat "noarticletext" and "noarticletextanon" as wiki text when
26035 used on a non-existent page with "action=info"
26036 * Fix escaping of raw message text when used on a non-existent page with
26038 * (bug 10683) Fix inconsistent handling of URL-encoded titles in links
26039 used in redirects (i.e. they now work)
26040 * (bug 8878) Changes to $dateFormats in German localization (removing unused,
26041 nonexistent formats, putting time after date)
26042 * (bug 10769) Database::update() should return boolean result
26043 * Fix preference checkbox display for right-to-left languages which caused
26044 them to be hidden in IE in some cases
26045 * Fix upload form display in right-to-left languages
26046 * Fixed regression in blocking of username '0'
26047 * (bug 9437) Don't overwrite edit form submission handler when setting up
26048 edit box scroll position preserve/restore behavior
26049 * (bug 10805) Fix "undo" link when viewing the diff of the most recent
26050 change to a page using "diff=0"
26051 * (bug 10765) img_auth.php will now refuse logged-out requests where
26052 $wgWhitelistRead is undefined, instead of (incorrectly) honouring them
26053 * Fixed img_auth.php file name extraction for whitelist checking
26054 * Tweak spacing of email preference display
26055 * Table sorting JavaScript prefers textContent over innerText to allow hidden
26056 sort keys to work on Safari
26057 * (bug 4530) Fix local name of Kurdish language
26058 * (bug 10830) Fix local name of Haitian Creole language
26059 * Fix invalid XHTML in Special:Protectedpages
26060 * Fix comments in contributions and log pages for right-to-left languages
26061 * Make installer include_path-independent, so it should work on hosts which
26062 disable user setting of PHP include_path setting
26063 * glob() is horribly unreliable and doesn't work on some systems, including
26064 free.fr shared hosting. No longer using it in Language::getLanguageNames()
26065 * (bug 10763) Fix multi-insert logic for PostgreSQL
26066 * Fix invalid XHTML when viewing a deleted revision
26067 * Fix syntax error in translations of magic words in Romanian language
26068 * (bug 8737) Fix warnings caused by incorrect use of `/dev/null` when piping
26069 process error output under Windows
26070 * (bug 7890) Don't list redirects to special pages in Special:BrokenRedirects
26071 * (bug 10783) Resizing PNG-24 images with GD no longer causes all alpha
26072 channel transparency to be lost and transparent pixels to be turned black
26073 * (bug 9339) General error pages were transforming messages and their parameters
26075 * (bug 9026) Incorrect heading numbering when viewing Special:Statistics with
26076 "auto-numbered headings" enabled
26077 * Fixed invalid XHTML in Special:Upload
26078 * (bug 11013) Make sure dl() is available before attempting to use it to check
26079 available databases in installer
26080 * Resizing transparent GIF images with GD now retains transparency by skipping
26082 * (bug 11065) Fix regression in handling of wiki-formatted EXIF metadata
26083 * Double encoding broke Special:Newpages for some languages
26084 * Adding a newline before the statistics footer, to prevent parsing problems
26085 * Preventing the TOC from appearing in Special:Statistics
26086 * (bug 11082) Fix check for fully-specced table names in Database::tableName
26087 * (bug 11067) Fix regression in upload conflict thumbnail display
26088 * (bug 10985) Resolved cached entries on Special:DoubleRedirects were being
26089 suppressed, breaking paging - now strikes out "fixed" results
26090 * (bug 8393) <sup> and <sub> need to be preserved (without attributes) for
26091 entries in the table of contents
26092 * (bug 11114) Fix regression in read-only mode error display during editing
26093 * Force non-MySQL databases to use an ORDER BY in SpecialAllpages to ensure
26094 that the first page_title is truly the first page title.
26095 * (bug 10836) Change the summary on creating of new section
26096 * Inclusion of Special:Wantedpages now works again
26098 == API changes since 1.10 ==
26100 Full API documentation is available at https://www.mediawiki.org/wiki/API
26102 * New properties: links, templates, images, langlinks, categories, external
26104 * Breaking Change: imagelinks renamed into imageusage (il->iu)
26105 * Bug fix: incorrect generator behavior in some cases
26106 * JSON format allows an optional callback function to wrap the result.
26107 * Login module disabled until a more secure solution can be implemented
26108 * (bug 9938) Querying by revision identifier returns the most recent revision
26109 for the corresponding page, rather than the requested revision
26110 * (bug 8772) Filter page revision queries by user
26111 * (bug 9927) User contributions queries do not accept IP addresses
26112 * Watchlist feed now reports a proper feed item when the user is not logged in
26113 * Watchlist feed date bug fixed - automatically shows one last day
26114 * Watchlist feed now allows to specify number of hours to monitor
26115 * list=allpages now returns a list instead of a map in JSON format
26116 * Breaking Change: in json, revisions are now returned as a list, not as a map.
26117 * Add: prop=info can show page is new flag, current page length, and visit
26119 * Change: Query watchlist now shows flags only when explicitly requested with
26121 * rc_this_oldid (textid) is no longer accessible from query watchlist
26122 * action=usercontribs: additional filtering by ucshow=; selection of needed
26123 fields with ucprop=; the textid (rev_text_id) is no longer being exposed
26124 * (bug 9970) Breaking Change: backlinks, embeddedin and imageusage now return
26125 lists in JSON instead of a map, and do not return anything when titles do
26127 * (bug 9121) Introduced indexpageids query parameter to list the page_id
26128 values of all returned page items
26129 * (bug 10147) Now interwiki titles are not processed but added to a separate
26130 "interwiki" section of the output.
26131 * Added categorymembers list to query for pages in a category.
26132 * (bug 10260) Show page protection status
26133 * (bug 10392) Include MediaWiki version details in version output
26134 * (bug 10411) Site language in meta=siteinfo
26135 * (bug 10391) action=help doesn't return help if format is fancy markup
26136 * backlinks, embeddedin and imageusage lists should use (bl|ei|iu)title
26137 parameter instead of titles. Titles for these lists is obsolete and might stop
26139 * Added prop=imageinfo - gets image properties and upload history
26140 * (bug 10211) Added db server replication lag information in meta=siteinfo
26141 * Added external url search within wiki pages (list=exturlusage)
26142 * Added link enumeration (list=alllinks)
26143 * Added registered users enumeration (list=allusers)
26144 * Added full text search in titles and content (list=search)
26145 * (bug 10684) Expanded list=allusers functionality
26146 * Possible breaking change: prop=revisions no longer includes pageid for
26148 * Added rvprop=size to prop=revisions (The size will not be shown if it is NULL
26150 * list=allpages now allows to filter by article min/max size and protection
26152 * Added site statistics (siprop=statistics for meta=siteinfo)
26153 * (bug 10902) Unable to fetch user contributions from IP addresses
26154 * `list=usercontribs` no longer requires that the user exist
26155 * (bug 10971) `aufrom` parameter doesn't work with spaces
26156 * Fix username handling issue with `auprefix` parameter
26157 * Treat underscores as spaces for `aufrom` and `auprefix` parameters
26158 * Added edit/delete/... token retrieval to prop=info
26159 * Added meta=userinfo - logged-in user information, group membership, rights
26160 * (bug 11072) Fix regression in API image history query
26161 * (bug 11115) Adding SHA1 hash to imageinfo query
26162 * (bug 10898) API does not return an edit token for non-existent pages
26163 * (bug 10890) Timestamp support for categorymembers query
26164 * (bug 10980) Add exclude redirects on backlinks
26165 * IPv6 titles in User namespace are normalized (run cleanupTitles.php to fix any
26168 == Maintenance script changes since 1.10 ==
26170 * Add support for wgMaxTocLevel option in parserTests
26171 * (bug 6823) Disable article view counter in maintenance/dumpHTML.php
26172 * Fix maintenance/importImages.php so it doesn't barf PHP errors when no
26173 suitable files are found, and make the list of extensions an option (defaults
26174 to $wgFileExtensions)
26175 * Add option to maintenance/createAndPromote.php to give the user bureaucrat
26176 permissions (--bureaucrat)
26177 * Allow overwriting existing files with a conflicting name using
26178 maintenance/importImages.php
26179 * (bug 10266) Use native newlines when rebuilding a messages file.
26181 == Languages updated since 1.10 ==
26194 * Extremaduran (ext)
26199 * Français Cadien (frc) (new)
26200 * Franco-Provençal/Arpetan (frp)
26204 * Upper Sorbian (hsb)
26214 * Kinaray-a (krj) (new)
26221 * Bahasa Melayu (ms)
26227 * Punjabi (Gurmukhi) (pa)
26229 * Piedmontese (pms)
26233 * Aromanian (roa-rup)
26251 * Winaray (war) (new)
26253 * Old Chinese / Late Middle Chinese (zh-classical)
26254 * Chinese (PRC) (zh-cn)
26255 * Chinese (Taiwan) (zh-tw)
26256 * Cantonese (zh-yue)
26258 == MediaWiki 1.10 ==
26260 == MediaWiki 1.10.4 ==
26264 * Correction for API path fix, broken in 1.10.3
26266 == MediaWiki 1.10.3 ==
26270 This is a security update to the Winter 2007 quarterly release. A potential
26271 XSS injection vector affecting api.php only for Microsoft Internet Explorer
26272 users has been closed.
26275 To work around the vulnerability without upgrading, you may disable the API if
26278 :[[Manual:$wgEnableAPI|$wgEnableAPI]] = false;
26280 Not vulnerable versions:
26285 * 1.8 any version (if $wgEnableAPI has been left off)
26287 Vulnerable versions:
26288 * 1.11 <= 1.11.0rc1
26291 * 1.8 any version (if $wgEnableAPI has been switched on)
26293 MediaWiki 1.7 and below are not affected as they do not include the API
26294 functionality, however the BotQuery extension is similarly vulnerable unless
26295 updated to the latest SVN version.
26297 == MediaWiki 1.10.2 ==
26300 This is a security fix update to the Spring 2007 quarterly release snapshot. A
26301 possible HTML/XSS injection vector in the API pretty-printing mode has been
26304 The vulnerability may be worked around in an unfixed version by simply
26305 disabling the API interface if it is not in use, by adding this to
26307 :[[Manual:$wgEnableAPI|$wgEnableAPI]] = false;
26309 Not vulnerable versions:
26315 Vulnerable versions:
26316 * 1.11 <= 1.11.0rc1
26319 * 1.8 <= 1.8.4 (if $wgEnableAPI has been switched on)
26321 MediaWiki 1.7 and below are not affected as they do not include the faulty
26322 function, however the BotQuery extension is similarly vulnerable unless updated
26323 to the latest SVN version.
26325 == MediaWiki 1.10.1 ==
26328 This is a bugfix update to the Spring 2007 quarterly release snapshot. A number
26329 of fixes to improve compatibility with PostgreSQL, some versions of MySQL, and
26330 some PHP configurations are included.
26332 Changes since 1.10.0:
26334 * (bug [[bugzilla:9417|9417]]) Uploading new versions of images when using
26335 Postgres no longer throws warnings.
26336 * (bug [[bugzilla:9908|9908]]) Using tsearch2 with Postgres 8.1 no longer gives
26338 * (bug [[bugzilla:9973|9973]]) Changed size was shown in advanced recentchanges
26339 collapsible items with $wgRCShowChangedSized = false.
26340 * Fixed installation on MyISAM or old InnoDB with charset=utf8, was giving
26341 overlong key errors.
26342 * Fixed zero-padding issues with MySQL 5 binary schema
26343 * (bug [[bugzilla:9820|9820]]) session.save_path check no longer halts
26344 installation, but warns of possible bad values
26345 * (bug [[bugzilla:9978|9978]]) Fixed session.save_path validation when using
26346 extended configuration format, e.g. "5;/tmp"
26348 == MediaWiki 1.10.0 ==
26351 This is the quarterly release snapshot for Spring 2007. See below for a full
26352 list of changes since the 1.9.x series.
26354 Changes since 1.10.0rc2:
26356 * (bug [[bugzilla:9808|9808]]) Fix regression that ignored user 'rclimit'
26357 option for Special:Contributions
26359 == MediaWiki 1.10.0rc2 ==
26362 THIS IS A RELEASE CANDIDATE MADE AVAILABLE FOR TESTING!
26363 A FINAL 1.10.0 RELEASE WILL APPEAR WITHIN A FEW DAYS.
26365 Changes since 1.10.0rc1:
26366 * Various l10n fixes and updates
26367 * Fix for upgrade of page_restrictions table
26368 * (bug [[bugzilla:9780|9780]]) Fix normalization of titles with initial colon
26369 followed by whitespace
26370 * Fix for regression in upload: wrong size info saved into image table
26371 * Avoid cyclic stub problems when authorization hooks do funny things with the
26372 user and the database at load time
26374 == MediaWiki 1.10.0rc1 ==
26375 This is the Spring 2007 branch release of MediaWiki.
26377 MediaWiki is now using a "continuous integration" development model with
26378 quarterly snapshot releases. The latest development code is always kept
26379 "ready to run", and in fact runs our own sites on Wikipedia.
26381 Release branches will continue to receive security updates for about a year
26382 from first release, but nonessential bugfixes and feature developments
26383 will be made on the development trunk and appear in the next quarterly release.
26385 Those wishing to use the latest code instead of a branch release can obtain
26386 it from source control: https://www.mediawiki.org/wiki/Download_from_SVN
26388 == Configuration changes ==
26390 * A new switch $wgCommandLineDarkBg used by maintenance scripts
26391 (parserTests.php). It lets you specify if your terminal use a dark background,
26392 the colorized output will be made lighter making things easier to read.
26393 * The minimum permissions needed to edit a page in each namespace can now be
26394 customized via the $wgNamespaceProtection array. By default, editing pages in
26395 the MediaWiki namespace requires "editinterface" permission, as before.
26396 * Allow restriction of autoconfirmed permission by edit count. New global
26397 setting $wgAutoConfirmCount (defaulting to zero, naturally).
26398 * Added rate limiter for Special:Emailuser
26399 * Private logs can now be created using $wgLogRestrictions
26400 * (Bug 8590) limited HTML is now always enabled ($wgUserHtml = true).
26401 * Deprecated $wgUseImageResize, thumbnailing will be enabled unconditionally.
26403 == New features since 1.9 ==
26405 * (bug 6937) Introduce "statistics-footer" message, appended to
26407 * (bug 6638) List block flags in block log entries
26408 * (bugs 5051, 5376) Tooltips and accesskeys no longer require JavaScript
26409 * Added SkinTemplateOutputPageBeforeExec hook before SkinTemplate::outputPage()
26411 (http://lists.wikimedia.org/pipermail/wikitech-l/2007-January/028554.html)
26412 * Introduce "cascading protection" -- implicit protection on pages transcluded
26413 into a page protected with this option enabled
26414 * (bug 8567) Added hook RawPageViewBeforeOutput just before the text is blown
26415 out in action=raw, so extensions might influence the output.
26416 * (bug 3446) Add user preference to hide page content below diffs, can be
26417 overridden by adding diffonly=1 or diffonly=0 to the URL of the diff page
26418 * Add 'purge' privilege to replace the hardcoded check for login state in
26419 determining whether action=purge can be done via GET. Switching the
26420 permission on for anons can be helpful for benchmarking.
26421 * (bug 7842) Link back to deleted revision list from deleted revision preview
26422 * (bug 8619) Add user-aware "unblock" link to Special:Blockip
26423 * (bug 8522) Provide a "delete" link on Special:Brokenredirects for users with
26424 the appropriate permission
26425 * (bug 8628) Add user-aware block list link to Special:Blockip
26426 * (bug 8621) Log revisions marked as patrolled
26427 * Introduce "BookInformation" hook; see docs/hooks.txt for more details
26428 * Add title prefix search for Special:Undelete
26429 * Remove full-archive list from Special:Undelete
26430 * (bug 8136) Introduce 'ArticleUndelete' hook; see docs/hooks.txt for more info
26431 * (bug 8712) Expose user groups as a JavaScript global
26432 * Introduce 'CustomEditor' hook; see docs/hooks.txt for more information
26433 * New special page, Special:Protectedpages, which shows all protected pages
26434 and their protection status (full protection status is not pulled out due
26435 to performance considerations, so it just shows "full protected" or
26437 * (bug 4133) Allow page protections to be made with an expiry date, in the same
26438 format as block expiry dates. Existing protections are assumed to be infinite,
26439 as are protections made with the new field left blank.
26440 * (bug 8535) Allow certain vertical alignment attributes to be used as image
26442 * (bug 6987) Allow perrow, widths, and heights attributes for <gallery>
26443 * (bug 3678) Allow disabling MediaWiki:Aboutsite in the same way as
26444 MediaWiki:Disclaimers; Also means that if any of the footer links are
26445 disabled in the wiki's default language (by setting to "-"), they'll also
26446 be disabled in other languages too (e.g. if the user specifies uselang=fr).
26447 * Sort log types in Special:Log
26448 * Added a classname ("mw-toolbar-editbutton") and unique IDs to the edit
26450 * Hide irrelevant block options in Special:Blockip based on whether an
26451 IP address/range or username is listed. (Dynamic using JS.)
26452 * (bug 9032) Make quickbarSettings localizable through Special:Allmessages
26453 * (bug 7782) Standardisation of file info at image description pages.
26454 * (bug 1035) View contributions / recentchanges for an IP range.
26455 * (bug 8747) When unwatching pages from Special:Watchlist/edit, put the
26456 confirmation messages in a proper list with a CSS class and id.
26457 * (bug 9118) Show relevant log fragments on deletion confirmatio page
26458 * (bug 9009) Add username entry field to Special:Contributions
26459 * (bug 1723) Article size in history
26460 * (bug 9223) Disallow magic tilde sequences in page titles and usernames
26461 * (bug 6997) Link from Special:log/block to unblock form
26462 * (bug 9117) Link from Special:log/delete to undelete form
26463 * Link from Special:log/protect to change protection form
26464 * (bug 1196) Add IPv6 support added to blocks, more consistancy for IPv6
26466 * (bug 3984) Searching in logs by title%
26467 * Show thumbnail of existing image if image exists already under this filename
26468 * (bug 5546) Watchlist reflects logged actions like move, protection, undelete
26469 * Support protocols other than HTTP in LinkFilter, use $wgUrlProtocols
26470 * (bug 3069) Warning on upload of scaled down images
26471 * Warning on upload of images with uppercase extension if image with lowercase
26473 * (bug 4624) Namespace selection for Special:Whatlinkshere
26474 * Introduce PageHistoryBeforeList and PageHistoryLineEnding hooks; see
26475 docs/hooks.txt for more information
26476 * (bug 9397) Introduce "sp-contributions-footer" and
26477 "sp-contributions-footer-anon" messages, shown at the end of
26478 Special:Contributions as appropriate for the target
26479 * (bug 8421) Expose current action in JavaScript globals (as 'wgAction')
26480 * (bug 9069) Use galleries in query pages dedicated to images
26481 * (bug 9177) Installer now warns of various conditions affecting
26482 session.save_path which can lead to broken session storage
26483 * (bug 9046) Special page to list pages without language links
26484 * (bug 9508) Special page to list articles with the fewest revisions
26485 * Introduce 'FileUpload' hook; see docs/hooks.txt for more information
26486 * Introduce 'SearchUpdate' hook; see docs/hooks.txt for more information
26487 * Introduce 'mywatchlist' message; used on personal menu to link to watchlist
26489 * Introduce magic word {{NUMBEROFEDITS}}
26490 * Introduced media handlers for file-type specific operations.
26491 * Improved error reporting for image thumbnailing
26492 * Added sharpening option for ImageMagick thumbnailing
26493 * (bug 9656) Autosummaries will be generated for deletion of pages longer than
26495 * Predefined block reasons added to Special:Blockip
26496 * (bug 9196) Installer now check that zend.ze1_compatibility_mode is off
26497 * (bug 9697) Introduce 'InternalParseBeforeLinks' hook; see docs/hooks.txt for
26499 * 'contribsub' message changed to 'contribsub2' with two parameters to permit
26500 better localization. Change is reverse-compatible and can be ignored for
26502 * Adding a 'reason' field to Special:Userrights
26504 == Bugfixes since 1.9 ==
26506 * (bug 7292) Fix site statistics when moving pages in/out of content namespaces
26507 * (bug 8531) Correct local name of Lingála
26508 * Made the PLURAL: parser function return singular on -1 by default
26509 * Fixed up the AjaxSearch
26510 * Fix SpecialVersion->formatCredits input. Version and Url parameters should be
26511 null to be treated properly with isset.
26512 * Page restrictions moved into a new, dedicated table
26513 * Correct tooltip accesskey hint for Opera on the Macintosh
26514 (uses Shift-Esc-, not Ctrl-).
26515 * (bug 8002) Math should render left-to-right even in right-to-left wikis
26516 * Pass e-mail and real name fields to AuthPlugin::addUser, as additional
26517 optional fields, which may be considered useful at registration time.
26518 * PostgreSQL upgrade scripts fixed and updated
26519 * (bug 8613) Fix error when viewing "Recent Changes" and using Postgres.
26520 * Initialise site_stats table at upgrade time if data was missing
26521 * (bug 7250) Updated Unicode normalization tables to Unicode 5.0
26522 * Unmaintained Oracle support files have been removed.
26523 * Use browser default for printing size, don't force to 11pt
26524 * (bug 8632) Fix regression in page protection null edit update
26525 * (bug 8407) Disallow indexing of "printable" versions
26526 * (bug 8643) Correctly escape the page-specific CSS class for non-Monobook skins
26527 * (bug 8629) Document $wgFilterCallback
26528 * (bug 1000) Clarify warning about memory_limit in installer
26529 * Suppress PHP warning about set_time_limit in installer when safe mode is on
26530 * (bug 3000) Fall back to SCRIPT_NAME plus QUERY_STRING when REQUEST_URI is
26531 not available, as on IIS with PHP-CGI
26532 * Missing interwiki row for English Wikipedia restored (as "wikipedia:")
26533 * use configured cache servers for mctest.php
26534 * bucket details in mcc.php
26535 * fix input validation and remove debugging code in compressOld
26536 * full ID range for moveToExternal
26537 * fix resolveStubs.php for compatibility with older serialized data
26538 * maximum line length for bar graphs in getLagTimes.php
26539 * recognize specieswiki in rebuildInterwiki.inc
26540 * profile unicode cleanup in Xml
26541 * log slow parses in Article.php
26542 * profile wfMsgReal
26543 * log mkdir failures
26544 * profile AutoLoader
26545 * rebuild empty DjVu metadata containing ''
26546 * security fix for DjVu metadata retrieval
26547 * Undelete page list can use plural marker
26548 * (bug 8638) Fix update from 1.4 and earlier
26549 * (bug 8641) Fix order of updates to ipblocks table
26550 * (bug 8678) Fix detection of self-links for numeric titles in Parser
26551 * (bug 6171) Magically close tags in tables when not using Tidy.
26552 * Sanitizer now correctly escapes lonely '>' occurring before the first wikitag.
26553 * Ignore self closing on closing tags ( '</div />' now gives '</div>')
26554 * (bug 8673) Minor fix for web service API content-type header
26555 * Fix API revision list on PHP 5.2.1; bad reference assignment
26556 * (bug 8688) Handle underscores/spaces in Special:Blockip and
26557 Special:Ipblocklist in a consistent manner
26558 * (bug 8701) Check database lock status when blocking/unblocking users
26559 * ParserOptions and ParserOutput classes are now in their own files
26560 * (bug 8708) Namespace translations for Zealandic language
26561 * Renamed constructor methods to PHP 5 __construct reserved name
26562 * (bug 8715) Warn users when editing an interface message whether or not the
26563 message page exists
26564 * ar: fix the 'create a new page' on search page when no exact match found
26565 * (bug 8703) Corrected talk and image namespace name for Limburgish (li)
26566 * (bug 8671) Expose "wpDestFile" as a parameter to "uploadtext"
26567 * (bug 8403) Respect bad image list exceptions in galleries on wiki pages
26568 * Allow sending per-user contribution requests to "contributions" query group
26569 * (bug 3717) Update user count for AuthPlugin account autocreation
26570 * (bug 8719) Firefox release notes lie! Fix tooltips for Firefox 2 on x11;
26571 accesskeys default settings appear to be same as Windows.
26572 * Added an option to make Linker::userToolLinks() show the contribs link
26573 red when the user has no edits. Linker::userToolLinksRedContribs() is an
26574 alias to that which should be used to make it more self documentating.
26575 * (bug 8749) Bring MySQL 5 table defs back into sync
26576 * (bug 8751) Set session cookies to HTTPS-only to match other cookies
26577 * (bug 8652) Catch exceptions generated by malformed XML in multipage media
26578 * (bug 8782) Help text in Makefile
26579 * (bug 8777) Suppress 'previous' link on Special:Allpages when at first page
26580 * (bug 8774) Fix path for GNU FDL rights icon on new installs
26581 * Fix multipage selector drop-down for DjVu images to work when title
26582 is passed as a query string parameter; we have to pass the title as
26583 a form parameter or it gets dropped from the form submission URL
26584 * (bug 8819) Fix full path disclosure in with skins dependencies
26585 * Fixed bug affecting HTML formatting in sortable table column titles
26586 * Merged table sorting code into wikibits.js
26587 * (bug 8711) Stop floats in previews from spilling into edit area
26588 * (bug 8858) Safer handling when $wgImageLimits is changed. Added a note
26589 in DefaultSettings to make it clear.
26590 * (bug 4268) Fixed data-loss bug in compressOld batch text compression
26591 affecting pages which had null edits (move, protect, etc) as second
26592 edit in a batch group. Isolated and patched by Travis Derouin.
26593 * Fix for paths in 1.4->1.5 special-case updater script
26594 * (bug 8789) AJAX search: IE users can now use the return key
26595 * (bug 6844) Use <ins> and <del> tags to emphase the differences
26596 * (bug 6684) Fix improper javascript array iteration
26597 * (bug 4347) use MailAddress object for reply-to
26598 * Add AlphabeticPager abstract class
26599 * Use faster AlphabeticPager for Special:Categories
26600 * (bug 8875) Show printable link in MonoBook sidebar for locally nonexistent
26601 pages; perhaps useful for categories and shared images
26602 * Clean up session checks to better handle the case where the session was
26603 opened during the current request. May help with some caching corner
26605 * (bug 8897) Fix whitespace removal for interlanguage links with link prefix
26606 * Add 'ParserTestTables' hook to expand the list of temporary tables copied
26607 by the parser test harness; use for extensions which require the presence
26608 of other tables while they work.
26609 * Message names changed for AlphabeticPager introduced with r19758
26610 for better localisations.
26611 * (bug 8944) The deprecated is_a() function is used in StubObjects.php
26612 * (bug 8992) Fix a remaining raw use of REQUEST_URI in history
26613 * (bug 8999) User.php gives "undefined user editcount" PHP notice.
26614 * (bug 8984) Fix a database error in Special:Recentchangeslinked
26615 when using the Postgres database.
26616 * Moved the main ob_start() from the default LocalSettings.php to WebStart.php.
26617 The ob_start() section should preferably be removed from older
26618 LocalSettings.php files.
26619 * Give Content-Length header for HTTP/1.0 clients.
26620 * Partial support for Flash cross-domain-policy filtering.
26621 * Lazy-initialize site_stats row on load when empty. Somewhat kinder to
26622 dump-based installations, avoiding PHP warnings when NUMBEROFARTICLES
26624 * Add 'charset' to Content-Type headers on various HTTP error responses
26625 to forestall additional UTF-7-autodetect XSS issues. PHP sends only
26626 'text/html' by default when the script didn't specify more details,
26627 which some inconsiderate browsers consider a license to autodetect
26628 the deadly, hard-to-escape UTF-7.
26629 This fixes an issue with the Ajax interface error message on MSIE when
26630 $wgUseAjax is enabled (not default configuration); this UTF-7 variant
26631 on a previously fixed attack vector was discovered by Moshe BA from BugSec:
26632 http://www.bugsec.com/articles.php?Security=24
26633 * Trackback responses now specify XML content type
26634 * (bug 9044) Send a comment with action=raw pages in CSS/JS output mode
26635 to work around IE/Mac bug where empty pages time out verrrrryyyyy slowly,
26636 particularly with new keepalive-friendly HTTP on Wikipedia
26637 * (bug 8919) Suppress paging links and related messages where there are no
26638 rows to list for query pages
26639 * (bug 9057) Standardize MediaWiki: namespace for oc
26640 * (bug 8132) Suppress "Pages in this category" heading in categories when
26642 * (bug 8958) Handle search operators better when using tsearch2 (Postgres)
26643 * (bug 8799) Use redirect table for Special:BrokenRedirects and
26644 Special:DoubleRedirects
26645 * (bug 8918) Enable PLURAL option for MediaWiki:showingresults and
26646 MediaWiki:showingresultsnum
26647 * (bug 9122) Fix minor display issue in RTL with section edit link margin
26648 * (bug 5805) Enable PLURAL option for some messages of watchlist and statistic
26649 * (bug 3953) Work around poor display of parenthesis in the in other
26650 languages section of MonoBook skin
26651 * (bug 8539) Enable PLURAL option for another message of recentchanges.
26652 * (bug 8728) MediaWiki:Badfiletype split into 3 messages
26653 * (bug 9131) Allow SpecialContributions to work with Postgres
26654 * (bug 9155) Allow footer info to wrap in Monobook
26655 * (bug 8847) Strip spurious #fragments from request URI to fix redirect
26656 loops on some server configurations
26657 * (bug 9097) column "pr_pagetype" does not exist
26658 * (bug 9217) Balance wfProfile calls in Skin::outputPage
26659 * (bug 9222) PostgreSQL updater should not be version-specific
26660 * Fix fallback implementation of mb_strlen so it works and isn't insanely
26661 slow for large strings, since it's used for page edit lengths
26662 * (bug 8815) Setting password in initUser() breaks LdapAuthentication plugin
26663 * (bug 9256) Add a quick note to index.php header comments
26664 * Make Special:Listusers caseinsensitive for first letter
26665 * Default tidy.conf has been moved from extensions module into includes.
26666 * Ignore lonely '''''
26667 * (bug 9244) When calling edit page for nonexistent section, generate error
26668 inside of just discarding edits, since edit links sometimes go to the wrong
26670 * (bug 9019) No warning during upload if image description page exists, but no
26672 * (bug 8582) Allow thumbnailing when imagesize has a space.
26673 * (bug 8716) Change math_inputhash and math_outputhash to bytea for Postgres
26674 * (bug 9343) Correct internal name for Wolof language
26675 * (bug 9363) Fix Postgres error on Recentchangeslinked
26676 * (bug 5142) Fixed call of hook ArticleViewHeader
26677 * (bug 4777) Separate prev/next messages for Special:Whatlinkshere
26678 * Merge approx 15 missing Wikipedia language codes into wikipedia-interwiki.sql
26679 based on Jeff Merkey's mediawiki-1.9.3.WG-20070316.tar.gz.bz2 archive.
26680 * (bug 9411) Fix for shared image descriptions using query-string titles
26681 * (bug 4756) Add user tool links for self created accounts at special:log
26682 instead of sometimes broken block links from newuserlog extension
26683 * (bug 5817) Special:Recentchangeslinked now shows red link for nonexistent
26684 target page instead of silently redirecting
26685 * (bug 8914) Don't transform colons in {{anchorencode:}}
26686 * (bug 9241) Handle edit section links and include size links for cached
26687 templates the same as the first transclusion.
26688 * (bug 9466) "Rollback failed" page doesn't format edit comment
26689 * (bug 9472) Invalid XHTML on cached special pages
26690 * (bug 9472) Invalid XHTML on Special:Newpages
26691 * (bug 4764) "My contributions" not bold when viewing own contributions
26692 * (bug 9194) Add {{PLURAL:...}} to navigation bar of Special:Whatlinkshere
26693 * (bug 9033) Use a more specific error message when users are not able/allowed
26694 to edit page protection levels due to a block, database lock or permissions
26695 * Fixed $wgFeedLimit
26696 * (bug 9270) Corrected help namespace name for Dutch Lower Saxon (nds-nl)
26697 * (bug 929, 4215) Expose "rcdays" user preference in Special:Preferences
26698 * (bug 9554) Extension-provided group name messages not used
26699 * (bug 9565) Translate template namespace name for Hindi (hi)
26700 * (bug 8599) Correct localized names of zh-variants
26701 * (bug 3366) Require skins based on SkinTemplate to override the skinname
26703 * (bug 9220) Removed obsoletes functions in install-utils.inc.
26704 * Removed obsoletes Title::getRelatedCache and Title:touchArray
26705 * (bug 7285) Check MySQL username length during install
26706 * (bug 6910) Correct date/time formats in Vietnamese (vi)
26707 * (bug 9608) Correctly use ORDER BY in dumpLinks.php
26708 * (bug 9609) Correctly use ORDER BY in SpecialWhatlinkshere.php
26709 * Special:Random and Special:Randomredirect now try harder to send the user to
26710 a random page, and will give an error message if none really can be found
26711 instead of sending the user to the main page like they used to
26712 * Fix object variable used for displaying "not-patrolled" CSS class on list
26713 * Fixed interaction of page parameter to ImagePage with the HTML file cache
26714 * Fixed MIME type for SVG files, will be silently changed from image/svg
26715 to image/svg+xml after loading from the database.
26716 * Workaround for djvutoxml bug #1704049 (poor performance). Use djvudump
26718 * Fixed odd behavior in ImagePage on DjVu thumbnailing errors
26719 * (bug 5439) "Go" title search will now jump to shared/foreign Image: and
26720 MediaWiki: pages that have not been locally edited.
26721 * (bug 9630) Limits links in Whatlinkshere forgot about namespace filter
26722 * Fixed upgrade for the non-standard MySQL schemas
26723 * Disable MySQL's strict mode at session start for MySQL 4.1+, to avoid the
26724 various problems that occur when it is on.
26725 * (bug 9585) Fix regression in tidy usage in Special:Undelete previews
26726 * (bug 3826) Normalize some invalid cookie name characters when setting
26727 up $wgCookiePrefix. Completes application of patch by Anders Kaseorg.
26728 * (bug 9649) Fix RTL form alignment for Special:Movepage
26729 * (bug 9582) Members of bot group now mark edits patrolled by default
26730 * (bug 9669) Fix limit ordering for rebuildrecentchanges; broken since
26731 converted from 1.4 to 1.5 schema
26732 * (bug 9682) Revert PHP 5.1 dependency on warning suppression for SVN info
26733 * (bug 5959) Anchors dropped from stub links
26734 * (bug 3348) Some additional weak password checks: password which is same
26735 as username will now be rejected.
26736 * (bug 8602) Converted Special:Contributions to use an IndexPager. The
26737 interpretation of the offset parameter has changed, and the go parameter
26739 * (bug 6204) Fixes for indentation with $wgMaxTocLevel:
26740 - don't emit too many list close tags after an invisible header
26741 - don't emit too many final list close tags if last header is invisible
26742 - don't emit TOC when there are no visible headers
26743 * (bug 7629) Fix $wgBrowserBlackList to avoid false positive on MSIE
26744 when certain plugins are present which alter the user agent
26749 * New script maintenance/language/checkExtensioni18n.php used to check i18n
26750 progress in the extension repository.
26751 * Running maintenance/parserTests.php with '--record' option, will now
26752 automatically attempt to create the required tables
26753 * --purge option to do additional parser-cache purging for purgeList.php
26754 * Fix hardcoded background color in parserTests.php
26755 * parserTests.php : removed the 'light' option for --color argument, replacing
26756 it with a new global switch : $wgCommandLineDarkBg
26757 * (bug 8780) Clarify message for command-line scripts if LocalSettings.php
26758 exists but is not readable
26759 * dumpBackup / importDump now work with PostgreSQL
26760 * (bug 8975) Use "Maintenance script" as the default username for
26761 importImages.php and importTextFile.php scripts
26762 * (bug 8933) Fix maintenance/reassignEdits.php script
26763 * (bug 9440) Added "mediawikiwiki" interwiki prefix to MediaWiki.org
26764 * (bug 2979) Import now gracefully skips invalid titles with a warning
26765 * Restore '--norc' option for maintenance/importTextFile.php
26766 * Help information for maintenance/importTextFile.php now easier to read on
26768 * Doxygen documentation now show the revision number of each file, generate
26769 graphs using dot and include a search engine.
26772 == Languages updated ==
26777 * Belarusian normative (be)
26778 * Belarusian alternative (be-x-old)
26796 * Upper Sorbian (hsb)
26816 * Dutch Lower Saxon (nds-nl)
26818 * Nepal Bhasa (new)
26836 * Old Chinese / Late Middle Chinese (zh-classical)
26837 * Chinese (PRC) (zh-cn)
26838 * Chinese (Taiwan) (zh-tw)
26839 * Cantonese (zh-yue)
26841 == Compatibility ==
26843 MediaWiki 1.10 requires PHP 5 (5.1 recommended). PHP 4 is no longer supported.
26845 PHP 5.0.x fails on 64-bit systems due to serious bugs with array processing:
26846 http://bugs.php.net/bug.php?id=34879
26847 Upgrade affected systems to PHP 5.1 or higher.
26849 MySQL 3.23.x is no longer supported; some older hosts may need to upgrade.
26850 At this time we still recommend 4.0, but 4.1/5.0 will work fine in most cases.
26855 1.10 has several database changes since 1.9, and will not work without schema
26858 If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
26859 new database fields are filled with data.
26861 If you are upgrading from MediaWiki 1.4.x or earlier, some major database
26862 changes are made, and there is a slightly higher chance that things could
26863 break. Don't forget to always back up your database before upgrading!
26865 See the file UPGRADE for more detailed upgrade instructions.
26867 = MediaWiki release notes =
26868 Security reminder: MediaWiki does not require PHP's register_globals
26869 setting since version 1.2.0. If you have it on, turn it *off* if you can.
26873 == MediaWiki 1.9.6 ==
26877 * Correction for API path fix, broken in 1.9.5
26879 == MediaWiki 1.9.5 ==
26883 This is a security update to the Winter 2007 quarterly release. A potential XSS
26884 injection vector affecting api.php only for Microsoft Internet Explorer users
26888 To work around the vulnerability without upgrading, you may disable the API if
26891 :[[Manual:$wgEnableAPI|$wgEnableAPI]] = false;
26893 Not vulnerable versions:
26898 * 1.8 any version (if $wgEnableAPI has been left off)
26900 Vulnerable versions:
26901 * 1.11 <= 1.11.0rc1
26904 * 1.8 any version (if $wgEnableAPI has been switched on)
26906 MediaWiki 1.7 and below are not affected as they do not include the API
26907 functionality, however the BotQuery extension is similarly vulnerable unless
26908 updated to the latest SVN version.
26910 == MediaWiki 1.9.4 ==
26914 This is a security and bug fix update to the Winter 2007 quarterly release.
26915 Minor compatibility fixes for IIS 5 are included.
26917 * (bug [[bugzilla:8847|8847]]) Strip spurious #fragments from request URI to
26918 fix redirect loops on some server configurations
26919 * A possible HTML/XSS injection vector in the API pretty-printing mode has been
26922 The vulnerability may be worked around in an unfixed version by simply
26923 disabling the API interface if it is not in use, by adding this to
26926 :[[Manual:$wgEnableAPI|$wgEnableAPI]] = false;
26928 Not vulnerable versions:
26934 Vulnerable versions:
26935 * 1.11 <= 1.11.0rc1
26938 * 1.8 <= 1.8.4 (if $wgEnableAPI has been switched on)
26940 MediaWiki 1.7 and below are not affected as they do not include the faulty
26941 function, however the BotQuery extension is similarly vulnerable unless updated
26942 to the latest SVN version.
26944 == MediaWiki 1.9.3 ==
26948 This is a security and bug-fix update to the Winter 2007 quarterly release.
26949 Minor compatibility fixes for IIS and PostgreSQL are included.
26951 An XSS injection vulnerability based on Microsoft Internet Explorer's UTF-7
26952 charset autodetection was located in the AJAX support module, affecting MSIE
26953 users on MediaWiki 1.6.x and up when the optional setting $wgUseAjax is enabled.
26955 If you are using an extension based on the optional Ajax module, either disable
26956 it or upgrade to a version containing the fix:
26958 * 1.9: fixed in 1.9.3
26959 * 1.8: fixed in 1.8.4
26960 * 1.7: fixed in 1.7.3
26961 * 1.6: fixed in 1.6.10
26963 There is no known danger in the default configuration, with ''$wgUseAjax'' off.
26965 * ([[mediazilla:8992|8992]]) Fix a remaining raw use of REQUEST_URI in history
26966 * ([[mediazilla:8984|8984]]) Fix a database error in
26967 Special:Recentchangeslinked when using the PostgreSQL database.
26968 * Add ''charset'' to Content-Type headers on various HTTP error responses to
26969 forestall additional UTF-7-autodetect XSS issues. PHP sends only ''text/html''
26970 by default when the script didn't specify more details, which some
26971 inconsiderate browsers consider a license to autodetect the deadly,
26972 hard-to-escape UTF-7. This fixes an issue with the Ajax interface error message
26973 on MSIE when ''$wgUseAjax'' is enabled (not default configuration); this UTF-7
26974 variant on a previously fixed attack vector was discovered by Moshe BA from
26975 BugSec: [http://www.bugsec.com/articles.php?Security=24
26976 http://www.bugsec.com/articles.php?Security=24]
26977 * Trackback responses now specify XML content type
26979 == MediaWiki 1.9.2 ==
26983 This is a bug-fix update that fixes some installation and other minor issues
26984 with the 1.9.1 release as well as a security issue which was introduced in the
26987 JavaScript code which regenerated the "sortable tables" feature did not
26988 properly sanitize input, leading to an HTML injection vulnerability.
26990 * ([[mediazilla:8774|8774]]) Fix path for GNU FDL rights icon on new installs
26991 * ([[mediazilla:8819|8819]]) Fix full path disclosure with skins dependencies
26992 * ([[mediazilla:8819|8819]]) Fixed data-loss bug in compressOld batch text
26993 compression affecting pages which had null edits (move, protect, etc) as second
26994 edit in a batch group. Isolated and patched by Travis Derouin.
26995 * Security fix for sortable tables JavaScript
26997 == MediaWiki 1.9.1 ==
27001 This is a bug-fix update that fixes some installation and upgrade issues with
27002 the original 1.9.0 release.
27004 * ([[mediazilla:3000|3000]]) Fall back to SCRIPT_NAME plus QUERY_STRING when
27005 REQUEST_URI is not available, as on IIS with PHP-CGI
27006 * Security fix for DjVu images. (Only affects servers where .djvu file uploads
27007 are enabled and ''$wgDjvuToXML'' is set.)
27008 * ([[mediazilla:8638|8638]]) Fix update from 1.4 and earlier
27009 * ([[mediazilla:8641|8641]]) Fix order of updates to ipblocks table for updates
27011 * ([[mediazilla:8673|8673]]) Minor fix for web service API content-type header
27012 * Fix API revision list on PHP 5.2.1; bad reference assignment
27013 * Fixed up the AjaxSearch
27014 * Exclude settings files when generating documentation. That could expose the
27015 database user and password to remote users.
27016 * ar: fix the 'create a new page' on search page when no exact match found
27017 * Correct tooltip accesskey hint for Opera on the Macintosh (uses Shift-Esc-,
27019 * ([[mediazilla:8719|8719]]) Firefox release notes lie! Fix tooltips for
27020 Firefox 2 on x11; accesskeys default settings appear to be same as Windows.
27022 == Changes since 1.8 ==
27024 * (bug 8200) Make category lists sorted by name when using Postgres.
27025 * (bug 7841) Support 'IGNORE' inserts for Postgres, fixes watchlist
27027 * (bug 6835) Removing the includes/Parser.php::getTemplateArgs() function,
27028 because it seems to be unused.
27029 * (bug 7139) Increasing the visual width of the edit summary field on larger
27030 screen sizes, for the default monobook skin.
27031 * Fix PHP notice and estimates for dumpBackup.php and friends
27032 * Improved register_globals paranoia checks
27033 * (bug 7545) Fix PHP version check on install
27034 * Disable PHP exception backtrace printing unless $wgShowExceptionDetails
27035 is set. Backtraces may contain sensitive information in function call
27037 * (bug 6164) Avoid smashing Cite state if message transformation triggers
27038 during bad image list check, by skipping message transformation.
27039 This isn't a good permanent fix.
27040 * (bug 6918) Stopped borders and backgrounds from showing through floated
27042 * (bug 6868) Un-hardcode section edit link style
27043 * (bug 3205) Stop right floats from stacking horizontally in non-Monobook skins
27044 * Added global $wgStyleVersion to centralize bumping CSS and JS file versions
27045 for cache-friendly style and script updating
27046 * (bug 7562) Fix non-ASCII namespaces on Windows/XAMPP servers
27047 * Friendlier check for PHP 5 in command-line scripts; it's common for parallel
27048 PHP 4 and 5 installations to interfere on the command-line.
27049 * Fix regression in autoconfirm permission check
27050 * (bug 3015) Add CSS ids to subcategory and page sections on category pages
27051 * (bug 7587) Fix erroneous id for specialpage tab, enabling informative popup
27052 * (bug 7599) Fix thumbnail purging, PHP notices on HTCP image page purge
27053 * (bug 7581) Update language name for cbk-zam
27054 * (bug 7444) Update namespace translations for Telugu (te), kept old values as
27055 alias for compatibility
27056 * (bug 4525) Move section links down visually to same level as headings
27057 (editsection links are now inside the heading elements)
27058 * Workaround for http://bugs.php.net/bug.php?id=31892 , PATH_INFO and hence
27059 URLs of the style /index.php/Main_Page were broken on some CGI installations.
27060 * (bug 7623) Validate custom HTML id's correctly in Monobook interface
27061 * (bug 2241) Fix collision of 'w' and 'd' accesskeys
27062 * (bug 5795) CSS class added to body based on page name for page-specific
27064 * (bug 6276) Stopped search field from getting too large in Cologne Blue
27065 * (bug 7644) User creations that are aborted by hooks shouldn't be counted
27066 against account creations per day limit
27067 * (bug 7636) Show Firefox 2 users correct accesskey prefix
27068 * (bug 6427) Block blocked IPs from using the mail password function
27069 to allow blocking of flooders
27070 * Include common.css from classic-style skins in main HTML with the bump URL
27071 * (bug 7607) Add Karakalpak (kaa) to Names.php and stub message file for
27073 * (bug 7582) Add 'tog-nolangconversion' to MessagesEn.php.
27074 This key is need for languages with variants (zh, sr, kk)
27075 * (bug 7606) MediaWiki messages for "rss" and "atom" missing
27076 * (bug 7609) Add some more '*-summary' messages to MessagesEn.php with empty
27077 strings to allow better localisation via Special:Allmessages. Mark this new
27078 messages as optional for localisation.
27079 * Fix user_newpass upgrade for prefixed tables (reported by Fyren)
27080 * (bug 7663) Include language variant switcher links on Nostalgia skin
27081 * (bug 6531) Fix PHP fatal error on installation page with bad username input.
27082 * (bug 6977) Remove 404 link for autogenerated database documentation.
27083 * (bug 7369) Allow "Show Changes" without requiring edit token.
27084 * (bug 7687) Fix movetalk box checks itself when confirming a delete and move.
27085 * (bug 7684) Obey watchcreated preference for Special:Upload watch checkbox
27086 * (bug 7686) Include id attribute on delete form confirmation button
27087 * Allow compound interwiki prefixes in $wgImportSources
27088 * (bug 7304) Added redirect table to store redirect targets.
27089 * Added querycachetwo table (similar to querycache but has two titles)
27090 * PageArchive can now return a Revision object for more convenient processing
27091 of deleted revision data
27092 * Added 'UndeleteShowRevision' hook in Special:Undelete
27093 * Error message on attempt to view invalid or missing deleted revisions
27094 * Remove unsightly "_" from namespace in Special:Allpages, Special:Prefixindex
27095 * (bug 3224) Allow minor edits by bots to skip new message notification on
27096 user talk pages. This can be disabled by adjusting the 'nominornewtalk'
27097 permission. Patch by Werdna.
27098 * (bug 7741) MATH: fixed broken syntax of underbrace etc. Fixed arrays
27099 * Fix purging for updated SVG files
27100 * (bug 7745) Add id attribute to search button in Monobook
27101 * (bug 7749) MATH: added some more LaTeX symbols, e.g. parallel, diamond, ast...
27102 * (bug 7304) Added code in Article.php to keep redirect table up to date.
27103 * Made special page names case-insensitive and localisable. Care has been taken
27104 to maintain backwards compatibility.
27105 * Used special page subpages in a few more places, instead of query parameters.
27106 * (bug 7758) Added wrapper span to "templates used" explanation to allow CSS
27107 styling (class="mw-templatesUsedExplanation").
27108 * Added {{#special:}} parser function, to give the local default title for
27110 * (bug 7766) Remove redundant / from AJAX requests, can break some servers
27111 * Add tab links from extensions to classic-based skins (SkinTemplateTab hook)
27112 Provides better cross-skin compatibility for extensions using the modern
27113 skin hooks, such as Oversight
27114 * Moved variant language links on Cologne Blue and Nostalgia to before the
27116 * Fix for parser tests with MySQL 5 in strict mode
27117 * Added block option "enable autoblocks"
27118 * Amend Special:Ipblocklist to note when a block has autoblock DISABLED.
27119 * (bug 7780) Fix regression in editing redirects
27120 * Add whitespace above "templates included on this page" using CSS, not
27121 hardcoded line break.
27122 * Remove entries from redirect table on article deletion
27123 * (bug 7788) Force section headers in new section links for users who have
27124 'prompt for blank edit summaries' on.
27125 * (bug 1133) Special:Emailuser: add an option to send yourself a copy of your
27127 * (bug 461) Allow "Categories:" link at bottom of pages to be customized via
27128 pagecategorieslink message.
27129 * Sort the list of skins in "My Preferences" -> Skins by alphabetical order.
27130 * (bug 7785) Postgres compatibility for timestamps in RC feeds
27131 * (bug 7550) Normalize user parameter normally on Special:Log
27132 * (bug 7294) Fix PATH search for diff3 on install
27133 * Various fixes related to the blocking change re: autoblocks. On inserting
27134 an IP block, the ipb_enable_autoblock field is now automagically blanked,
27135 because it doesn't make any sense for an IP. Additionally, IP blocks
27136 without the ipb_enable_autoblock option no longer show up as "autoblock
27137 disabled" on Special:Ipblocklist.
27138 * (bug 7774) MATH: aded more amstex functions
27139 * (bug 1182) MATH: fixed inconsistent rendering of upper case Greek letters in
27141 * Fix regression in streaming page dump generation
27142 * (bug 7801) Add support for parser function hooks in parser tests
27143 * checkUsernames.php now uses wfDebugLog instead of hardcoded path to log
27144 * (bug 7810) Update talk namespaces for Occitan
27145 * Allow case-sensitive URLs to be used for uploading from URLs.
27146 * (bug 1109) Correct fix for compressed 304 responses when additional output
27147 buffers have been installed within the compression handler
27148 * (bug 7819) Move automatic redirect edit summary after pre-save transform
27149 to work properly with subst: fun
27150 * (bug 7826) Fix typos in two English messages.
27151 * (bug 5365) Stop users being prompted to enter an edit summary for null edits,
27152 if they have selected that option in preferences.
27153 * (bug 5936) Show an 'm' to the left of the edit summary on diff pages for minor
27155 * (bug 7820) Improve error reporting for uploads via URL.
27156 * (bug 5149) When autoblocks are enabled, retroactively apply an autoblock to
27157 the most recently used IP of a user when they are blocked.
27158 * Add an index on (rc_user_text,rc_timestamp) on the recentchanges table. This
27159 will make CheckUser.php and the new retroactive autoblock functionality
27161 * Fix regression in Special:Undelete for revisions deleted under MediaWiki 1.4
27162 with compression or legacy encoding
27163 * (bug 6737) Fixes for MySQL 5 schema in strict mode
27164 * Approximate height for client-side scaling fallback instead of passing -1
27165 into the HTML output.
27166 * Make the DNSBL to check for proxy blocking configurable via $wgSorbsUrl
27167 * Add experimental recording/reporting mode to parser tests runner, to
27168 compare changes against the previous run.
27169 Additional tables 'testrun' and 'testitem' are in maintenance/testRunner.sql,
27170 source this and pass --record option to parserTests.php
27171 * Make the set of default parser test input files extensible via
27172 $wgParserTestFiles. This can now be appended to by extensions or local
27173 configuration files so that extension or custom tests can be automatically
27174 run along with the main batch.
27175 * Run PHP install version checks on update.php so command-line updaters see
27176 new version requirements
27177 * Do a check for the PHP 5.0.x 64-bit bug, since this is much more disruptive
27178 as of MW 1.8 than it used to be. Install or upgrade now aborts with a
27179 warning and a request to upgrade.
27180 * (bug 6440) Updated indexes to improve backlinking queries (links, templates,
27182 * Switched 'anon-only' block mode to default for IP blocks
27183 * (bug 3687, 7892) Add distinct heading for media files in category display,
27185 * (bug 1578) Add different icons for external links to audio, video, or PDF in
27187 * Made autoblocks block account creation if the user block has that option
27189 * Add auto-summaries to blankings and large removals without summaries.
27190 * (bug 7811) Allow preview of edit summaries.
27191 * (bug 6839) Wikibits.js minor changes to make JS-lint happier.
27192 * (bug 7932) Make sure that edit toolbar clears floats so it appears correctly.
27193 * (bug 6873) When viewing old revisions, add link to diff to current version.
27194 * (bug 3315) Provide rollback link directly on history page.
27195 * Replace 'old-revision-navigation' message with 'revision-info' and
27196 'revision-nav' messages, wrapped in divs with appropriate id's.
27197 * (bug 4178) MediaWiki:Common.js will now be included for all users if
27198 $wgUseSiteJs is enabled, in addition to (if applicable) MediaWiki:Monobook.js
27199 and user JS subpages.
27200 * (bug 7918) "Templates used on this page" changes during preview to reflect
27201 any added or removed templates, and works as expected for section edits.
27202 * (bug 7919) "Templates used on this page" is now shown for read-only pages.
27203 * (bug 7688) When viewing diff, section anchors in autosummary jump to section
27204 on current page instead of loading the latest version.
27205 * (bug 7970) Use current connection explicitly on Database::getServerVersion
27206 * (bug 2001) Tables with class="sortable" can now be dynamically sorted via
27208 * Added autosummary for new pages with 500 or less characters, and refactor
27209 the autosummary code so it's all done in one function. doEdit is getting too
27211 * (bug 7554) The correct MIME type for SVG images is now displayed on the
27212 image page (image/svg+xml, not image/svg).
27213 * (bug 7883) Added autoblock whitelisting feature, using which specific ranges
27214 can be protected from autoblocking. These ranges are specified, in list
27215 format, in the autoblock_whitelist system message.
27216 * Added placeholders for text injection by hooks to EditPage.php
27217 * (bug 8009) Automatic edit summary for redirects is not filled for edits in
27219 * Installer support for experimental MySQL 4.1/5.0 binary-safe schema
27220 * Use INSERT IGNORE for db-based BagOStuff add/insert, for more memcache-like
27221 behavior when keys already exist on add (instead of dying with an error...)
27222 * Add a hook 'UploadForm:initial' before the upload form is generated, and two
27223 member variable for text injection into the form, which can be filled by the
27225 * (bug 6295) Add a "revision patching" functionality, where an edit can be
27227 (with a functionality similar to diff rev1 rev2 | patch -R rev3 -o rev3).
27228 This is triggered by including &undo=revid in an edit URL. A link to a URL
27229 that will undo a given edit is shown on NEW revision headers on diff pages.
27230 The link leads to a "Show Changes" page showing what will be done to undo the
27232 * Fix display of link in "already rolled back" message for image/category pages
27233 * (bug 6016) Left-aligned images should stack vertically, like right-aligned
27234 images, not horizontally.
27235 * Patch from LeonWP: added UploadForm:BeforeProcessing hook in SpecialUpload.php
27236 * Add AuthPluginSetup hook to override $wgAuth after configuration
27237 * Fix regression in authentication hook auto-creation on login
27238 * (bug 8110) Allow spaces in ISBNs
27239 * (bug 8024) Introduce "send me copies of emails I send to others" preference
27240 * Added 'EditPage::attemptSave' hook before an article is saved.
27241 * (bug 8083) Applied patch for sk localisation
27242 * Add a backslash character to the edit token, to prevent edits via certain
27243 broken proxies that mangle such characters in form submissions
27244 * (bug 7461) Allow overwriting pages using importTextFile.php
27245 * (bug 7946) importTextFile.php doesn't perform pre-save transform
27246 * (bug 8117) {{REVISIONTIMESTAMP}} showed weird default if $wgLocalTZoffset set;
27247 now uses current time for previews and if timestamp can't be loaded from DB
27248 * {{REVISIONTIMESTAMP}} now uses site local timezone instead of user timezone
27249 to ensure consistent behavior
27250 * {{REVISIONTIMESTAMP}} and friends should now work on non-MySQL backends
27251 * (bug 7671) Observe canonical media namespace prefix in Linker::formatComment
27252 * Added js variable wgCurRevisionId to the output
27253 * (bug 8141) Cleanup of Parser::doTableStuff, patch by AzaTht
27254 * (bug 8042) Make miser mode caching limits settable via $wgQueryCacheLimit
27255 instead of hardcoding to 1000
27256 * Enable QueryPage classes to override list formatting
27257 * (bug 5485) Show number of intervening revisions in diff view
27258 * (bug 8100) Fix XHTML validity in Taiwanese localization
27259 * Added redirect to section feature. Use it wisely.
27260 * Added a configuration variable allowing the "break out of framesets" feature
27261 to be switched on and off ($wgBreakFrames). Off by default.
27262 * Allow Xml::check() $attribs parameter to override 'value' attribute
27263 * DB schema change: added two columns (rc_old_len and rc_new_len) to the
27264 recentchanges table to store the text lengths before and after the edit
27265 * (bug 1085) Made Special:Recentchanges show the character difference between
27266 the changed revisions
27267 * Removed a redundant <strong> tag from diff pages that was causing display
27268 issues for some users
27269 * (bug 8203) The keyboard shortcut for "log out" was removed, because users
27270 were pressing it when they intended to press the shortcut for "preview".
27271 * (bug 8148) Handle non-removable output buffers gracefully when cleaning
27272 buffers for HTTP 304 responses, StreamFile, and Special:Export.
27273 Duplicated code merged into wfResetOutputBuffers() and wfClearOutputBuffers()
27274 * Special:AllPages : 'next page' link now point to the first title of the next
27275 chunk instead of pointing to the last title of current chunk.
27276 * (bug 4673) Special:AllPages : add a 'previous' link (new message 'prevpage')
27277 * (bug 8121) wfRandom() was not between 0 and 1
27278 * Add static method Parser::createAssocArgs($args), so parser functions can
27279 use the same code to parse arguments as the templates do.
27280 * Change behavior of logins using the temporary e-mailed password (as stored
27281 in user_newpassword hash field). Instead of just logging in silently and
27282 leaving the previous user_password field in place indefinitely, the user
27283 is now prompted to set a new password.
27285 The password-changing form is at Special:Resetpass; currently it's only
27286 usable for changing from the temporary password during login, but it
27287 could perhaps be generalized, replacing the subform in preferences.
27289 Once the new password is set successfully, the temporary password is wiped
27290 so it cannot be used to login a second time, and the login process
27292 * Suppress 'mail new password' button on login form if $wgAuth forbids
27293 changing user passwords; it wouldn't work very well...
27294 * Consolidate password length checks and $wgAuth manipulation into
27295 User::setPassword() to avoid duplicate code in different places
27296 that set passwords.
27297 * User::setPassword() now throws PasswordError exceptions if the password
27298 is illegal or cannot be set via $wgAuth. These can be caught and a human-
27299 readable error message displayed by UI code.
27300 * Added Title::isSubpage()
27301 * (bug 8241) Don't consider user pages of User:Foo.css to be CSS subpages
27302 * Set an explicit class on framed thumbnail inner divs and images, changed some
27303 CSS to use these instead of using descendent selectors.
27304 * Accept null parameter to User::setPassword() as indicating the password
27305 field should be cleared to an unusable state. Login will only be possible
27306 after the password is reset, for instance by e-mail.
27307 * (bug 6394) Invalidate the password set for "by e-mail" account creations
27308 to avoid accidental empty password creations.
27309 * Made the show change size function work on page moves, page creations, and
27310 log entries. Also fixed it in the javascript recentchanges.
27311 * (bug 8239) correctly get 50 new contributions when clicking '(50 next)'
27312 * (bug 2259) Fix old regression where e-mail addresses were no longer
27313 confirmed on login with mailed password.
27314 * Add a notification about the confirmation mail sent during account
27315 creation, so people don't immediately go off to request a second one.
27316 * Add a warning on Special:Confirmemail if a code was already sent and has
27318 * Add user_editcount field to provide data for heuristics on account use.
27319 Incremented on edit, with lazy initialization from past revision data.
27320 Can batch-initialize with maintenance/initEditCount.php (not yet friendly
27321 to replication environments, this will do all accounts in one query).
27322 * Allow raw SQL subsections in Database::update() SET portion as well as
27323 for WHERE portion. Handy for increments and such.
27324 * User::getOption now accept a default value to override default user values
27325 this makes it consistent with WebRequest::get* methods. Corrected code in
27326 various places accordingly.
27327 * (bug 8264) Fix JavaScript global vars for XHTML mode
27328 * Make $wgSiteNotice value wikitext again, for consistency with editable
27329 MediaWiki:Sitenotice and MediaWiki:Anonnotice.
27330 * (bug 8044) When redirecting from the canonical name of the special page
27331 to the localised one, parameters/subpages are omitted
27332 * (bug 8164) Special:Booksources should use GET for form submission
27333 * Rewrite Special:Booksources to clean up interface and remove redundant code
27334 * (bug 7925) Change Special:Allmessages message name filter javascript to be
27335 a bit more responsive and easier on the CPU
27336 * (bug 4488) Support watching pages on deletion; introduces new user preference
27337 * Minor restructuring of Special:Preferences; "watch pages I edit" and "watch
27338 pages I create" options now accessible under "Watchlist" options
27339 * (bug 8153) <nowiki> doesn't work in site notice
27340 * (bug 6690) wfMsgNoTrans() transforms messages
27341 * (bug 8274) Wrap edit tools in a <div> with a specified class
27342 * Detect PHP 5.0.x 64-bit bug and abort in WebStart.php; too many things break
27343 mysteriously otherwise (detection code copied from install-utils.inc)
27344 * (bug 8295) Change handling of <center> tags in doBlockLevels() to match that
27346 * (bug 8110) Make magic ISBN linking stricter: only match ten-digit sequences
27347 (plus optional ISBN-13 prefix) with no immediately following alphanumeric
27348 character, disallow multiple consecutive internal redirects
27349 * (bug 2785) Accept optional colon prefix in links when formatting comments
27350 * Don't show "you can view and copy the source of this page" message for
27351 pages which don't exist
27352 * (bug 8310) Blank line added to top of 'post' when page is blank
27353 * (bug 8109) Template parameters ignored in "recentchangestext"
27354 * Gracefully skip redirect-to-fragment on WebKit versions less than 420;
27355 it messes up on current versions of Safari but is ok in the latest
27356 nightlies. Checking the version number will allow it to automatically
27357 work when new releases of Safari appear.
27358 * Fix regression in thumb styles; size and padding didn't match with
27360 * (bug 8333) Fix quick user data update on login password change on
27361 replication database setups. User data is now pulled from master
27362 instead of slave in User::loadFromDatabase, ensuring that it is
27363 fresh and accurate when read and then saved back into cache.
27364 This was breaking with the Special:Rename operation which
27365 automatically logs the user in with the new password after changing
27366 it; pulling from slave meant the record was often not the updated
27368 * (bug 8335) Set image width to the first valid parameter found.
27369 * (bug 8350) Fix watchlist viewing bug when using Postgres.
27370 * (bug 6603) When warning about invalid file extensions, output the bit
27371 of the extension we actually checked
27372 * (bug 7669) Drop defaults on BLOB/TEXT columns for better compatibility
27373 with MySQL's strict mode, often enabled by the Windows installer.
27374 The defaults are ignored anyway when strict mode is off...
27375 * (bug 7685) Use explicit values for ar_text and ar_flags when deleting,
27376 for better compatibility with MySQL's strict mode
27377 * Update default interwiki values to reflect changed location of ursine:
27378 * (bug 5411) Remove autopatrol preference
27379 * Users who have the "autopatrol" permission will have their edits marked as
27380 patrolled automatically
27381 * Users who do not have the "autopatrol" permission will no longer be able
27382 to mark their own edits as patrolled
27383 * Introduce 'PingLimiter' hook; see docs/hooks.txt for more information
27384 * (bug 532) Tweaked alt text for some interface messages
27385 * (bug 8231) Gave useful alt text to the main <img> on image pages
27386 * (bug 371) Remove alt text for "Enlarge" icon on thumbnails
27387 * Initialize user_editcount to 0 instead of NULL for newly created accounts
27388 * (bug 3696) Strip LRM and RLM characters from titles to work around the
27389 problem some people have where titles cut-and-pasted from lists include
27390 the bidi override characters appended to the lists.
27391 A more thorough blacklist for forbidden and translatable characters would
27392 be wise, though, as might a cleaner method for the lists in the first place.
27393 * Fix regression in email password resets on read-restricted sites
27394 * Set tabindex on fields in deletion form so you don't have to tab through
27395 the links in the sitenotice
27396 * (bug 8271) Show full time and date on viewer for individual deleted
27398 * (bug 8214) Output file size limit and actual file size in appropriate units
27400 * (bug 8016) Purge objectcache table during upgrade processes - use the
27401 --nopurge option to prevent this when running maintenance/update.php
27402 * (bug 7612) Remove superfluous link to Special:Categories from result items
27403 on Special:Mostcategories
27404 * {{PLURAL:}} now handles formatted numbers correctly
27405 * (bug 8331) Added the change size value to watchlists; therefore made
27406 watchlists use RecentChange::newFromRow() instead of newFromCurRow()
27407 * (bug 8351) Fix undo for simple reverts
27408 * (bug 6856) User::clearNotification() does not respect read-only mode
27409 * (bug 6853) Use a checkbox on the installer form to indicate that a superuser
27410 account should be used; this is clearer than the old check which relied on
27411 the password never being an obscure value
27412 * Remove old unused watchlist cache, which was a leftover from the old schema
27413 where watchlists were more expensive to generate
27414 * Minor cosmetic changes to Special:Userrights
27415 * Added wgCanonicalSpecialPageName to JavaScript variables
27416 * Fix image deleting when using Postgres.
27417 * Output both source and destination titles in maintenance/moveBatch.php
27418 * Added basic parser tests for language variants
27419 * Enable selflinks and categories to be written in some of the language variants
27420 * Prevent conversion of JavaScript code in language variants
27421 * Output software version number in maintenance/parserTests.php
27422 * (bug 7169) Use Ajax to watch/unwatch articles if enabled
27423 * Make variant table caching a little more robust, using main language code
27424 in cache key. Probably this is still a bit wonky, though. Was breaking
27425 parser tests when Chinese tables were getting loaded into Serbian code.
27426 * (bug 8380) Be nicer about blank lines in deleteBatch.php
27427 * (bug 8401) Fix regression in SORBS lookup for some DNS setups
27428 * Use raw file descriptor in posix_isatty() check to avoid warning on
27429 Linux systems with at least some versions of PHP
27430 * (bug 5908) Allow overriding the default category sort key for all items on
27431 a page using {{DEFAULTSORT}}
27432 * (bug 6449) Throw a more definitive error message when installation fails
27433 due to an invalid database name
27434 * (bug 5827) Use full text for option link labels on Special:Watchlist
27435 * (bug 8018) Allow hiding minor edits from the watchlist
27436 * (bug 8427) MonoBook RTL IE 7.0 tweaks failed when sidebar's navigation
27437 section is renamed; no longer relies on first section name
27438 * Stabilize client-side table sorting even if the underlying Javascript sort()
27439 implementation is unstable
27440 * Add hook for extensions to add user information to the panel in preferences,
27441 next to the user name and ID.
27442 * (bug 8392) Display protection status of transcluded pages in the edit page
27443 template list. Patch by Fyren, with i18n naming tweak.
27444 * Fix for interwiki transclusion where target wiki uses query string for title
27445 * Resolve namespaces on interwiki Title objects using canonical namespace names
27446 if possible (should not happen, though, outside interwiki transclusion... and
27447 maybe not even then, but it does)
27448 * (bug 8447) Fix SQL typo breaking non-default $wgHitcounterUpdateFreq
27449 * Do not allow previews of deleted images to be cached
27450 * Add global variable $wgDefaultLanguageVariant used to set the default language
27451 variant of a wiki to something different than the main language code
27452 * Add 'variant' option to parserTests - runs test with the given variant as
27453 preferred, utilize it for more parser tests of language variants code
27454 * (bug 6503) Fix bug that stopped certain irrelevant links from being hidden
27456 * Avoid PHP warning in Creative Commons metadata when a creative commons
27457 license is not actually set up
27458 * (bug 8463) Don't print external link icons for Monobook
27459 * (bug 8461) Support watching pages on move
27460 * (bug 8041) Work around bug with debug_backtrace when Zend Optimizer is
27461 loaded by skipping the function. Use wfDebugBacktrace() wrapper function.
27462 * Reduce config file clutter by setting various script and upload paths
27463 based on $IP or $wgScriptPath in Setup.php. They can still be explicitly
27464 overridden in LocalSettings.php if desired...
27465 * Attempt to detect redirect loops for the canonical title redirect, and
27466 give some hints to the poor confused administrator.
27467 * Introduce new flag 'R' - raw output for language variant escape tags
27468 * Advise users when updates for a query page have been disabled using
27469 $wgDisableQueryPageUpdate
27470 * (bug 8413) Improve comments for $wgNamespaceRobotPolicies
27471 * (bug 8330) Show "bytes" suffix on recent changes diff counter
27472 optionally... if set in rc-changes-size message (default empty for now)
27473 * (bug 8489) Support basic links in <gallery> caption attribute
27474 * (bug 8485) Correct Lingala number formatting
27475 * The MediaWiki namespace is no longer pre-filled with default messages on
27476 install. All default messages will be removed from the MediaWiki namespace
27478 * Recentchanges RSS/Atom feeds now use a separate message for the description
27479 to avoid cluttering it with useless wiki formatting
27480 * (bug 8417) Handle EXIF unknown dates
27481 * (bug 8372) Return nothing on empty <math> tags.
27482 * New maintenance script to show the cached statistics : showStats.php.
27483 * Count deleted edits when regenerating total edits in maintenance/initStats.php
27484 * (bug 3706) Allow users to be exempted from IP blocks. The ipblock-exempt
27485 permission key has been added to enable this behavior, by default assigned to
27487 * (bug 7948) importDump.php now warn that Recentchanges need to be rebuild.
27488 * (bug 7667) allow XHTML namespaces customization
27489 * (bug 8531) Correct local name of Lingála (patch by Raymond)
27490 * Fix regression with default lock file and cache directories; threw visible
27491 warning with open_basedir
27494 == 1.8 Compatibility changes ==
27496 === Zend Optimizer ===
27498 A bug in some versions of PHP 5 and Zend Optimizer which was triggered under
27499 MediaWiki 1.8.x has been worked around by disabling some internal debugging
27500 features when Zend Optimizer is loaded. This should solve some common
27501 "blank page" problems.
27503 === PHP 5.0 64-bit ===
27505 MediaWiki now checks for a condition where PHP 5.0.x corrupts array data
27506 on 64-bit systems and warns you to upgrade PHP to solve the problem. This
27507 bug causes Special: pages to fail on affected systems under MediaWiki 1.8
27508 and higher, and subtler data corruption on earlier versions.
27510 The only known workaround is to upgrade PHP to 5.1 or later, which you
27511 probably should do anyway for security reasons!
27515 MediaWiki should now install and run correctly on MySQL 5.0 and higher when
27516 MySQL's "strict mode" is enabled. (This is now the default for many Windows
27517 installations, though it seems to remain off by default on Unix.)
27519 This fixes errors about "cannot default default value for BLOB/TEXT fields".
27521 === ImageMagick ===
27523 Note that ImageMagick older than 6.x may no longer work for image resizing
27524 due to use of the -thumbnail option.
27527 == 1.8 Behavior changes ==
27529 === Localized special pages ===
27531 The names of Special: pages can now be localized, so links and URLs to them
27532 are more legible in languages that aren't English.
27534 Not all languages have included localized names yet.
27536 === E-mail password ===
27538 Users are now required to set a new password for themselves when they first
27539 log in with a newly generated e-mailed password.
27541 Requesting passwords frequently is prevented to reduce abusive mailbombing.
27543 === Undo revision ===
27545 An "undo" link now appears in diff view for easier reverting of older edits.
27546 When GNU diff3 is available for edit conflict merging, this can make it much
27547 easier to "undo" the changes of an older edit when there are surrounding
27548 changes elsewhere in the page.
27550 The changes must be manually reviewed and approved, as with conventional
27551 full-revision reverts.
27555 User blocks can be set to disable the automatic blocking of IP addresses the
27556 account logs in with.
27559 == 1.8 Database changes ==
27561 * new 'redirect' table stores data on page redirects
27562 * new 'querycachetwo' table used for some cached special pages
27563 * 'ipblocks' table adds 'ipb_enable_autoblock'
27564 * 'recentchanges' table adds 'rc_old_len', 'rc_new_len' for size tracking
27565 * 'user' table has added 'user_newpass_time' and 'user_editcount' fields
27566 * some indexes have been updated on 'recentchanges'
27568 == 1.8 Configuration changes ==
27570 Several configuration options have changed since 1.8:
27572 === $wgEnableAPI ===
27574 The experimental machine API interface is now enabled by default, read-only.
27575 You can disable it by setting $wgEnableAPI = false; in LocalSettings.php.
27577 === $wgPathInfo ===
27579 The use of PATH_INFO (the text after the script name in 'index.php/Blah')
27580 is controlled by the $wgUsePathInfo setting. This is now explicitly disabled
27581 for CGI, apache2filter, and ISAPI configurations of PHP, for more consistency
27582 with the autodetection from the installer.
27584 In some rarer configurations you may have to switch $wgUsePathInfo from false
27585 to true or, perhaps, from true to false to make things work properly if bad
27586 PATH_INFO data comes through the server.
27588 The wiki now tries to detect this condition and should show you an error
27589 message describing what to change instead of sending the browser into an
27590 infinite redirect loop.
27592 === $wgScript and other path settings ===
27594 The following configuration variables are now automatically set in Setup.php
27595 if they are not overridden in LocalSettings.php:
27597 from $wgScriptPath:
27599 | \- $wgArticlePath
27600 + $wgRedirectScript
27607 - $wgStyleDirectory
27608 + $wgUploadDirectory
27609 \- $wgMathDirectory
27612 Newly generated configuration files will by default include only $wgScriptPath
27613 (hardcoded from the installer) and $IP (detected at runtime).
27615 Old configuration files which specify all these values explicitly should
27616 continue to work just fine, but if you use the defaults you can remove them
27619 === $wgGroupPermissions ===
27621 The sysop group now holds the "autopatrol" and "ipblock-exempt" rights by
27624 "autopatrol" replaces the preference for marking ones own edits patrolled
27625 by default; users holding this permission will automatically have their
27626 edits patrolled, while others cannot mark their own edits as patrolled
27627 even if they have patrolling rights.
27629 "ipblock-exempt" excludes the user from IP blocks; accounts which are blocked
27630 explicitly by name will still be blocked, however. This is given to sysops
27631 to minimize annoyance from accidental "collateral damage"; remember that a
27632 sysop will be able to lift the block if they desire.
27634 The bot group now holds the "nominornewtalk" right. A user with this right
27635 will not trigger new message notifications when making minor edits to user
27636 talk pages. This is meant to minimize annoyance from maintenance bot
27639 === $wgUseWatchlistCache ===
27641 Watchlist caching has been removed. The feature was not maintained, and has
27642 been unnecessary since switching to the 'recentchanges' database table
27643 reduced server pressure for Wikipedia's watchlists.
27645 === $wgBreakFrames ===
27647 MediaWiki in the past attempted to detect when it was embedded in a frameset
27648 and "break out" of it, assuming it to be hostile.
27650 This behavior is now disabled by default, but can be reenabled by setting
27651 $wgBreakFrames to true in LocalSettings.php.
27654 == 1.8 New settings ==
27656 === $wgVariantArticlePath ===
27658 For languages with script variant support (Chinese, Serbian, and others),
27659 it's possible to use alternate URL paths to select the variant for article
27660 display, setting $wgVariantArticlePath.
27662 Documentation for this setting would be useful.
27664 === $wgMaxMsgCacheEntrySize ===
27666 The message cache can now skip items larger than a given size; this allows
27667 it to better handle the primary caching case when large CSS and JS blobs are
27670 === $wgStyleVersion ===
27672 When making significant changes to skin stylesheets and JavaScript files,
27673 you can append a string to this variable to tweak the generated URLs,
27674 forcing newly rendered pages to bring in a fresh version despite server-
27675 or browser-side caching.
27677 Normally this will be set in the course of MediaWiki development, but
27678 if doing development on a custom skin you may wish to poke it as well.
27680 === $wgRCShowChangedSize ===
27682 Special:Recentchanges and Special:Watchlist now show the number of bytes
27683 added or removed to an article to give an idea of the size of the edit.
27684 This information was previously available only in the IRC update feeds.
27686 To disable this site-wide, set $wgRCShowChangedSize to false.
27687 (Individual users can suppress the data in custom CSS.)
27689 Adjust $wgRCChangedSizeThreshold to trigger highlighting of particularly
27692 The formatting of the size figure can be adjusted through the
27693 [[MediaWiki:Rc-change-size]] message.
27695 === $wgQueryCacheLimit ===
27697 The number of rows stored for "expensive" special pages in miser mode
27698 can now be adjusted up or down from the default 1000.
27700 === $wgDisableQueryPageUpdate ===
27702 Individual "expensive" special pages can be skipped in processing by
27703 updateSpecialPages if added to this list.
27705 === $wgSorbsUrl ===
27707 The base hostname for the DNS-based proxy blacklist can now be overridden
27708 when $wgEnableSorbs is set, to use a different blacklist instead of SORBS.
27709 The blacklist would need to respond the same was as SORBS; any positive
27710 response will be taken as a proxy.
27712 === $wgAjaxWatch ===
27714 Experimental AJAX mode for the watch/unwatch tabs to execute inline.
27715 Does not include the UI messages describing how to reach the watchlist,
27716 so you may not want it on a general-audience site just yet.
27718 === $wgParserTestFiles ===
27720 MediaWiki's parser test suite can now be expanded with additional test
27721 files. Custom extensions can add their test files to this array, and
27722 they will be run along with the main tests by maintenance/parserTests.php
27726 == MediaWiki 1.8.5 ==
27730 This is a security fix update to the Fall 2006 quarterly release snapshot. A
27731 possible HTML/XSS injection vector in the API pretty-printing mode has been
27734 The vulnerability may be worked around in an unfixed version by simply
27735 disabling the API interface if it is not in use, by adding this to
27738 :[[Manual:$wgEnableAPI|$wgEnableAPI]] = false;
27740 (This is the default setting in 1.8.x.)
27742 Not vulnerable versions:
27748 Vulnerable versions:
27749 * 1.11 <= 1.11.0rc1
27752 * 1.8 <= 1.8.4 (if $wgEnableAPI has been switched on)
27754 MediaWiki 1.7 and below are not affected as they do not include the faulty
27755 function, however the BotQuery extension is similarly vulnerable unless updated
27756 to the latest SVN version.
27758 == MediaWiki 1.8.4 ==
27762 This is a security and bug-fix update to the Fall 2006 quarterly release.
27764 An XSS injection vulnerability based on Microsoft Internet Explorer's UTF-7
27765 charset autodetection was located in the AJAX support module, affecting MSIE
27766 users on MediaWiki 1.6.x and up when the optional setting
27767 [[Manual:$wgUseAjax|$wgUseAjax]] is enabled.
27769 If you are using an extension based on the optional Ajax module, either disable
27770 it or upgrade to a version containing the fix:
27771 * 1.9: fixed in 1.9.3
27772 * 1.8: fixed in 1.8.4
27773 * 1.7: fixed in 1.7.3
27774 * 1.6: fixed in 1.6.10
27776 There is no known danger in the default configuration, with $wgUseAjax off.
27778 * (bug [[bugzilla:8819|8819]]) Fix full path disclosure with skins dependencies
27779 * Add 'charset' to Content-Type headers on various HTTP error responses to
27780 forestall additional UTF-7-autodetect XSS issues. PHP sends only 'text/html' by
27781 default when the script didn't specify more details, which some inconsiderate
27782 browsers consider a license to autodetect the deadly, hard-to-escape UTF-7.
27783 This fixes an issue with the Ajax interface error message on MSIE when
27784 [[Manual:$wgUseAjax|$wgUseAjax]] is enabled (not default configuration); this
27785 UTF-7 variant on a previously fixed attack vector was discovered by Moshe BA
27786 from BugSec: http://www.bugsec.com/articles.php?Security=24
27787 * Trackback responses now specify XML content type
27789 == MediaWiki 1.8.3 ==
27793 MediaWiki 1.8.3 fixes several issues in the Fall 2006 snapshot release:
27795 * ([[mediazilla:7831|7831]]) Regression in AutoAuthenticate hook
27796 * Run PHP install version checks on update.php so command-line updaters see new
27797 version requirements
27798 * Do a check for the PHP 5.0.x 64-bit bug, since this is much more disruptive
27799 as of MW 1.8 than it used to be. Install or upgrade now aborts with a warning
27800 and a request to upgrade.
27801 * XSS fix in AJAX module
27803 An XSS injection vulnerability was located in the AJAX support module,
27804 affecting MediaWiki 1.6.x and up when the optional setting $wgUseAjax is
27807 There is no danger in the default configuration, with $wgUseAjax off.
27809 If you are using an extension based on the optional AJAX module, either disable
27810 it or upgrade to a version containing the fix:
27812 == MediaWiki 1.8.2 ==
27816 MediaWiki 1.8.2 fixes several issues in the Fall 2006 snapshot release:
27818 * ([[mediazilla:7565|7565]]) Fixed typos in German localisation
27819 * ([[mediazilla:7562|7562]]) Fix non-ASCII namespaces on Windows/XAMPP servers
27821 == MediaWiki 1.8.1 ==
27825 MediaWiki 1.8.1 fixes several issues in the Fall 2006 snapshot release:
27827 * Fix PHP notice and estimates for dumpBackup.php and friends
27828 * Improved register_globals paranoia checks
27829 * ([[mediazilla:7545|7545]]) Fix PHP version check on install
27830 * Experimental web API disabled by default
27831 * Disable PHP exception backtrace printing unless $wgShowExceptionDetails is
27832 set. Backtraces may contain sensitive information in function call parameters.
27834 == MediaWiki 1.8.0 ==
27838 This is the quarterly release snapshot for Fall 2006. While the code has been
27839 running on Wikipedia for some time, installation and upgrade bits may be less
27840 well tested. Bug fix releases may follow in the coming days or weeks.
27842 MediaWiki is now using a "continuous integration" development model with
27843 quarterly snapshot releases. The latest development code is always kept "ready
27844 to run", and in fact runs our own sites on Wikipedia.
27846 Release branches will continue to receive security updates for about a year
27847 from first release, but nonessential bugfixes and feature development happen
27848 will be made on the development trunk and appear in the next quarterly release.
27850 Those wishing to use the latest code instead of a branch release can obtain it
27851 from source control: [[Download from SVN]]
27853 == Configuration changes ==
27854 * $wgUseETag, to enable/disable sending of HTTP ETag headers (default: disabled)
27855 * $wgLegalTitleChars now includes '+' by default for better compatibility with
27856 importing data dumps from Wikipedia
27857 * $wgDefaultUserOptions now includes all default option settings instead of
27860 == Major new features ==
27861 * ([[mediazilla:7098|7098]]) Add an option to disable/enable sending of HTTP
27862 ETag headers, as it seems to result in broken behaviour in combination with
27863 Squid 2.6 (disabled by default).
27864 * ([[mediazilla:550|550]]) Allow blocks on anonymous users only.
27865 * ([[mediazilla:6420|6420]]) Render thumbnails for DJVU images, support
27866 multipage DJVU display on image pages. Added new 'page=' thumbnail option to
27867 select a page from a multipage djvu for thumbnail generation.
27868 * Full Postgres support is now enabled. It requires version 8.1 or better, and
27869 needs to have both plpgsql and tsearch2 already installed.
27870 * ([[mediazilla:6386|6386]]) fix grammatical errors in danish naming of talk
27873 == Changes since 1.7 ==
27875 * Introduced AjaxResponse object, superceding AjaxCachePolicy
27876 * Changes to sajax_do_call: optionally accept an element to fill instead of a
27877 callback function; take the target function or element as a third parameter;
27878 pass the full XMLHttpRequest object to the handler function, instead of just
27879 the resultText value; use HTTP response codes to report errors.
27880 * (bug 6562) Removed unmaintained ParserXml.php for now
27881 * History paging overlap bug fixed
27882 * (bug 6586) Regression in "unblocked" subtitle
27883 * Don't put empty-page message into view-source when page text is blank
27884 * (bug 6587) Remove redundant "allnonarticles" message
27885 * Block improvements: Allow blocks on anonymous users only. Optionally allow
27886 or disallow account creation from blocked IP addresses. Prevent duplicate
27887 blocks. Fixed the problem of expiry and unblocking erroneously affecting
27888 multiple blocks. Fixed confusing lack of error message when a blocked user
27889 attempts to create an account. Fixed inefficiency of Special:Ipblocklist in
27890 the presence of large numbers of blocks; added indexes and implemented an
27892 * (bug 6448) Allow filtering of Special:Newpages according to username
27893 * (bug 6618) Improve permissions/error detection in Special:Lockdb
27894 * Quick hack for extension testing: parser test doesn't create new message
27896 * (bug 6299) Maintain parser's revision ID across recursive calls to fix
27897 {{REVISIONID}} when Cite extension is used
27898 * (bug 6622) Removed deprecated function Image::newFromTitle
27899 * (bug 6627) Fix regression in Special:Ipblocklist with table prefix
27900 * Removed forced dereferencements (new() returns a reference in PHP5)
27901 * Note about $wgUploadSizeWarning using byte
27902 * (bug 6592) Add most viewed pages summary to Special:Statistics
27903 * Pre-strip characters ignored in IDNs from URLs so they can't be used
27904 to break the blacklists for regular URLs
27905 * Fix regression in blocking of user accounts
27906 * (bug 6635) Fix regression searching for range blocks on Ipblocklist
27907 * Fix regression searching Ipblocklist with ugly URLs
27908 * (bug 6639) Use a consistent default for upload directories
27909 * Preserve entered reason when reporting unconfirmed lock on Special:Lockdb
27910 * (bug 6642) Don't offer to unlock the database when it isn't locked
27911 * cleanupTitles.php changed from --dry-run option to --fix, so default
27912 behavior is now a non-invasive check as with namespaceDupes.php
27913 * (bug 6660) Fix behavior of EditPage::blockedPage() when the article does
27914 not exist; now doesn't show the source box if the user hasn't provided it
27915 (blocked mid-edit) and the page doesn't exist
27916 * Improve default value of "blockedtext"
27917 * (bug 6680) Added localisation for Dutch bookstore list (nl)
27918 * Renamed maintainace script redundanttrans.php to unusedMessages.php - clearer
27920 * Fix regression which allowed some blocked users to create additional accounts
27921 * (bug 6657) Fix Hungarian linktrail
27922 * (bug 6751) Fix preview of blanked section with edit on first preview option
27923 * (bug 5456) Separate MediaWiki:Search into messages for both noun and verb,
27924 introduced 'MediaWiki:Searchbutton'
27925 * Made lines from initialiseMessages() appear as list items during installation
27926 * Moved the bulk of the localisation data from the Language*.php files to the
27927 Messages*.php files. Deleted most of the Languages*.php files.
27928 * Introduced "stub global" framework to provide deferred initialisation of core
27930 * Removed placeholder values for $wgTitle and $wgArticle, these variables will
27931 now be null during the initialisation process, until they are set by index.php
27932 or another entry point.
27933 * Added DBA cache type, for BDB-style caches.
27934 * Removed custom date format functions, replacing them with a format string in
27935 the style of PHP's date(). Used string identifiers instead of integer
27936 identifiers, in both the language files and user preferences. Migration should
27937 be transparent in most cases.
27938 * Simplified the initialisation API for LoadBalancer objects.
27939 * Removed the broken altencoding feature.
27940 * Moved default user options and toggles from Language to User. Language objects
27941 are still able to define default preference overrides and extra user toggles,
27942 via a slightly different interface.
27943 * Don't include the date option in the parser cache rendering hash unless
27944 $wgUseDynamicDates is enabled.
27945 * Merged LanguageUtf8 with Language. Removed LanguageUtf8.php.
27946 * Removed inclusion of language files from the bottom of Language.php. This is
27947 now consistently done from Language::factory().
27948 * Add the name of the executing maintenance script to the debug log. Start the
27949 profiler during maintenance scripts.
27950 * Added "serialized" directory, for storing precompiled data in serialized form.
27951 * Fix regression in auto-set NS_PROJECT_TALK namespace
27952 * Fix regression in ordering of namespaces
27953 * (bug 6806, 6030) Added several global JS variables for article path, user
27954 name, page title, etc.
27955 * hooks registered with addOnloadHook are now called at the one of the html body
27957 * Split ajax aided search from core ajax framework. Use wgUseAjax to enable the
27958 framework and wgAjaxSearch to enable the suggest feature for the search box.
27959 * Added experimental installer for extensions.
27960 See maintenance/installExtension.php
27961 * Added Tajic (tg) language file.
27962 * (bug 6903) Added Cantonese localisation (zh-yue)
27963 * Fix regression in Korean and Japanese date formatting (day of week)
27964 * (bug 6919) Add English alias magic words for Tatar (tt) language file.
27965 * (bug 6753) Fixed broken Kazakh linktrail (kk)
27966 * (bug 6700) Added Kazakh language variants to Names.php
27967 * (bug 6827) some i18n specific maintenance scripts fails after merge of
27968 localisation-work branch
27969 * Throwed an exception for the deprecated functions OutputPage::sysopRequired
27970 and OutputPage::developerRequired - use OutputPage::permissionRequired
27972 * Removed the deprecated functions User::isSysop, User::isBureaucrat and
27973 User::isDeveloper - use User::isAllowed instead.
27974 * (bug 769) OutputPage::permissionRequired() should suggest groups with the
27976 * (bug 6971) Fix regression in Special:Export history view
27977 * Revamped Special:Imagelist
27978 * (bug 7000) updated MessagesPl.php
27979 * (bug 6946) Fix unexpected behavior change with GET hits to Special:Export
27980 * (bug 1866) Improve navigation on Special:Listusers; user now a starting
27981 point as with Special:Allpages, rather than a pure limit.
27982 * Clean up tab order on Special:Blockip
27983 * (bug 5969) Clean up tab order on Special:Userlogin forms
27984 * (bug 3512) namespaceDupes now handles spaces and initial caps properly
27985 * (bug 7037) Fix regression in login tab order
27986 * (bug 7031) Report missing email on 'email password' instead of false success
27987 * (bug 7010) Don't send email notifications for watched talk pages when user
27988 has selected to receive only updates for their own talk page
27989 * Added {{CURRENTHOUR}}
27990 * Added [[:Image:Foo.png]] style links to the pagelinks table
27991 * Avoid duplicate revision imports with Special:Import
27992 * (bug 7054) Validate email address before sending email confirmation message
27993 * (bug 7061) Format title on "from (page)" links on Special:Allpages
27994 * (bug 7044) Introduce "padleft" and "padright" colon functions
27995 * Pass page title as parameters to "linkshere" and "nolinkshere" and update
27996 default message text
27997 * Allows to upload from publicy accessible URL. Set $wgAllowCopyUploads = true;
27998 in LocalSettings.php
27999 Limited to $wgMaxUploadSize (default:100MB); URL upload is limited to sysops
28000 by default, and displayed as a second line if appropriate
28001 * (bug 832) Return to user page after emailing a user
28002 * (bug 366) Add local-system-timezone equivalents for date/time variables
28003 * (bug 7109) Fix Atom feed version number in header links
28004 * (bug 7075) List registered parser function hooks on Special:Version
28005 * (bug 7059) Introduce "anchorencode" colon function
28006 * Include SVN revision number in {{CURRENTVERSION}} output, where applicable
28007 * Fix bug in wfRunHooks which caused corruption of objects in the hook list
28008 * (bug 4979) Use simplified email addresses when running on Windows
28009 * (bug 4434) Show block log fragment on Special:Blockip
28010 * [[MediaWiki:Disambiguationspage]] may optionally contain wiki links to any
28011 number of disambiguation templates.
28012 * [[Special:Disambiguations]] now shows pages in NS:0 that link to any pages
28013 that embed any of the templates listed at [[MediaWiki:Disambiguationspage]].
28014 * Fix formatting of titles on Special:Undelete
28015 * (bug 7026) Fix action=raw&templates=expand
28016 * (bug 6976) Add namespace and direction classes to classic skins
28017 * (bug 7144) Don't "return to main" from OutputPage::loginToUse() if the user
28018 can't read the main page in the first place
28019 * (bug 7188) Fix minor borkage in HTMLForm
28020 * (bug 6675) Replaced message 'watchthis' with new message 'watchthisupload in
28022 * Add a quickie script dumpSisterSites.php for generating a page list in the
28023 format for WSR-1 SisterSites support
28024 * (bug 7223) Monobook.js is used for site content, should not be localized
28025 * Set default disabled values for DjVu render options
28026 * Added Xml::option() for generating <option>s easily
28027 * Localized page numbers in drop-down for DjVu page selection
28028 * Fixed linktrail for vi
28029 * (bug 6893) "Call to a member function exists() on a non-object" on
28030 trackback.php with bad input
28031 * (bug 6886) PHP undefined offset on bad input to Special:Revisiondelete
28032 * (bug 6887) PHP error for call to getId() on bad input to
28033 Special:Revisiondelete
28034 * (bug 6888) PHP error for call to getTimestamp() on bad input to
28035 Special:Revisiondelete
28036 * (bug 7252) Use dvipng support in texvc math rastrization. dvipng is required
28037 if texvc is rebuilt.
28038 * (bug 7279) Use wfBaseName in place of basename() in more places
28039 * Clear newtalk marker on diff links with explicit current revision number
28040 * (bug 7064) Replace hard-coded empty message checks with wfEmptyMsg calls
28041 * (bug 6777) Remove some PHP 4 compat cruft
28042 * Add --user, --comment, and --license options to importImages.php
28043 * (bug 6216) The immobile namespace message does not mention the source page
28044 * (bug 7299) Normalize username filter on Special:Newpages
28045 * (bug 7306) RTL text in an LTR wiki breaks appearance of Special:Recentchanges
28046 * (bug 7312) Don't emit SET NAMES utf8 if connection failed
28047 * (bug 7305) Proper compare for bot check on RC notify, should fix overrides
28048 that force edits by non-bot users to bot mode
28049 * Set Vary: Cookie on action=raw generated CSS and JS, to ensure that user
28050 preferences don't get stuck in proxy caches for other people
28051 * (bug 7324) Fix error message for failure of Database::sourceFile()
28052 * (bug 7309) Plurals: use singular form for zero in French and Brazilian
28054 * Add page_no_title_convert field to support language variant conversion
28055 for page titles which shouldn't be converted on display/linking
28056 * Lazy extraction of text chunks in Revision objects, may reduce hits to
28057 external storage when actual text content is not used
28058 * Added experimental $wgRevisionCacheExpiry to cache extracted revision text
28059 in $wgMemc, to further reduce hits to external storage.
28060 Set to 0 (disabled) by default.
28061 * Minor changes to the installer.
28062 * Remove ":" for 'youremail' and 'yourrealname' in
28063 includes/templates/Userlogin.php so that ":" could be used in i18n for
28064 Special:Preferences (like 'username' and 'uid').
28065 * Fix layout for Special:Preferences->Date and Time (position for
28067 * Updates to language variant code for Serbian et al
28068 * (bug 6756) Enabling RTL direction for kk-cn
28069 * (bug 6701) Kazakh language variants in MessagesEn.php
28070 * (bug 7335) SVN revision check in Special:Version fails on SVN 1.4 working copy
28071 * (bug 6518) Replaced 'lastmodified' with 'lastmodifiedat' and 'lastmodifiedby'
28072 with 'lastmodifiedatby' with separated parameters for date and time to allow
28073 better localisation. Updated all message files to display the old format for
28075 * (bug 7357) Make supposedly static methods of Skin actually static
28076 * Added info text to Special:Deadendpages and Special:Lonelypages
28077 * Fix regression in cachability of generated CSS and JS for MonoBook skin,
28078 while avoiding clobbering of different users' cached data
28079 * (bug 6849) Block @ from usernames; interferes with multi-database tools and
28080 was meant to be banned years ago... For now existing accounts will not be
28081 prevented fromm login.
28082 * (bug 6092) Introduce magic words {{REVISIONDAY}}, {{REVISIONDAY2},
28083 {{REVISIONMONTH}}, {{REVISIONYEAR}} and {{REVISIONTIMESTAMP}}
28084 * (bug 7425) Preceeding whitespace in [[...]] breaks subpages
28085 * Try to reconnect after transitory database errors in dumpTextPass.php
28086 * (bug 6023) Fixed mismatch of 0/NULL for wl_notificationtimestamp; now
28087 notification mails are working after 'Mark all pages visited' button on
28088 Special:Watchlist is clicked
28089 * Made {{INT:}} a core parser function instead of a special case. The syntax
28090 and behavior is largely unchanged.
28091 * (bug 7448) Fixing the native name for Ewe (ee)
28092 * (bug 6864) Replace message 'editing' with new message 'editinguser' in
28093 Special:Userrights to allow better localisation
28094 * Add '*-summary' for special pages to MessagesEn.php to allow
28095 customizing/translation directly through Special:Allmessages
28096 * (bug 6130, bug 5818) Replaced message 'go' with the new message
28097 'searcharticle' in skins to allow better localisation
28098 * Add + to $wgLegalTitleChars by default. Some sites may have occasional
28099 problems with hard-to-reach pages, but it should be less trouble than
28100 "I can't import dumps from Wikipedia" complaints
28101 * (bug 7460) Revert broken patch for bug 7226 which slows down
28102 Special:Allmessages by a factor of 16
28103 * Committed a bunch of live hacks from Wikimedia servers
28104 * (bug 6889) PHP notices in thumb.php with missing params
28105 * Cleaner error behavior on thumb.php with invalid page selection
28106 * (bug 6617) Validate timestamps on Special:Undelete
28107 * Do fewer unnecessary full writes of user rows; only update user_touched
28108 for watch/unwatch, group membership change, and login operations
28109 * Restructured the languages directory, to avoid problems when people
28110 untar MW 1.8 over the top of a 1.7 installation.
28111 * (bug 6890) SQL query error on bad input to Pager lists
28112 due to negative LIMIT clause, caused by integer wraparound.
28113 * Fixed various bugs related to table prefixes, especially the interaction
28114 between table prefixes and memcached, which was formerly completely broken.
28115 * (bug 7004) PHP iconv() notice on bad password input to Special:Userlogin.
28116 * (bug 6826) Extend pre-save transform context link ("pipe trick")
28117 syntax to pages with commas in title
28118 * Use ImageMagick -thumbnail option instead of -resize to avoid including
28119 excessive metadata in thumbs (requires ImageMagick 6.0.0 or newer).
28120 * (bug 7499) Corrections to Swedish talk namespace names
28121 * (bug 7508) Added option to compress HTML pages by dumpHTML.php
28122 * (bug 7519) Add plural in SpecialWatchlist
28123 * (bug 7459) Magic word variables are always case sensitive
28124 * Replaced {{SERVER}}{{localurl:xxx}} with {{fullurl:xxx}} in localisation files
28125 * Fix regression in Special:Watchlist text header
28126 * (bug 7510) Update article counts etc on undelete
28127 * (bug 7520) Update article counts on XML import
28128 * (bug 7526) Make $wgDefaultUserOptions work again
28129 * (bug 7472) Localize Help namespace for Basque
28130 * (bug 7529) Including a non-existent category in an article places that article
28132 * (bug 4528) Lack of important LaTeX functions stackrel, rightleftharpoon
28133 * (bug 6721) missing symbols ulcorner, urcorner, llcorner, lrcorner,
28134 twoheadrightarrow, twoheadleftarrow
28135 * (bug 7367) Hyphens sometimes erroneously appended to equations when not
28137 * Add "title" to the opensearch link to allow automatic adding of the search
28138 engine in Firefox 2
28139 * (bug 7537) Add php5 to $wgFileBlacklist
28140 * (bug 6929) Restore AutoAuthenticate hook
28142 == Languages updated ==
28145 * Bavarian (bar) stub file
28147 * Bishnupriya (bpy) stub file
28148 * Brazilian Portuguese (pt-br)
28149 * Cantonese (zh-yue)
28166 * Mazandarani (mzn)
28180 == Compatibility ==
28181 MediaWiki 1.8 requires PHP 5 (5.1 recommended). PHP 4 is no longer supported.
28183 MySQL 3.23.x is no longer supported; some older hosts may need to upgrade. At
28184 this time we still recommend 4.0, but 4.1/5.0 will work fine in most cases.
28187 Some minor database changes have been made since 1.7:
28188 * new fields and indexes on ipblocks
28189 * index change on recentchanges
28191 Several changes from 1.5 and 1.6 do require updates to be run on upgrade. To
28192 ensure that these tables are filled with data, run refreshLinks.php after the
28195 If you are upgrading from MediaWiki 1.4.x or earlier, some major database
28196 changes are made, and there is a slightly higher chance that things could
28197 break. Don't forget to always back up your database before upgrading!
28200 Some output, particularly involving user-supplied inline HTML, may not produce
28201 100% valid or well-formed XHTML output. Testers are welcome to set $wgMimeType
28202 = "application/xhtml+xml"; to test for remaining problem cases, but this is not
28203 recommended on live sites. (This must be set for MathML to display properly in
28208 == MediaWiki 1.7.3 ==
28212 This is a security and bug-fix update to the Summer 2006 quarterly release.
28214 An XSS injection vulnerability based on Microsoft Internet Explorer's UTF-7
28215 charset autodetection was located in the AJAX support module, affecting MSIE
28216 users on MediaWiki 1.6.x and up when the optional setting
28217 [[Manual:$wgUseAjax|$wgUseAjax]] is enabled.
28219 If you are using an extension based on the optional Ajax module, either disable
28220 it or upgrade to a version containing the fix:
28222 * 1.9: fixed in 1.9.3
28223 * 1.8: fixed in 1.8.4
28224 * 1.7: fixed in 1.7.3
28225 * 1.6: fixed in 1.6.10
28227 There is no known danger in the default configuration, with
28228 [[Manual:$wgUseAjax|$wgUseAjax]] off.
28230 * Add 'charset' to Content-Type headers on various HTTP error responses to
28231 forestall additional UTF-7-autodetect XSS issues. PHP sends only 'text/html' by
28232 default when the script didn't specify more details, which some inconsiderate
28233 browsers consider a license to autodetect the deadly, hard-to-escape UTF-7.
28234 This fixes an issue with the Ajax interface error message on MSIE when
28235 [[Manual:$wgUseAjax|$wgUseAjax]] is enabled (not default configuration); this
28236 UTF-7 variant on a previously fixed attack vector was discovered by Moshe BA
28237 from BugSec: http://www.bugsec.com/articles.php?Security=24
28238 * Trackback responses now specify XML content type
28240 == MediaWiki 1.7.2 ==
28244 * Note about $wgUploadSizeWarning using byte
28245 * Update to German bookstore list (de)
28246 * (bug [[bugzilla:6680|6680]]) Added localisation for Dutch bookstore list (nl)
28247 * (bug [[bugzilla:6708|6708]]) Minor updates to Russian translation (ru)
28248 * (bug [[bugzilla:6730|6730]]) Clearer usage of message 'titlematch' in German
28250 * Added direction mark to Special:Listredirects
28251 * XSS fix in AJAX module
28253 An XSS injection vulnerability was located in the AJAX support module,
28254 affecting MediaWiki 1.6.x and up when the optional setting
28255 [[Manual:$wgUseAjax|$wgUseAjax]] is enabled.
28257 There is no danger in the default configuration, with
28258 [[Manual:$wgUseAjax|$wgUseAjax]] off.
28260 If you are using an extension based on the optional AJAX module, either disable
28261 it or upgrade to a version containing the fix:
28263 * 1.9: fixed in 1.9.0rc2
28264 * 1.8: fixed in 1.8.3
28265 * 1.7: fixed in 1.7.2
28266 * 1.6: fixed in 1.6.9
28269 == MediaWiki 1.7.1 ==
28273 MediaWiki 1.7.1 is a security and bugfix maintenance release of the Summer 2006
28276 A potential HTML/JavaScript-injection vulnerability in a debugging script has
28277 been fixed. Only versions and configurations of PHP vulnerable to the $GLOBALS
28278 overwrite vulnerability are affected.
28280 As a workaround for existing installs, profileinfo.php may simply be deleted if
28281 it's not being used.
28283 * Fix for 'emailconfirmed' implicit user group
28284 * Fix for upgrades on some versions of MySQL 4.0.x
28285 * Fixed potential XSS in profileinfo.php
28286 * Installer now shows clear error message about old PHP versions rather than a
28287 confusing parse error
28289 == MediaWiki 1.7.0 ==
28292 This is the quarterly release snapshot for Summer 2006. While the code
28293 has been running on Wikipedia for some time, installation and upgrade
28294 bits may be less well tested. Bug fix releases may follow in the coming
28297 MediaWiki is now using a "[[w:en:Continuous_integration|continuous
28298 integration]]" development model with
28299 quarterly snapshot releases. The latest development code is always kept
28300 "ready to run", and in fact runs our own sites on Wikipedia.
28302 Release branches will continue to receive security updates for about a year
28303 from first release, but nonessential bugfixes and feature development happen
28304 will be made on the development trunk and appear in the next quarterly release.
28306 Those wishing to use the latest code instead of a branch release can obtain
28307 it from source control: [[Download from SVN]]
28309 == Changes since 1.6 ==
28311 * (bug 5458) Fix double-URL encoding in block log link in contribs and contribs
28313 * (bug 5462) Bogus missing patch warning in updater
28314 * (bug 5461) Use of deprecated "showhideminor" in Special:Recentchangeslinked
28315 * PHP warning when allow_call_time_pass_reference is off
28316 * Update to Finnish localization
28317 * (bug 5467) Link to page histories in watchlist edit mode
28318 * Further additions to Hebrew localisation
28319 * (bug 5476) Invalid xhtml in German localization
28320 * (bug 5479) Id translation for preferences tabs caption
28321 * (bug 5493) Id translation for special pages
28322 * Added skinname and style path parameters to CBT version of MonoBook
28323 * Include subversion revision number in Special:Version if available
28324 * (bug 5344) Fix regression that broke slashes in extension tag parameters
28325 * Improve Special:Log performance on big log sets
28326 * (bug 5507) Changed mediawiki:logouttext from plain to wikitext
28327 * (bug 4760) Prevent creation of entries in protection log when protection
28328 levels haven't changed
28329 * (bug 861) Show page protection/unprotection events in histories
28330 * (bug 5499) Don't clear the tag strip state when asked not to clear state.
28331 Fixes regression with use of <ref> in a template breaking <nowiki> etc.
28332 * Minor improvements to English language files
28333 * Display the anon talk page info message on anon talk pages again
28334 (moved outside the parser cache)
28335 * Optional {{DISPLAYTITLE|title with markup}} magic word
28336 Deactivated by default, set "$wgAllowDisplayTitle = true" in LocalSettings.php
28338 * Cleaned SpecialContributions a bit
28339 * Added a table to track interlanguage links
28340 * (bug 5544) Fix redirect arrow in Special:Listredirects for right-to-left
28342 * Replace "doubleredirectsarrow" with a content language check that picks the
28344 * (bug 5537) Add stub language file for Samogitian (bat-smg); inherits
28346 * Don't force edit summaries when a user is editing their own user/talk page
28347 * (bug 5510) Warning produced when using {{SUBPAGENAME}} in some namespaces
28348 * (bug 385) Installer support for PostgreSQL, fixes for PG compatibility
28349 * PersistentObject removed; it doesn't do anything and was broken besides.
28350 All extensions using it have been corrected.
28351 * Propagate ISBN number for Booksources in LanguageNo.php
28352 * (bug 5548) Improvements to Indonesian localisation [patch: Ivan Lanin]
28353 * Add TALKSPACE, SUBJECTSPACE, TALKPAGENAME, SUBJECTPAGENAME (and encoded forms
28354 for all) magic words
28355 * (bug 5403) Fix Special:Newpages RSS/Atom feeds
28356 * Reject malformed addresses in X-Forwarded-For entries
28357 * (bug 3359) Add hooks on completion of file upload
28358 * (bug 5559) Improve detection of ImageMagick [patch: Greg Turnquist]
28359 * (bug 5475) New pages feeds ignore "limit" argument
28360 * (bug 5184) CSS misapplied to elements in Special:Allmessages due to
28361 conflicting anchor identifiers
28362 * (bug 5519) Allow sidebar cache to be disabled; disable it by default.
28363 * Maintenance script to import the contents of a text file into a wiki page
28364 * Add $wgReservedUsernames configuration directive to block account creation/use
28365 * (bug 5576) Remove debugging hack in session check
28366 * (bug 5426) Lowercase treatment of titles in rights log leads to broken links
28368 * Minor improvements to French localisation files
28369 * (bug 5181) Update "nogomatch" for Slovak
28370 * (bug 5594) Id translation up to # Login and logout pages section
28371 * (bug 5536) Use content language for editing help link
28372 * Improvements to German localisation files
28373 * (bug 5570) Problems using <special page>/parameter link form for long titles
28374 * (bug 3884) Add $user parameter to AddNewUser hook, call it for by-email
28375 registrations as well as self-registrations.
28376 * (bug 4327) Report age of cached data sets in query pages
28377 * (bug 4662) Fix Safari check in wikibits.js
28378 * (bug 4663) Edit toolbar enabled in compatible versions of Safari
28379 * (bug 5572) Edit toolbar enabled in compatible versions of Konqueror (3.5+)
28380 * (bug 5235) Edit toolbar tooltips no longer show JavaScript junk in Opera
28381 * Edit toolbar now works in pure XHTML mode (application/xhtml+xml)
28382 * Add watchlist clear function to allow quick purging of all items
28383 * (bug 5625) Additional namespace translations for Welsh
28384 * Add meta tag and JavaScript variables to cached special pages which provides
28385 the timestamp of the last update, in YYYYMMDDHHMMSS format.
28386 * (bug 5628) More translations for MessagesHr.php
28387 * (bug 5595) Localisation for Bosnian language (bs)
28388 * (bug 2910) Default view preferences for watchlists
28389 * Add "hide bot edits from the watchlist" user preference
28390 * (bug 5250) Introduce Special:Unusedtemplates
28391 * Add user preference setting for an extended watchlist, showing all recent
28392 edits up to a certain edit, and not just the latest edit.
28393 * Made MessageRo.php more general
28394 * (bug 5640) Indonesian localisation improvements
28395 * (bug 5592) Actions are logged with the default language for the
28396 wiki, not the language of the user performing the operation.
28397 * (bug 5644) Error in LanguageBs.php file
28398 * (bug 5646) Compare for identical types in wfElement()
28399 * (bug 5472) Language::userAdjust()->minDiff not initialized on else condition
28400 * (bug 5386) LanguageMk.php: updated namespaces translations
28401 * (bug 5422) Stub for Romani (rmy) language which extends ro
28402 * Fix linktrail for LanguageSr
28403 * (bug 5664) Fix Bosnian linktrail
28404 * (bug 3825) Namespace filtering on Special:Newpages
28405 * (bug 1922) When Special:Wantedpages is cached, mark links to pages
28406 which have since been created
28407 * (bug 5659) Change grammar hacks for Bosnian Wikimedia namespaces.
28408 This sort of special casing should be removed and fixed properly.
28409 * Remove useless whitespace from Special:Brokenredirects header
28410 * Treat "allmessagesnotsupporteddb" as wikitext when echoing; change default
28412 * (bug 5497) Regression in HTML normalization in 1.6 (unclosed <li>,<dd>,<dt>)
28413 * (bug 5709) Allow customisation of separator for categories
28414 * (bug 5684) Introduce Special:Randomredirect
28415 * (bug 5611) Add a name attribute to the text box containing source text in
28417 * Indicate when a protected page is an interface message ("protectedinterface")
28418 * (bug 4259) Indicate when a protected page being edited is an interface message
28419 ("editinginterface")
28420 * (bug 4834) Fix XHTML output when using $wgMaxTocLevel
28421 * Pass login link to "whitelistedittext" containing 'returnto' parameter
28422 * (bug 5728): mVersion missing from User::__sleep() leading to constant cache
28424 * Updated maintenance/transstat.php so it can show duplicate messages
28425 * Improvements to update scripts; print out the version, check for superuser
28426 credentials before attempting a connection, and produce a friendlier error if
28427 the connection fails
28428 * (bug 5005) Fix XHTML <gallery> output.
28429 * (bug 5315) "Expires: -1" HTTP header made strictly valid (using 1970 date).
28430 * (bug 4825) note in DefaultSettings.php about 'profiling' table creation
28431 * Remove unneeded extra whitespace at top of Special:Categories
28432 * (bug 5679) time units are now using local numerals
28433 * (bug 5751) Updates to Portuguese localisation files
28434 * (bug 5741) Introduce {{NUMBEROFUSERS}} magic word
28435 * (bug 93) <nowiki> tags and tildes in templates
28436 * The returnto parameter is now actually used by SpecialUserlogin.php
28437 * Parser can now know that it is parsing an interface message
28438 * (bug 4737) MediaWiki:Viewcount supports {{PLURAL}} now
28439 * Fix bug in wfMsgExt under PHP 5.1.2
28440 * (bug 5761) Project talk namespace broken in Xal, Os, Udm and Cv
28441 * Rewrite reassignEdits script to be more efficient; support optional updates to
28442 recent changes table; add reporting and silent modes
28443 * Cleaned up formatNum usage in langfiles
28444 * (bug 5716) Warn when a user tries to upload a file which was previously
28446 * (bug 5565) Add a class attribute to the table on Special:Allpages
28447 * "lang=xx" option for parser test cases to set content language
28448 * (bug 5764) Friulian translation updated
28449 * (bug 5757) Fix premature cutoff in LanguageConverter with extra end markers
28450 * (bug 5516) Show appropriate "return to" link on blocked page
28451 * (bug 5377) Do not auto-login when creating an account as another user
28452 * (bug 5284) Special redirect pages should remember parameters
28453 * Suppress 7za output on dumpBackup
28454 * (bug 5338) Reject extra initial colons in title
28455 * (bug 5487) Escape self-closed HTML pair tags
28456 * Add "raw suffix" magic word for some magic words, e.g. {{NUMBEROFUSERS|R}}
28457 will produce a count minus formatting
28458 * Fix Parser::cleanSig() to use Parser::startExternalParse() and choose an
28459 appropriate output format given the scope of the clean
28460 * (bug 5593) Change "bureaucrat log" to "rights log"
28461 * Show a boilerplate "(none)" in place of a blank within the log action text for
28463 * (bug 137) Commented out translations for copyrightwarning which mention GNU
28465 * (bug 5723) Don't count pages linked to from the MediaWiki namespace as
28467 * (bug 5696) Add a third parameter, $3, to "rcnote", passing the current time
28468 formatted according to the current user's settings
28469 * (bug 5780) Thousands and decimal separators for Norwegian
28470 * Updated initStats maintenance script
28471 * (bug 5767) Fix date formats in Vietnamese locale
28472 * (bug 361) URL in URL, they were almost fixed. Now they are.
28473 * (bug 4876) Add __NEWSECTIONLINK__ magic word to force the "new section"
28474 link/tab to show up on specific pages on demand
28475 * Bidi-aid on list pages
28476 * (bug 5782) Allow entries in the bad image list to use canonical namespace
28478 * (bug 5789) Treat "loginreqpagetext" as wikitext
28479 * Sanitizer: now handles nested <li> in <ul> or <ol>
28480 * (bug 5796) We require MySQL >=4.0.14
28481 * Add 'EmailConfirmed' hook
28482 * New findhooks.php script to find undocumented hooks.
28483 * Silently ignore errors on profiling table update.
28484 * (bug 5801) Correct handling of underscores in Special:Listusers
28485 * Clean up Special:Listusers; add an "(all)" label to the group selection box
28486 * (bug 5812) Use appropriate link colour in Special:Mostlinked
28487 * (bug 5802) {{CURRENTMONTHNAME}} variable broken in Vietnamese locale
28488 * (bug 5817) Appropriate handling for Special:Recentchangeslinked where the
28489 target page doesn't exist
28490 * Special:Randompage now additionally accepts English namespace name as
28492 * (bug 2981) Really fixed linktrail for Tamil (ta)
28493 * Disallow substituting Special pages when included into a page
28494 * (bug 5587) Clean up the languages from references to the Groups special page
28495 * Added new group-X and group-X-member messages
28496 * Rewritten removeUnusedAccounts to be more efficient, print names of inactive
28498 * Redirect Special:Userlist to Special:Listusers
28499 * Introduce $wgAllowTitlesInSVG, which allows the <title> attribute in uploaded
28500 files bearing the image/svg MIME type. Disabled by default due to the vast
28501 majority of web servers being hideously misconfigured. See DefaultSettings.php
28503 * Changed default LocalSettings.php to append the previous include path when
28505 * (bug 5837) Use "members" for the value descriptor in Special:Categories,
28506 Special:Wantedcategories and Special:Mostlinkedcategories.
28507 * (bug 3309) Allow comments when undeleting pages
28508 * Clean up Special:Undelete a bit
28509 * (bug 5805) messages nbytes, ncategories can now use {{plural:}}
28510 * Clean up Special:Imagelist a bit
28511 * (bug 5838) Namespace names for Nds-NL
28512 * (bug 5749) Added Tyvan language files
28513 * (bug 5791) Fix SQL syntax in Special:BrokenRedirects, was causing incorrect
28515 * (bug 5839) Prevent access to Special:Confirmemail for logged-out users
28516 * (bug 5853) Update for Portuguese messages (pt)
28517 * (bug 5851) Use Cyrillic for Kirghiz language name
28518 * (bug 5841) Allow the 'EditFilter' hook to return a non-fatal error message
28519 * (bug 5846) Link to individual group description pages in Special:Listusers
28520 * (bug 5857) Update for German localisation (de)
28521 * (bug 5858) Update for Russian language (ru)
28522 * (bug 5860) Update for Indonesian language (id)
28523 * (bug 1120) Update for Czech language (Cs)
28524 * Added many missing formatNum calls
28525 * Added grammar function to Belarusian (be)
28526 * (bug 5819) Add 'PersonalUrls' hook
28527 * (bug 5862) Update of Belarusian language (be)
28528 * (bug 5886) Update for Portuguese messages (pt)
28529 * (bug 5586) <gallery> treated text as links
28530 * (bug 5878) Update for Indonesian language (id)
28531 * (bug 5697) Update for Malay language (ms)
28532 * (bug 5890) Update for German language (de)
28533 * (bug 5889) Name for Sindhi language should appear as سنڌي
28534 * --force-normal parameter on dump scripts to force check for ICU extension
28535 * (bug 5895) Update for Dutch language (nl)
28536 * (bug 5891) Linktrail for Polish language (pl)
28537 * User::isBureaucrat , User::isDeveloper , User::isSysop deprecated in
28538 v1.6 now die with a backtrace. They will be removed in v1.8
28539 * dumpTextPass now skips goes to database for entries that were blank in the
28540 previous dump, as this may indicate a broken dump.
28541 * dumpTextPass progress includes percentage of items prefetched
28542 * dumpTextPass can now use 7zip files for prefetch
28543 * (bug 5915) Update to Indonesian localisation (id)
28544 * (bug 5913) Update for German localisation (de)
28545 * (bug 5905) Plural support for Bosnian localisation (bs)
28546 * Groups which won't hit the rate limiter now configurable with
28547 $wgRateLimitsExcludedGroups
28548 * (bug 5806) {{plural:}} support instead of "twin" MediaWiki messages
28549 * (bug 5931) Update for Polish language (pl)
28550 * Ignore the user and user talk namespaces on Special:Wantedpages
28551 * Introduce NUMBEROFPAGES magic word
28552 * (bug 5833) Introduce CURRENTVERSION magic word
28553 * (bug 5370) Allow throttling of password reminder requests with the rate
28555 * (bug 5683) Respect parser output marked as uncacheable when saving
28556 * (bug 5918) Links autonumbering now work for all defined protocols
28557 * (bug 5935) Improvement to German localisation (de)
28558 * (bug 5937) Register links from gallery captions with the parent parser output
28559 object so that link tables receive those updates too
28560 * (bug 5845) Introduce BASEPAGENAME and BASEPAGENAMEE magic words
28561 * (bug 5941) Use content language when getting the administrator page title for
28563 * (bug 5949) Update to Indonesian localisation (id)
28564 * (bug 5862) Update of Belarusian translation (be)
28565 * (bug 5950) Improvements to French localisation
28566 * (bug 5805) {{plural:}} support for counters in some special pages
28567 * (bug 5952) Improvement to German localisation (de)
28568 * Rename conflicting metadata help message to "metadata_help" (was "metadata")
28569 and treat it as wiki text
28570 * Improve preferences input filtering
28571 * Maintenance script to import multiple files into the wiki
28572 * (bug 5957) Update for Hebrew language (he)
28573 * (bug 5962) Update for Italian language (it)
28574 * (bug 5961) Update for Portuguese localisation (pt)
28575 * (bug 5849) Remove some hard-coded references to "Wikipedia" in messages
28576 * (bug 5967) Improvement to German localisation (de)
28577 * (bug 5962) Update for Italian language (it)
28578 * Suppress images in galleries which appear on the bad image list (when
28579 rendering for a wiki page; galleries in special pages and categories are
28581 * Maintenance script to remove orphaned revisions from the database
28582 * (bug 5991) Update for Russian language (ru)
28583 * (bug 6001) PAGENAMEE and FULLPAGENAMEE don't work in FULLURL and LOCALURL
28585 * (bug 5958) Switch Uzbek language name to use latin script
28586 * (bug 839) Add URLENCODE magic word
28587 * (bug 6004) Update for Polish language (pl)
28588 * (bug 5971) Improvement to German localisation (de)
28589 * (bug 4873) Don't overwrite the subtitle navigation when viewing a redirect
28590 page that isn't current
28591 * (bug 2203) Namespace updates for Thai
28592 * Fix breakage in parser test suite which caused incorrect reporting of the
28593 failure of {{NUMBEROFFILES}}. Now initialises the site_stats table with some
28594 dumb data. Updated the expected output for {{NUMBEROFARTICLES}} to reflect
28596 * (bug 6009) Use {{ns:project}} in messages where appropriate
28597 * (bug 6012) Update to Indonesian localisation (id)
28598 * (bug 6017) Update list of bookstores in German localisation files
28599 * (bug 5187) Allow programmatically bypassing username validation, for scripts
28600 * (bug 6025) SpecialImport: wrong message when no file selected
28601 * (bug 6015) EditPage: add spacing in the boxes "edit is minor" and "watch this"
28602 * (bug 6018) Userrights: new message when no user specified ('nouserspecified')
28603 * (bug 2015) Add "\sim" to ~ conversion for HTML rendering
28604 * (bug 6029) Improvement to German localisation (de)
28605 * (bug 5015) Update be: magic words
28606 * (bug 3974) Add parameter for site URL to "passwordremindertext"
28607 * (bug 6039) Update for Portuguese localisation (pt)
28608 * (bug 764) Add CREATE TEMPORARY TABLES to default database permissions
28609 * Big update to Swedish localisation (sv)
28610 * Use appropriate HTML functions to create the tool links on image pages, so
28611 they don't look garbled when tidy isn't on
28612 * (bug 5511) Fix URL-encoding of usernames in links on Special:Ipblocklist
28613 * (bug 6046) Update to Indonesian localisation (id) #15
28614 * (bug 5523) $wgNoFollowNsExceptions to allow disabling rel="nofollow" in
28615 specially-selected namespaces.
28616 * (bug 6055) Fix for HTML/JS injection bug in variable handler (found by Nick
28618 * Reordered wiki table handling and __TOC__ extraction in the parser to better
28619 handle some overlapping tag cases.
28620 * Only the first __TOC__ is now turned into a TOC
28621 * (bug 4610) Indicate patrolled status on watchlists and allow users to mark
28622 changes as patrolled using the diff links there
28623 * Add 'DiffViewHeader' hook called before diff page output
28624 * (bug 6051) Improvement to German localisation (de)
28625 * (bug 6054) Update to Indonesian localisation (id) #16
28626 * Add {{CURRENTTIMESTAMP}} magic word
28627 * (bug 6061) Improper escaping in some html forms
28628 * (bug 6065) Remove underscore when using NAMESPACE and TALKSPACE magics.
28629 * (bug 6074) Correct squid purging of offsite upload URLs
28630 * To simplify the lives of extension developers, the logging type arrays
28631 can now be appended to directly by an extension setup function. It is
28632 no longer necessary to write four separate functions just to add a
28634 * (bug 6057) Count "licenses" as a message (and show it in Special:Allmessages)
28635 * Added $wgGrammarForms global
28636 * Fixed hardcoded 'done.' when removing watchlist entries.
28637 * (bug 5962) Update for Italian language (it)
28638 * (bug 6086) Remove vestigial attempt to call Article::validate()
28639 * wfHostname() function for consistent server hostname use in debug messages
28640 * Send thumbnailing error messages to 'thumbnail' log group
28641 * wfShellexec() now accepts an optional parameter to receive the exit code
28642 * Failed, but not zero-length, thumbnail renderings are now removed.
28643 Should help clean up when rsvg fails in weird ways.
28644 * (bug 6081) Change description for Turkmen language
28645 * Increase robustness of parser placeholders; fixes some glitches when
28646 adjacent to identifier-ish constructs such as URLs.
28647 * Shut up the parser test whining about files in a temp directory.
28648 * (bug 6098) Add Aragonese language support (an)
28649 * (bug 6101) Update for Russian language (ru)
28650 * Add $wgIgnoreImageErrors to suppress error messages for thumbnail rendering
28651 problems. If errors are transitory, this should reduce annoying messages
28652 making it into cached display.
28653 * (bug 6103) Wrap self-links in a CSS class ("selflink")
28654 * (bug 6102) For consistency with other markup, normalize all HTML-encoded
28655 character entities in URLs, not just ampersands. This allows use of eg
28656 = when making URLs for template parameters.
28657 * Markup anality: escape </ as <\/ in toolbar javascript for pure correctness
28658 under HTML-compatible browsers.
28659 * (bug 5077) Added hook 'BeforePageDisplay' to SkinTemplate::outputPage
28660 * Replace fatally changed 'uploadnewversion' with 'uploadnewversion-linktext'
28661 * (bug 472) Syndication feeds for the last few edits of page history
28662 * Format edit comments in Recent Changes feed
28663 * Switch incorrectly ordered column headers on Recent Changes feed diffs
28664 * (bug 6117) Use message for history feed description, add German localization
28665 * (bug 1017) fixed thumbnails of animated gifs.
28666 * Add APC as object caching option
28667 * Update to Albanian localization (sq)
28668 * (bug 6099) Introduce {{DIRECTIONMARK}} magic word (with {{DIRMARK}} as an
28670 * Use optimized php5-only microtime()
28671 * Add possibility to store local message cache as PHP executable script
28672 * Fix profiling table definition
28673 * (bug 6040) Run pre-save transform before calculating the diff. when doing a
28674 "show changes" operation in the editor
28675 * (bug 4033) Respect $wgStyleDirectory when checking available skins
28676 * Remove hideous backslashes from MessagesBr.php
28677 * Fix APC object cache issues, add functionality to installer
28678 * (bug 6133) Update strip state as we work. This mostly fixes extensions
28679 used in Cite.php <ref> tags when Tidy is on.
28680 * (bug 6139) Workaround for transclusion oddities in Vietnamese upload text
28681 * (bug 6136) Update to Catalan language (ca)
28682 * Update to Japanese localization (ja)
28683 * Add /usr/local/bin to the diff3 search paths in the installer
28684 * (bug 6106) Update to Indonesian localisation (id) #17
28685 * (bug 6125) Add links to edit old versions to diff views
28686 * (bug 5127) Auto edit summary when creating/editing redirect page
28687 * (bug 3926) Introduce {{#language:}} magic word
28688 * Fix section links from edit comments for [[:Image:Bla.jpg]] in section titles
28689 * (bug 6126) Allow fallback to customized primary language when user language
28690 message contains '-'; fixes licenses selector on Commons configuration after
28691 recent addition of the message to Messages.php
28692 * (bug 5527) Batch up job queue insertions for, hopefully, better survivability
28693 of lock contention etc. Duplicates are now removed at pop time instead of
28695 * When showing the "blah has been undeleted" page, make sure it's a blue link
28696 * parserTests.php accepts a --file parameter to run an alternate test sutie
28697 * parser tests can now test extensions using !!hooks sections
28698 * Fix oddity with open tag parameters getting stuck on </li>
28699 * (bug 5384) Fix <!-- comments --> in <ref> extension
28700 * Nesting of different tag extensions and comments should now work more
28701 consistently and more safely. A cleaner, one-pass tag strip lets the
28702 'outer' tag either take source (<nowiki>-style) or pass it down to
28703 further parsing (<ref>-style). There should no longer be surprise
28704 expansion of foreign extensions inside HTML output, or differences
28705 in behavior based on the order tags are loaded.
28706 * (bug 885) Pre-save transform no longer silently appends close tags
28707 * Pre-save transform no longer changes the case of close tags
28708 * (bug 6164) Fix regression with <gallery> resetting <ref> state
28709 * Hackaround for IE 7 wrapping bug in MonoBook footer
28710 * New message sp-newimages-showfrom replaces rclistfrom on special:newimages
28711 * Improve handling of ;: definition list construct with overlapping or
28713 * (bug 6171) Fix sanitizing of HTML-elements with an optional closing
28714 tag. The sanitizer still needs to learn how to make well-formed XML
28716 * Fix fatal error when specifying illegal name for manual thumbnail
28717 * (bug 6184) Use shinier Linker::userLink() to make user links in
28719 * (bug 6170) Update for Kashubian translation (csb)
28720 * (bug 6191) Update to Indonesian translation (id) #18
28721 * (bug 6114) Update to Walloon localization (wa)
28722 * Added $wgNamespaceRobotPolicies to allow customisation of robot policies on a
28723 per-namespace basis.
28724 * Add <ol> to the list of block elements for doBlockLevels; avoids <p>s being
28725 interspersed into your ordered lists.
28726 * (bug 5021) Transcluding the same special page twice now works
28727 * Add 'SiteNoticeBefore' and 'SiteNoticeAfter' hooks
28728 * (bug 6182) Date passed in "sp-newimages-showfrom" not adjusted to user time
28730 * (bug 2587) Fix for section editing with comment prefix
28731 * (bug 2607) Fix for section editing with mix of wiki and HTML headings
28732 * (bug 3342) Fix for section editing with headings wrapped in <noinclude>
28733 * (bug 3476) Fix for section editing with faux headings in extensions
28734 * (bug 5272) Fix for section editing with HTML-heading subsections
28735 * Fix for bogus wiki headings improperly detected with following text
28736 * Fix for HTML headings improperly not detected with preceding/following text
28737 * Section extraction and replacement functions merged into one implementation
28738 on the Parser object, so they can't get out of sync with each other.
28739 * Edit security precautions in raw HTML mode, etc
28740 * (bug 6197) Update to Indonesian translation (id) #19
28741 * (bug 6175) Improvement to German translation (de)
28742 * Redirect Special:Logs to Special:Log
28743 * (bug 6206) Linktrail for Swedish localization (se)
28744 * (bug 3202) Attributes now allowed on <pre> tags
28745 * Sanitizer::validateTagAttributes now available to discard illegal/unsafe
28746 attribute values from an array.
28747 * (bug 3837) Leave <center> as is instead of doing an unsafe text replacement
28748 to <div class="center">. <center> is perfectly valid in the target doctype
28749 (XHTML 1.0 Transitional), while the replacement didn't catch all cases and
28750 could even result in invalid output from valid input.
28751 * (bug 4280) Use 'noindex,nofollow' instead of 'noindex,follow' for default
28752 meta robots tag on diff view and special pages. Should reduce impact of
28753 robots on scrolling special pages, diffs etc on sites where robots.txt
28754 doesn't forbid access.
28755 * Regression fix: suppress warning about session failure when clicking to
28756 edit with 'preview on first edit' enabled.
28757 * (bug 6230) Regression fix: <nowiki> in [URL link text]
28758 * Added AutoLoader.php, which loads classes without need of require_once()
28759 * (bug 5981) Add plural function Slovenian (sl)
28760 * (bug 5945) Introduce {{CONTENTLANGUAGE}} magic word
28761 * {{PLURAL}} can now take up to five forms
28762 * (bug 6243) Fix email for usernames containing dots when using PEAR::Mail
28763 * Remove a number of needless {{ns:project}}-type transforms from messages
28764 files. These usages already have separate label text. Such transforms are
28765 wasteful on each page view.
28766 * Update to Yiddish localization (yi)
28767 * (bug 6254) Update to Indonesian translation (id) #20
28768 * (bug 6255) Fix transclusions starting with "#" or "*" in HTML attributes
28769 * Whitespace now normalized more or less properly in HTML attributes
28770 * Fix regression(?) in behavior of initial-whitespace-pre in <center>
28771 * (bug 6260) Update to Interlingua localization (ia)
28772 * Update to Vlax Romany localization (rmy)
28773 * Update to Latin translation (la)
28774 * Update to Dutch translation (nl)
28775 * Avoid some notices in page history with bad input
28776 * Use double quoted consistently on attributes in linker output; preparing
28777 for new normalization code when tidy not in use
28778 * Replace "nogomatch" with "noexactmatch" and place the magic colon in the
28779 messages themselves. Some minor tweaks to the actual message content.
28780 * Introduce $wgContentNamespaces which allows for articles to exist in
28781 namespaces other than the main namespace, and still be counted as valid
28782 content in the site statistics.
28783 * (bug 5932) Introduce {{PAGESINNAMESPACE}} magic word
28784 * Disable $wgAllowExternalImages by default.
28785 * (bug 2700) Nice things like link completion and signatures now work in
28787 * Cancel output buffering in StreamFile; when used inside gzip buffering this
28788 could cause funny timeout behavior as the Content-Length was wrong.
28789 * Return correct content-type header with 304 responses for StreamFile;
28790 it confuses Safari if you let it return "text/html".
28791 * (bug 6280) Correct GRAMMAR for Slovenian localisation (sl)
28792 * (bug 6162) Change date format for Dutch Low Saxon (nds-nl)
28793 * (bug 6296) Update to Indonesian localisation (id) #21
28794 * Introduce EditFormPreloadText hook, see docs/hooks.txt for more information
28795 * (bug 4054) Add "boteditletter" to recent changes flags
28796 * Update to Catalan localization (ca)
28797 * (bug 2099) Deleted image files can now be archived and undeleted.
28798 Set $wgSaveDeletedFiles on and an appropriate directory path in
28799 $wgFileStore['deleted']['directory']
28800 * (bug 6324) Fix regression in enhanced RC alignment
28801 * Introduce {{NUMBEROFADMINS}} magic word
28802 * Update to Slovak translation (sk)
28803 * Update to Alemannic localization (gsw)
28804 * (bug 6300) Bug fixes for sr: variants
28805 * namespaceDupes.php can now accept an arbitrary prefix, for checking rogue
28806 interwikis and such. Not yet fully automated.
28807 * (bug 6344) Add Special:Uncategorizedimages page
28808 * (bug 6357) Update to Russian translation (ru)
28809 * Workaround possible bug in Firefox nightlies by properly removing the
28810 Content-Encoding header instead of sending explicit 'identity' value
28812 * (bug 6304) Show timestamp for current revision in diff pages
28813 * Vertically align current version with old version header in diff display
28814 * (bug 6174) Remove redundant "emailforlost" message
28815 * (bug 6189) Show an error to an unprivileged user trying to create account
28816 * (bug 6365) Show user information in the "old revision" navigation links
28817 * Introduce 'FetchChangesList' hook; see docs/hooks.txt for more information
28818 * (bug 6345) Update to Indonesian localisation (id) #22
28819 * (bug 6279) Add genitive month names to Slovenian localisation
28820 * (bug 6351) Update to German translation (de)
28821 * Respect language directionality when displaying arrow in
28822 Special:Brokenredirects
28823 * Remove unused "validation" table definitions from the schema files
28824 * (bug 6398) Work around apparent PCRE bug breaking section editing when
28825 massively-indented preformatted text immediately followed a header
28826 * (bug 6392) Fix misbehaving <br /> in preferences form
28827 * Add translated magic words to Hebrew localization
28828 * (bug 6396) Change name for Chuvash language
28829 * Introduce optional (off by default) language selector bar for user login
28830 and registration. Customisable via the "loginlanguagelinks" message, the
28831 links will preserve "returnto" values. If the user creates an account while
28832 using such a link, then the language in use will be saved as their language
28834 * Make sure '~~~' '~~~~' '~~~~~' are removed in Nickname preference.
28835 * Rename "ipusuccess" to "unblocked", change the format (now wiki text)
28836 * (bug 2316) Add "caption" attribute to <gallery> tag
28837 * Allow setting the skin object that ImageGallery will use; needed during parse
28838 operations (the skin must come from the ParserOptions, not $wgUser)
28839 * Fix notice in MacBinary detection debug data for files of certain lengths
28840 * (bug 6131) Add type detection for DjVu files, allowing them to be uploaded
28841 with validity checking and size detection. No inline thumbnailing yet,
28842 but could be added in the future.
28843 * (bug 6423) Don't update newtalk flag if page content didn't change (null edits
28844 were causing the newtalk flag to trigger inappropriately)
28845 * Parser functions are now set using magic words.
28846 * (bug 6428) Incorrect form action URL on Special:Newimages with hidebots = 0
28848 * (bug 4990) Show page source to blocked users on edits, or their modified
28849 version if blocked during an edit
28850 * (bug 5903) When requesting the raw source of a non-existent message page,
28851 return blank content (as opposed to the message key)
28852 * Improve default blank content of MediaWiki:Common.css and
28853 MediaWiki:Monobook.css
28854 * (bug 6434) Allow customisation of submit button text on Special:Export
28855 * (bug 6314) Add user tool links on page histories
28856 * Fix display of file-type icons in galleries when $wgIgnoreImageErrors is off
28857 * (bug 6438) Update to Indonesian translation (id) #23
28858 * Adding the language code parameter to the hook "LanguageGetMagic", to allow
28859 localizble extensions magic words.
28860 * Update to Romanian translation (ro)
28861 * Update to Esperanto translation (eo)
28862 * Check for preg_match() existence when installing and die out whining about
28863 PCRE if it's not there, instead of throwing a fatal error
28864 * (bug 672) Add MathAfterTexvc hook
28865 * Update to Piedmontese localization (pms)
28866 * dumpBackup can optionally compress via dbzip2
28867 * (bug 2483) Run link updates on change via XML import
28868 * (bug 2481) List imported pages during Special:Import
28869 * (bug 2482) Log and RC entries for Special:Import events
28870 * Allow fetching all revisions from transwiki Special:Import
28871 * Allow fetching all revisions from Special:Export GET request
28872 * Disable output buffering on Special:Export; should help with streaming
28873 large numbers of history items.
28874 * Allow setting a maximum number of revisions for history Special:Export;
28875 pages with more than $wgExportMaxHistory revisions are excluded from
28876 export when history is requested.
28877 * Fix transwiki import of pages with space in name
28878 * Save null edit when importing pages through Special:Import
28879 * Update to Korean translation (ko)
28880 * Show a more specific message when an anonymous user tries to access
28882 * (bug 3278) Paging links in Special:Prefixindex
28883 * Added Latvian localization (lv)
28884 * (bug 6472) Fix regression in Special:Export with multiple pages
28885 * Update to Macedonian translation (mk)
28886 * Allow page moves over historyless self-redirects. Such are usually created
28887 as part of namespace rearrangements, and it's easier to clean them up if
28888 we can move over them.
28889 * Show some error results in moveBatch.php
28890 * (bug 6479) Allow specification of the skin to use during HTML dumps
28891 * (bug 6461) Link to page histories in Special:Newpages
28892 * (bug 6484) Don't do message transformations when preloading messages for
28894 * (bug 6201) Treat spaces as underscores in parameters to {{ns:}}
28895 * (bug 6006) Allow hiding the password change fields using an authentication
28897 * (bug 6489) Use appropriate link colour on Special:Shortpages
28898 * Added formatnum magic word
28899 * Added Javanese localization (jv)
28900 * (bug 6491) Apply bad image list in category galleries
28901 * (bug 6488) Show relevant log fragment in Special:Movepage
28902 * Fix potential PHP notice in Special:Blockme when $wgBlockOpenProxies is true
28903 * Use mysql_real_escape_string instead of addslashes for string escaping in
28904 the MySQL Database class. This may fix some rare breakage with binary fields.
28905 Note that MediaWiki does not support the multibyte character sets where a
28906 "dumb" byte replacement can be actively dangerous; UTF-8 is always safe
28907 in this regard due to the bit patterns which make head and tail bytes
28909 * (bug 6497) Use $wgMetaNamespaceTalk for Esperanto if set
28910 * (bug 6498) Use localized forms for image size in Special:Undelete
28911 * (bug 6485) Update to Indonesian translation (id) #24
28912 * Extension messages translation is now possible.
28913 * Add target namespace override selector for transwiki imports.
28914 $wgImportTargetNamespace specifies the default, to be used for
28915 Wiktionary's 'Transwiki:' namespace etc.
28916 * (bug 6506) Update to German localisation (de)
28917 * (bug 502) Avoid silly tabs on bad title by using virtual special page
28918 * (bug 6511) Add diff links to old revision navigation bar
28919 * (bug 6511) Replace 'oldrevisionnavigation' message with
28920 'old-revision-navigation'
28921 * Fix regression in Polish genitive month forms
28922 * (bug 4037) Make input handling in Special:Allpages and Special:Prefixindex
28923 more consistent: Accept just a namespace prefix and a colon, reject input
28924 with interwiki prefixes, otherwise do what Title::makeTitleSafe() does.
28925 * (bug 6516) Update to Russian translation
28926 * New 'allpagesbadtitle' message for Special:Allpages, based on 'badtitletext'.
28927 * Rename "searchquery" to "searchsubtitle" and support wiki text in it
28928 * Introduce updateArticleCount maintenance script which uses a better check that
28929 reflects what Article::isCountable() tests for
28930 * Introduce 'BadImage' hook; see docs/hooks.txt for more information
28931 * Add "searchsubtitleinvalid" message for searches that are not valid titles.
28932 * (bug 5962) Update to Italian localisation
28933 * (bug 6530) Update to Indonesian localisation (id) #25
28934 * (bug 6523) Fix SVG issue in rebuildImages.php
28935 * (bug 6512) Link to page-specific logs on page histories
28936 * (bug 6504) Allow configuring session name with $wgSessionName
28937 * (bug 6185) Add standard user tool links to log page views
28938 * Update to Venetian translation (vec)
28939 * Update to Slovenian translation (sl)
28940 * Add standard user tool links to deleted revision list
28941 * Separate out EditPage's getContent bits from regular Article getContent.
28942 Cleans up read-only-mode warning on empty pages and neats up some code.
28943 * (bug 6565) Strict JavaScript writing
28944 * (bug 6570) Update to Indonesian localisation (id) #26
28945 * Added Telugu translation (te)
28946 * Update to Catalan translation (ca)
28947 * (bug 6560) Avoid PHP notice when trimming ISBN whitespace
28948 * Added namespace translation to Kannada (ka)
28949 * (bug 6566) Improve input validation on timestamp conversion
28950 * Implicit group "emailconfirmed" for all users whose email addresses are
28952 * (bug 6577) Avoid multiline parser breakage on <pre> with newline in attribute
28953 * (bug 6771) Make old revisions of MediaWiki pages available with action=raw
28956 == Compatibility ==
28957 MediaWiki 1.7 requires PHP 5 (5.1 recommended). PHP 4 is no longer supported.
28959 If you are unable to run PHP 5, you may have to stick with 1.6 for now.
28961 MySQL 3.23.x is no longer supported; some older hosts may need to upgrade.
28962 At this time we still recommend 4.0, but 4.1/5.0 will work fine in most cases.
28964 Experimental Oracle support has been dropped as it is unmaintained.
28967 Several changes to the database have been made from 1.6:
28969 * A new "langlinks" table tracks interlanguage links
28970 * A new "filearchive" table stores information on deleted files
28971 * A new "querycache_info" table stores information on query page updates
28973 To ensure that these tables are filled with data, run refreshLinks.php after
28976 If you are upgrading from MediaWiki 1.4.x or earlier, some major database
28977 changes are made, and there is a slightly higher chance that things could
28978 break. Don't forget to always back up your database before upgrading!
28980 == Configuration changes ==
28982 Some configuration options have changed:
28983 * $wgAllowExternalImages now defaults to off for increased security.
28984 * $wgLocalTZoffset was in hours, it is now using minutes.
28985 * Extensions may register special pages via the $wgSpecialPages array without
28986 forcing an early load of the SpecialPage.php class file.
28988 == Major new features ==
28990 * Deleted files can now be archived and undeleted, if you set up an appropriate
28991 non-web-accessible directory. Set $wgSaveDeletedFiles on and an appropriate
28992 directory path in $wgFileStore['deleted']['directory']
28993 * Experimental PostgreSQL support has been updated. It may or may not be in
28994 usable shape; those interested in PostgreSQL are encouraged to follow 1.8
28998 Some output, particularly involving user-supplied inline HTML, may not
28999 produce 100% valid or well-formed XHTML output. Testers are welcome to
29000 set $wgMimeType = "application/xhtml+xml"; to test for remaining problem
29001 cases, but this is not recommended on live sites. (This must be set for
29002 MathML to display properly in Mozilla.)
29006 == MediaWiki 1.6.12 ==
29010 This is a security update to the Spring 2006 quarterly release.
29012 A number of cross-site scripting (XSS) security vulnerabilities were discovered
29013 in the web-based installer (config/index.php). These vulnerabilities all
29014 require a live installer -- once the installer has been used to install a
29015 wiki, it is deactivated.
29017 Note that cross-site scripting vulnerabilities can be used to attack any
29018 website in the same cookie domain. So if you have an uninstalled copy of
29019 MediaWiki on the same site as an active web service, MediaWiki could be used to
29020 attack the active service.
29022 If you are hosting an old copy of MediaWiki that you have never installed, you
29023 are advised to remove it from the web.
29025 == MediaWiki 1.6.11 ==
29029 This is a security update to the Spring 2006 quarterly release.
29031 David Remahl of Apple's Product Security team has identified a number of
29032 security issues in previous releases of MediaWiki. Subsequent analysis by the
29033 MediaWiki development team expanded the scope of these vulnerabilities. The
29034 issues with a significant impact are as follows:
29036 * An XSS vulnerability affecting Internet Explorer clients for all MediaWiki
29037 installations with uploads enabled. [CVE-2008-5250]
29038 * An XSS vulnerability affecting clients with SVG scripting capability (such as
29039 Firefox 1.5+), for all MediaWiki installations with SVG uploads enabled.
29041 * A CSRF vulnerability affecting the Special:Import feature, for all MediaWiki
29042 installations since the feature was introduced in 1.3.0. [CVE-2008-5252]
29044 XSS (cross-site scripting) vulnerabilities allow an attacker to steal an
29045 authorised user's login session, and to act as that user on the wiki. The
29046 authorised user must visit a web page controlled by the attacker in order to
29047 activate the attack. Intranet wikis are vulnerable if the attacker can
29048 determine the intranet URL, even if the attacker cannot access it.
29050 CSRF vulnerabilities allow an attacker to act as an authorised user on the
29051 wiki, but unlike an XSS vulnerability, the attacker can only act as the user in
29052 a specific and restricted way. The present CSRF vulnerability allows pages to
29053 be edited, with forged revision histories. Like an XSS vulnerability, the
29054 authorised user must visit the malicious web page to activate the attack.
29056 Rather than backport our SVG validation code to this ancient branch, we have
29057 instead disabled SVG uploads. To enable SVG uploads, please upgrade to
29058 MediaWiki 1.13.3 or later.
29060 The other two issues have been fixed.
29062 == MediaWiki 1.6.10 ==
29066 This is a security and bug-fix update to the Spring 2006 quarterly release.
29068 An XSS injection vulnerability based on Microsoft Internet Explorer's UTF-7
29069 charset autodetection was located in the AJAX support module, affecting MSIE
29070 users on MediaWiki 1.6.x and up when the optional setting $wgUseAjax is enabled.
29072 If you are using an extension based on the optional Ajax module, either disable
29073 it or upgrade to a version containing the fix:
29075 * 1.9: fixed in 1.9.3
29076 * 1.8: fixed in 1.8.4
29077 * 1.7: fixed in 1.7.3
29078 * 1.6: fixed in 1.6.10
29080 There is no known danger in the default configuration, with $wgUseAjax off.
29082 * ([[mediazilla:8819|bug 8819]]) Fix full path disclosure with skins
29084 * Add 'charset' to Content-Type headers on various HTTP error responses to
29085 forestall additional UTF-7-autodetect XSS issues. PHP sends only 'text/html' by
29086 default when the script didn't specify more details, which some inconsiderate
29087 browsers consider a license to autodetect the deadly, hard-to-escape UTF-7.
29088 This fixes an issue with the Ajax interface error message on MSIE when
29089 $wgUseAjax is enabled (not default configuration); this UTF-7 variant on a
29090 previously fixed attack vector was discovered by Moshe BA from BugSec:
29091 http://www.bugsec.com/articles.php?Security=24
29092 * Trackback responses now specify XML content type
29094 == MediaWiki 1.6.9 ==
29098 * ([[mediazilla:6621|bug 6621]]) Backported German translation for
29101 * ([[mediazilla:6680|bug 6680]]) Added localisation for Dutch bookstore list
29103 * ([[mediazilla:6730|bug 6730]]) Clearer usage of message 'titlematch' in
29104 German translation (de)
29105 * XSS fix in AJAX module
29107 An XSS injection vulnerability was located in the AJAX support module,
29108 affecting MediaWiki 1.6.x and up when the optional setting $wgUseAjax is
29111 There is no danger in the default configuration, with $wgUseAjax off.
29113 If you are using an extension based on the optional AJAX module, either disable
29114 it or upgrade to a version containing the fix:
29116 * 1.9: fixed in 1.9.0rc2
29117 * 1.8: fixed in 1.8.3
29118 * 1.7: fixed in 1.7.2
29119 * 1.6: fixed in 1.6.9
29121 == MediaWiki 1.6.8 ==
29125 MediaWiki 1.6.8 is a security and bugfix maintenance release of the Spring 2006
29128 A potential HTML/JavaScript-injection vulnerability in a debugging script has
29129 been fixed. Only versions and configurations of PHP vulnerable to the $GLOBALS
29130 overwrite vulnerability are affected.
29132 As a workaround for existing installs, profileinfo.php may simply be deleted if
29133 it's not being used.
29135 * ([[mediazilla:5957|bug 5957]]) Updates to Hebrew translation (he)
29136 * Respect language directionality when displaying arrow in
29137 Special:Brokenredirects
29138 * ([[mediazilla:6415|bug 6415]]) Typo in Parser.php
29139 * Fixed potential XSS in profileinfo.php
29141 == MediaWiki 1.6.7 ==
29145 MediaWiki 1.6.7 is a security and bugfix maintenance release of the Spring 2006
29148 An HTML/JavaScript-injection vulnerability in the edit form has been closed.
29149 This vulnerability was new in 1.6.0; MediaWiki versions 1.5.x or earlier are
29152 Extensions, comments, and <nowiki><nowiki></nowiki> sections are now handled in
29153 a one-pass way which is more reliable and safer. Under earlier versions of
29154 MediaWiki, certain extensions could be abused to inject HTML/JavaScript into
29157 Additional precautions are made against offsite form submissions when the
29158 restricted raw HTML mode is enabled.
29160 Some small localization and user interface updates are also included.
29162 *([[MediaZilla:6051|bug 6051]]) Improvement to German localisation (de)
29163 *([[MediaZilla:6017|bug 6017]]) Update bookstore list for German language (de)
29164 *([[MediaZilla:6138|bug 6138]]) Minor grammar tweak in "loginreqlink"
29165 *([[MediaZilla:5957|bug 5957]]) Update for Hebrew language (he)
29166 *Increase robustness of parser placeholders; fixes some glitches when adjacent
29167 to identifier-ish constructs such as URLs.
29168 *([[MediaZilla:5384|bug 5384]]) Fix <nowiki><!-- comments --> in <ref></nowiki>
29170 *Nesting of different tag extensions and comments should now work more
29171 consistently and more safely. A cleaner, one-pass tag strip lets the 'outer'
29172 tag either take source (<nowiki><nowiki></nowiki>-style) or pass it down to
29173 further parsing (<nowiki><ref></nowiki>-style). There should no longer be
29174 surprise expansion of foreign extensions inside HTML output, or differences in
29175 behavior based on the order tags are loaded.
29176 *([[MediaZilla:885|bug 885]]) Pre-save transform no longer silently appends
29178 *Pre-save transform no longer changes the case of close tags
29179 *Edit security precautions in raw HTML mode, etc
29181 == MediaWiki 1.6.6 ==
29185 MediaWiki 1.6.6 is a security and bugfix maintenance release.
29187 An XSS injection vector in brace replacement has been fixed, as have some
29188 potential problems with table parsing. Upgrading is strongly recommended for
29189 all users of 1.6. MediaWiki versions 1.5 and earlier are not affected.
29191 Additionally some localization and user interface updates are included.
29193 * Correct "revertpage" message in English
29194 * ([[MediaZilla:5507|bug 5507]]) Logouttext now uses wiki markup
29195 * (bugs [[MediaZilla:5857|5857]], [[MediaZilla:5957|5957]]) Update for German
29197 * ([[MediaZilla:5586|bug 5586]]) <nowiki><gallery></nowiki> treated text as
29199 * ([[MediaZilla:5957|bug 5957]]) Update for Hebrew language (he)
29200 * ([[MediaZilla:6025|bug 6025]]) SpecialImport: wrong message when no file
29202 * ([[MediaZilla:6015|bug 6015]]) EditPage: add spacing in the boxes "edit is
29203 minor" and "watch this"
29204 * ([[MediaZilla:6018|bug 6018]]) Userrights: new message when no user specified
29205 ('nouserspecified')
29206 * ([[MediaZilla:6055|bug 6055]]) Fix for HTML/JS injection bug in variable
29207 handler (found by Nick Jenkins)
29208 * Reordered wiki table handling and <nowiki>__TOC__</nowiki> extraction in the
29209 parser to better handle some overlapping tag cases.
29210 * Only the first <nowiki>__TOC__</nowiki> is now turned into a TOC.
29211 * ([[MediaZilla:361|bug 361]]) URL in URL, they were almost fixed. Now they are.
29213 == MediaWiki 1.6.5 ==
29217 * Rolled back the buggy patch for [[MediaZilla:5497|bug 5497]].
29219 == MediaWiki 1.6.4 ==
29223 * Further improvements to Hebrew localisation
29224 * ([[MediaZilla:5544|bug 5544]]) Fix redirect arrow in Special:Listredirects
29225 for right-to-left languages
29226 * Replace "doubleredirectsarrow" with a content language check that picks the
29228 * Remove live debugging hack which caused errors with certain database names
29229 * ([[MediaZilla:5510|bug 5510]]) Warning produced when using
29230 <nowiki>{{SUBPAGENAME}}</nowiki> in some namespaces
29231 * ([[MediaZilla:5548|bug 5548]]) Improvements to Indonesian localisation
29232 [patch: Ivan Lanin]
29233 * ([[MediaZilla:5403|bug 5403]]) Fix Special:Newpages RSS/Atom feeds
29234 * ([[MediaZilla:3359|bug 3359]]) Add hooks on completion of file upload
29235 * ([[MediaZilla:5184|bug 5184]]) CSS misapplied to elements in
29236 Special:Allmessages due to conflicting anchor identifiers
29237 * ([[MediaZilla:5519|bug 5519]]) Allow sidebar cache to be disabled; disable it
29239 * Add $wgReservedUsernames configuration directive to block account creation/use
29240 * ([[MediaZilla:5576|bug 5576]]) Remove debugging hack in session check
29241 * ([[MediaZilla:5181|bug 5181]]) Update "nogomatch" for Slovak
29242 * ([[MediaZilla:5594|bug 5594]]) Id translation up to '# Login and logout
29244 * ([[MediaZilla:5536|bug 5536]]) Use content language for editing help link
29245 * Minor improvements to English language files
29246 * Improvements to German localisation files
29247 * ([[MediaZilla:5628|bug 5628]]) Translations for MessagesHr.php
29248 * (bugs [[MediaZilla:5595|5595]], [[MediaZilla:5644|5644]]) Localisation for
29249 Bosnian language (bs)
29250 * ([[MediaZilla:5592|bug 5592]]) Actions are logged with the default language
29251 for the wiki, not the language of the user performing the operation.
29252 * ([[MediaZilla:5646|bug 5646]]) Compare for identical types in wfElement()
29253 * Fix for concurrency problem in job queue (image description page invalidation)
29254 * ([[MediaZilla:5497|bug 5497]]) regeression in HTML normalization in 1.6
29255 (unclosed <nowiki><li>,<dd>,<dt></nowiki>)
29256 * ([[MediaZilla:5709|bug 5709]]) Allow customisation of separator for categories
29257 * ([[MediaZilla:4834|bug 4834]]) Fix XHTML output when using $wgMaxTocLevel
29258 * Improvements to update scripts; print out the version, check for superuser
29259 credentials before attempting a connection, and produce a friendlier error if
29260 the connection fails
29261 * ([[MediaZilla:5005|bug 5005]]): Fix XHTML <nowiki><gallery></nowiki> output.
29262 * ([[MediaZilla:5315|bug 5315]]) "Expires: -1" HTTP header made strictly valid
29264 * ([[MediaZilla:4825|bug 4825]]): note in DefaultSettings.php about 'profiling'
29266 * Remove unneeded extra whitespace at top of Special:Categories
29267 * Rewrite reassignEdits script to be more efficient; support optional updates
29268 to recent changes table; add reporting and silent modes
29269 * Updated initStats maintenance script
29270 * ([[MediaZilla:5723|bug 5723]]) Don't count pages linked to from the MediaWiki
29271 namespace as "wanted"
29272 * ([[MediaZilla:5789|bug 5789]]) Treat "loginreqpagetext" as wikitext
29273 * ([[MediaZilla:5796|bug 5796]]) We require MySQL >=4.0.14
29275 == MediaWiki 1.6.3 ==
29279 * Fix disappearing red-linked items in the watchlist editing view
29280 * ([[MediaZilla:5512|bug 5512]]) Spacing in "page has a history" deletion
29282 * ([[MediaZilla:5508|bug 5508]]) Switch ENGINE in table statements back to
29283 TYPE; fixes regression where some versions of MySQL 4.0.x wouldn't work
29284 * Added note about [[Manual:$wgUrlProtocols|$wgUrlProtocols]] format change
29286 == MediaWiki 1.6.2 ==
29290 * Further improvements to Hebrew localisation
29291 * Fix 'copyright' message for Romanian
29292 * ([[MediaZilla:5476|bug 5476]]) Invalid xhtml in German localization
29293 * ([[MediaZilla:5479|bug 5479]]) Id translation for preferences tabs caption
29294 * ([[MediaZilla:5493|bug 5493]]) Id translation for special pages
29295 * Additional path fixes in the updater
29296 * ([[MediaZilla:5344|bug 5344]]) Fix regression that broke slashes in extension
29299 == MediaWiki 1.6.1 ==
29303 Some minor issues in the 1.6.0 release have been corrected:
29304 * ([[MediaZilla:5458|bug 5458]]) Fix double-URL encoding in block log link in
29305 contribs and contribs link in block log
29306 * ([[MediaZilla:5462|bug 5462]]) Bogus missing patch warning in updater
29307 * ([[MediaZilla:5461|bug 5461]]) Use of deprecated "showhideminor" in
29308 Special:Recentchangeslinked
29309 * PHP warning when allow_call_time_pass_reference is off
29310 * Update to Finnish localization
29312 == MediaWiki 1.6.0 ==
29316 MediaWiki is now using a "continuous integration" development model with
29317 quarterly snapshot releases. The latest development code is always kept "ready
29318 to run", and in fact runs our own sites on Wikipedia.
29320 Release branches will continue to receive security updates for about a year
29321 from first release, but nonessential bugfixes and feature development will take
29322 place on the development trunk and will appear in the next quarterly release.
29324 Those wishing to use the latest code instead of a branch release can [[Download
29325 from SVN|obtain it from source control]].
29327 === What's new in 1.6 ===
29329 '''User interface:'''
29330 * The account creation form has been separated from the user login form.
29331 * Page protection/unprotection uses a new, expanded form
29334 * Categories and "what links here" now update as expected when adding or
29335 removing links in a template.
29336 * Template parameters can now have default values, as <nowiki>{{{name|default
29340 * Optional support for rasterizing SVG images to PNG for inline display
29343 * Feed generation upgraded to Atom 1.0
29344 * Diffs in RSS and Atom feeds are now colored for improved readability.
29347 * MySQL 3.23.x support dropped; 4.0 or later required
29348 * Experimental support for Unicode mode of MySQL 4.1/5.0 (moderately tested)
29349 * Experimental Oracle support (not well tested!)
29351 '''Anti-spam extension support:'''
29352 * [[meta:SpamBlacklist extension|SpamBlacklist extension]] now has support for
29354 * Support for a [[meta:ConfirmEdit extension|captcha extension]] to restrict
29355 automated spam edits.
29357 Numerous bug fixes and other behind-the-scenes changes have been made; see the
29358 file HISTORY for a complete change list.
29360 == Changes since 1.5 ==
29362 * (bug 2885) More PHP 5.1 fixes: skin, search, log, undelete
29365 * Use strval() to make sure we don't accidentally get null on bad revision
29366 text loads or other fields mucking up XML export output
29367 * Clean up duplicate code for selection of changeslist style
29368 * Correct blob caching to reduce redundant blob loads on backups
29369 * (bug 3182) Clear link cache during import to prevent memory leak
29370 * Fixed possible infinite loop in formatComment
29371 * Wrap message page insertions in a transaction to speed up installation
29372 * Avoid notice warning on edit with no User-Agent header
29373 * (bug 3649) Remove obsolete, broken moveCustomMessages script
29374 * Avoid numerous redundant latest-revision lookups in history
29375 * Require PHP 4.3.2 or higher strictly now.
29376 * Tweak infinite-template-handling loop for PHP 5.1.1 string handling change
29377 * Remove unused OutputPage::addCookie()
29378 * Fix for short_open_tag off again; please don't break this, guys
29379 * (bug 4507) Adjust FULLPAGENAMEE escaping to standard form
29380 * (bug 5302) Merge the two #p-search .pBody statements in monobook css.
29383 * Finally dropped MySQL 3.23.x support
29385 * (bug 3056) MySQL 3 compatibility fix: USE INDEX instead of FORCE INDEX
29386 * Update all stats fields on recount.sql
29387 * (bug 3227) Fix SQL injection introduced in experimental code
29388 * Fix table prefix usage in Block::enumBlocks
29389 * (bug 3448) Set page_len on undelete
29390 * (bug 3506) Avoid MySQL error when Listusers returns no results
29391 * Skip update of disused 'rc_cur_time' field (todo: discard the field)
29392 * (bug 3735) Fix to run under MySQL 5's strict mode
29393 * (bug 3786) Experimental support for MySQL 4.1/5.0 utf8 charset mode
29394 NOTE: Enabling this may break existing wikis, and still doesn't
29395 work for all Unicode characters due to MySQL limitations.
29396 * MySQL 5.0 strict mode fix for moving unwatched pages
29397 * Ability to set the table name for external storage servers
29398 * Update ipblocks table in MySQL 5 table defs
29399 * Removed FulltextStoplist.php, no longer used (was for MySQL 3.x workaround)
29400 * Added templatelinks table, to track template inclusions. User-visible effects
29402 * (inclusion) tag for inclusions in Special:Whatlinkshere
29403 * More accurate list of used templates on the edit page
29404 * More reliable cache invalidation when templates outside the template
29405 namespace are changed
29406 * Respect database prefix in dumpHTML.inc
29407 * Removed read-only check from Database::query()
29408 * Added externallinks table, to track links to arbitrary URLs
29409 * Added job table, for deferred processing of jobs. The immediate application is
29410 to complete the link table refresh operation when templates are changed.
29411 * Don't change the password of the MySQL root user.
29414 * (bug 3306) Document $wgLocalTZoffset
29417 (list not complete)
29418 * Move ArticleSave hook execution into Article insert/update functions,
29419 so they get called on non-EditPage actions that use these functions
29420 to create or update pages.
29421 * Added EditFilter hook, and output callback on EditPage::showEditForm()
29422 for a place to add in captcha-type extensions in the edit flow
29423 * (bug 3684) Fix typo in fatal error backtraces in Hooks.php
29424 * Fix for hook callbacks on objects containing no fields
29425 * Add a hook for additional user creation throttle / limiter extensions
29426 * Use $wgOut->parse() in wfGetSiteNotice() instead of creating a new parser
29427 instance. This allows use of extension hooks if required.
29428 * Added AutoAuthenticate hook for external User object suppliers
29429 * Added 'PageRenderingHash' hook for changing the parser cache hash key
29430 from an extension that changes rendering based on nonstandard options.
29431 * Add 'GetInternalURL' hook to match the GetFullURL and GetLocalURL ones
29432 * (bug 4456) Add hook for marking article patrolled
29433 * Add UserRights hook, fires after a user's group memberships are changed
29436 * Support SVG rendering with rsvg
29437 * Cap arbitrary SVG renders to given image size or $wgSVGMaxSize pixels wide
29438 * (bug 3127) Render large SVGs at image page size correctly
29439 * Fix scaling of non-integer SVG unit sizes
29440 * (bug 2800) Don't scale up small images on |thumb| without explicit size
29441 * Use the real file link instead of the default-size rasterized version for
29442 large SVG images on image description page
29443 * Include the file name/type/size line for non-resized images
29444 * (bug 3489) PHP 5.1 compat problem with captioned images
29445 * (bug 3643) Fix image page display of large images with resizing disabled
29446 * Added a limit to the size of image files which can be thumbnailed
29447 * (bug 3806) Gracefully fall back to client-side scaling on |thumb| image
29448 that passes $wgMaxImageArea
29449 * (bug 153) Adjust thumbnail size calculations to match consistently;
29450 patch by David Benbennick
29451 * (bug 4162) Add $wgThumbnailEpoch timestamp to force old thumbs to
29452 be rerendered on demand, sitewide
29453 * (bug 1850) Additional fixes so existing local and remote images
29454 get a blue link even if there's no local description page
29455 * Avoid FATAL ERROR when creating thumbnail of non-existing image
29456 * (bug 4207) Wrong image size when using 100x200px syntax to scale image up
29457 patch by David Benbennick
29458 * Don't delete thumbnails when refreshing exif metadata. This caused thumbs
29459 to vanish mysteriously from time to time for files that didn't have metadata.
29460 * (bug 4426) Add link to user_talk page on image pages
29461 * Support a custom convert command for thumbnailing. See DefaultSettings.php
29462 and the comments for $wgCustomConvertCommand, for more information.
29463 * UserCan hook now allows advisory return values, rather than mandatory ones.
29466 * (bug 3782) Throw fatal installation warning if mbstring.func_overload on.
29467 Why do people invent these crazy options that change language semantics?
29468 * Fixed installer bugs 921 and 3914 (issues with using root and so forth)
29469 * (bug 4258) Use ugly urls for ISAPI by default
29470 patch by Rob Church
29471 * Improve installer
29472 * Use a superuser account (such as root), if specifed, to create tables
29473 * Don't overwrite conservative permissions on the mySQL user with ALL
29474 permissions, if said user exists
29475 * Changes to some of the wording of explanations for fields
29476 * (bug 1734) granting db permissions failed with db usernames containg '-'
29477 * Add basic check for session support in PHP and die if not present
29480 * Fix problem reported on mailing list where re-initialising stats didn't work
29481 (can't insert duplicate rows with the same id field)
29482 * Added --conf option to command line scripts, allowing the user to specify a
29483 different LocalSettings.php.
29484 * Maintenance script to delete unused text records
29485 * Maintenance script to delete non-current revisions
29486 * Maintenance script to wipe a page and all revisions from the database
29487 * Maintenance script to reassign edits from one user to another
29488 * Maintenance script to find and remove links to a given domain
29490 * Fix --report interval option for dumpTextPass
29493 * Partial support for Basque language (from wikipedia and meta)
29494 * (bug 3141) Partial support for Breton language (thanks Fulup).
29495 * Support for venitian language
29496 * (bug 1334) LanguageGa.php update
29497 * Finnish date format was hardcoded, now implemented properly
29498 * (bug 3190) Added some date format choices for language sr
29499 * (bug 2753) Some namespaces were not translated in LanguageTa.php (Tamil)
29500 * (bug 3204) Fix typo breaking special pages in fy localization
29501 * (bug 3177) Estonian date formats not implemented in LanguageEt.php
29502 * (bug 1020) Changing user interface language does not work immediately
29503 * (bug 3271) Updated LanguageNn.php for HEAD
29504 * Experimental feature to allow translation of block expiry times
29505 Implementation only for Finnish currently
29506 * (bug 3304) Language file for Croatian (LanguageHr.php)
29507 * (bug 2143) Update Vietnamese interface
29508 * (bug 3063) Remove some hardcodings from Hebrew localisation
29509 * (bug 3408) Bulgarian formatNum corrected
29510 * (bug 1512) Disable x-code interp on Esperanto URLs for now, it does more
29511 harm than good under current system by breaking incoming URLs with "ux".
29512 (Editing is not affected, just URLs.)
29513 * (bug 1423) LanguageJa.php update
29514 * Fix language name for dv
29515 * (bug 3503) Update LanguageSq.php from sq.wikipedia.org messages
29516 * (bug 3629) Fix date & time format for Frisian
29517 * (bug 3334) Namespace changes for Polish
29518 * (bug 3580) Change default Dutch language file to more neutral
29519 * (bug 3656) LanguageHr.php - added convertPlural
29520 * (bug 3414) LanguageBe.php - added convertPlural
29521 * (bug 3163) Full translation of LanguageBr
29522 * (bug 3617) Update for portuguese language (pt)
29523 * Namespaces hacks on LanguagePl
29524 * (bug 3682) LanguageSr.php - added convertPlural
29525 * (bug 3694) LanguageTr.php update
29526 * (bug 3711) Removed invisible unicode characters from LanguageHu
29527 * (bug 2981) Linktrail for Tamil (ta)
29528 * (bug 3722) Update of Arabic language (ar) Namespace changes
29529 * Removed hardcoded Norwegian (no) project namespaces
29530 * (bug 2324) image for redirects should be without text and oriented according
29531 to content language
29532 * (bug 3666) Don't spew PHP warnings in prefs on unrecognized site language
29533 * (bug 3817) Use localized date formats in preferences; 'no preference' option
29534 localizable as 'datedefault' message. Tweaked lots of languages files...
29535 * (bug 2721) Regression: Use European number separators for vi: wikis
29536 * (bug 3961) minor languageDe changes
29537 * (bug 1984) LanguageKo.php (Korean) update
29538 * (bug 3804) update of LanguageWa.php file
29539 * (bug 3886) Update for Portuguese language (pt)
29540 * (bug 4020) Update namespaces for ms
29541 * (bug 3922) bidi embedding overrides on category links
29542 * (bug 4061) Update of Slovene namespace names (LanguageSl.php)
29543 * (bug 4064) LanguageDe comma changes
29544 * (bug 3922) Further tweaks to bidi overrides in category list for old
29545 versions of Safari and Konqueror
29546 * Fix custom namespaces on wikis set for Portuguese
29547 * (bug 4153) Fix block length localizations in Greek
29548 * (bug 3844) ab: av: ba: ce: & kv: now inherit from LanguageRu.php
29549 ii: & za: now inherit from LanguageZn_cn.php
29550 * (bug 4165) Correct validation for user language selection (data taint)
29551 * (bug 4192) Remove silly 'The Free Encyclopedia' default sitesubtitle
29552 * Use content-lang for sitenotice
29553 * (bug 4233) Update LanguageJa.php
29554 * (bug 4279) Small correction to LanguageDa.php
29555 * (bug 4108, 4336) Remove trailing whitespace from various messages, which
29556 mucks up message updating to create dupe entries
29557 * (bug 4389) Fix math options on zh-hk and zh-tw (but not localized)
29558 * (bug 4392) Update of LanguageSr.php
29559 * (bug 4382) Frisian numeric format
29560 * (bug 4424) Update for Spanish language (es) 100% messages translated
29561 * (bug 4425) Typos in Polish translation
29562 * (bug 4436) Update for Turkish language (tr)
29563 * (bug 4413) Update of Farsi language file (LanguageFa.php)
29564 * Update for LanguageSr (Serbian): magic words
29565 * (bug 137) MediaWiki:Copyrightwarning hardcoding
29566 * (bug 4457) Update for Portuguese language (pt)
29567 * convertPlural breakage fixed a little
29568 * (bug 4144) Support for Sudanese language (Basa Sunda)
29570 - Removed obsolote, badly or untranslated messages
29571 - Removed references to wikipedia/wikimedia etc in messages
29572 - Other cleanup, like removing html and javascript and extension calls
29573 - Removed hardcoded namespaces: Tt, Ms, Ia, Ga, Fo, Bn, Csb, He, Nv, Oc, Tlh
29574 - Removed some useless backwards compatibility hacks
29575 - Fixed formatnum on many languages
29576 * wgAmericanDates check produced incorrect results in languages that don't have
29578 * (bug 4548) Update for Portuguese language (pt): time format
29579 * (bug 4530) Use consistent name for Kurdish
29580 * Tweak default "upload disabled" text
29581 * (bug 4504) Use site language for namespace name resolution
29582 * (bug 4510) Correct Barnes & Noble bookstore URLs
29583 * (bug 3991) Allow the operation of wikicode on Protect move only text
29584 * (bug 4267) Switch dv sd ug ks arc languages to RTL
29585 * Default main page content improved per bug 4690
29586 * (bug 4615) Update for Portuguese language (pt)
29587 * Separated MessagesSl.php as the other languages.
29588 * (bug 4960) Add additional namespaces variants to Yiddish for compatibility
29589 * (bug 4805) Removed more wikipedia-references from MessagesUk.php
29590 * (bug 5015) Update magic words translation in LanguageBe.php
29591 * (bug 4859) Update for Portuguese messages (pt)
29592 * (bug 4788) One string for MessagesPl
29593 * Restriction types now use restriction-* messages instead of ui messages
29594 * (bug 4685) Slovenian LanguageSl.php hardcodes project namespace
29595 * (bug 5097) Fix Hungarian language (hu): thousands separator
29596 * (bug 5098) Update for Portuguese messages (pt)
29597 * (bug 5113) Spelling error in French language file
29598 * (bug 5105) Magic words for LanguageAr.php
29599 * (bug 3993) Variants for Serbian language
29600 * Typo in English messages file
29601 * (bug 4114) Spacing in watchlist rows (in editing mode)
29602 * Update default "exporttext" to reflect that Special:Import exists
29603 * (bug 4960) Add additional namespaces variants to Yi projects: Yiddish Wikinews
29605 * (bug 5357) Add the icon near the user name also in RTL interfaces
29606 * (bug 5156) Update for Hebrew language (he)
29607 * (bug 4497,4704,5010) Added some new language codes.
29608 * (bug 5362) Piedmontese added
29609 * (bug 5349) Update for Portuguese messages (pt)
29610 * (bug 3573) Finished full Greek translation: namespaces
29611 * (bug 5288) Initial localisation for Az
29612 * (bug 4361) Fix "allmessagesnotsupportedui" so it doesn't refer to nonexisting
29614 * Tweak wording of "allmessagesnotsupporteddb"
29617 * (bug 2522) {{CURRENTDAY2}} now shows the current day number with two digits
29618 * (bug 3210) Fix Media: links with remote image URL path
29619 * (bug 3405) Don't use raw letters as aliases of MSGNW: and SUBST:
29620 * (bug 3412) Clean up date format handling so ~~~~-sigs work with default
29621 format as designed. Documentation comments updated.
29622 * Fix Parser::unstrip on PHP 5.1.0RC4
29623 * (bug 3797) Don't expand variables and sigs in comments
29624 * Allow parser cache on redirect targets
29625 * Run wikitext-escaping on plaintext sigs (no wiki markup, just name)
29626 * Check for unbalanced HTML tags on raw sigs (markup allowed, but show
29627 a warning in prefs and use default sig if not balanced)
29628 * Respect <noinclude> and <includeonly> during {{subst:}} expansion as well as
29629 ordinary templates.
29630 * Support <includeonly> in templates loaded through preload= parameter
29631 * (bug 3979) Save correct {{REVISIONID}} into parser cache on edit
29632 * Substitute {{REVISIONID}} correctly in diff display
29633 * (bug 1850) Allow red-links on image pages linked with [[:image:foo]]
29634 * Fix XML validity checks in parser tests on PHP 5.1
29635 * (bug 4377) "[" is not valid in URLs
29636 * (bug 4453) fix for __TOC__ dollar-number breakage
29637 * Convert unnecessary URL escape codes in external links to their equivalent
29638 character before doing anything with them. This prevents certain kinds of
29639 spam filter evasion.
29640 * (bug 4783) : Fix for "{{ns:0}} does not render"
29641 * Improved support for interwiki transclusion
29642 * (bug 1850) Image link to nonexistent file fixed.
29643 * (bug 5167) Add {{SUBPAGENAME}} and {{SUBPAGENAMEE}} variables
29644 * (bug 4949) Missing : in "addedwatchtext" for English and Spanish
29645 * Allow user-defined functions, which work in a similar way to {{GRAMMAR:}}
29646 etc. Registered via an interface similar to tag hooks.
29649 * (bug 2527) Always set destination filename when new file is selected
29650 * (bug 3076) Support MacBinary-encoded uploads from IE/Mac
29651 * (bug 2554) Tell users they are uploading too large file
29652 * Support for a license selection box on Special:Upload, configurable from
29654 * Add 'reupload' and 'reupload-shared' permission keys to restrict new uploads
29655 overwriting existing files; default is the old behavior (allowed).
29658 * (bug 3244) Fix remote image loading hack, JavaScript injection on MSIE
29659 * (bug 3280) Respect 'move' group permission on page moves
29660 * (bug 2613) Clear saved passwords from the form
29661 * IP privacy fix for blocklist search on autoblocks
29662 * Security fix for <math>
29663 * Security fix for tables
29664 * Security fix for Special:Upload license selection list
29665 * Add UploadVerification hook for custom file upload validation/security checks
29666 * Blacklist additional MSIE CSS safety tricks
29667 * Fix meta robots tag on Special:Version again to avoid listing vulnerable
29668 versions for convenient harvesting by automated worms
29669 * Sanitizer CSS comment processing order fix
29670 * Forbid usernames that can be interpreted as titles with namespaces, as that
29671 leads to hard-to-manage names.
29672 * (bug 4071) Generate passwords long enough for $wgMinimalPasswordLength
29673 * Add createpage and createtalk permission keys, allowing a quick
29674 switch to disable page creation for anonymous users.
29675 * (bug 675) Add page protection level for unregistered/new accounts
29676 * User::isNewbie now uses the registration date and $wgAutoconfirmAge
29677 * Add 'deletedhistory' permission key for ability to view deleted history
29678 list via Special:Undelete. Default is off, replicating the 1.5 behavior,
29679 but it can be turned back on for random users to replicate the previous
29681 * Set cookies to secure mode based on use of HTTPS or $wgCookieSecure
29682 * (bug 4371) Disallow tilde character in signatures
29683 * Removed broken wgAllowAnonymousMinor and added new group right minoredit
29684 * Added detection for WMF files (application/x-msmetafile), added this
29685 MIME type to the default blacklist. Prevented inline display of images
29686 which are not of known image types. This is in response to
29687 https://en.wikipedia.org/wiki/Windows_Metafile_vulnerability
29688 * Blocked users can no longer roll back, change the protection of, or
29689 delete/undelete pages
29690 * Protect against spoofing of X-Forwarded-For header
29691 * XSS issue : now sanitize search query input (fixed in 1.5rc3)
29692 * Remove deprecated $wgOnlySysopsCanPatrol references; use
29693 User::isAllowed( 'patrol' )
29694 per bug 5282. Patch by Alan Harder.
29695 * Prevent registration/login with the username "MediaWiki default"
29698 * Rearranged Special:Movepage form to reduce confusion between destination
29699 title and reason input boxes
29700 * (bug 1956) Hide bot uploads from Special:Newimages
29701 * (bug 3220) Fix escaping of block URLs in Recentchanges
29702 * (bug 3284) Ipblocklist paging, substring search
29703 * Allow filtering of robot edits in Special:Watchlist by setting
29704 $wgFilterRobotsWL = true.
29705 * Fix interlanguage links on special pages when extra namespaces configured
29706 * (bug 3475) anon contrib links on Special:Newpages
29707 * Special:Import/importDump fixes: report XML parse errors, accept <minor/>
29708 * (bug 2369) Add separate message for input box on Special:Prefixindex
29709 * (bug 3798) DoubleRedirects no longer has hard coded arrows
29710 * (bug 3803) Fix links on Special:Wantedcategories with miser mode off
29711 * Fix Special:BrokenRedirects on MySQL 5.0
29712 * (bug 3807) Fix 'all' in namespaces drop-down on contribs, rc
29713 * Fail gracefully on invalid namespace in Special:Newpages
29714 * (bug 3762) Define missing Special:Import UI messages
29715 * (bug 3761) Avoid deprecation warnings in Special:Import
29716 * (bug 2894) Enhanced Recent Changes link fixes
29717 * (bug 4059) fix 'hide minor edits' on Recentchangeslinked
29718 * (bug 146) List number of category members in Special:Categories
29719 (patch by Joel Nothman)
29720 * (bug 4090) Fix diff links in Special:Recentchangeslinked
29721 * (bug 4093) '&bot=1' in Special:Contributions now propagate to other links
29722 * Fix display of old recentchanges records for page moves
29723 * (bug 360) Let Whatlinkshere track [[:image:foo]] links
29724 * (bug 3073) Keep search parameter on paging in Special:Newimages
29725 * Removed Special:Validate, it's been superseded by the Review extension
29726 * (bug 4359) red [[user:#id]] links generated in [[special:Log]]
29727 * (bug 1996) Special page to list redirects
29728 * (bug 4334) Add "watch" links to Special:Unwatchedpages
29729 * Generate target user page links in Special:Ipblocklist where appropriate
29730 (i.e. not an autoblock)
29731 * Generate link to talk page of the blocker in Special:Ipblocklist, move
29732 contribs. link of the target next to their name
29733 * (bug 2714) Backlink from special:whatlinkshere was hard set as 'existing'
29734 * Move parentheses out of <a> link in Special:Contributions
29735 * (bug 3192): properly check 'limit' parameter on Special:Contributions
29736 * (bug 3187) watchlist text refer to unexistent "Stop watching" action
29737 * Add block, block log and general log links to Special:Contributions
29738 * Add contributions link to block log items
29739 * Added optional "hide own edits" feature to Special:Recentchanges
29740 * (bug 5018) Anchors for each message in Special:Allmessages
29741 * Introduce $wgWantedPagesThreshold per bug 5011; Special:Wantedpages will not
29742 list pages with less than this number of links. Defaults to 1.
29743 * (bug 4319) Don't show a "create account" link on the login form when
29744 account creation is disabled.
29745 * JavaScript filter for Special:Allmessages
29746 * (bug 3047) Don't mention talk pages on Special:Movepage when there isn't one
29747 * Show links to user page, talk page and contributions page on Special:Newpages
29748 * Special:Export can now export a list of all contributors to an article (off by
29750 * (bug 5372) Add number of files to Special:Statistics
29751 * (bug 2871) Links to talk pages in watchlist editing view
29752 * (bug 5385) Allow hiding anonymous edits on Special:Recentchanges
29753 * (bug 2544) Illogical error reporting order in Special:Userlogin
29754 * (bug 5409) Hide "show/hide patrolled edits" in Special:Recentchanges if
29755 patrolling is disabled
29756 * (bug 5447) Convert first letter of username to uppercase before searching in
29758 * (bug 759) Wrap redirects on the watchlist editing page in a span, class
29760 * (bug 1862) Namespace filtering in watchlists
29763 * PHP 4.1 compatibility fix: don't use new_link parameter to mysql_connect
29764 if running prior to 4.2.0 as it causes the call to fail
29765 * (bug 3117) Fix display of upload size and type with tidy on
29766 * (bug 2323) Remove "last" tabindex from history page
29767 * (bug 3116) Division by zero on [[Image:Foo.png|123x123px|]]
29768 * Fix display of read-only lockfile message
29769 * Include software-visible client IP address in Special:Version comment
29770 as a proxy debugging aid
29771 * (bug 3170) Page Title failed to obey MediaWiki:Pagetitle.
29772 wikititlesuffix was removed
29773 * Add ability to break off certain debug topics into additional log files;
29774 use $wgDebugLogGroups to configure and wfDebugLog() to log.
29775 * Edit conflict on recreation of deleted page
29776 * (bug 3216) Don't show empty warning page when no warnings.
29777 * (bug 3218) Use proper quoting on history Compare Revisions button
29778 * Fix upgrade from 1.4 due to version number check breakage [for rc future]
29779 * Fix upgrade from 1.4 with no old revisions
29780 * Remove "info" editing toolbar that was shown in browsers which do not
29781 fully support the editing toolbar, but was found to be too confusing.
29782 * Don't override edit conflict suppression on section edits; section merging
29783 should provide the expected transparency here and fits usage patterns better.
29784 * (bug 3292) Fix move-over-redirect test when current entries are not plaintext
29785 * (bug 2078) Don't hide watch tab on preview
29786 * Fix regressions in ChangesList traditional layout
29787 * Fix edit on double-click for move-protected pages in Classic skin
29788 * (bug 3485) Fix bogus warning about filename capitalization when off
29789 * (bug 2570) Add 'watch this page' checkbox on uploads, watch uploads
29790 by default when 'watchdefault' option is on
29791 * Add options to dumpBackup.php for making split/partial dumps by page id
29792 * Added filter options, compression piping, and multiple output streams for
29794 * (bug 3595) Warn and abort if importDump.php called in read-only mode.
29795 * (bug 3598) Update message cache on message page deletion, patch by Tietew
29796 * Added separate noarticletext and newarticletext messages for logged in and
29798 * (bug 3332) Installation now uses Monobook, validates, plus usability
29800 * (bug 3660) Update diff3 detection to work with Windows/Cygwin
29801 * (bug 2330) Don't do funny thinks with "links" in MediaWiki:Undeletedtext
29802 * Two-pass data dump for friendliness to the DB (--stub, then dumpTextPass.php)
29803 * Data dump 'prefetch' mode to read normalized text from a prior dump
29804 (requires PHP 5, XMLReader extension)
29805 * (bug 2773) Print style sheet no longer overrides RTL text direction
29806 * (bug 2938) Update MediaWiki:Exporttext to be more general
29808 * Fix wfMsg*() replacements; args containing literal $[2-9] were wiped
29809 * Added @import for [[MediaWiki:Common.css]] to all skins
29810 * Edit box now remembers scrollbar position on preview
29811 * (bug 3816) Throw edit conflict instead of fatal error when a page is
29812 moved or deleted during section edit
29813 * (bug 3771) Handle internal functions in backtrace in wfAbruptExit()
29814 * (bug 3291) 'last' diff link for last history line when not at end
29815 * (bug 3667) Add missing global in page move code
29816 * (bug 2885) Remove unnecessary reference parameter which broke classic skin
29817 talk notification on PHP 5.0.5
29818 * (bug 3852) "Redirected from" link no longer obscured on double-redirects
29819 * changed directory hierarchy in images/math/. System upgrades from old to
29820 new hierarchy on the fly.
29821 * (bug 3487) Fix category edit preview with preview-on-bottom
29822 * (bug 918) Search index incorrectly joined words at == headings ==
29823 * (bug 3877) Render math images into temp directory, then move to hashed
29824 subdir so you can render new math images and have them work
29825 * (bug 2392) Fix Atom items content type, upgrade to Atom 1.0
29826 * Allow $wgFeedCacheTimeout of 0 to disable feed caching
29827 * Fix WebRequest::getRequestURL() to strip off the host bits squid prepends
29828 * Require POST for action=purge, to stop bots from purging the cache
29829 * Added local message cache feature ($wgLocalMessageCache), to reduce bandwidth
29830 requirements to the memcached server.
29831 * (bug 3562) for go search, try Caps-Variants-Broken-At-Non-Whitespace
29832 * (bug 2569) Use PATH_SEPARATOR instead of trying to guess based on
29833 DIRECTORY_SEPARATOR (was wrong on NetWare)
29834 * (bug 2740) Accept image deletions on 'enter' submit from MSIE
29835 * (bug 3939) Don't try to load text for interwiki redirect target
29836 * (bug 3948) Avoid notice warning in debug statement in bad search
29837 * Recognize Special:Search consistently so read whitelist works
29838 * (bug 3999) Change atom 1.0 feed id; had been unnecessarily complex due to
29839 unclear language in the spec. Now using the URL, same as the permalink,
29840 which someone else will probably whine about because it's not 'perma'
29841 enough or something.
29842 * (bug 4014) Fix include mode for Allpages on small page sets
29843 * (bug 3996) Fix text for new entries in RC RSS/Atom feed
29844 * (bug 3065) Update both watched namespaces when renaming pages
29845 * Changed mail form to have a bigger message entry box (like for editing
29847 * Fix ulimit parameters for wfShellExec when memory_limit is specified in 'm'
29848 * (bug 2111) Collapsable exif metadata table, clean up display
29849 * Reduce fractions in display of exif exposure time
29850 * (bug 4048) Optional footer link to site privacy policy
29851 * Don't die() when update.php reaches the end of the warning count
29852 * (bug 1915) Fix edit links when 'direction' used with 'oldid';
29853 using revision ID reported via OutputPage; Skin::editUrlOptions()
29854 * Remove obsolete 'redirect=no' on some edit links
29855 * Include oldid for the second revision on edit link on diff view
29856 * (bug 4035) Fix prev/next revision links on edit page
29857 * (bug 4100, 3049) Add 'edittools' message to hold edit tools, put it
29858 on Special:Upload as well as edit, rearrange edit page pieces a bit.
29859 Copyright warning now above the buttons to ensure it's visible,
29860 template list at the bottom so it can grow.
29861 * Optional summary parameter to action=rollback, for user javascript
29862 * (bug 4167) Fix regression caused by patch for bug 153
29863 * (bug 4169) Use $wgLegalTitleChars in pipe trick conversions
29864 * (bug 4170) Decode HTML character escapes in sort key
29865 * (bug 4201) Fix user-talk mode for Enotif, and general code cleanup
29866 * (bug 4214) Skip redundant action text inserts into the HTML <title>
29867 * (bug 4212) Skip redundant meta-robots tag for default settings
29868 * Fix regression: old version missing from edit links in Nostalgia skin
29869 * (bug 1600) Trigger edit conflict on duplicate section=new submissions
29870 * (bug 4001) Use local variables properly in wikibits.js akeytt()
29871 * Fix regression: old version missing from edit links on CSS/JS pages
29872 * (bug 3211) Include Date, To mail headers when using PEAR::Mail
29873 * (bug 3407) Fix encoding of subject and from/to headers on notification
29874 mails; userMailer() now takes a MailAddress wrapper object instead of
29875 a raw string to abstract things a level.
29876 * Fixed --server override on dumpTextPass.php
29877 * Added plugin interface for dumpBackup, so additional filters and output
29878 sink types can be registered at runtime from an extension
29879 * (bug 349) Fix for some numeric differences not being highlighted
29880 patch by Andrius Ramanauskas
29881 * (bug 4298) Include rc_id on enhanced RC singleton diff links for patrolling
29882 * Did some refactoring on ChangesList.php merging dupe code
29883 * (bug 1586) Fix interwiki generator for wikimedia obscure domains
29884 * (bug 3493) Mark edits patrolled when they are reverted
29885 patch by Leon Planken
29886 * Removed experimental Amethyst skin from default set
29887 * Upgrade old skin preferences properly at Special:Preferences
29888 (used to spontaneously switch to Classic skin for old numeric pref records)
29889 * (bug 3424) Update page_touched for category members on category page creation
29890 * Log views show message when no matches
29891 * Fix raw sitenotice display on database error
29892 * Fix autoconfirm check for old accounts
29893 * (bug 4368) Don't show useless empty preview on new section creation
29894 * Don't show useless empty preview on new page creation
29895 * (bug 4411) Fix messages diff link for classic skin
29896 * (bug 4385) Separate parser cache entries for non-editing users, so section
29897 edit links don't vanish / appear unwanted on protected pages
29898 * (bug 2726, 3397) Fix [[Special:]] and [[:Image]] links in action=render
29899 * (bug 4419) Remove obsolete magnify.png.old
29900 * Removed $wgUseCategoryMagic option, categories are now enabled unconditionally
29901 * (bug 3318) UI workarounds for disabled items in license selector
29902 MSIE/Win: items now grayed out, JS will revert to 'non selected' if clicked
29903 Safari: JS will revert to 'non selected' if clicked (but not gray)
29904 MSIE/Mac: indented items now visible (JS hack)
29905 * (bug 714) "plainlinks" class issues in IE, Opera
29906 * (bug 4317) Inconsistent "broken redirects" messages
29907 * Default interface text for "selflinks" tweaked
29908 * (bug 3194) default implementation of translateBlockExpiry
29909 which uses ipboptions
29910 * (bug 4446) $wgExportAllowHistory option to explicitly disable history in
29911 Special:Export form, 'exportnohistory' message to translate live hack.
29912 * Maintenance script to delete unused user accounts
29913 * (bug 912) Search box easier to reach in text browsers (lynx, links)
29914 * $wgParserCacheExpireTime added
29915 * Skip loading of RecentChange.php except where needed
29916 * Enforce $wgSVGMaxSize when rendering, even for SVGs with a very large source
29917 size. This is necessary to limit server memory usage.
29918 * Cleanup and error checking on Special:Listredirects
29919 * Clear up some instances of old OutputPage::sysopRequired() function usage
29920 * Improve "upload disabled" notice
29921 * Move parts of index.php to include/Wiki.php in an attempt to both cleanup
29922 index.php and create a MediaWiki-class mediaWiki base object
29923 * (bug 4104) Added OutputPageBeforeHTML hook for tweaking primary wiki output
29924 HTML on final output (cached or not)
29925 * Avoid PHP notice on command-line scripts if empty argument is passed ('')
29926 * (bug 4571) Partial fix hack for {{fulllurl:}} in action=render
29927 * (bug 3502) Bowtie symbol for TeX
29928 * (bug 4000) Support for \textstyle et al. in <math>
29929 * (bug 1663) support color in TeX formulas
29930 * (bug 2026) missing glue around \not= (TeX)
29931 * (bug 4576) Missing '>' broke license selector's first option in IE, Opera
29932 * Override $wgLocaltimezone in parser tests for us outside Iceland and UK
29933 * Fix extra whitespace at end of Wiki.php, DESTROYS XML OUTPUT
29934 * Remove redundant 'echo' statements from MonoBook.php
29935 * (bug 1103) Fix up redirect handling for images, categories
29936 Redirects are now followed from the top-level, outside of the Article
29937 content loading and viewing, for clarity and consistency.
29938 * (bug 4104) 'OutputPageBeforeHTML' hook to postprocess article HTML on
29939 page view (comes after parser cache, if used). Patch by ThomasV.
29940 * Linker::formatComment corrupted the passed title object on PHP 5
29941 if the comment included a section link. Use clone() to make a safe copy.
29942 * Add wfClone() wrapper since we're still using PHP 4 on some servers.
29943 * Remove obsolete killthread.php
29944 * Added wfDie() wrapper, and some manual die(-1), to force the return code
29945 to the shell to return nonzero when we crap out with an error.
29946 * Allow input of the stub from a compressed file instead of stdin
29947 for dumpTextPass.php; easier to get errors back on the shell
29948 * Added an attractive space on the namespace selector on contribs
29949 * Move PHP 5-friendly XHTML doctype hack to Sanitizer, use for sig checks.
29950 Fixes use of named entities in sigs on PHP 5
29951 * (bug 4482) Include move comment on the null edit as well as the redirect
29952 * (bug 3990) Use existing session name if session.auto_start is on
29953 Fixes checks for open sessions, such as the cookie warning on login.
29954 Patch by Zbigniew Braniecki.
29955 * Add cache-safe alternate sitenotice for anonymous users.
29956 (MediaWiki:Anonnotice) This is displayed instead of the regular sitenotice,
29957 if it exists. If not, the regular sitenotice shows. If that doesn't exist,
29958 the value of $wgSiteNotice is used, and if that's null, then nothing is shown.
29959 * Spit the generated LocalSettings code out during the installer as an aid
29960 to debugging issues. (Keep this?)
29961 * Use __FILE__ to form path in new LocalSettings.php, so it stays accurate
29962 when the directory is relocated for typical usage.
29963 * Auto-update $wgCacheEpoch when LocalSettings.php changes on new installs.
29964 For typical usage this will be a light burden and should reduce confusion
29965 when the configuration is edited.
29966 * Fix $wgCacheEpoch's effect on client-side caching.
29967 * (bug 1122) gray out 'older revision' when viewing first article revision.
29968 * Clearer message in DefaultSettings.php: edit LocalSettings.php instead
29969 * MonoBook skin top link id changed from "contentTop" to "top" (shared with
29971 * (bug 3350) Missing label for move talk page checkbox.
29972 * (bug 2108) Sort entries when using category browser
29973 * (bug 2393) Fix MIME type for Atom feeds ( application/rss+atom )
29974 * Add ".deps.php" include-file preloaders for some dynamically-loaded
29975 language and skin classes. Should help with the broken base-class
29976 problem under PHP 5 with APC as opcode cache. See details:
29977 https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/4NVSC4LAZX6ACO77QVLRQYAWULAJCKJ2/
29978 * Small changes to tabs in Monobook skin c/o Chris Ware
29979 * (bug 4679) Work around buggy basename() function in PHP5, which breaks
29980 uploads of files starting with multibyte characters on Linux.
29981 wfBaseName() doesn't suffer this bug, and understands backslash on
29982 both Unix and Windows.
29983 * (bug 3603) headscripts variable not hooked up to MonoBook skin
29984 * Allow local cdb-based interwiki cache
29985 * Use the "block", not the "protect" permission, when determining whether to
29986 show a "block user" link in the toolbox
29987 * Fix backup dump text prefetch for XMLReader constant changes in PHP 5.1
29988 * Suppress useless percentage indicator on output from 7za during dumps
29989 * (bug 4633) Add (previous 200) (next 200) also above catlinks
29990 * (bug 4686) Fix regression where ?diff=0&oldid=0 caused fatal error on
29991 pages with only one revision. Fixes message diff link on first edit.
29992 * Fix dependence on hardcoded UNIQ_PREFIX in LanguageConverter.php
29993 * Do not check lag on external storage servers
29994 * Do not tidy interface messages (unless full tidy is set)
29995 * Do not trust equality propagation and give more hints to MySQL
29996 optimizer for revision fetches (avoids index scans)
29997 * Use revision rate for ETA in dump generation; it tends to be more stable
29998 than the per-page count for full-history dumps.
29999 * Include timestamp in wfDebugLog breakouts
30000 * (bug 4469) Namespace-specific notice to be displayed below site-notice
30001 Edit messages like "MediaWiki:Namespacenotice-" plus namespace name
30002 which is blank for main namespace, or like e.g. "User_talk"
30003 * Adjust user login/creation form hooks to work with a captcha plugin
30004 * (bug 1284) Inline styles for diffs in Recent Changes RSS/Atom feeds
30005 * (bug 4824) IE7 beta 2 broke compatibility with PNG logo workarounds,
30006 and seems to work ok with other bits. No longer including the IE
30007 workarounds JavaScript for IE 7 and above.
30008 * Fix extra namespace for Bulgarian
30009 * (bug 4303) Add $wgFavicon to change the shorticon icon link from
30010 the default /favicon.ico or disable it (if set to false)
30011 * (bug 3347) strip linebreaks in math error source
30012 * (bug 4841) Warning for non-logged-in edits
30013 * (bug 4867) Leave invalid EXIF date fields unformatted instead of
30014 showing a bogus current timestamp
30015 * Reset $wgActionPaths during parser test; corrects some false failures
30016 in the automated test report.
30017 * (bug 4875) Define a div containing the shared image description
30018 * (bug 4860) Expose Title->userCan() as Hooks
30019 * (bug 4828) Fix genitive month-name variable for cs, pl, uk
30020 * (bug 4842) Fix 'show number of watching users' with enhanced RC
30021 * (bug 4889) Fix image talk namespace for Tamil
30022 * (bug 4147) Added cleanupWatchlist.php to clear out bogus watchlist entries
30023 * (partial bug 3456) Disable auto redirect to Main Page after account creation
30024 * (bug 4824) Separate out IE7 CSS compat hacks, fix for RTL pages
30025 * Added support for wikidiff2 and similar external diff engines.
30026 * Allow cookies to be shared between multiple wikis with a shared user database
30027 * Blocking some Unicode whitespace characters in usernames. Should check
30028 if some or all should be blocked from all page titles.
30029 * Unknown log types no longer throw notices everywhere in RecentChanges
30030 * (bug 4502, 5017) Don't render potentially hostile deleted page contents
30031 on Special:Undelete by default; show source, with an optional preview.
30032 The revisions list no longer shows the latest text by default, so it can
30033 still be operated if the text is hostile.
30034 * (bug 5013) Check for existence on "return to" links
30035 * Removed trailing whitespace on a bunch more messages.
30036 * Fix missing bad title check in Special:Booksources
30037 * Remove empty booksources string in fy
30038 * Avoid corrupting <gallery> inside <!-- comment -->
30039 * Remove legacy PHPTal code, hasn't been maintained in ages.
30040 * Tweak Userlogin include order for APC issue
30041 * Don't try to link to current page on protection tab
30042 * More exact checking in Title::equals() to fox moves of numerically similar
30043 page titles. (Odd hex title bug on 64-bit.)
30044 * Fix explicit s-maxage=0 on raw pages; should help with proxy issues in
30045 generated stylesheets... hopefully...
30046 * (bug 4685) More fixes for Slovenian project namespace
30047 * Fixed and enhanced a little the Live Preview, which had been broken for some
30049 * Added article size limit, $wgMaxArticleSize
30050 * (bug 4974) Don't follow redirected talk page on "new messages" link
30051 * (bug 4970) Make category paging limits configurable
30052 * (bug 4535) Warn user when editing CSS or JS subpage of a skin that doesn't
30054 * Make Live Preview an user preference, still controllable by the global
30056 * Rename the stub LanguageAls / LanguageGem_alsation to LanguageGsw to follow
30057 updated language code assignments
30058 * (bug 5081) Remove bogus fix for invalid characters in links which simply
30059 broke use of legitimate multiple whitespace characters in bracketed link.
30060 * (bug 4838) Add relative oldids (prev, next, cur) for raw pages
30062 * (bug 5086) Force image resize dimensions on ImageMagick, as for instance
30063 "-resize 100x35!"; some thumbs were off due to differences in rounding and
30064 would be generated smaller than expected.
30065 * (bug 5062) Width sometimes one pixel short when using maximum heights
30066 * Purge thumbnails and metadata cache for action=purge on an image page
30067 * (bug 4273) Bounce back with a message when attempting to submit a new comment
30068 with an empty main textbox (user probably hit Enter in subject field)
30069 * (bug 5141) Gracefully handle the new account link when createaccount off
30070 * (bug 5150 and related) Fix missing ID attribute in HTML namespace selector
30071 * (bug 5152) Proper HTML escaping on subpage breadcrumbs
30072 * (bug 4855) Section edit links now have the section name in the title
30074 * (bug 2115) Support shift-selecting multiple checkboxes with JavaScript.
30075 * (bug 5161) Don't try to load template list for nonexistent pages
30076 * (bug 5228) Workaround for broken LanguageConverter title overrides; avoid
30077 unnecessary hidden UI work when watch/unwatch is performed on edit
30078 * Fixed bogus master fallback in external storage
30079 * (bug 5246) Add speak:none to "hiddenStructure" class in main.css
30080 * Further work on rev_deleted; changed to a bitfield with several data-hiding
30081 options. Not yet ready for production use; Special:Revisiondelete is
30082 incomplete, and the flags are not preserved across page deletion/undeletion.
30083 To try it; add the 'deleterevision' permission to a privileged group.
30084 * (bug 5270) Fix broken linktrail for br, cv, fr, hr, nn, oc, ta, wa
30085 * Add a clickable contribs link in user tool links (rc, watchlist, diff view)
30086 to see how people like it. (There was one in the old hacked-up diff view.)
30087 * (bug 5236) Load wikibits.js before site-customized javascript
30088 * (bug 4119) Workaround for <nowiki> following link in Walloon; remove capitals
30089 from linktrail, as they're not used anywhere else.
30090 * (bug 4781) Output links with the percent-encoding they're supplied with;
30091 save the normalization for internal link storage. The normalization is a bit
30092 buggy and can make incorrect foldings in the query string and such, so isn't
30093 reliable beyond the hostname where it's used for the spam bulk checker.
30094 * Don't URL-decode in the title attribute for URL links; it can produce false
30095 results that don't code back to their original values.
30096 * (bug 4611) Add user preference (default on) to add new pages to creators's
30098 * (bug 5286) Fix regression in display of missing/bad revision IDs
30099 * (bug 4729) Add user preference that marks a user's edits as patrolled if user
30101 * (bug 4630) Add user preference to prompt users when entering blank edit
30103 * Added optional suggest feature for the search box. Set wgUseAjax to true to
30105 * (bug 5277) Use audio/midi rather that audio/mid
30106 * (bug 5410) Use namespace name when a custom namespace's nstab-NS message is
30108 * (bug 5432) Fix inconsistencies in cookie names when using table prefixes
30109 * Additional protections against HTML breakage in table parsing
30110 * (bug 5355) Include skin name and style JS settings in page source;
30111 fixes regression where Opera 6/7 and KHTML CSS fixes weren't applied
30112 when wikibits.js was moved up before user JS inclusion.
30113 * Added $wgColorErrors: if set, database error messages will be highlighted
30114 when running command-line scripts in a Unix terminal.
30115 * (bug 5195) rebuildrecentchanges.php works again; Database::insertSelect now
30116 has a parameter for select options.
30117 * Fix updateSearchIndex.php for new schema
30118 * Fix bogus "filename too short" error when uploading files with a period in the
30119 base name, e.g. "Mr. Zee.png"
30120 * (bug 2139) Show page title in subtitle when viewing "read only" page
30121 * (bug 5452) Update language name for Cree
30123 == Compatibility ==
30125 Older PHP 4.2 and 4.1 releases are no longer supported; PHP 4 users must
30126 upgrade to 4.3 or later.
30128 MediaWiki 1.6 is the last major version to support PHP 4; future versions will
30131 MySQL 3.23.x is no longer supported; some older hosts may need to upgrade.
30132 At this time we still recommend 4.0, but 4.1/5.0 will work fine in most cases.
30136 Several changes to the database have been made from 1.5; these are relatively
30137 minor but do require that the update process be run before the new code will
30140 * A new "templatelinks" table tracks template inclusions.
30141 * A new "externallinks" table tracks URL links; this can be used by a mass
30142 spam-cleanup tool in the SpamBlacklist extension.
30143 * A new "jobs" table stores a queue of pages to update in the background; this
30144 is used to update links in including pages when templates are edited.
30146 To ensure that these tables are filled with data, run refreshLinks.php after
30149 If you are upgrading from MediaWiki 1.4.x or earlier, some major database
30150 changes are made, and there is a slightly higher chance that things could
30151 break. Don't forget to always back up your database before upgrading!
30155 Some output, particularly involving user-supplied inline HTML, may not produce
30156 100% valid or well-formed XHTML output. Testers are welcome to set $wgMimeType
30157 = "application/xhtml+xml"; to test for remaining problem cases, but this is not
30158 recommended on live sites. (This must be set for MathML to display properly in
30164 == MediaWiki 1.5.9 ==
30165 * (bug 3359) Add hooks on completion of file upload
30167 == MediaWiki 1.5.8 ==
30171 MediaWiki 1.5.8 is a security and bugfix maintenance release.
30173 A bug in decoding of certain encoded links could allow injection of raw
30174 HTML into page output; this could potentially lead to XSS attacks.
30176 Some minor UI fixes were also made, see the change log at the bottom of
30180 == MediaWiki 1.5.7 ==
30184 MediaWiki 1.5.7 is a bugfix maintenance release.
30186 Most importantly, a security issue in the installer has been fixed. The bug
30187 affects new installations of 1.5.6 only. If the user specified the MySQL root
30188 password, to allow the installer to create an unprivileged account, the
30189 installer would not only create the new account but also change the root
30190 password to be equal to the password of the new account.
30192 Anyone affected by this bug will need to change the root password back
30193 manually. For information about how to change passwords in MySQL please see:
30194 http://dev.mysql.com/doc/refman/5.1/en/passwords.html
30196 This version includes fixes for compatibility with Internet Explorer 7
30197 beta 2, and various other bugs; see the full changelog at the end of
30201 == MediaWiki 1.5.6 ==
30205 MediaWiki 1.5.6 is a security and bugfix maintenance release.
30207 A bug in edit comment formatting could send PHP into an infinite loop
30208 if certain malformed links were included. In most installations, this
30209 would cause the script to fail after PHP's 30-second failsafe timeout.
30211 Some improvements have been made to the installer which should make
30212 installation possible on a system with a broken MySQL "root" account.
30214 For several other minor fixes, see the complete changelog at the end
30218 == MediaWiki 1.5.5 ==
30222 MediaWiki 1.5.5 is a security and bugfix maintenance release.
30224 Detection for uploads of Windows Metafile (.wmf) images has been added
30225 to help protect against a client-side vulnerability in unpatched Microsoft
30226 Windows operating systems.
30228 Sites which have enabled uploads and added non-standard file types
30229 (such as .ogg, .doc, or .pdf) should upgrade to this release to ensure
30230 that malicious .wmf files can't be uploaded with a fake extension;
30231 such files could put visitors to the site at risk.
30233 For more details on this, see:
30234 https://en.wikipedia.org/wiki/Windows_Metafile_vulnerability
30236 Additionally, a maintenance script removeUnusedAccounts.php has been added;
30237 this replaces an older Perl script which had not been updated for the new
30241 == MediaWiki 1.5.4 ==
30245 MediaWiki 1.5.4 is a security and bugfix maintenance release.
30247 A hardcoded internal placeholder string has been replaced with a random
30248 one. This closes a hole where security checks in inline style attributes
30249 could be bypassed, injecting JavaScript code that could execute in
30250 Microsoft Internet Explorer.
30252 Other browsers would not be vulnerable.
30254 Several minor fixes are included in this release, most notably a fix
30255 to clear the "you have new messages" flag properly for usernames
30256 containing spaces when e-mail notification is enabled.
30258 See the changelog at the end of the release notes for a full list of
30262 == MediaWiki 1.5.3 ==
30266 MediaWiki 1.5.3 is a security and bugfix maintenance release.
30268 Validation of the user language option was broken by a code change in
30269 May 2005, opening the possibility of remote code execution as this
30270 parameter is used in forming a class name dynamically created with
30273 The validation has been corrected in this version. All prior 1.5 release
30274 and prelease versions are affected; 1.4 and earlier and not affected.
30276 Additionally several bugs have been fixed; see the changelog later in
30277 this file for a complete list.
30280 == MediaWiki 1.5.2 ==
30284 MediaWiki 1.5.2 is a bugfix maintenance release.
30286 A change in PHP 4.4.1 and PHP 5.1.0RC broke handling of extension and
30287 <pre> sections, causing garbage data to be inserted in output and saved
30288 edits. This version works around the change.
30290 Several other glitches with MySQL 5.0 and PHP 5.0.5 were also fixed;
30291 see the change log below for a complete list.
30294 == MediaWiki 1.5.1 ==
30298 MediaWiki 1.5.1 is a bugfix and security maintenance release, and is a
30299 recommended upgrade for all installations.
30301 This release includes further corrections to the inline CSS style sanitation
30302 which works around a JavaScript "feature" on Microsoft Internet Explorer.
30303 Users of Microsoft Internet Explorer for Windows may be vulnerable to
30304 XSS injections on prior versions; users of standards-compliant browsers
30305 are not vulnerable.
30307 Major fixes include:
30308 * Image pages work again with resizing disabled
30309 * Works in MySQL 5.0 strict mode
30311 There is experimental support in this release for explicitly declaring
30312 the UTF-8 charset in the database; this has been tested with MySQL 5.0.15
30313 but should work on 4.1 as well.
30315 IMPORTANT: Changing this setting on an existing wiki may produce interesting
30316 data corruption, depending on server configuration. Page contents should,
30317 usually, be unaffected, but page titles and other items may be. Limitations
30318 in MySQL's Unicode support mean that characters outside the BMP cannot be used
30319 in page titles or various other fields when using this mode.
30321 Table definitions are in maintenance/mysql5/tables.sql, and the runtime
30322 option to send 'SET NAMES utf8' is set by $wgDBmysql5 = true.
30324 (MySQL 3.23.x and 4.0.x do not support character set declarations; on these
30325 versions MediaWiki simply works with UTF-8 data and MySQL is blissfully
30330 == MediaWiki 1.5.0 final ==
30334 MediaWiki 1.5.0 is the new stable release branch of MediaWiki, and is
30335 recommended for all new installations.
30337 Any wikis running a 1.5 beta or release candidate are strongly recommended
30338 to upgrade to the final release, which includes a number of bug fixes and
30339 a security fix for CSS bugs in Microsoft Internet Explorer.
30341 IMPORTANT: Running a 1.3 or 1.4 wiki and don't want to jump to 1.5 yet?
30342 Be sure to upgrade to 1.3.17 or 1.4.11, also released today. Versions
30343 prior to 1.3.16 and 1.4.10 have a serious data corruption bug which is
30344 triggered by a spambot known to operate in the wild.
30347 === What's new in 1.5? ===
30350 The core table schema has changed significantly. This should make better
30351 use of the database's cache and disk I/O, and make significantly speed up
30352 rename and delete operations on pages with very long edit histories.
30354 Unfortunately this does mean upgrading a wiki of size from 1.4 will require
30355 some downtime for the schema restructuring, but future storage backend
30356 changes should be able to integrate into the new system more easily.
30359 The current revision of a page now has a permanent 'oldid' number assigned
30360 immediately, and the id numbers are now preserved across deletion/undeletion.
30361 A permanent reference to the current revision of a page is now just a matter
30362 of going to the 'history' tab and copying the first link in the list.
30365 Renames of pages are now recorded in Special:Log and the page history.
30366 A handy revert link is available from the log for sysops.
30369 Ever lost track of what you'd done so far during an edit? A 'Show diff'
30370 button on the edit page now makes it easy to remember.
30373 It's now possible to specify the final filename of an upload distinct
30374 from the original filename on your disk.
30376 An image link for a missing file will now take you straight to the upload
30379 More metadata is pre-extracted from uploaded images, which will ease pressure
30380 on disk or NFS volumes used to store images. EXIF metadata is displayed on
30381 the image description page if PHP is configured with the necessary module.
30383 If .svg files are added to the upload whitelist, you can choose to render
30384 them to rasterized .png images for inline display using one of several
30385 external helper programs. See DefaultSettings.php for SVG options.
30388 There are some changes to the user permissions system, with assignable
30389 groups. Note that this does *not* allow you to make pages which are only
30390 accessible to certain groups.
30392 For details see: https://www.mediawiki.org/wiki/Manual:User_rights
30395 User-to-user e-mail can now be restricted to require a mail-back confirmation
30396 first to reduce potential for abuse with false addresses.
30398 Updates to user talk pages and watchlist entries can optionally send e-mail
30402 A somewhat experimental interface for hooking in an external editor
30403 application is included.
30406 A bunch of stuff we forgot to mention.
30409 === What's gone? ===
30412 Wikis must now be encoded in Unicode UTF-8; this has been the default for
30413 some time, but some languages could optionally be installed in Latin-1 mode.
30414 This is no longer supported.
30416 You can check if your current wiki is in Latin-1 mode by using your browser's
30417 "view source"; look for a line like this:
30419 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
30421 If it says charset=utf-8, you're ready. If it says charset=iso8859-1,
30422 you may need to convert your data. (English-language wikis avoiding
30423 any accented characters may be able to get away without conversion.)
30426 Some optimization hacks for MySQL 3.x have been removed as part of the schema
30427 clean-up (specifically, the inverse_timestamp fields).
30429 MediaWiki 1.5 may still run on 3.x, but wikis of non-trivial size should
30430 very seriously consider upgrading to a more modern release. MySQL 3.x support
30431 will probably be entirely dropped in the next major release.
30433 Special:Maintenance
30434 These tools were, ironically enough, not really maintained. This special
30435 page has been removed; insofar as some of its pieces were useful and haven't
30436 already been supplanted by other special pages they should be rewritten in
30437 an efficient and safe manner in the future.
30443 Wikis in Latin-1 encoding are no longer supported; only Unicode UTF-8.
30444 A new option $wgLegacyEncoding is provided to allow on-the-fly recoding of
30445 old page text entries, but other metadata fields (titles, comments etc) need
30446 to be pre-converted. The standard upgrade process does not yet fully automate
30447 this, but you can try the alternate partial-upgrader in upgrade1_5.php.
30449 The upgrade from 1.4 to 1.5 schema has not been tested for all cases, so
30450 it's possible you may experience problems in some combinations.
30453 The text entries of deleted pages are no longer removed from the main
30454 text table on deletion. If you provide public backup dumps of your databases,
30455 you will probably want to use the new XML-format dump generator, available
30456 as maintenance/dumpBackup.php.
30458 For more information on how we run our own public data dumps at Wikimedia,
30459 see http://meta.wikimedia.org/wiki/Data_dumps
30462 The table definitions for PostgreSQL install are out of date. PostgreSQL
30463 support may return in later releases, pending appropriate patches.
30466 Some users may encounter installation problems with MySQL 4.1 or higher
30467 due to strange charset encoding / collation configurations. Try setting
30468 to 'latin1' or 'utf8' if you encounter problems.
30472 == MediaWiki 1.5 release candidate 4 ==
30476 MediaWiki 1.5rc4 is a preview release of the new 1.5 release series.
30477 It fixes compatibility with PHP 5.1, and corrects two cross-site scripting
30480 * <math> tags were handled incorrectly when TeX rendering support is off,
30481 as in the default configuration.
30482 * Extension or <nowiki> sections in Wiki table syntax could bypass HTML
30483 style attribute restrictions for cross-site scripting attacks against
30484 Microsoft Internet Explorer
30486 Wikis where the optional math support has been *enabled* are not vulnerable
30487 to the first, but are vulnerable to the second.
30491 == MediaWiki 1.5 release candidate 3 ==
30495 MediaWiki 1.5rc3 is a preview release of the new 1.5 release series.
30496 It fixes several major problems in 1.5rc2:
30498 * Fixed a cross-site scripting injection in the search form
30499 (broken since 1.5beta1)
30501 * Fixed upgrades from 1.4 database schema
30502 (broken since 1.5rc2)
30504 1.3 and 1.4 releases are not vulnerable to the XSS bug, but anyone
30505 running an earlier 1.5 beta or release candidate should upgrade
30509 == MediaWiki 1.5 release candidate 2 ==
30513 MediaWiki 1.5rc2 is a preview release of the new 1.5 release series.
30514 Numerous bug fixes since last beta, plus a security fix; see change
30515 log below for full details.
30517 A flaw in the interaction between extensions and HTML attribute
30518 sanitization was discovered which could allow unauthorized use
30519 of offsite resources in style sheets, and possible exploitation
30520 of a JavaScript injection feature on Microsoft Internet Explorer.
30522 This version expands the returned text and properly checks it
30525 A 1.5rc1 release was mistakenly made from the incorrect source code
30526 branch; 1.5rc2 is identical to the actual 1.5rc1 in revision control
30527 except for version number.
30530 == MediaWiki 1.5 beta 4 ==
30534 MediaWiki 1.5 beta 4 is a preview release of the new 1.5 release series.
30535 A number of bugs have been fixed since beta 3; see the full changelist below.
30538 == MediaWiki 1.5 beta 3 ==
30542 MediaWiki 1.5 beta 3 is a preview release of the new 1.5 release
30543 series, with a security update over beta 2.
30545 Incorrect escaping of a parameter in the page move template could
30546 be used to inject JavaScript code by getting a victim to visit a
30547 maliciously constructed URL. Users of vulnerable releases are
30548 recommended to upgrade to this release.
30550 Vulnerable versions:
30551 * 1.5 preview series: n <= 1.5beta2 vulnerable, fixed in 1.5beta3
30552 * 1.4 stable series: 1.4beta6 <= n <= 1.4.5 vulnerable, fixed in 1.4.6
30553 * 1.3 legacy series: not vulnerable
30555 This release also includes several bug fixes and localization updates.
30556 See the changelog at the end of this file for a detailed list.
30560 == MediaWiki 1.5 beta 2 ==
30564 MediaWiki 1.5 beta 2 is a preview release of the new 1.5 release series.
30565 While most exciting new bugs should have been ironed out at this point,
30566 third-party wiki operators should probably not run this beta release
30567 on a public site without closely following additional development.
30569 Anyone who _has_ been running beta 1 is very very strongly advised to
30570 upgrade to beta 2, as it fixes many bugs from the previous beta including
30571 a couple of HTML and SQL injections.
30573 This release should be followed by one or two release candidates and
30574 a 1.5.0 final within the next few weeks.
30576 Beta upgraders, note there are some minor database changes. For upgrades
30577 from 1.4, see the file UPGRADE for details on significant database and
30578 configuration file changes.
30580 Beta 2 includes a preliminary command-line XML wiki dump importer tool,
30581 maintenance/importDump.php, paired with maintenance/dumpBackup.php.
30582 These use the same format as Special:Export and Special:Import, able
30583 to package a wiki's entire page set independent of the backend database
30584 and compression format.
30587 == MediaWiki 1.5 beta 1 ==
30591 MediaWiki 1.5 beta 1 is a preview release, pretty much feature complete,
30592 of the new 1.5 release series. There are several known and likely a number
30593 of unknown bugs; it is not recommended to use this release in a production
30594 environment but would be recommended for testing in mind of an upcoming
30597 A number of significant changes have been made since the alpha releases,
30598 including database changes and a reworking of the user permissions settings.
30599 See the file UPGRADE for details of upgrading and changing your prior
30600 configuration settings for the new system.
30604 == MediaWiki 1.5 alpha 2 ==
30608 MediaWiki 1.5 alpha 2 includes a lot of bug fixes, feature merges,
30609 and a security update.
30611 Incorrect handling of page template inclusions made it possible to
30612 inject JavaScript code into HTML attributes, which could lead to
30613 cross-site scripting attacks on a publicly editable wiki.
30615 Vulnerable releases and fix:
30616 * 1.5 prerelease: fixed in 1.5alpha2
30617 * 1.4 stable series: fixed in 1.4.5
30618 * 1.3 legacy series: fixed in 1.3.13
30619 * 1.2 series no longer supported; upgrade to 1.4.5 strongly recommended
30622 == MediaWiki 1.5 alpha 1 ==
30626 This is a testing preview release, being put out mainly to aid testers in
30627 finding installation bugs and other major problems. It is strongly recommended
30628 NOT to run a live production web site on this alpha release.
30630 ** WARNING: USE OF THIS ALPHA RELEASE MAY INFEST YOUR HOUSE WITH **
30631 ** TERMITES, ROT YOUR TEETH, GROW HAIR ON YOUR PALMS, AND PASTE **
30632 ** INNUENDO INTO YOUR C.V. RIGHT BEFORE A JOB INTERVIEW! **
30633 ** DON'T SAY WE DIDN'T WARN YOU, MAN. WE TOTALLY DID RIGHT HERE. **
30636 === Smaller changes since 1.4 ===
30638 Various bugfixes, small features, and a few experimental things:
30640 * 'live preview' reduces preview reload burden on supported browsers
30641 * support for external editors for files and wiki pages:
30642 https://www.mediawiki.org/wiki/Manual:External_editors
30643 * Schema reworking:
30644 https://www.mediawiki.org/wiki/Proposed_Database_Schema_Changes/October_2004
30645 * (bug 15) Allow editors to view diff of their change before actually submitting
30647 * (bug 190) Hide your own edits on the watchlist
30648 * (bug 510): Special:Randompage now works for other namespaces than NS_MAIN.
30649 * (bug 1015) support for the full wikisyntax in <gallery> captions.
30650 * (bug 1105) A "Destination filename" (save as) added to Special:Upload Upload.
30651 * (bug 1352) Images on description pages now get thumbnailed regardless of
30652 whether the thumbnail is larger than the original.
30653 * (bug 1662) A new magicword, {{CURRENTMONTHABBREV}} returns the abbreviation of
30655 * (bug 1668) 'Date format' supported for other languages than English, see:
30656 https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/5SH5IDCNYZTRBQQZ33GS7WYDEJ3PSEZE/
30657 * (bug 1739) A new magicword, {{REVISIONID}} give you the article or diff
30658 database revision id, useful for proper citation.
30659 * (bug 1998) Updated the Russian translation.
30660 * (bug 2064) Configurable JavaScript mimetype with $wgJsMimeType
30661 * (bug 2084) Fixed a regular expression in includes/Title.php that was accepting
30662 invalid syntax like #REDIRECT [[foo] in redirects
30663 * It's now possible to invert the namespace selection at Special:Allpages and
30664 Special:Contributions
30665 * No longer using sorbs.net to check for open proxies by default.
30666 * What was $wgDisableUploads is now $wgEnableUploads, and should be set to true
30667 if one wishes to enable uploads.
30668 * Supplying a reason for a block is no longer mandatory
30669 * Language conversion support for category pages
30670 * $wgStyleSheetDirectory is no longer an alias for $wgStyleDirectory;
30671 * Special:Movepage can now take parameters like Special:Movepage/Page_to_move
30672 (used to just be able to take parameters via a GET request like
30673 index.php?title=Special:Movepage&target=Page_to_move)
30674 * (bug 2151) The delete summary now includes editor name, if only one has edited
30676 * (bug 2105) Fixed from argument to the PHP mail() function. A missing space
30677 could prevent sending mail with some versions of sendmail.
30678 * (bug 2228) Updated the Slovak translation
30682 === Changes since 1.5alpha1 ===
30684 * (bug 73) Category sort key is set to file name when adding category to
30685 file description from upload page (previously it would be set to
30686 "Special:Upload", causing problems with category paging)
30687 * (bug 419) The contents of the navigation toolbar are now editable through
30688 the MediaWiki namespace on the MediaWiki:navbar page.
30689 * (bug 498) The Views heading in MonoBook.php is now localizable
30690 * (bug 898) The wiki can now do advanced sanity check on uploaded files
30691 including virus checks using external programs.
30692 * (bug 1692) Fix margin on unwatch tab
30693 * (bug 1906) Generalize project namespace for Latin localization, update
30695 * (bug 1975) The name for Limburgish (li) changed from "Lèmburgs" to "Limburgs
30696 * (bug 2019) Wrapped the output of Special:Version in <div dir='ltr'> in order
30697 to preserve the correct flow of text on RTL wikis.
30698 * (bug 2067) Fixed crash on empty quoted HTML attribute
30699 * (bug 2075) Corrected namespace definitions in Tamil localization
30700 * (bug 2079) Removed links to Special:Maintenance from movepagetext message
30701 * (bug 2094) Multiple use of a template produced wrong results in some cases
30702 * (bug 2095) Triple-closing-bracket thing partly fixed
30703 * (bug 2110) "noarticletext" should not display on Image page for "sharedupload"
30705 * (bug 2150) Fix tab indexes on edit form
30706 * (bug 2152) Add missing bgcolor to attribute whitelist for <td> and <th>
30707 * (bug 2176) Section edit 'show changes' button works correctly now
30708 * (bug 2178) Use temp dir from environment in parser tests
30709 * (bug 2217) Negative ISO years were incorrectly converted to BC notation
30710 * (bug 2234) allow special chars in database passwords during install
30711 * Deprecated the {{msg:template}} syntax for referring to templates, {{msg: is
30712 now the wikisyntax representation of wfMsgForContent()
30713 * Fix for reading incorrectly re-gzipped HistoryBlob entries
30714 * HistoryBlobStub: the last-used HistoryBlob is kept open to speed up
30715 multiple-revision pulls
30716 * Add $wgLegacySchemaConversion update-time option to reduce amount of
30717 copying during the schema upgrade: creates HistoryBlobCurStub reference
30718 records in text instead of copying all the cur_text fields. Requires
30719 that the cur table be left in place until/unless such fields are migrated
30720 into the main text store.
30721 * Special:Export now includes page, revision, and user id numbers by
30722 default (previously this was disabled for no particular reason)
30723 * dumpBackup.php can dump the full database to Export XML, with current
30724 revisions only or complete histories.
30725 * The group table was renamed to groups because "group" is a reserved word in
30726 SQL which caused some inconveniances.
30727 * New fileicons for c, cpp, deb, dvi, exe, h, html, iso, java, mid, mov, o,
30728 ogg, pdf, ps, rm, rpm, tar, tex, ttf and txt files based on the KDE
30730 * Fixed a bug in Special:Newimages that made it impossible to search for '0'
30731 * Added language variant support for Icelandic, now supports "Íslenzka"
30732 * The #p-nav id in MonoBook is now #p-navigation
30733 * Putting $4 in msg:userstatstext will now give the percentage of
30734 admnistrators out of normal users.
30735 * links and brokenlinks tables merged to pagelinks; this will reduce pain
30736 dealing with moves and deletes of widely-linked pages.
30737 * Add validate table and val_ip column through the updater.
30738 * Simple rate limiter for edits and page moves; set $wgRateLimits
30739 (somewhat experimental; currently needs memcached)
30740 * (bug 2262) Hide math preferences when TeX is not enabled
30741 * (bug 2267) Don't generate thumbnail at the same size as the source image.
30742 * Fix rebuildtextindex.inc for new schema
30743 * Remove linkscc table code, no longer used.
30744 * (bug 2271) Use faster text-only link replacement in image alt text
30745 instead of rerunning expensive link lookup and HTML generation.
30746 * Only build the HTML attribute whitelist tree once.
30747 * Replace wfMungeToUtf8 and do_html_entity_decode with a single function
30748 that does both numeric and named chars: Sanitizer::decodeCharReferences
30749 * Removed some obsolete UTF-8 converter functions
30750 * Fix function comment in debug dump of SQL statements
30751 * (bug 2275) Update search index more or less right on page move
30752 * (bug 2053) Move comment whitespace trimming from edit page to save;
30753 leaves the whitespace from the section comment there on preview.
30754 * (bug 2274) Respect stub threshold in category page list
30755 * (bug 2173) Fatal error when removing an article with an empty title from the
30757 * Removed -f parameter from mail() usage, likely to cause failures and bounces.
30758 * (bug 2130) Fixed interwiki links with fragments
30759 * (bug 684) Accept an attribute parameter array on parser hook tags
30760 * (bug 814) Integrate AuthPlugin changes to support Ryan Lane's external
30761 LDAP authentication plugin
30762 * (bug 2034) Armor HTML attributes against template inclusion and links munging
30764 === Changes since 1.5alpha2 ===
30766 * (bug 2319) Fix parse hook tag matching
30767 * (bug 2329) Fix title formatting in several special pages
30768 * (bug 2223) Add unique index on user_name field to prevent duplicate accounts
30769 * (bug 1976) fix shared user database with a table prefix set
30770 * (bug 2334) Accept null for attribs in wfElement without PHP warning
30771 * (bug 2309) Allow templates and template parameters in HTML attribute zone,
30772 with proper validation checks. (regression from fix for 2304)
30773 * Disallow close tags and enforce empty tags for <hr> and <br>
30774 * Changed user_groups format quite a bit.
30775 * (bug 2368) Avoid fatally breaking PHP 4.1.2 in a debug line
30776 * (bug 2367) Insert correct redirect link record on page move
30777 * (bug 2372) Fix rendering of empty-title inline interwiki links
30778 * (bug 2384) Fix typo in regex for IP address checking
30779 * (bug 650) Prominently link MySQL 4.1 help page in installer if a possible
30780 version conflict is detected
30781 * (bug 2394) Undo incompatible breakage to {{msg:}} compatibility includes
30782 * (bug 1322) Use a shorter cl_sortkey field to avoid breaking on MySQL 4.1
30783 when the default charset is set to utf8
30784 * (bug 2400) don't send confirmation mail on account creation if
30785 $wgEmailAuthentication is false.
30786 * (bug 2172) Fix problem with nowiki beeing replaced by marker strings
30787 when a template with a gallery was used.
30788 * Guard Special:Userrights against form submission forgery
30789 * (bug 2408) page_is_new was inverted (whoops!)
30790 * Added wfMsgHtml() function for escaping messages and leaving params intact
30791 * Fix ordering of Special:Listusers; fix groups list so it shows all groups
30792 when searching for a specific group and can't be split across pages
30793 * (bug 1702) Display a handy upload link instead of a useless blank link
30794 for [[media:]] links to nonexistent files.
30795 * (bug 873) Fix usage of createaccount permission; replaces $wgWhitelistAccount
30796 * (bug 1805) Initialise $wgContLang before $wgUser
30797 * (bug 2277) Added Friulian language file
30798 * (bug 2457) The "Special page" href now links to the current special page
30800 * (bug 1120) Updated the Czech translation
30801 * A new magic word, {{SCRIPTPATH}}, returns $wgScriptPath
30802 * A new magic word, {{SERVERNAME}}, returns $wgServerName
30803 * A new magic word, {{NUMBEROFFILES}}, returns the number of rows in the image
30805 * Special:Imagelist displays titles with " " instead of "_"
30806 * Less gratuitous munging of content sample in delete summary
30807 * badaccess/badaccesstext to supercede sysop*, developer* messages
30808 * Changed $wgGroupPermissions to more cut-n-paste-friendly format
30809 * 'developer' group deprecated by default
30810 * Special:Upload now uses 'upload' permission instead of hardcoding login check
30811 * Add 'importupload' permission to disable direct uploads to Special:Import
30812 * (bug 2459) Correct escaping in Special:Log prev/next links
30813 * (bug 2462 etc) Taking out the experimental dash conversion; it broke too many
30814 things for the current parser to handle cleanly
30815 * (bug 2467) Added a Turkish language file
30816 * Fixed a bug in Special:Contributions that caused the namespace selection to
30817 be forgotten between submits
30818 * Special:Watchlist/edit now has namespace subheadings
30819 * (bug 1714) the "Save page" button now has right margin to separate it from
30820 "Show preview" and "Show changes"
30821 * Special:Statistics now supports action=raw, useful for bots designed to
30822 harwest e.g. article counts from multiple wikis.
30823 * The copyright confirmation box at Special:Upload is now turned off by default
30824 and can be turned back on by setting $wgCopyrightAffirmation to a true value.
30825 * Restored prior text for password reminder button and e-mail, replacing
30826 the factually inaccurate text that was there.
30827 * (bug 2178) Fix temp dir check again
30828 * (bug 2488) Format 'deletedtext' message as wikitext
30829 * (bug 750) Keep line endings consistent in LocalSettings.php
30830 * (bug 1577) Add 'printable version' tab in MonoBook for people who don't
30831 realize you can just hit print to get a nicely formatted printable page.
30832 * Trim whitespace from option values to weather line-ending corruption problems
30833 * Fixed a typo in the Romanian language file (NS_MESIA => NS_MEDIA)
30834 * (bug 2504) Updated the Finnish translation
30835 * (bug 2506, 2512) Updated the Nynorsk translation
30836 * (bug 996) Replace $wgWhitelistEdit with 'edit' permission; fixup UPGRADE
30837 documentation about edit and read whitelists.
30838 * (bug 2515) Fix incremental link table update
30839 * Removed some wikipedia-specifica from LanguageXx.php's
30840 * (bug 2496) Allow MediaWiki:edithelppage to point to external page
30841 * Added a versionRequired() function to OutputPage, useful for extension
30842 writers that want to control what version of MediaWiki their extension
30844 * Serialized user objects now checked for versioning
30845 * Fix for interwiki link regression
30846 * Printable link shorter in monobook
30847 * Experimental Latin-1-and-replication-friendly upgrader script
30848 * (bug 2520) Don't show enotif options when disabled
30850 == Changes since 1.5beta1 ==
30852 * (bug 2531) Changed the interwiki name for sh (Serbocroatian) to
30853 Srpskohrvatski/Српскохрватски (was Српскохрватски (Srbskohrvatski))
30854 * Nonzero return code for command-line scripts on wfDebugDieBacktrace()
30855 * Conversion fix for empty old table in upgrade1_5.php
30856 * Try reading revisions from master if no result on slave
30857 * (bug 2538) Suppress notice on user serialized checks
30858 * Fix paging on Special:Contributions
30859 * (bug 2541) Fix unprotect tab
30860 * (bug 1242) category list now show on edit page
30861 * Skip sidebar entries where link text is '-'
30862 * Convert non-UTF-8 URL parameters even if referer is local
30863 * (bug 2460) <img> width & height properly filled when resizing image
30864 * (bug 2273) deletion log comment used user interface language
30865 * Try reading revision _text_ from master if no result on slave
30866 * Use content-language message cache for raw view of message pages
30867 * (bug 2530) Not displaying talk pages on Special:Watchlist/edit
30868 * Fixed a bug that would occour if $wgCapitalLinks was set to false, a user
30869 agent could create a username that began with a lower case letter that was
30870 not in the ASCII character set ( now user $wgContLang->ucfirst() instead of
30872 * Moved the user name / password validity checking from
30873 LoginForm::addNewAccountInternal() to two new functions,
30874 User::isValidUserName() and User::isValidPassword(), extensions can now do
30875 these checks without rewriting code.
30876 * Fix $wgSiteNotice when MediaWiki:Sitenotice is set to default '-'
30877 * Fixed a bug where the watchlist count without talk pages would be off by a
30879 * upgrade1_5.php uses insert ignore, allows to skip image info initialization
30880 * Fix namespaces in category list.
30881 * Add rebuildImages.php to update image metadata fields
30882 * Special:Ancientpages is expensive in new schema for now
30883 * (bug 2568) Fixed a logic error in the Special:Statistics code which caused
30884 the displayed percentage of admins to be totally off.
30885 * (bug 2560) Don't show blank width/height attributes for missing size
30886 * Don't show bogus messages about watchlist notifications when disabled
30887 * Don't show old debug messages in watchlist
30888 * (bug 2576) Fix recording of transclusion links
30889 * (bug 2577) Allow sysops to enter non-standard block times
30890 * Fixed a bug where Special:Contributions wouldn't remember the 'invert'
30891 status between next/previous buttons.
30892 * Move MonoBook printable link from tab to sidebar
30893 * (bug 2567) Fix HTML escaping on category titles in list
30894 * (bug 2562) Show rollback link for current revisions on diff pages
30895 * (bug 2583) Add --missinig option on rebuildImages.php to add db entries
30896 for uploaded files that don't have them
30897 * (bug 2572) Fix edit conflict handling
30898 * (bug 2595) Show "Earlier" and "Latest" links on history go to the first/last
30899 page in the article history pager.
30900 * Don't show empty-page text in 'Show changes' on new page
30901 * (bug 2591) Check for end, fix limits on Whatlinkshere
30902 * (bug 2584) Fix output of subcategory list
30903 * (bug 2597) Don't crash when undeleting an image description page
30904 * (bug 2564) Don't show "editingold" warning for recent revision
30905 * Various code cleanup and HTML escaping fixlets
30906 * Copy IRC-over-UDP update option from REL1_4
30907 * (bug 2548) Keep summary on 'show changes' of section edit
30908 * Move center on toc to title part to avoid breaking .toc style usage
30909 * HTML sanitizer: correct multiple attributes by keeping last, not first
30910 * (bug 2614) Fix section edit links on diff-to-current with oldid set
30911 Also fix navigation links on current-with-oldid view.
30912 * (bug 2620) Return to prior behavior for some more things (such as
30913 subpage parent links) on current-diff view.
30914 * (bug 2618) Fix regression from another fix; show initial preview for
30915 categories only if the page does not exist.
30916 * (bug 2625) Keep group & user settings when paging in Listusers
30917 * (bug 2627) Fix regression: diff radio button initial selection
30918 * Copy fix for old search URLs with Lucene search plugin from REL1_4
30919 * (bug 619) Don't use incompatible diff3 executable on non-Linux systems.
30920 * (bug 2631) Fix Hebrew namespaces.
30921 * (bug 2630) Indicate no-longer-valid cached entries in BrokenRedirects list
30922 * (bug 2644, 2645) "cur" diff links in page history, watchlist and
30923 recentchanges should specify current ID explicitly.
30924 * (bug 2609) Fix text justification preferenced with MonoBook skin.
30925 * (bug 2594) Display article tab as red for non-existent articles.
30926 * (bug 2656) Fix regression: prevent blocked users from reverting images
30927 * (bug 2629) Automatically capitalize usernames again instead of
30928 rejecting lowercase with a useless error message
30929 * (bug 2661) Fix link generation in contribs
30930 * Add support for &preload=Page_name (load text of an existing page into
30931 edit area) and &editintro=Page_name (load text of an existing page instead
30932 of MediaWiki:Newpagetext) to &action=edit, if page is new.
30933 * (bugs 2633, 2672, 2685, 2695) Fix Estonian, Portuguese, Italian, Finnish and
30934 Spanish numeric formatting
30935 * Fixed Swedish numeric formatting
30936 * (bug 2658) Fix signature time, localtime to match timezone offset again
30937 * Files from shared repositories (e.g. commons) now display with their
30938 image description pages when viewed on local wikis.
30939 * Restore compatibility namespace aliases for French Wikipedia
30940 * Fix diff order on Enhanced RC 'changes' link
30941 * (bug 2650) Fix national date type display on wikis that don't support
30942 dynamic date conversion.
30943 * FiveUpgrade: large table hacks, install iw_trans update before links
30944 * (bug 2648) Rename namespaces in Afrikaanse
30945 * Special:Booksources checks if custom list page exists before using it
30946 * (bug 1170) Fixed linktrail for da: and ru:
30947 * (bug 2683) Really fix apostrophe escaping for toolbox tips
30948 * (bug 923) Fix title and subtitle for rclinked special page
30949 * (bug 2642) watchdetails message in several languages used <a></a> instead of
30951 * (bug 2181) basic CSB language localisation by Tomasz G. Sienicki (thanks for
30953 * Fix correct use of escaping in edit toolbar bits
30954 * Removed language conversion support from Icelandic
30955 * (bug 2616) Fix proportional image scaling, giving correct height
30956 * (bug 2640) Include width and height attributes on unscaled images
30957 * Workaround for mysterious problem with bogus epoch If-Last-Modified reqs
30958 * (bug 1109) Suppress compressed output on 304 responses
30959 * (bug 2674) Include some site configuration info in export data:
30960 namespaces definitions, case-sensitivity, site name, version.
30961 * Use xml:space="preserve" hint on export <text> elements
30962 * Make language variant selection work again for zh
30964 == Changes since 1.5beta2 ==
30966 * Escaped & correctly in Special:Contributions
30967 * (bug 2534) Hide edit sections with CSS to make right click to edit section
30969 * (bug 2708) Avoid undefined notice on cookieless login attempt
30970 * (bug 2188) Correct template namespace for Greek localization
30971 * Fixed number formatting for Dutch
30972 * (bug 1355) add class noprint to commonPrint.css
30973 * (bug 2350) Massive update for Limburgish (li) language using Wikipédia
30974 * Massive update for Arab (ar) language using Wikipédia
30975 * (bug 1560) Massive update for Kurdish (ku) language using Wikipédia
30976 * (bug 2709) Some messages were not read from database
30977 * (bug 2416) Don't allow search engine robots to index or follow nonexisting
30979 * Fix escaping in page move template.
30980 * (bug 153) Discrepancy between thumbnail size and <img> height attribute
30982 == Changes since 1.5beta3 ==
30984 * Fix talk page move handling
30985 * (bug 2721) New language file for Vietnamese with the Vietnamese number
30987 * (bug 2749) would appear as a literal in image galleries for Cs, Fr,
30989 * (bug 787) external links being rendered when they only have one slash
30990 * Fixed a missing typecast in Language::dateFormat() that would cause some
30991 interesting errors with signitures.
30992 * (bug 2764) Number format for Nds
30993 * (bug 1553) Stop forcing lowercase in Monobook skin for German language.
30994 * (bug 1064) Implements Special:Unusedcategories
30995 * (bug 2311) New language file for Macedonian
30996 * Fix nohistory message on empty page history
30997 * Fix fatal error in history when validation on
30998 * Cleaned up email notification message formatting
30999 * Finally fixed Special:Disambiguations that was broke since SCHEMA_WORK
31000 * (bug 2761) fix capitalization of "i" in Turkish
31001 * (bug 2789) memcached image metadata now cleared after deletion
31002 * Add serialized version number to image metadata cache records
31003 * (bug 2780) Fix thumbnail generation with GD for new image schema
31004 * (bug 2791) Slovene numeric format
31005 * (bug 655) Provide empty search form when searching for nothing
31006 * Nynorsk numeric format fix
31007 * (bug 2825) Fix regression in newtalk notifications for anons w/ enotif off
31008 * (bug 2833) Fix bug in previous fix
31009 * With $wgCapitalLinks off, accept off-by-first-letter-case in 'go' match
31010 * Optional parameters for [[Special:Listusers]]
31011 * (bug 2832) [[Special:Listadmins]] redirects to [[Special:Listusers/sysop]]
31012 * (bug 785) Parser did not get out of <pre> with list elements
31013 * Some shared upload fixes
31014 * (bug 2768) section=new on nonexistent talk page does not add heading
31015 * support preload= parameter for section=new
31016 * show comment subject in preview when using section=new
31017 * use comment form when creating a new talk page
31018 * (bug 460) Properly handle <center> tags as a block.
31019 * Undo inconsistent editing behavior change
31020 * (bug 2835) Back out fix for bug 2802, caused regressions in category sort
31021 * PHP 4.1.2 compatibility fix: define floatval() equivalent if missing
31022 * (bug 2901) Number format for Catalan
31023 * Special:Allpages performance hacks: index memcached caching, removed
31024 inverse checkbox, use friendlier relative offsets in index build
31025 * Bring back "Chick" skin for mobile devices. It needs testing.
31026 * Fix spelling of $wgForwardSearchUrl in DefaultSettings.php
31027 * Specify USE INDEX on Allpages chunk queries, sometimes gets lost
31028 due to bogus optimization
31029 * (bug 275) Section duplication fix
31030 * Remove unused use of undefined variable in UserMailer
31031 * Fix notice on search index update due to non-array
31032 * (bug 2885) Fix fatal errors and notices in PHP 5.1.0beta3
31033 * (bug 2931) Fix additional notices on reference use in PHP 4.4.0
31034 * (bug 2774) Add three new $wgHooks to LogPage which enable extensions to add
31035 their own logtypes, see extensions/Renameuser/SpecialRenameuser.php for an
31037 * (bug 740) Messages from extensions now appear in Special:Allmessages
31038 * (bug 2857) fixed parsing of lists in <pre> sections
31039 * (bug 796) Trackback support
31040 * Fix 1.5 regression: weird, backwards diff links on new pages in enhanced RC
31041 are now suppressed as before.
31043 * "uselang" and "useskin" URL parameters can now be used in the URL when
31044 viewing a page, to change the language and skin of a page respectively.
31045 * Skins can now be previewed in preferences
31046 * (bug 2943) AuthPlugin::getCanonicalName() name canonicalization hook,
31048 * Wrap revision insert & page update in a transaction, rollback on late
31050 * (bug 2953) 'other' didn't work in Special:Blockip when localized
31051 * (bug 2958) Rollback and delete auto-summary should be in the project's
31053 * Removed useless protectreason message
31054 * Spelling fix: $wgUrlProtcols -> $wgUrlProtocols
31055 * Switch Moldovan local name to cyrillic
31056 * Fix typo in undefined array index access prevention
31057 * (bug 2947) Update namespaces for sr localization
31058 * (bug 2952) Added Asturian language file with translated namespaces
31059 * (bug 2676) Apply a protective transformation on editing input/output
31060 for browsers that hit the Unicode blacklist. Patch by plugwash.
31061 * (bug 2999) Fix encoding conversion of pl_title in upgrade1_5.php
31062 * compressOld.php disabled, as it's known to be broken.
31065 === Changes since 1.5beta4 ===
31067 * Fix Special:Allmessages under PHP 5
31068 * (bug 2911) Special:Watchlist allowed only one type of limit at a time
31069 * (bug 693) Special:Allmessages is excessively wide and redundant
31070 * (bug 3001) Updated and applied live hack for recentchanges-based watchlist
31071 * (bug 145) Finish 'exclude redirect' implementation in search form
31072 * Rearranged Special:Movepage form to reduce confusion between destination
31073 title and reason input boxes
31074 * (bug 2527) Always set destination filename when new file is selected
31075 * (bug 3056) MySQL 3 compatibility fix: USE INDEX instead of FORCE INDEX
31076 * PHP 4.1 compatibility fix: don't use new_link parameter to mysql_connect
31077 if running prior to 4.2.0 as it causes the call to fail
31078 * (bug 3117) Fix display of upload size and type with tidy on
31079 * (bug 1487) invalid html on empty list in banlist
31080 * (bug 3017) Hotkey conflict for delete and show changes
31081 * made pixel unit translateable and blocklistline now eats infiniteblock
31083 * (bug 3092) Wrong numerical separator for big numbers in Serbian.
31084 * (bug 2855) Credit for a uniq author showed its realname even with
31085 $wgAllowRealName=false.
31086 * New special page: SpecialMostlinked
31087 * (bug 2393) Fix MIME type for Atom feeds ( application/rss+atom )
31088 * Fix display of read-only lockfile message
31089 * Added a new hook, 'AddNewAccount', which is run after account creation
31090 * Update all stats fields on recount.sql
31091 * Include software-visible client IP address in Special:Version comment
31092 as a proxy debugging aid
31093 * (bug 3162) Fix 'undefined property page_is_new' error on watchlist
31094 * (bug 1734) granting db permissions failed with db usernames containg '-'
31095 * (bug 3170) wikititlesuffix was removed, use pagetitle instead
31096 * (bug 3187) watchlist text refer to unexistent "Stop watching" action
31097 * (bug 3190) Added some date format choices for language sr
31098 * (bug 1334) LanguageGa.php update
31099 * (bug 1020) Changing user interface language does not work immediately
31100 * (bug 2753) Some namespaces were not translated in LanguageTa.php (Tamil)
31101 * (bug 3204) Fix typo breaking special pages in fy localization
31102 * (bug 3210) Fix Media: links with remote image URL path
31103 * (bug 3220) Fix escaping of block URLs in Recentchanges
31104 * (bug 3238): Updated LanguageNn.php for 1_5 branch
31105 * (bug 3192): properly check 'limit' parameter on Special:Contributions
31106 * (bug 3244) Fix remote image loading hack, JavaScript injection on MSIE
31107 * Fix URL sanitization in HTML attributes, which broke in this branch
31108 * (bug 3475) anon contrib links on Special:Newpages
31111 === Changes since 1.5rc2 ===
31113 * Fix upgrade from 1.4 due to version number check breakage
31114 * Fix upgrade from 1.4 with no old revisions
31115 * (bug 2108) Sort entries when using category browser
31116 * XSS issue : now sanitize search query input
31119 === Changes since 1.5rc3 ===
31121 * (bug 3280) Respect 'move' group permission on page moves
31122 * (bug 2885) More PHP 5.1 fixes: skin, search, log, undelete
31123 * Security fix for <math>
31124 * Security fix for tables
31127 === Changes since 1.5rc4 ===
31129 * (bug 3292) Fix move-over-redirect test when current entries are not plaintext
31130 * (bug 2078) Don't hide watch tab on preview
31131 * (bug 3306) Document $wgLocalTZoffset
31132 * Support SVG rendering with rsvg
31133 * Cap arbitrary SVG renders to given image size or $wgSVGMaxSize pixels wide
31134 * (bug 3127) Render large SVGs at image page size correctly
31135 * (bug 3448) Set page_len on undelete
31136 * (bug 2800) Don't scale up small iamges on |thumb| without explicit size
31137 * Use the real file link instead of the default-size rasterized version for
31138 large SVG images on image description page
31139 * Include the file name/type/size line for non-resized images
31140 * (bug 3412) Clean up date format handling so ~~~~-sigs work with default
31141 format as designed. Documentation comments updated.
31142 * (bug 1423) LanguageJa.php update
31143 * (bug 3405) Don't use raw letters as aliases of MSGNW: and SUBST:
31144 * (bug 3485) Fix bogus warning about filename capitalization when off
31145 * (bug 2792) Update rebuildrecentchanges.inc for new schema
31146 * Special:Import/importDump fixes: report XML parse errors, accept <minor/>
31147 * (bug 3489) PHP 5.1 compat problem with captioned images
31148 * (bug 3350) Missing label for move talk page checkbox.
31149 * (bug 2570) Add 'watch this page' checkbox on uploads, watch uploads
31150 by default when 'watchdefault' option is on
31151 * (bug 3182) Clear link cache during import to prevent memory leak
31152 * (bug 3573) Full Greek Translation
31153 * (bug 3595) Warn and abort if importDump.php called in read-only mode.
31154 * (bug 3598) Update message cache on message page deletion, patch by Tietew
31155 * Blacklist additional MSIE CSS safety tricks
31158 === Changes since 1.5.0 ===
31160 * (bug 3629) Fix date & time format for Frisian
31161 * (bug 3641) Fix handling of unrecognized file uploads with known extensions
31162 * (bug 3643) Fix image page display of large images with resizing disabled
31163 * Fix meta robots tag on Special:Version again to avoid listing vulnerable
31164 versions for convenient harvesting by automated worms
31165 * (bug 3684) Fix typo in fatal error backtraces in Hooks.php
31166 * Backport fix for reference usage notice in Special:Search on PHP 4.4.0
31167 * Backport database connect error display fix from HEAD
31168 * (bug 2773) Print style sheet no longer overrides RTL text direction
31169 * MonoBook skin top link id changed from "contentTop" to "top" (shared with
31171 * Wrap message page insertions in a transaction to speed up installation
31172 * Fix Special:MovePage invalid HTML attribute for reason textarea
31173 * Avoid notice warning on edit with no User-Agent header
31174 * (bug 3734) Swapped out obsolete recount.sql with initStats.php
31175 * (bug 3735) Fix to run under MySQL 5's strict mode
31176 * (bug 3786) Experimental support for MySQL 4.1/5.0 utf8 charset mode
31177 NOTE: Enabling this may break existing wikis, and still doesn't
31178 work for all Unicode characters due to MySQL limitations.
31179 * Sanitizer CSS comment processing order fix
31182 === Changes since 1.5.1 ===
31184 * Fix Special:BrokenRedirects on MySQL 5.0
31185 * (bug 3809) Backport fix for detecting diff3 failure
31186 * MySQL 5.0 strict mode fix for moving unwatched pages
31187 * (bug 3782) Throw fatal installation warning if mbstring.func_overload on.
31188 Why do people invent these crazy options that change language semantics?
31189 * (bug 3762) Define missing Special:Import UI messages
31190 * (bug 3771) Handle internal functions in backtrace in wfAbruptExit()
31191 * (bug 3649) Remove obsolete, broken moveCustomMessages script
31192 * (bug 3667) Add missing global in page move code
31193 * (bug 3761) Avoid deprecation warnings in Special:Import
31194 * (bug 2885) Remove unnecessary reference parameter which broke classic skin
31195 talk notification on PHP 5.0.5
31196 * (bug 3845) Update attribute.php for 1.5 schema
31197 * Fix Parser::unstrip on PHP 4.4.1 and PHP 5.1.0RC4
31200 === Changes since 1.5.2 ===
31202 * (bug 3612) Remove old broken version of maintenance/compressOld.php
31203 The working version is in maintenance/storage/compressOld.php
31204 * (bug 2740) Accept image deletions on 'enter' submit from MSIE
31205 * (bug 3933) specify XML namespace for Atom 0.3 feeds
31206 * (bug 3939) Don't try to load text for interwiki redirect target
31207 * (bug 3948) Avoid notice warning in debug statement in bad search
31208 * Recognize Special:Search consistently so read whitelist works
31209 * (bug 4013) typo in fr
31210 * (bug 3996) Fix text for new entries in RC RSS/Atom feed
31211 * (bug 2894) Enhanced Recent Changes link fixes
31212 * (bug 3065) Update both watched namespaces when renaming pages
31213 * Move parentheses out of <a> link in Special:Contributions
31214 * (bug 4071) Generate passwords long enough for $wgMinimalPasswordLength
31215 * (bug 4035) Fix prev/next revision links on edit page
31216 * (bug 4165) Correct validation for user language selection (data taint)
31217 * Clearer message in DefaultSettings.php: edit LocalSettings.php instead
31220 === Changes since 1.5.3 ===
31222 * (bug 3805) Clear 'new messages' flag properly in enotif mode
31223 for usernames containing spaces
31224 * (bug 2714) Backlink from special:whatlinkshere was hard set as 'existing'
31225 * (bug 4249) Typo in entities2literals.pl
31226 * (bug 4233) Update for japanese language
31227 * (bug 4279) Small correction to LanguageDa.php
31228 * (bug 4267) Switch dv sd ug ks arc languages to RTL
31229 * (bug 3991) Allow the operation of wikicode on Protect move only text
31230 * Added AutoAuthenticate hook for external User object suppliers
31231 * Parser internal placeholder string now fully randomized for safety
31233 === Changes since 1.5.4 ===
31235 * Maintenance script to delete unused user accounts
31236 * Added detection for WMF files (application/x-msmetafile), added this
31237 MIME type to the default blacklist. Prevented inline display of images
31238 which are not of known image types. This is in response to
31239 https://en.wikipedia.org/wiki/Windows_Metafile_vulnerability
31241 === Changes since 1.5.5 ===
31243 * (bug 4258) When installing under IIS, $wgArticlePath = "$wgScript?title=$1"
31245 * (bug 4510) Correct Barnes & Noble bookstore URLs
31246 * (bug 4504) Use site language for namespace name resolution
31247 * Installer fixes from HEAD backported; now uses a more sensible method of
31248 establishing which mySQL user to use, which clears up bug 921 et al. Minor
31249 changes to installer.
31250 * Fix problem reported on mailing list where re-initialising stats didn't work
31251 (can't insert duplicate rows with the same id field)
31252 * (bug 1122) gray out 'older revision' when viewing first article revision.
31253 * Respect database prefix in dumpHTML.inc
31254 * Minor improvements to removeUnusedAccounts.php maintenance script
31255 * Fix for single-digit week numbers from {{CURRENTWEEK}}, broken by PHP 4.4.1
31256 * Removed read-only check from Database::query()
31257 * Added --conf option to command line scripts, allowing the user to specify a
31258 different LocalSettings.php.
31260 === Changes since 1.5.6 ===
31262 * Default main page content improved per bug 4690
31263 * Fix dependence on hardcoded UNIQ_PREFIX in LanguageConverter.php
31264 * Fixed Special:Unlockdb
31265 * Maintenance script to delete unused text records
31266 * Maintenance script to delete non-current revisions
31267 * Maintenance script to wipe a page and all revisions from the database
31268 * (bug 4768) Wrong Russian translation (typo)
31269 * Performance bugfix: propagate equality manually for Revision fetches
31270 * (bug 4773) PHP fatal error when invalid title passed to Special:Export
31271 * Added missing table defs. for transcache to installer schemas
31272 * (bug 4824) IE7 beta 2 broke compatibility with PNG logo workarounds,
31273 and seems to work ok with other bits. No longer including the IE
31274 workarounds JavaScript for IE 7 and above.
31275 * (bug 2532) Image directory structure migration bug
31276 * (bug 4881) Correction to the fix for 1487; Ipblocklist showed 'no blocks'
31277 message at the end of the list even if there were blocks.
31278 * (bug 4805) Removed more wikipedia-references from LanguageUk.php
31279 * Introduce $wgWantedPagesThreshold per bug 5011; Special:Wantedpages will not
31280 list pages with less than this number of links. Defaults to 1.
31281 * Allow customisation of paging limits for items in categories using the
31282 $wgCategoryPagingLimit global, per bug 4970.
31283 * Improve "nogomatch" text to make it more obvious that a page can be created.
31284 * (bug 5113) Spelling error in French language file
31285 * Don't change the password of the MySQL root user.
31287 === Changes since 1.5.7 ===
31289 * (bug 5180) User login page shows inappropriate email blurb
31290 * Add the "AbortNewAccount" hook on account creation; see hooks.txt for more
31292 * Update default "exporttext" to reflect that Special:Import exists
31293 * Add links to useful material to the default main page content
31294 * Fix fragment HTML injection
31296 === Changes since 1.5.8 ===
31298 * Fixed obvious mistakes in Finnish (fi) translation
31299 * Fixed obvious mistakes in Kurdish (ku) translation
31300 * Merge two #p-search .pBody statements i monobook/main.css
31301 * (bug 5156) Update for Hebrew language (he) translation
31302 * Add the "UserRights" hook on user group changes; see hooks.txt for more info.
31303 * Translated "listingcontinuesabbrev" for German
31307 Some output, particularly involving user-supplied inline HTML, may not
31308 produce 100% valid or well-formed XHTML output. Testers are welcome to
31309 set $wgMimeType = "application/xhtml+xml"; to test for remaining problem
31310 cases, but this is not recommended on live sites. (This must be set for
31311 MathML to display properly in Mozilla.)
31315 == MediaWiki 1.4.15 ==
31317 (released March 26, 2006) MediaWiki 1.4.15 is a security maintenance release. A
31318 bug in decoding of certain encoded links could allow injection of raw HTML into
31319 page output; this could potentially lead to XSS attacks. Additionally, this
31320 release may display more correctly in IE7 betas.
31322 == MediaWiki 1.4.14 ==
31323 (released January 19, 2006) MediaWiki 1.4.14 is a security and bugfix
31324 maintenance release. A bug in edit comment formatting could send PHP into an
31325 infinite loop if certain malformed links were included. In most installations,
31326 this would cause the script to fail after PHP's 30-second failsafe timeout. For
31327 several other minor fixes, see the complete changelog at the end of this file.
31329 == MediaWiki 1.4.13 ==
31330 (released January 5, 2006) MediaWiki 1.4.13 is a security maintenance
31331 release.Detection for uploads of Windows Metafile (.wmf) images has been added
31332 to help protect against a client-side vulnerability in unpatched Microsoft
31333 Windows operating systems. Sites which have enabled uploads and added
31334 non-standard file types (such as .ogg, .doc, or .pdf) should upgrade to this
31335 release to ensure that malicious .wmf files can't be uploaded with a fake
31336 extension; such files could put visitors to the site at risk. For more details
31337 on this, see: https://en.wikipedia.org/wiki/Windows_Metafile_vulnerability
31339 == MediaWiki 1.4.12 ==
31340 (released 2005-11-02) MediaWiki 1.4.12 is a bugfix and security maintenance
31341 release. A change in PHP 4.4.1 broke handling of extension and
31342 <nowiki><pre></nowiki> sections, causing garbage data to be inserted in output
31343 and saved edits. This version works around the change. This release includes
31344 further corrections to the inline CSS style sanitation which works around a
31345 JavaScript "feature" on Microsoft Internet Explorer. Users of Microsoft
31346 Internet Explorer for Windows may be vulnerable to XSS injections on prior 1.4
31347 releases; users of standards-compliant browsers are not vulnerable.
31349 == MediaWiki 1.4.11 ==
31350 (released 2005-10-05) MediaWiki 1.4.11 is a security maintenance release.
31351 Unsafe handling of CSS by Microsoft Internet Explorer could be exploited to
31352 produce cross-site scripting attacks by JavaScript injection to clients running
31353 that browser. This release blacklists several additional variants from use in
31354 HTML inline style attributes. All publicly accessible wikis are recommended to
31355 upgrade to reduce the risk to visitors using Microsoft web browsers. Note: the
31356 MediaWiki 1.4.x series is not compatible with PHP 5.0.5 or higher. Upgrade to
31357 the 1.5.0 release if you require this version of PHP 5.
31359 == MediaWiki 1.4.10 ==
31360 (released 2005-09-21) MediaWiki 1.4.10 is a security maintenance release. A bug
31361 in edit submission handling could cause corruption of the previous revision in
31362 the database if an abnormal URL was used, such as those used by some spambots.
31364 * 1.4.x <= 1.4.9; fixed in 1.4.10
31365 * 1.3.x <= 1.3.15; fixed in 1.3.16
31366 1.5 release candidates are not affected by this problem. All publicly editable
31367 wikis are strongly recommended to upgrade immediately.
31368 1.4 releases can be manually patched by changing this bit in EditPage.php:
31370 <syntaxhighlight lang="php">
31371 function importFormData( &$request ) {
31372 if( $request->wasPosted() ) {
31375 <syntaxhighlight lang="php">
31376 function importFormData( &$request ) {
31377 if( $request->getVal( 'action' ) == 'submit' && $request->wasPosted() )
31380 == MediaWiki 1.4.9 ==
31381 (released 2005-08-29) MediaWiki 1.4.9 is a security maintenance release. It
31382 corrects two cross-site scripting security bugs:
31383 * <nowiki><math></nowiki> tags were handled incorrectly when TeX rendering
31384 support is off, as in the default configuration.
31385 * Extension or <nowiki><nowiki></nowiki> sections in Wiki table syntax could
31386 bypass HTML style attribute restrictions for cross-site scripting attacks
31387 against Microsoft Internet Explorer Wikis where the optional math support has
31388 been *enabled* are not vulnerable to the first, but are vulnerable to the
31391 == MediaWiki 1.4.8 ==
31392 (released 2005-08-23) MediaWiki 1.4.8 is a bug fix and security maintenance
31393 release. A flaw in the interaction between extensions and HTML attribute
31394 sanitization was discovered which could allow unauthorized use of offsite
31395 resources in style sheets, and possible exploitation of a JavaScript injection
31396 feature on Microsoft Internet Explorer. This version expands the returned text
31397 and properly checks it before output. Additionally, an update to
31398 skins/MonoBook.php ensures that sites using the default MonoBook skin will
31399 display correctly in the Internet Explorer 7 beta. (1.3 and 1.5 are not
31400 affected by this bug.)
31402 == MediaWiki 1.4.7 ==
31403 (released 2005-07-16)
31404 MediaWiki 1.4.7 is a bug fix release. Those affected by the following problems
31405 in 1.4.6 should upgrade:
31406 * Watchlist breakage on MySQL 3.23.x and with table prefix enabled
31407 * Possible breakage in watchlist, some image resizing modes on PHP 4.1.2 1.4.6
31408 included a fix for a cross-site scripting vulnerability, so anyone running
31409 older 1.4 releases is very strongly encouraged to upgrade as well. Note to
31410 upgraders: this version of MediaWiki is known to produce a large number of
31411 notice-level warnings under the newly released PHP 4.4.0. These appear however
31412 to be harmless; if you encounter them add this to your LocalSettings.php to
31413 suppress the notices: error_reporting( E_ALL & ~E_NOTICE ); PHP 5.1.0beta3 is
31414 known to be incompatible at this time.
31416 == MediaWiki 1.4.6 ==
31417 (released 2005-07-07) MediaWiki 1.4.6 is a bug fix and security update release.
31418 Incorrect escaping of a parameter in the page move template could
31419 be used to inject JavaScript code by getting a victim to visit a maliciously
31420 constructed URL. Users of vulnerable releases are recommended to upgrade to
31421 this release. Vulnerable versions:
31422 * 1.5 preview series: n <= 1.5beta2 vulnerable, fixed in 1.5beta3
31423 * 1.4 stable series: 1.4beta6 <= n <= 1.4.5 vulnerable, fixed in 1.4.6
31424 * 1.3 legacy series: not vulnerable This release also includes fixes for some
31425 rare bug annoying HTTP errors, a PHP 4.1.2 breakage bug, and works around some
31426 template limitations introduced in 1.4.5. See the changelog at the end of this
31427 file for a detailed list of bugs fixed.
31429 == MediaWiki 1.4.5 ==
31430 (released 2005-06-03) MediaWiki 1.4.5 is a security update and bugfix release.
31431 Incorrect handling of page template inclusions made it possible to inject
31432 JavaScript code into HTML attributes, which could lead to cross-site scripting
31433 attacks on a publicly editable wiki. Vulnerable releases and fix:
31434 * 1.5 prerelease: fixed in 1.5alpha2
31435 * 1.4 stable series: fixed in 1.4.5
31436 * 1.3 legacy series: fixed in 1.3.13
31437 * 1.2 series no longer supported; upgrade to 1.4.5 strongly recommended This
31438 release also includes a number of bug fixes (see changelog below) and merges
31439 some large-server load balancing patches from Wikipedia. An experimental rate
31440 limiter for page edits and moves can be enabled with global, per-IP,
31441 per-subnet, or per-user bases. See configuration options in
31442 includes/DefaultSettings.php
31444 == MediaWiki 1.4.4 ==
31445 (released 2005-05-04) MediaWiki 1.4.4 is a bugfix release for the 1.4 stable
31446 release series. Some bugs in the installer/updater and refreshLinks maintenance
31447 script were introduced in the last release and have been corrected.
31449 == MediaWiki 1.4.3 ==
31451 (released 2005-04-28)
31453 MediaWiki 1.4.3 is a bugfix release for the 1.4 stable release series.
31455 Chiefly, this fixes a compatibility problem with PHP 5 and a minor link
31456 table corruption bug on initial page save.
31459 == MediaWiki 1.4.2 ==
31461 (released 2005-04-20)
31463 MediaWiki 1.4.2 is a security and bug fix release for the 1.4 stable release
31466 A cross-site scripting injection vulnerability was discovered, which
31467 affects only MSIE clients and is only open if MediaWiki has been
31468 manually configured to run output through HTML Tidy ($wgUseTidy).
31470 Several other bugs are fixed in this release, see the changelog below.
31472 All new installations are highly recommended to use 1.4.2 instead of
31473 1.3.x; 1.3.x users should consider upgrading for bug fixes and new
31474 features. Ealier 1.4.x release and beta users should upgrade to this
31475 release for relevant bug fixes; see the changelog later in this file.
31478 If you have trouble, remember to read this whole file and the online FAQ page
31479 before asking for help:
31481 https://www.mediawiki.org/wiki/Manual:FAQ
31484 === READ THIS FIRST: Upgrading ===
31486 If upgrading from an older release, see the notes in the file UPGRADE.
31487 There are a couple of minor database changes from the beta releases,
31488 and somewhat larger changes from 1.3.x.
31490 Upgrading from a previous 1.4.x stable release installation should
31491 generally only require copying the new files over the old ones.
31494 ==== READ THIS FIRST, TOO: MySQL 4.1 AND 5.0 ====
31496 MySQL 5.0 is a beta release, not yet ready for production use. If you
31497 are using it, the notes below about 4.1 apply to you too.
31499 If you have the choice of MySQL 4.0 or MySQL 4.1 and don't need 4.1 for
31500 some other application, you should consider sticking with 4.0 for the
31501 moment. 4.1 may require you to do extra fiddling to get things to work
31502 due to changes that aren't fully backwards-compatible.
31504 MySQL 4.1 has changed the authentication protocol in an incompatible
31505 way; many PHP installations still use the older client libraries and
31506 CANNOT CONNECT TO THE SERVER WITH A PASSWORD without some changes.
31508 See: http://dev.mysql.com/doc/mysql/en/Old_client.html
31510 If MySQL is set with utf-8 as the default character set, installation
31511 may fail with "key too long" errors. Set the default charset to 'latin1'
31512 for installation and it should work.
31514 The mysqldump backup generator now applies an automatic conversion to
31515 UTF-8, which may irretrivably corrupt your data. Pass the -charset option
31516 with the original default charset (eg 'latin1') to skip the conversion.
31519 ==== READ THIS FIRST IF RUNNING ON A WINDOWS SERVER ====
31521 MediaWiki is tested and deployed primarily under the Apache web server
31522 on Linux Unix systems. There are known to be problems running on
31523 Microsoft's IIS which are not fully resolved. If you have a choice,
31524 try running under Apache on Windows, or on a Unix/Linux box instead.
31526 If you're having trouble with blank pages on IIS and can't switch,
31527 try the workaround suggested in this bug report:
31528 http://bugzilla.wikimedia.org/show_bug.cgi?id=1763
31531 === New features ===
31533 * 'Recentchanges Patrol' to mark new edits that haven't yet been viewed.
31534 * New, searchable deletion/upload/protection logs
31535 * Image gallery generation (Special:Newimages and <gallery> tag)
31536 * SVG rasterization support (requires external support tools)
31537 * Users can select from the available localizations to override the
31538 default user interface language.
31539 * Traditional/Simplified Chinese conversion support
31540 * rel="nofollow" support to combat linkspam
31542 The current implementation adds this attribute to _all_ external URL
31543 links in wiki text (but not internal [[wiki links]] or interwiki links).
31544 To disable the attribute for _all_ external links, add this line to your
31547 $wgNoFollowLinks = false
31549 For background information on nofollow see:
31551 http://www.google.com/googleblog/2005/01/preventing-comment-spam.html
31554 === Installation and compatibility ===
31556 * The default MonoBook theme now works with PHP 5.0
31557 * Installation on systems with PHP's safe mode or other oddities
31558 should work more reliably, as MonoBook no longer needs to
31559 create a compiled template file for the wiki to run.
31560 * A table prefix may be specified, to avoid conflicts with other
31561 web applications forced to share a database.
31562 * More thorough UTF-8 input validation; fixes non-ASCII uploaded
31563 filenames from Safari.
31564 * Command-line database upgrade script.
31567 === Customizability ===
31569 * Default user options can now be overridden in LocalSettings.
31570 * Skins system more modular: templates and CSS are now in /skins/
31571 New skins can be dropped into this directory and used immediately.
31572 * More extension hooks have been added.
31573 * Authentication plugin hook.
31574 * More internal code documentation, generated with phpdoc:
31575 https://doc.wikimedia.org/mediawiki-core/master/php/html/
31578 === Optimization ===
31580 * For many operations, MediaWiki 1.4 should run faster and use
31581 less memory than MediaWiki 1.3. Page rendering is up to twice
31582 as fast. (Use a PHP accelerator such as Turck MMCache for best
31583 results with any PHP application, though!)
31584 * The parser cache no longer requires memcached, and is enabled
31585 by default. This avoids a lot of re-rendering of pages that
31586 have been shown recently, greatly speeding longer page views.
31587 * Support for compiled PHP modules to speed up page diff and
31588 Unicode validation/normalization. (Requires ability to compile
31589 and load PHP extensions).
31592 === What isn't ready yet ===
31594 * A new user/groups permissions scheme has been held back to 1.5.
31595 * An experimental SOAP interface will be made available as an extension
31596 * PostgreSQL support is largely working, minus search and the installer.
31597 You can perform a manual installation.
31598 * E-mail notification of watched page changes and verification of
31599 user-submitted e-mail addresses is not yet included.
31600 * Log pages are not automatically imported into the new log table
31601 at upgrade time. A script to import old text log entries is
31602 incomplete, but may be available in later point releases.
31603 * Some localizations are still incomplete.
31609 === Important security updates ===
31611 A security audit found and fixed a number of problems. Users of MediaWiki
31612 1.3.10 and earlier should upgrade to 1.3.11; users of 1.4 beta releases
31613 prior to 1.4rc1 should upgrade immediately.
31615 ==== Cross-site scripting vulnerability ====
31617 XSS injection points can be used to hijack session and authentication
31618 cookies as well as more serious attacks.
31620 * Media: links output raw text into an attribute value, potentially
31621 abusable for JavaScript injection. This has been corrected.
31622 * Additional checks added to file upload to protect against MSIE and
31623 Safari MIME-type autodetection bugs.
31625 As of 1.3.10/1.4beta6, per-user customized CSS and JavaScript is disabled
31626 by default as a general precaution. Sites which want this ability may set
31627 $wgAllowUserCss and $wgAllowUserJs in LocalSettings.php.
31630 ==== Cross-site request forgery ====
31632 An attacker could use JavaScript-submitted forms to perform various
31633 restricted actions by tricking an authenticated user into visiting
31634 a malicious web page. A fix for page editing in 1.3.10/1.4beta6 has
31635 been expanded in this release to other forms and functions.
31637 Authors of bot tools may need to update their code to include the
31641 ==== Directory traversal ====
31643 An unchecked parameter in image deletion could allow an authenticated
31644 administrator to delete arbitrary files in directories writable by the
31645 web server, and confirm existence of files not deletable.
31648 ==== Older issues ====
31650 Note that 1.4 beta releases prior to beta 5 include an input validation
31651 error which could lead to execution of arbitrary PHP code on the server.
31652 Users of older betas should upgrade immediately to the current version.
31655 Beta 6 also introduces the use of rel="nofollow" attributes on external
31656 links in wiki pages to reduce the effectiveness of wiki spam. This will
31657 cause participating search engines to ignore external URL links from wiki
31658 pages for purposes of page relevancy ranking.
31661 === Misc bugs fixed in beta 1 ===
31663 * (bug 95) Templates no longer limited to 5 inclusions per page
31664 * New user preference for limiting the image size for images on image
31666 * (bug 530) Allow user to preview article on first edit
31667 * (bug 479) [[RFC 1234]] will now make an internal link
31668 * (bug 511) PhpTal skins shown bogus 'What links here' etc on special pages
31669 * (bug 770) Adding filter and username exact search match for Special:Listusers
31670 * (bug 733) Installer die if it can not write LocalSettings.php
31671 * (bug 705) Various special pages no more show the rss/atom feed links
31672 * (bug 114) use category backlinks in Special:Recentchangeslinked
31674 === Beta 2 fixes ===
31676 * (bug 987) Reverted bogus fix for bug 502
31677 * (bug 992) Fix enhanced recent changes in PHP5
31678 * (bug 1009) Fix Special:Makesysop when using table prefixes
31679 * (bug 1010) fix broken Commons image link on Classic & Cologne Blue
31680 * (bug 985) Fix auto-summary for section edits
31681 * (bug 995) Close <a> tag
31682 * (bug 1004) renamed norsk language links (twice)
31683 * Login works again when using an old-style default skin
31684 * Fix for load balancing mode, notify if using old settings format
31685 * (bug 1014) Missing image size option on old accounts handled gracefully
31686 * (bug 1027) Fix page moves with table prefix
31687 * (bug 1018) Some pages fail with stub threshold enabled
31688 * (bug 1024) Fix link to high-res image version on Image: pages
31689 * (bug 1016) Fix handling of lines omitting Image: in a <gallery> tag
31690 * security fix for image galleries
31691 * (bug 1039) Avoid error message in certain message cache failure modes
31692 * Fix string escaping with PostgreSQL
31693 * (bug 1015) [partial] -- use comment formatter on image gallery text
31694 * Allow customization of all UI languages
31695 * use $wgForceUIMsgAsContentMsg to make regular UI messages act as content
31696 * new user option for zh users to disable language conversion
31697 * Defer message cache initialization, shaving a few ms off file cache hits
31698 * Fixed Special:Allmessages when using table prefixes
31699 * (bug 996) Fix $wgWhitelistRead to work again
31700 * (bug 1028) fix page move over redirect to not fail on the unique index
31702 === Beta 3 fixes ===
31704 * Hide RC patrol markers when patrol is disabled or not allowed to patrol.
31705 * Fix language selection for upgraded accounts
31706 * (bug 1076) navigation links in QueryPage should be translated by wgContLang.
31707 * (bug 922) bogus DOS line endings in LanguageEl.php
31708 * Fix index usage in contribs
31709 * Caching and load limiting options for Recentchanges RSS/Atom feed
31710 * (bug 1074) Add stock icons for non-image files in gallery/Newimages
31711 * Add width and height attributes on thumbs in gallery/Newimages
31712 * Enhance upload extension blacklist to protect against vulnerable
31713 Apache configurations
31715 === Beta 4 fixes ===
31717 * (bug 1090) Fix sitesupport links in CB/classic skins
31718 * Gracefully ignore non-legal titles in a <gallery>
31719 * Fix message page caching behavior when $wgCapitalLinks is turned off
31720 after installation and the wiki is subsequently upgraded
31721 * Database error messages include the database server name/address
31722 * Paging support for large categories
31723 * Fix image page scaling when thumbnail generation is disabled
31724 * Select the content language in prefs when bogus interface language is set
31725 * Fix interwiki links in edit comments
31726 * Fix crash on banned user visit
31727 * Avoid PHP warning messages when thumbnail not generated
31728 * (bug 1157) List unblocks correctly in Special:Log
31729 * Fix fatal errors in LanguageLi.php
31730 * Undo overly bright, difficult to read colors in Cologne Blue
31731 * (bug 1162) fix five-tilde date inserter
31732 * Add raw signatures option for those who simply must have cute sigs
31733 * (bug 1164) Let wikitext be used in Loginprompt and Loginend messages
31734 * Add the dreaded <span> to the HTML whitelist
31735 * (bug 1170) Fix Russian linktrail
31736 * (bug 1168) Missing text on the bureaucrat log
31737 * (bug 1180) Fix Makesysop on shared-user-table sites
31738 * (bug 1178) Fix previous diff link when using 'oldid=0'
31739 * (bug 1173) Stop blocked accounts from reverting/deleting images
31740 * Keep generated stylesheets cache-separated for each user
31741 * (bug 1175) Fix "preview on first edit" mode
31742 * Fix revert bug caused by bug 1175 fix
31743 * Fix CSS classes on minor, new, unpatrolled markers in enhanced RC
31744 * Set MySQL 4 boolean search back to 'and' mode by default
31745 * (bug 1193) Fix move-only page protection mode
31746 * Fix zhtable Makefile to include the traditional manual table
31747 * Add memcache timeout for the zh conversion tables
31748 * Allow user customization of the zh conversion tables through
31749 MediaWiki:zhconversiontable
31750 * Add zh-min-man (back) to language names list
31751 * Ported $wgCopyrightIcon setting from REL1_3A
31752 * (bug 1218) Show the original image on image pages if the thumbnail would be
31753 bigger than the original image
31754 * (bug 1213) i18n of Special:Log labels
31755 * (bug 1013) Fix jbo, minnan in language names list
31756 * Added magic word MAG_NOTITLECONVERT to indicate that the title of the page
31757 do not need to be converted. Useful in zh:
31758 * (bug 1224) Use proper date messages for date reformatter
31759 * (bug 1241) Don't show 'cont.' for first entry of the category list
31760 * (bug 1240) Special:Preferences was broken in Slovenian locale when
31761 $wgUseDynamicDates is enabled
31762 * Added magic word MAG_NOCONTENTCONVERT to suppress the conversion of the
31763 content of an article. Useful in zh:
31764 * write-lock for updating the zh conversion tables in memcache
31765 * recursively parse subpages of MediaWiki:Zhconversiontable
31766 * (bug 1144) Fix export for fy language
31767 * make removal of an entry from zhconversiontable work
31768 * (bug 752) Don't insert newline in link title for url with %0a
31769 * Fix missing search box contents in MonoBook skin
31770 * Add option to forward search directly to an external URL (eg google)
31771 * Correctly highlight the fallback language variant when the selected
31772 variant is disabled. Used in zh: only for now.
31774 === Beta 5 fixes ===
31776 * (bug 1124) Fix ImageGallery XHTML compliance
31777 * (bug 1186) news: in the middle of a word
31778 * (bug 1283) Use underlining and borders to highlight additions/deletions
31780 * Use user's local timezone in Special:Log display
31781 * Show filename for images in gallery by default (restore beta 3 behavior)
31782 * (bug 1201) Double-escaping in brokenlinks, imagelinks, categorylinks,
31784 * When using squid reverse proxy, cache the redirect to the Main_Page
31785 * (bug 1302) Fix Norwegian language file
31786 * (bug 1205) Fix broken article saving in PHP 5.1
31787 * (bug 1206) Implement CURRENTWEEK and CURRENTDOW magic keyword (will give
31788 number of the week and number of the day).
31789 * (bug 1204) Blocks do not expire automatically
31790 * (bug 1184) expiry time of indefinite blocks shown as the current time
31791 * (bug 1317) Fix external links in image captions
31792 * (bug 1084) Fix logo not rendering centrally in IE
31793 * (bug 288) Fix tabs wrapping in IE6
31794 * (bug 119) Fix full-width tabs with RTL text in IE
31795 * (bug 1323) Fix logo rendering off-screen in IE with RTL language
31796 * Show "block" link in Special:Recentchanges for logged in users, too, if
31797 wgUserSysopBans is true.
31798 * (bug 1326) Use content language for '1movedto2' in edit history
31799 * zh: Fix warning when HTTP_ACCEPT_LANGUAGE is not set
31800 * zh: Fix double conversion for zh-sg and zh-hk
31801 * (bug 1132) Fix concatenation of link lists in refreshLinks
31802 * (bug 1101) Fix memory leak in refreshLinks
31803 * (bug 1339) Fix order of @imports in Cologne Blue CSS
31804 * Don't try to create links without namespaces ([[Category:]] link bug)
31805 * Memcached data compression fixes
31806 * Several valid XHTML fixes
31807 * (bug 624) Fix IE freezing rendering whilst waiting for CSS with MonoBook
31808 * (bug 211) Fix tabbed preferences with XHTML MIME type
31809 * Fix for script execution vulnerability.
31811 === Beta 6 fixes ===
31813 * (bug 1335) implement 'tooltip-watch' in Language.php
31814 * Fix linktrail for nn: language
31815 * (bug 1214) Fix prev/next links in Special:Log
31816 * (bug 1354) Fix linktrail for fo: language
31817 * (bug 512) Reload generated CSS on preference change
31818 * (bug 63) Fix displaying as if logged in after logout
31819 * Set default MediaWiki:Sitenotice to '-', avoiding extra database hits
31820 * Skip message cache initialization on raw page view (quick hack)
31821 * Fix notice errors in wfDebugDieBacktrace() in XML callbacks
31822 * Suppress notice error on bogus timestamp input (returns epoch as before)
31823 * Remove unnecessary initialization and double-caching of parser variables
31824 * Call-tree output mode for profiling
31825 * (bug 730) configurable $wgRCMaxAge; don't try to update purged RC entries
31826 * Add $wgNoFollowLinks option to add rel="nofollow" on external links
31828 * (bug 1130) Show actual title when moving page instead of encoded one.
31829 * (bug 925) Fix headings containing <math>
31830 * (bug 1131) Fix headings containing interwiki links
31831 * (bug 1380) Update Nynorsk language file
31832 * (bug 1232) Fix sorting of cached Special:Wantedpages in miser mode
31833 * (bug 1217) Image within an image caption broke rendering
31834 * (bug 1384) Make patrol signs have the same width for page moves as for edits
31835 * (bug 1364) fix "clean up whitespace" in Title:SecureAndSplit
31836 * (bug 1389) i18n for proxyblocker message
31837 * Add fur/Furlan/Friulian to language names list
31838 * Add TitleMoveComplete hook on page renames
31839 * Allow simple comments for each translation rules in MW:Zhconversiontable
31840 * (bug 1402) Make link color of tab subject page link on talk page indicate
31841 whether article exists
31842 * (bug 1368) Fix SQL error on stopword/short word search w/ MySQL 3.x
31843 * Translated Hebrew namespace names
31844 * (bug 1429) Stop double-escaping of block comments; fix formatting
31845 * (bug 829) Fix URL-escaping on block success
31846 * (bug 1228) Fix double-escaping on & sequences in [enclosed] URLs
31847 * (bug 1435) Fixed many CSS errors
31848 * (bug 1457) Fix XHTML validation on category column list
31849 * (bug 1458) Don't save if edit form submission is incomplete
31850 * Logged-in edits and preview of user CSS/JS are now locked to a session token.
31851 * Per-user CSS and JavaScript subpage customizations now disabled by default.
31852 They can be re-enabled via $wgAllowUserJs and $wgAllowUserCss.
31853 * Removed .ogg from the default uploads whitelist as an extra precaution.
31854 If your web server is configured to serve Ogg files with the correct
31855 Content-Type header, you can re-add it in LocalSettings.php:
31856 $wgFileExtensions[] = 'ogg';
31860 * Fix notice error on nonexistent template in wikitext system message
31861 * (bug 1469) add missing <ul> tags on Special:Log
31862 * (bug 1470) remove extra <ul> tags from Danish log messages
31863 * Fix notice on purge w/ squid mode off
31864 * (bug 1477) hide details of SQL error messages by default
31865 Set $wgShowSQLErrors = true for debugging.
31866 * (bug 1430) Don't check for template data when editing page that doesn't exist
31867 * Recentchanges table purging fixed when using table prefix
31868 * (bug 1431) Avoid redundant objectcache garbage collection
31869 * (bug 1474) Switch to better-cached index for statistics page count
31870 * Run Unicode normalization on all input fields
31871 * Fix translation for allpagesformtext2 in LanguageZh_cn and LanguageZh_tw
31872 * Block image revert without valid login
31873 * (bug 1446) stub Bambara (bm) language file using French messages
31874 * (bug 1432) Update Estonian localization
31875 * (bug 1471) unclosed <p> tag in Danish messages
31876 * convertLinks script fixes
31877 * Corrections to template loop detection
31878 * XHTML encoding fix for usernames containing & in Special:Emailuser
31879 * (for zh) Search for variant links even when conversion is turned off,
31880 to help prevent duplicate articles.
31881 * Disallow ISO 8859-1 C1 characters and "no-break space" in user names
31883 * Correct the name of the main page it LanguageIt
31884 * Allow Special:Makesysop to work for usernames containing SQL special
31886 * Fix annoying blue line in Safari on scaled-down images on description page
31887 * Increase upload sanity checks
31888 * Fix XSS bug in Media: links
31889 * Add cross-site form submission protection to various actions
31890 * Fix fatal error on some dubious page titles
31891 * Stub threshold displays correctly again
31894 === 1.4.0 final fixes ===
31896 * (bug 65) Fix broken interwiki link encoding on Latin-1 wikis; force to UTF-8
31897 * (bug 563) Fix UTF-8 interwiki URL redirects via Latin-1 wikis
31898 * (bug 1536) Fix page info
31899 * Support os (Ossetic) as language code, using Russian localization base
31900 * (bug 1610) Support non (Old Norse) as language code, using Icelandic
31902 * (bug 1618) Properly list custom namespaces in Special:Allpages
31903 * (bug 1622) Remove trailing' >' when using category browser
31904 * (bug 1570) Fix php 4.2.x error on conflict merging
31905 * (bug 1585) Fix page title on post-login redirection page
31906 * Run UTF-8 validation on old text in Recentchanges RSS diffs
31907 * (bug 1642) fix a mime type typo in img_auth.php
31908 * Automated interwiki redirects only for local interwikis
31909 * Respect read-only mode on block removals
31910 * Trim old illegal characters from syndication feeds
31911 * Reduce message cache outage recovery delay from 1 day to 5 minutes
31912 * (bug 1403) Update Finnish localization
31913 * (bug 1478) Punjabi localization
31914 * (bug 1667) Update script 5 second countdown.
31915 * (bug 1057) Fix logging table encoding (error on MySQL 4.1)
31916 * (bug 1680) Fix linktrail for fo
31917 * (bug 1653) Removing hardcoded messages in Special:Allmessages
31918 * (bug 1594) Render a hyphen in a formula as − in HTML
31919 * (bug 1495) Fall back to default language MediaWiki: for custom messages
31920 * (bug 1617) Show different error messages for "user does not
31921 exist" and "wrong password" when using AuthPlugin
31922 * (bug 1532), (bug 1544) Changed language names for
31923 'bn', 'bo', 'dv', 'dz', 'ht', 'ii', 'li', 'lo', 'ng', 'or', 'pa', 'si',
31925 * Fix editing on non-Esperanto wiki with user language pref set to Esperanto
31926 * Make conversion table for zh-sg default to zh-cn, and zh-hk default to zh-tw
31927 * Fix PHP notice in MonoBook when counters disabled
31928 * (bug 1696) Update namespaces, dates in uk localization
31929 * (bug 551) Installer warns about magic_quotes_runtime and magic_quotes_sybase
31930 instead of trying to install with corrupt table files
31931 * Installer no longer tries to move non-default MediaWiki: pages into Template:
31932 * User-to-user email disabled by default ($wgEnableUserEmail)
31935 === 1.4.1 fixes ===
31937 * (bug 1720) fix genitive month names for uk
31938 * (bug 1704) fixed untranslateable string in Special:Log
31939 * (bug 1638) Added Belrusian language file
31940 * (bug 1736) typo in SpecialValidate.php
31941 * (bug 73) Upload doesn't run edit updates on description page (links,
31942 search index and categories)
31943 * (bug 646) <math> fails to recognize \ll and \gg
31944 * (bug 926) \div element from TeX not supported in <math> element
31945 * (bug 1147) add \checkmark to whitelist in texutil.ml
31946 * (bug 937) \limits function from LaTeX not supported in <math> element
31947 * Support for manually converting article title to different Chinese
31949 * (bug 1488, bug 1744) Fix encoding for preferences, dates in Latin-1 mode
31950 * (bug 1042) Fix UTF-8 case conversion for PHP <4.3 with mbstring extension
31951 * Fix code typo that broke article credits display
31952 * Installation fixes for running under IIS
31953 * (bug 1556) login page tab order. "remember" checkbox now come after password.
31954 * SQL debug log fixlets
31955 * (bug 1815) Fix namespace in old revision display with mismatched title
31956 * (bug 1788) Fix link duplication when edit/upload comment includes newlines
31957 * Change default on $wgSysopUserBans and $wgSysopRangeBans to true
31958 * Fix link conversion for URL request
31959 * (bug 1851) Updated download URL for the SCIM packages used by zhtable
31960 * (bug 1853) Try stripping quotes from term for 'go' title match
31961 * Fix missing function in Latin1 mode
31962 * (bug 1860) Anchors of interwiki links did not get normalized
31963 * (bug 1847) accept lowercase x in ISBN, do not accept invalid A-W,Y,Z
31964 * Fix link conversion for URL request, hopefully without breaking the wiki
31965 * (bug 1849) New option allows to consider categorized images as used on
31966 Special:Unusedimages
31967 * Localized category namespace for ka (Georgian)
31968 * (bug 1107) Work around includes problem in installer when parent dir is not
31969 readable by the web server
31970 * (bug 1927) Incorrect escaping on wikitext message in Blockip
31973 === 1.4.2 fixes ===
31975 * Fix math options in Finnish localization
31976 * Use in-process Tidy extension if available when $wgUseTidy is on
31977 * (bug 1933) Fix PATH_INFO usage under IIS with PHP ISAPI module
31978 * (bug 1188) <nowiki> in {{subst:}} includes fixed
31979 * (bug 1936) <!-- comments --> in {{subst:}} includes fixed
31980 * Fix a potential MSIE JavaScript injection vector in Tidy mode
31983 === 1.4.3 fixes ===
31985 * (bug 1636) Refs like ţ were misinterpreted as octal in some places
31986 * (bug 1163) Special:Undelete showed oldest revision instead of newest
31987 * (bug 1938) Fix escaping of illegal character references in link text
31988 * (bug 1997) Fix for error on display of renamed items in Recentchanges on PHP5
31989 * (bug 1949) Profiling typo in rare error case
31990 * (bug 1963) Fix deletion log link when $wgCapitalLinks is off
31991 * (bug 1970) Don't show move tab for immobile pages
31992 * (bug 1770) Page creation recorded links from the 'newarticletext' message
31993 * Optional change to the site_stats table. When applied, this removes the need
31994 for expensive queries in Special:Statistics.
31997 === 1.4.4 fixes ===
31999 * (bug 725) Let dir="ltr" attribute work again in MonoBook on RTL languages
32000 * (bug 2024) Skip JavaScript error for custom skins where .js message not set
32001 * (bug 2025) Updated Indonesian localization
32002 * (bug 2039) Updated Lithuanian localization
32007 Some output, particularly involving user-supplied inline HTML, may not
32008 produce 100% valid or well-formed XHTML output. Testers are welcome to
32009 set $wgMimeType = "application/xhtml+xml"; to test for remaining problem
32010 cases, but this is not recommended on live sites. (This must be set for
32011 MathML to display properly in Mozilla.)
32014 For notes on 1.3.x and older releases, see HISTORY.
32017 === Online documentation ===
32019 Documentation for both end-users and site administrators is currently being
32020 built up on MediaWiki.org, and is covered under the GNU Free Documentation
32023 https://www.mediawiki.org/
32026 === Mailing list ===
32028 A MediaWiki-l mailing list has been set up distinct from the Wikipedia
32031 http://lists.wikimedia.org/mailman/listinfo/mediawiki-l
32033 A low-traffic announcements-only list is also available:
32034 http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
32036 It's highly recommended that you sign up for one of these lists if you're
32037 going to run a public MediaWiki, so you can be notified of security fixes.
32042 There's usually someone online in #mediawiki on irc.freenode.net
32046 == MediaWiki 1.3.18 ==
32047 (released 2005-11-02)
32048 MediaWiki 1.3.18 is a bugfix and security maintenance release. A change in PHP
32049 4.4.1 broke handling of extension and <nowiki><pre></nowiki> sections, causing
32050 garbage data to be inserted in output and saved edits. This version works
32051 around the change. This release includes further corrections to the inline CSS
32052 style sanitation which works around a JavaScript "feature" on Microsoft
32053 Internet Explorer. Users of Microsoft Internet Explorer for Windows may be
32054 vulnerable to XSS injections on prior 1.3 releases; users of
32055 standards-compliant browsers are not vulnerable.
32057 == MediaWiki 1.3.17 ==
32058 (released 2005-10-05)
32059 MediaWiki 1.3.17 is a security maintenance release. Unsafe handling of CSS by
32060 Microsoft Internet Explorer could be exploited to produce cross-site scripting
32061 attacks by JavaScript injection to clients running that browser. This release
32062 blacklists several additional variants from use in HTML inline style
32063 attributes. All publicly accessible wikis are recommended to upgrade to reduce
32064 the risk to visitors using Microsoft web browsers.Note: the MediaWiki 1.3.x
32065 series is not compatible with PHP 5.0.5 or higher. Upgrade to the 1.5.0 release
32066 if you require this version of PHP 5.
32068 == MediaWiki 1.3.16 ==
32069 (released 2005-09-21)
32070 MediaWiki 1.3.16 is a security maintenance release. A bug in edit submission
32071 handling could cause corruption of the previous revision in the database if an
32072 abnormal URL was used, such as those used by some spambots. Affected releases:
32073 * 1.4.x <= 1.4.9; fixed in 1.4.10
32074 * 1.3.x <= 1.3.15; fixed in 1.3.16
32075 1.5 release candidates are not affected by this problem. All publicly editable
32076 wikis are strongly recommended to upgrade immediately.
32077 1.3 releases can be manually patched by changing this bit in
32078 {{manual|EditPage.php}}:
32079 <syntaxhighlight lang="php">
32080 if( $this->tokenOk( $request ) ) {
32081 $this->save = $request->wasPosted() && !$this->preview;
32085 <syntaxhighlight lang="php">
32086 if( $this->tokenOk( $request ) ) {
32087 $this->save = $request->getVal( 'action' ) == 'submit' &&
32088 $request->wasPosted() && !$this->preview;
32092 == MediaWiki 1.3.15, 2005-08-29 ==
32093 MediaWiki 1.3.15 is a security maintenance release. It corrects across-site
32094 scripting security bug:
32095 * <nowiki><math></nowiki> tags were handled incorrectly when TeX rendering
32096 support is off, as in the default configuration. Wikis where the optional math
32097 support has been *enabled* are not vulnerable. The 1.3.x series is no longer
32098 maintained except for security fixes; new users and those seeking bug fixes
32099 should upgrade to 1.4.9 or 1.5.0.
32101 == MediaWiki 1.3.14, 2005-08-23 ==
32102 MediaWiki 1.3.14 is a security maintenance release. A flaw in the interaction
32103 between extensions and HTML attribute sanitization was discovered which could
32104 allow unauthorized use of offsite resources in style sheets, and possible
32105 exploitation of a JavaScript injection feature on Microsoft Internet Explorer.
32106 The 1.3.x series is no longer maintained except for security fixes; new users
32107 and those seeking bug fixes should upgrade to 1.4.8 or 1.5.0. Existing 1.3.x
32108 installations not willing to upgrade to the current stable release should apply
32109 the change manually:
32110 In includes/Parser.php, function {{code|inline=y|lang=php|fixTagAttributes()}}
32112 <syntaxhighlight lang="php">
32113 # Any placeholder items should have been unstripped already before
32114 # we got to this point. Raw text inserted later could be dangerous.
32115 if( strpos( $t, UNIQ_PREFIX ) !== false ) {
32116 wfDebug( "Parser::fixTagAttributes found stripped data placeholder;
32117 dropping attributes\n" );
32121 If you are actively using extensions to generate HTML attribute values, upgrade
32122 to 1.4 or 1.5 for a more thorough fix.
32124 == MediaWiki 1.3.13, 2005-06-03 ==
32125 MediaWiki 1.3.13 is a security maintenance release. Incorrect handling of page
32126 template inclusions made it possible to inject JavaScript code into HTML
32127 attributes, which could lead to cross-site scripting attacks on a publicly
32128 editable wiki. Vulnerable releases and fix:
32129 * 1.5 prerelease: fixed in 1.5alpha2
32130 * 1.4 stable series: fixed in 1.4.5
32131 * 1.3 legacy series: fixed in 1.3.13
32132 * 1.2 series no longer supported; upgrade to 1.4.5 strongly recommended The
32133 1.3.x series is no longer maintained except for security fixes; new users and
32134 those seeking general bug fixes should install 1.4.5. Existing 1.3.x
32135 installations not willing or able to upgrade to the current stable relase
32136 should update the installation to 1.3.13; only includes/Parser.php has changed
32139 == MediaWiki 1.3.12, 2005-02-20 ==
32140 MediaWiki 1.3.12 is a security maintenance release. A cross-site scripting
32141 injection vulnerability was discovered, which affects only MSIE clients and is
32142 only open if MediaWiki has been manually configured to run output through HTML
32143 Tidy ($wgUseTidy). The 1.3.x series is no longer maintained except for security
32144 fixes; new users and those seeking bug fixes should upgrade to 1.4.2. Existing
32145 1.3.x installations using Tidy not willing to upgrade to the current stable
32146 relase should either turn off Tidy or update the installation to 1.3.12.
32148 == MediaWiki 1.3.11, 2005-02-20 ==
32149 MediaWiki 1.3.11 is a security release.
32150 A security audit found and fixed a number of problems. Users of MediaWiki
32151 1.3.10 and earlier should upgrade to 1.3.11; users of 1.4 beta releases should
32154 === Cross-site scripting vulnerability ===
32155 XSS injection points can be used to hijack session and authentication cookies
32156 as well as more serious attacks.
32157 * Media: links output raw text into an attribute value, potentially abusable
32158 for JavaScript injection. This has been corrected.
32159 * Additional checks added to file upload to protect against MSIE and Safari
32160 MIME-type autodetection bugs.
32161 As of <code>1.3.10/1.4beta6</code>, per-user customized CSS and JavaScript is
32162 disabled by default as a general precaution. Sites which want this ability may
32163 set {{wg|AllowUserCss}} and {{wg|AllowUserJs}} in LocalSettings.php.
32165 === Cross-site request forgery ===
32166 An attacker could use JavaScript-submitted forms to perform various restricted
32167 actions by tricking an authenticated user into visiting a malicious web page. A
32168 fix for page editing in 1.3.10/1.4beta6 has been expanded in this release to
32169 other forms and functions. Authors of bot tools may need to update their code
32170 to include the additional fields.
32172 === Directory traversal ===
32173 An unchecked parameter in image deletion could allow an authenticated
32174 administrator to delete arbitrary files in directories writable by the web
32175 server, and confirm existence of files not deletable.
32177 == MediaWiki 1.3.10, 2005-02-03 ==
32178 MediaWiki 1.3.10 is a security release.
32179 An attacker could craft a URL which, when visited by a particular logged-in
32180 user, would execute arbitrary JavaScript code on the user's browser in the
32181 wiki's site context. This attack has been blocked, and as an extra precaution
32182 the user CSS and JavaScript subpage support is now disabled by default. Sites
32183 which want this ability may set {{wg|AllowUserCss}} and {{wg|AllowUserJs}} in
32184 {{manual|LocalSettings.php}}. Additional protections have been added against
32185 off-site form submissions
32186 hijacking user credentials. Authors of bot tools may need to update their code
32187 to include additional fields. All wikis running 1.3.x are strongly urged to
32189 Changes from 1.3.9:
32190 * Logged-in edits and preview of user CSS/JS are now locked to a session token.
32191 * Per-user CSS and JavaScript subpage customizations now disabled by default.
32192 They can be re-enabled via {{wg|AllowUserJs}} and {{wg|AllowUserCss}}.
32193 * Removed .ogg from the default uploads whitelist as an extra precaution. If
32194 your web server is configured to serve Ogg files with the correct Content-Type
32195 header, you can re-add it in LocalSettings.php: {{wg|FileExtensions}}<code>[] =
32198 == MediaWiki 1.3.9, 2004-12-12 ==
32199 MediaWiki 1.3.9 is a security and bug fix release.
32200 A flaw in upload handling has been found which may allow upload and execution
32201 of arbitrary scripts with the permissions of the web server. Only wikis that
32202 have enabled uploads and have a vulnerable Apache configuration will be
32203 affected, but to be safe all wikis should upgrade. Wikis with uploads available
32204 should either disable uploads or upgrade to 1.3.9 immediately; if other files
32205 are customized and require merging changes,
32206 includes/{{manual|SpecialUpload.php}} may be replaced individually to add the
32207 fix. (It is also recommended to configure your web server to disable script
32208 execution in the 'images' subdirectory where uploads are placed, which prevents
32209 most attacks even if the wiki fails.)
32210 Changes from 1.3.8:
32211 * Backported "Templates used in this page"-feature of EditPage
32212 * Allow "MySkin" as a default skin.
32213 * ({{bugzilla|938}}) Parse namespaces correctly on self-interwiki links
32214 * ({{bugzilla|1010}}) fix broken Commons image link on [[Skin:Classic|Classic]]
32215 & [[Skin:Cologne Blue|Cologne Blue]]
32216 * ({{bugzilla|1004}}) Norsk language names for interwiki links changed, Nauruan
32217 language name changed
32218 * Enhance upload extension blacklist to protect against vulnerable Apache
32221 == MediaWiki 1.3.8, 2004-11-15 ==
32222 MediaWiki 1.3.8 is a bugfix release. Those running wikis with uploads enabled
32223 are strongly recommended to upgrade as this fixes several problems with
32224 overwriting previously-uploaded files.
32225 Changes from 1.3.7:
32226 * ({{bugzilla|506}}) fix {{code|inline=y|lang=html|array_key_exists()}} warning
32227 for IIS servers using ISAPI mode
32228 * ({{bugzilla|718}}) fix bad charset in (file) cached pages
32229 * use local numerals in category page (for Hindi et al)
32230 * alias month abbreviations to month names in Hindi
32231 * add localized numerals for Gujarati and Kannada
32232 * fix Category and project namespaces for Hindi
32233 * Don't output bogus timestamp on [[Special:RecentChanges]] if no entries
32234 * Correct template include path which broke some but not all Windows installs
32235 * Fix edit form submission problem with some PHP versions
32236 * Disallow unreachable titles with %XX hex codes
32237 * Allow page [[0]] to be renamed
32238 * ({{bugzilla|774}}) when saving with <code>section=new</code>, return to the
32239 anchor as with existing numbered section edits
32240 * Experimental shared upload overlay area (disabled by default)
32241 * ({{bugzilla|806}}) Removed some "Wikipedia" hardcoding in German localization
32242 * User option localization fix for some extensions
32243 * ({{bugzilla|809}}) now try to load the mysql php extension if it isn't loaded
32244 * ({{bugzilla|848}}) fix error message in [[Special:Newpages]] RSS and Atom
32246 * ({{bugzilla|26}}) fix cache headers on anon talk page notification
32247 * ({{bugzilla|874}}) added 'cgi' to {{wg|FileBlacklist}}
32248 * ({{bugzilla|862}}) localize date and time format for Finnish
32249 * ({{bugzilla|548}}) Don't overwrite images until the user confirms it
32251 == MediaWiki 1.3.7, 2004-10-18 ==
32252 Changes from 1.3.6:
32253 * Fix protected-page related security issue.
32255 == MediaWiki 1.3.6, 2004-10-14 ==
32256 Changes from 1.3.5:
32257 * ({{bugzilla|296}}) Variables in user interface messages are no longer
32258 substituted at install time, so changes to the site name etc should be easier
32260 * ({{bugzilla|149}}) [[Special:RecentChanges]] "changes from" link preserves
32262 * ({{bugzilla|433}}) tooltip for "Undelete" tab now labeled correctly
32263 * ({{bugzilla|439}}) unclickable "Move" tab no longer displays on protected
32265 * ({{bugzilla|484}}) graceful deletion of images where the actual file is
32267 * ({{bugzilla|686}}) fixed [[plural]]s in Catalan localization
32268 * Fixed potential HTML/JavaScript injection attack in the
32269 [[Extension:UnicodeConverter|UnicodeConverter]] extension. (This extension is
32270 not enabled by default.)
32271 * Fixed potential HTML/JavaScript injection attack via raw page views to a
32272 maliciously crafted wiki page.
32273 * ({{bugzilla|187}}, {{bugzilla|669}}) Fixed centered thumbnails, using
32274 {{code|inline=y|lang=html|<div>}} instead of {{code|inline=y|lang=html|<span>}}.
32275 * catch MySQL error 2000 during installation.
32276 * ({{bugzilla|704}}) Removed misleading LocalSettings.sample
32277 * Fix cross site scripting bugs in [[Special:Ipblocklist]],
32278 [[Special:EmailUser]]
32279 * Fix SQL injection and cross site scripting bugs in Special:Maintenance
32280 * Fix cross site scripting bugs and possible filename validation vulnerability
32282 * and more of that sort
32284 == MediaWiki 1.3.5, 2004-09-30 ==
32285 Changes from 1.3.4:
32286 * Clean up input validation in 'raw' page output mode which was a potential
32287 cross-site scripting opportunity.
32289 == MediaWiki 1.3.4, 2004-09-28 ==
32290 === SECURITY NOTE ===
32291 As of 1.3.4, MediaWiki performs some screening of newly uploaded files for
32292 validity. (Some) corrupt image files, and HTML files mistakenly or maliciously
32293 masquerading as images, should now be rejected. These checks protect against
32294 Internet Explorer security holes relating to type autodetection which are a
32295 potential cross-site scripting attack vector, and also rejects at least one
32296 known version of the "JPEG virus" which might attack unpatched clients. If you
32297 already have invalid files uploaded this will not protect against them. If you
32298 have expanded the <code>filetype</code> whitelist or disabled the strict type
32299 checking, other dangerous file types may still get through. You should always
32300 be careful when allowing uploads!
32301 Changes from 1.3.3:
32302 * Fixed lots of template-related bugs, esp. for cases where template variables
32303 are used for links, images, etc.
32304 * Fixed transformation of page messages when viewing [[Special:Allmessages]]
32305 * Handle "ISBN ISBN 1234" correctly
32306 * Fixed warning on Category pages
32307 * Fixed some bad error messages on login page
32308 * Fixed history entry for initial main page on install
32309 * Removed problematic <code>{</code> and <code>}</code> from legal title
32311 * Strip leading blank from output in preformatted text.
32312 * Fixed problem when moving pages to titles with '#' in
32313 * Optional {{wg|RawHtml}} for raw {{code|inline=y|lang=html|<html>}} sections.
32314 Use only on limited- participation 'trusted' wikis, as it does not protect
32315 against cross-site scripting attacks. For security, this option can only be
32316 enabled if in {{wg|WhitelistEdit}} mode.
32317 * Fixed problem where pages which were created as a redirect following a move
32318 never showed on [[Special:Randompage]].
32319 * Fixed line spacing on printed table of contents
32320 * Allow links to pages with names of the form [[RFC 1234]]
32321 * Fixed broken edit links being shown for sections from included templates
32322 * Verify that uploaded image files are of the claimed type.
32324 == MediaWiki 1.3.3, 2004-09-09 ==
32325 Changes from 1.3.2:
32326 * Fix for long numeric page titles
32327 * Fix Go search for "0", numeric almost-self-links
32328 * Avoid caching of pages with "You have new messages" headers
32329 * Fix for upgrades as non-root users from 1.2 command-line installs.
32330 * Fix for {{wg|DebugDumpSql}} debug mode.
32331 * {{wg|ExtraNamespaces}} setting for configuring additional namespaces (see
32332 note in {{manual|DefaultSettings.php}})
32333 * 'recache' on query pages now disabled when miser mode is on; special case the
32334 global settings in your {{manual|LocalSettings.php}} to do automatic updates.
32335 * Don't block UTF-8 titles containing byte 0xA0 (bug added in 1.3.2)
32336 * Watch/unwatch tabs now shown on edit pages in MonoBook.
32337 * Fix default skin in Irish localization (ga)
32338 * Add Traditional Chinese localization (zh-tw)
32339 * Changed default sortkey of subcategories. Don't include "Category:"-prefix
32341 * More helpful info on spam catcher.
32342 * Allow larger offsets for queries such as [[Special:Listusers]]
32343 * Semicolon (;) added to French non-break space rules
32344 * Possible fix for some install errors with path names permission problems.
32345 * Removed [[Project:All system messages]], which has been superseded by the
32346 much faster [[Special:Allmessages]]. This speeds up installation considerably.
32348 == MediaWiki 1.3.2, 2004-08-30 ==
32349 Changes from 1.3.1:
32350 * Fix namespaced page creation links when no go match
32351 * When cookies are disabled, don't show login screen twice
32352 * Install should no longer die when PHP is pre-configured to compress output
32353 * Fixed bug that caused long Japanese pages to time out with Tidy active
32354 * When session.handler is set incorrectly, try automatic override to 'files'
32355 * Watch/Unwatch links back to the affected page instead of Main Page
32356 * Upload link no longer displayed on Monobook if uploading is disabled
32357 * Special:Allmessages faster, shows correct original text, works in safe mode
32359 == MediaWiki 1.3.1, 2004-08-14 ==
32360 Changes from 1.3.0:
32361 * Watchlist parameters now work with register_globals off
32362 * Fixed parsing of ''italics'' and '''bold''' mark-up (again)
32363 * Special:Allpages display is more sensible on smaller wikis
32364 * Fixed XHTML parsing error in classic skins
32365 * Moved pages update watchlist correctly
32366 * Fixed rebuildall.php on case-sensitive Unix filesystems
32367 * Disabled file cache compression by default due to incompatibility with output
32368 buffer compression (ob_gzhandler)
32369 * New magic word {{code|inline=y|PAGENAMEE}} (URL-escaped version of
32370 {{code|inline=y|PAGENAME}})
32371 * Installation avoids blank username; better message on missing XML module
32372 * {{wg|WhitelistAccount}} no longer breaks all logins.
32374 == MediaWiki 1.3.0, 2004-08-11 ==
32376 * New default layout '[[Skin:MonoBook|MonoBook]]' (available on PHP4 only
32378 * Print stylesheet now built-in to every page
32379 * More or less correct XHTML 1.0 (served as text/html by default)
32381 * Image captions can now include links and other basic formatting
32382 * Image bounding box can be specified instead of width, e.g. as 100x100px,
32383 making the image not wider than 100px and not higher than 100px, keeping aspect
32385 * Templates have been expanded with parameters, and separated from the
32386 MediaWiki: localization scheme.
32387 * Categories more or less work
32388 * added a special page for listing users with sysop rights.
32390 * Automatic merging of edit conflicts that don't directly interfere
32391 * Edit summaries can now include basic formatting and links
32392 Metadata and output:
32393 * Linked Creative Commons copyright metadata (optional)
32394 * RSS 2.0 & Atom 0.3 feeds for Recent Changes, New Pages
32396 * WikiHiero hieroglyphic module can be added (separate download)
32397 * Timeline module can be added (separate download). Requires ploticus.
32398 * TeX now has an experimental MathML output mode (incomplete!)
32399 Installation and upgrading:
32400 * The old install.php and update.php have been removed. In-place installation
32401 introduced in 1.2 is now the standard installation and upgrade method, see
32402 INSTALL and UPGRADE for directions.
32404 * The links table has been changed to use a cur_id for l_from. The link tables
32405 must be converted on upgrade, which may entail some downtime.
32406 Code and compatibility:
32407 * Should now run clean with error reporting set to E_ALL.
32408 * register_globals hack from 1.2 has been replaced with safer code
32409 * Bundled PHPTAL 0.7.0 from http://phptal.sourceforge.net/ (with some patches)
32410 * Most image-related code moved to Image.php
32411 * More fixes for PHP 4.1.2 (thanks to Asheesh Laroia)
32412 * URL encoding fix for anchors
32413 * All languages now available in UTF-8 mode
32414 * Various other fixes
32417 Some output, particularly involving user-supplied inline HTML, may not produce
32418 100% valid or well-formed XHTML output. Testers are welcome to set $wgMimeType
32419 = "application/xhtml+xml"; to test for remaining problem cases, but this is not
32420 recommended on live sites. (This must be set for MathML to display properly in
32421 Mozilla.) The new 'MonoBook' skin is not compatible with PHP 5 due to bugs in
32422 the underlying PHPTAL library. It will be automatically disabled when running
32423 on PHP5; the older look and feel will be used instead.