Merge "Don't "preview" (i.e. execute) user JS on non-preview requests"
[lhc/web/wiklou.git] / RELEASE-NOTES-1.26
1 Security reminder: If you have PHP's register_globals option set, you must
2 turn it off. MediaWiki will not work with it enabled.
3
4 == MediaWiki 1.26 ==
5
6 THIS IS NOT A RELEASE YET
7
8 MediaWiki 1.26 is an alpha-quality branch and is not recommended for use in
9 production.
10
11 === Configuration changes in 1.26 ===
12 * $wgPasswordResetRoutes['email'] = true by default.
13 * $wgEnableParserCache was deprecated, set $wgParserCacheType to CACHE_NONE
14 instead if you want to disable the parser cache.
15 * New-style continuation is now the default for API action=continue. Clients may
16 use the 'rawcontinue' parameter to receive raw query-continue data, but the
17 new style is encouraged as it's harder to implement incorrectly.
18 * Deprecated API formats dump and wddx have been completely removed.
19 * (T7645) The "Signature" button on the edit toolbar is now hidden by default
20 in non-talk namespaces. A new configuration variable,
21 $wgExtraSignatureNamespaces, controls in which subject (non-talk) namespaces
22 the "Signature" button on the edit toolbar will be displayed.
23 * $wgResourceLoaderUseESI was deprecated and removed. This was an experimental
24 feature that was never enabled by default.
25 * $wgResourceLoaderExperimentalAsyncLoading was deprecated and removed.
26 This experimental feature was never enabled by default and is obsolete as of
27 MediaWiki 1.26, in where ResourceLoader became fully asynchronous.
28 * $wgMasterWaitTimeout was removed (deprecated in 1.24).
29 * Fields in ParserOptions are now private. Use the accessors instead.
30 * Custom LESS functions (defined via $wgResourceLoaderLESSFunctions or
31 in extension.json) have been removed, after being deprecated in 1.24.
32 * $wgAlwaysUseTidy has been removed.
33 * ResetSessionID hook has been removed. Nothing seems to use it.
34 * Certain AuthPlugin methods are deprecated in favor of new hooks:
35 ** AuthPlugin::initUser() is replaced by LocalUserCreated.
36 ** AuthPlugin::updateUser() is replaced by UserLoggedIn.
37 ** AuthPlugin::updateExternalDB() is replaced by the existing UserSaveSettings.
38 ** AuthPlugin::updateExternalDBGroups() is replaced by UserGroupsChanged.
39 ** AuthPluginUser::isHidden() is replaced by UserIsHidden.
40 ** AuthPluginUser::isLocked() is replaced by UserIsLocked.
41 * The UserRights hook is deprecated in favor of the new UserGroupsChanged hook.
42 * AuthPlugin::initUser() and AuthPlugin::updateUser() should no longer replace
43 the passed User object.
44 * $wgBlockAllowsUTEdit is now set to true by default. This allows
45 blocked users to edit their talk pages unless explicitly disabled
46 when they are being blocked.
47 * CLDRPluralRule* classes have been replaced with wikimedia/cldr-plural-rule-parser.
48
49 === New features in 1.26 ===
50 * (T51506) Now action=info gives estimates of actual watchers for a page.
51 See $wgRCMaxAge, $wgWatchersMaxAge and $wgUnwatchedPageSecret
52 to learn how to configure if needed.
53 * Change tags can now be hidden in the interface by disabling the associated
54 "tag-<id>" interface message.
55 * ':' (colon) is now invalid in usernames for new accounts. Existing accounts
56 are not affected.
57 * Added a new hook, 'LogException', to log exceptions in nonstandard ways.
58 * Revive the 'SpecialSearchResultsAppend' hook which occurs after the list of
59 search results are rendered. The initial use case is to append a "give us
60 feedback" link beneath the search results.
61 * Added a new hook, 'RejectParserCacheValue', which allows extensions to
62 reject an otherwise-successful parser cache lookup. The intent is to allow
63 extensions to manage the eviction of archaic HTML output from the cache.
64 * (T68699) The expiration of the UserID and Token login cookies
65 ($wgExtendedLoginCookieExpiration) can be configured independently of the
66 expiration of all other cookies ($wgCookieExpiration).
67 * (T50519) Support for generating JPEG/PNG thumbnails from WebP images added
68 if ImageMagick is used as image scaler ($wgUseImageMagick = true). Uploading
69 of WebP images still disabled by default. Add $wgFileExtensions[] =
70 'webp'; to LocalSettings.php to enable uploading of WebP images.
71 * Added new hooks 'EnhancedChangesListModifyLineData' &
72 'EnhancedChangesListModifyBlockLineData', to modify the data used to build
73 lines in enhanced recentchanges and watchlist.
74 * Caches that need purging ability now use the WANObjectCache interface.
75 This corresponds to a new $wgMainWANCache setting, which defaults to using
76 the $wgMainCacheType settings.
77 * Added MWTimestamp::getTimezoneString() which returns the localized timezone
78 string, if available. To localize this string, see the comments of
79 $wgLocaltimezone in includes/DefaultSettings.php.
80 * Callers needing fast light-weight data stores use $wgMainStash to select
81 the store type from $wgObjectCaches. The default is the local database.
82 * Interface message overrides in the MediaWiki namespace will now be cached in
83 memcached and APC (if available), rather than memcached and local files.
84 * Added a new hook, 'RandomPageQuery', to allow modification of the query used
85 by Special:Random to select random pages.
86 * $wgTransactionalTimeLimit was added, which controls the request time limit
87 for potentially slow POST requests that need to be as atomic as possible.
88 * ResourceLoader now loads all scripts asynchronously. The top-queue and
89 startup modules are no longer synchronously loaded.
90 * 'mediawiki.ui.button' styles are no longer unconditionally loaded on every
91 page. During the deprecation period, the styles will only be loaded on pages
92 which contain 'mw-ui-button' in their HTML. Starting in 1.28, the styles will
93 only be loaded if explicitly required.
94 * If search returns zero results and current search engine has a "did you mean"
95 suggestion, results for suggestion will be shown. Can be disabled by setting
96 $wgSearchRunSuggestedQuery to false.
97 * Added several JavaScript libraries for uploading files to MediaWiki
98 from the client-side. See documentation for mw.Upload and its
99 subclasses for more information.
100 * Added OOUI dialogs and layout for file upload interfaces. See
101 documentation for mw.Upload.Dialog, mw.Upload.BookletLayout and its
102 subclasses for more information.
103
104 == extension.json changes in 1.26 ==
105 * (T99344) The extension.json schema is now versioned. All extensions
106 and skins should set a "manifest_version" property corresponding to
107 the schema version they were written for. The only supported version
108 currently is "1".
109 * (T102523) The error message if a non-array attribute is set was improved.
110 * (T107646) Configuration settings can now specify how they should be merged,
111 which is necessary for arrays using integer keys.
112 * (T110389) Adding namespaces through extension.json now actually works
113 * $wgNamespaceProtection can now be set in extension.json.
114 * $wgCapitalLinkOverrides can now be set in extension.json.
115 * (T97186) Extensions using a custom prefix for their configuration settings
116 can now set a "_prefix" key to override the default of "wg".
117 * (T99084) Extensions can now specify what MediaWiki core versions they
118 depend upon.
119 * (T105236) The extension.json schema now validates custom classes in
120 the "ResourceModules" property properly.
121
122 == External libraries ==
123 === Upgraded external libraries ===
124 * Updated es5-shim from v4.0.0 to v4.1.5.
125 * Updated json2 from revision 2014-02-04 to 2015-05-03.
126 * Updated Sinon.JS from 1.10.3 to 1.15.4.
127 * Updated jQuery Client from v1.0.0 to v2.0.0.
128 * Updated QUnit from v1.17.1 to v1.18.0.
129 * Updated liuggio/statsd-php-client from v1.0.12 to v1.0.16
130 * Updated oojs/oojs-ui from v0.9.8 to v0.12.9.
131 * Updated wikimedia/utfnormal from v1.0.2 to v1.0.3
132 * Updated wikimedia/composer-merge-plugin from v1.0.0 to v1.2.1.
133 * Updated zordius/lightncandy from v0.18 to v0.21.
134
135 === New external libraries ===
136 * Added composer/semver v0.1.0.
137 * Added mediawiki/at-ease v1.1.0.
138 * Added wikimedia/assert v0.2.2.
139 * Added wikimedia/cldr-plural-rule-parser v1.0.0
140 * Added wikimedia/ip-set v1.0.1.
141 * Added wikimedia/wrappedstring v2.0.0.
142
143 === Removed and replaced external libraries ===
144 * Replaced leafo/lessphp v0.5.0 with oyejorge/less.php: v1.7.0.8
145
146 === Bug fixes in 1.26 ===
147 * (T53283) load.php sometimes sends 304 response without full headers
148 * (T65198) Talk page tabs now have a "rel=discussion" attribute
149 * (T98841) {{msgnw:}} now preserves comments even when subst: is not used.
150 * (T104142) $wgEmergencyContact and $wgPasswordSender now use their default
151 value if set to an empty string.
152
153 === Action API changes in 1.26 ===
154 * New-style continuation is now the default for action=continue. Clients may
155 use the 'rawcontinue' parameter to receive raw query-continue data, but the
156 new style is encouraged as it's harder to implement incorrectly.
157 * Deprecated API formats dump and wddx have been completely removed.
158 * API action=query&list=tags: The displayname can now be boolean false if the
159 tag is meant to be hidden from user interfaces.
160 * action=import no longer allows both the namespace= and rootpage= parameters
161 to be set. If they are both set, the value of rootpage= will be ignored.
162 * prop=revision output in enum mode is now sorted by timestamp rather than
163 revision ID. This usually won't make any difference.
164 * (T102645) Namespace list from meta=siteinfo&siprop=namespaces is now an array
165 with formatversion=2.
166 * Various other output from meta=siteinfo will now always be arrays instead of
167 sometimes being numerically-indexed objects with formatversion=2.
168 * When errors about users being blocked are returned, they now include
169 information about the relevant block.
170 * (T99926) list=random has higher limits, in line with other API modules.
171 * list=random's rnredirect parameter is deprecated in favor of a new
172 rnfilterredir parameter that also allows for listing both redirects and
173 non-redirects.
174 * list=random now supports continuation.
175 * API responses to GET requests may now include ETag and Last-Modified headers,
176 and will honor corresponding If-None-Match and If-Modified-Since on such
177 requests.
178 * (T47988) The protect log event details now use new-style formatting.
179
180 === Action API internal changes in 1.26 ===
181 * New metadata item ApiResult::META_KVP_MERGE to allow for merging the KVP key
182 into the value when the value is an assoc.
183 * API action modules may now provide values for the RFC 7232 ETag and
184 Last-Modified headers. The API will check these against If-None-Match and
185 If-Modified-Since request headers on GET requests and avoid executing the
186 module when appropriate.
187
188 === Languages updated in 1.26 ===
189
190 MediaWiki supports over 350 languages. Many localisations are updated
191 regularly. Below only new and removed languages are listed, as well as
192 changes to languages because of Phabricator reports.
193
194 * Languages added:
195 ** ase (American sign language), thanks to translator Icemandeaf
196 ** dty (डोटेली/Doteli), thanks to translators जनक राज भट्ट, बिप्लब आनन्द,
197 मेश सिंह बोहरा, and राम प्रसाद जोशी
198 ** luz (لئری دوٙمینی / Southern Luri)
199 ** olo (Livvinкarjala / Livvi-Karelian), thanks to translators Denö, Hiloin Natoi,
200 Ilja.mos, and Mashoi7
201
202 === Other changes in 1.26 ===
203 * ChangeTags::tagDescription() will return false if the interface message
204 for the tag is disabled.
205 * Added PageHistoryPager::doBatchLookups hook.
206 * Added $wikiId parameter to FormatAutocomments hook.
207 * Added ParserCacheSaveComplete to ParserCache
208 * supportsDirectEditing and supportsDirectApiEditing methods added to
209 ContentHandler, to provide a way for ApiEditPage and EditPage to check
210 if direct editing of content is allowed. These methods return false,
211 by default for the ContentHandler base class and true for TextContentHandler
212 and it's derivative classes (everything in core). For Content types that
213 do not support direct editing, an alternative mechanism should be provided
214 for editing, such as action overrides or specific api modules.
215 * mediaWiki.confirmCloseWindow now returns an object of functions, instead of
216 one function. The callback can't be called directly any more. The callback
217 function is replaced with confirmCloseWindow.release().
218 * BREAKING CHANGE: Added an optional ResouceLoaderContext parameter to
219 ResourceLoaderModule::getDependencies(). Extension classes that override that
220 method should be updated. If they aren't updated, PHP Strict standards
221 warnings will appear when E_STRICT error reporting is enabled. Note: in the
222 near future, this parameter will probably become non-optional.
223 * Removed maintenance script deleteImageMemcached.php.
224 * MWFunction::newObj() was removed (deprecated in 1.25).
225 ObjectFactory::getObjectFromSpec() should be used instead.
226 * The parser will no longer randomize the string it uses to mark the place of
227 items that were stripped during parsing. It will use a fixed string instead.
228 This causes the parser to re-use the regular expressions it uses to search
229 and replace markers rather than generate novel expressions on each parse.
230 Re-using regular expressions will improve performance on HHVM and the
231 forthcoming PHP 7. The interfaces changes accompanying this change are:
232 - Parser::getRandomString() and Parser::uniqPrefix() have been deprecated.
233 - The $uniq_prefix argument for Parser::extractTagsAndParams() and the
234 $prefix argument for StripState::_construct() are deprecated and their
235 value is ignored.
236 * wfSuppressWarnings() and wfRestoreWarnings() were split into a separate library,
237 mediawiki/at-ease, and are now deprecated. Callers should use
238 MediaWiki\suppressWarnings() and MediaWiki\restoreWarnings() directly.
239 * The Block class constructor now takes an associative array of parameters
240 instead of many optional positional arguments. Calling the constructor the old
241 way will issue a deprecation warning.
242 * The jquery.mwExtension module was deprecated.
243 * $wgSpecialPageGroups was removed (deprecated in 1.21).
244 * SpecialPageFactory::setGroup was removed (deprecated in 1.21).
245 * SpecialPageFactory::getGroup was removed (deprecated in 1.21).
246 * DatabaseBase::ignoreErrors() is now protected.
247 * BREAKING CHANGE: mediawiki.legacy.ajax has been removed, following
248 a lengthy deprecation period.
249 * The ScopedPHPTimeout class was removed.
250 * Removed maintenance script fixSlaveDesync.php.
251 * Watchlist tokens, SpecialResetTokens, and User::getTokenFromOption()
252 are deprecated. Applications using those can work via the OAuth
253 extension instead. New tokens types should not be added.
254 * (T36948) The default file revert message's timestamp is now in $wgLocaltimezone,
255 instead of UTC.
256 * DatabaseBase::errorCount() was removed (unused).
257 * $wgDeferredUpdateList was removed.
258 * DeferredUpdates::addHTMLCacheUpdate() was removed.
259 * The default name of the 'suppress' group page has been changed from
260 'Project:Oversight' to 'Project:Suppress'.
261 * DatabaseBase::resultObject() is now protected (use outside Database classes
262 not necessary since 1.11).
263 * Calling ResourceLoaderFileModule::readStyleFiles() without a
264 ResourceLoaderContext instance is deprecated.
265 * ResourceLoader::getLessCompiler() now takes an optional parameter of
266 additional LESS variables to set for the compiler.
267
268 == Compatibility ==
269
270 MediaWiki 1.26 requires PHP 5.3.3 or later. There is experimental support for
271 HHVM 3.3.0.
272
273 MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
274 support for them is somewhat less mature. There is experimental support for
275 Oracle and Microsoft SQL Server.
276
277 The supported versions are:
278
279 * MySQL 5.0.3 or later
280 * PostgreSQL 8.3 or later
281 * SQLite 3.3.7 or later
282 * Oracle 9.0.1 or later
283 * Microsoft SQL Server 2005 (9.00.1399)
284
285 == Upgrading ==
286
287 1.26 has several database changes since 1.25, and will not work without schema
288 updates. Note that due to changes to some very large tables like the revision
289 table, the schema update may take quite long (minutes on a medium sized site,
290 many hours on a large site).
291
292 If upgrading from before 1.11, and you are using a wiki as a commons
293 repository, make sure that it is updated as well. Otherwise, errors may arise
294 due to database schema changes.
295
296 If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
297 new database fields are filled with data.
298
299 If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
300 1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
301 with MediaWiki 1.21.
302
303 Don't forget to always back up your database before upgrading!
304
305 See the file UPGRADE for more detailed upgrade instructions.
306
307 For notes on 1.25.x and older releases, see HISTORY.
308
309 == Online documentation ==
310
311 Documentation for both end-users and site administrators is available on
312 MediaWiki.org, and is covered under the GNU Free Documentation License (except
313 for pages that explicitly state that their contents are in the public domain):
314
315 https://www.mediawiki.org/wiki/Documentation
316
317 == Mailing list ==
318
319 A mailing list is available for MediaWiki user support and discussion:
320
321 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
322
323 A low-traffic announcements-only list is also available:
324
325 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
326
327 It's highly recommended that you sign up for one of these lists if you're
328 going to run a public MediaWiki, so you can be notified of security fixes.
329
330 == IRC help ==
331
332 There's usually someone online in #mediawiki on irc.freenode.net.