none
[openafs-wiki.git] / TWiki / TWikiReleaseNotes04x00.mdwn
1 # <a name="TWiki Release 4.0 (Dakar)"></a><a name=" TWiki Release 4.0 (Dakar)"></a> TWiki Release 4.0 (Dakar)
2
3 _Note: This is the release note for the previous major release version 4.0.X. It is included with 4.1.X because it contains valuable information for people upgrading from earlier versions. Both for the admin and the users. See [[TWikiReleaseNotes04x01]] for the 4.1.X release notes_
4
5 'Dakar' is the first major release of the TWiki Enterprise Collaboration Platform in over a year. The focus of this release has been on refactoring the code in the interests of **security**, **efficiency** and **maintainability**, though a range of powerful new features are also included. The refactoring work has included tightening up the specification of certain key TWiki behaviours, which has resulted in some specification changes. The impact on end users has been minimised as far as possible.
6
7 **_Major New Features_**
8
9 - Much simpler install and configuration
10 - Integrated session support
11 - Webserver-independent login/logout
12 - Security sandbox blocks all possible routes for remote command execution on the server
13 - New editing model allows freer collaboration, without fear of overwriting other people's changes
14 - Multilingual UI
15 - E-mail confirmations for registration
16 - WYSIWYG editor
17 - Hierarchical sub-webs
18
19 %M% See feature list at [[TWikiHistory#DakarRelease]]. TWiki 4.0 patch release details are at the end of this release notes document.
20
21 **_Note:_** In what follows, \{This\} (words in curly braces) refers to settings in the new 'configure' interface.
22
23 <div>
24   <ul>
25     <li><a href="#Notes for end users"> Notes for end users</a><ul>
26         <li><a href="#Editing at the same time as othe"> Editing at the same time as other people</a></li>
27         <li><a href="#User Interface Internationalisat"> User Interface Internationalisation</a></li>
28         <li><a href="#New options on the editing scree"> New options on the editing screen</a></li>
29         <li><a href="#Change notification"> Change notification</a></li>
30         <li><a href="#E-mail addresses"> E-mail addresses</a></li>
31         <li><a href="#Parameterised Includes"> Parameterised Includes</a></li>
32         <li><a href="#Named Section Include"> Named Section Include</a></li>
33         <li><a href="#RSS Feeds"> RSS Feeds</a></li>
34       </ul>
35     </li>
36     <li><a href="#Notes for _TWikiAdmins and _Wi"> Notes for TWikiAdmins and WikiMasters</a><ul>
37         <li><a href="#Upgrading"> Upgrading</a></li>
38         <li><a href="#Security"> Security</a></li>
39         <li><a href="#CPAN Requirements"> CPAN Requirements</a></li>
40         <li><a href="#Installation and configuration"> Installation and configuration</a><ul>
41             <li><a href="#setlib.cfg"> setlib.cfg</a></li>
42             <li><a href="#TWiki.cfg"> TWiki.cfg</a></li>
43             <li><a href="#=testenv= / =configure="> testenv / configure</a></li>
44             <li><a href="#=configure= optional features"> configure optional features</a></li>
45             <li><a href="#Improved support for shorter URL"> Improved support for shorter URLs</a></li>
46           </ul>
47         </li>
48         <li><a href="#Preferences"> Preferences</a><ul>
49             <li><a href="#Changes to the evaluation order"> Changes to the evaluation order</a></li>
50             <li><a href="#Preferences Plugin"> Preferences Plugin</a></li>
51             <li><a href="#{_LocalSitePreferences} (was Mai"> {LocalSitePreferences} (was Main.TWikiPreferences)</a></li>
52             <li><a href="#=FAVICON="> FAVICON</a></li>
53             <li><a href="#=FORCENEWREVISIONCHECKBOX="> FORCENEWREVISIONCHECKBOX</a></li>
54             <li><a href="#=WEBLOGONAME=, <code>WEBLOGOIMG</code>, =WE"> WEBLOGONAME, WEBLOGOIMG, WEBLOGOURL, WEBLOGOALT</a></li>
55             <li><a href="#=WIKILOGOIMG=, <code>WIKILOGOURL</code>, =W"> WIKILOGOIMG, WIKILOGOURL, WIKILOGOALT</a></li>
56           </ul>
57         </li>
58         <li><a href="#Final Preferences"> Final Preferences</a></li>
59         <li><a href="#=mod_perl= support improvements"> mod_perl support improvements</a></li>
60         <li><a href="#Plugins"> Plugins</a></li>
61         <li><a href="#Logins, Logouts, Sessions and Pa"> Logins, Logouts, Sessions and Passwords</a></li>
62         <li><a href="#Protections"> Protections</a><ul>
63             <li><a href="#Site Permissions Overview"> Site Permissions Overview</a></li>
64           </ul>
65         </li>
66         <li><a href="#Frustrating Robots and Spammers"> Frustrating Robots and Spammers</a></li>
67         <li><a href="#New User Registration"> New User Registration</a></li>
68         <li><a href="#E-mail addresses"> E-mail addresses</a></li>
69         <li><a href="#Change notification support"> Change notification support</a></li>
70         <li><a href="#Site Changes Summary"> Site Changes Summary</a></li>
71         <li><a href="#What's a Web"> What's a Web</a></li>
72         <li><a href="#Disable script tags"> Disable &lt;script&gt; tags</a></li>
73       </ul>
74     </li>
75     <li><a href="#Notes for _TWikiApplication Dev"> Notes for TWikiApplication Developers</a><ul>
76         <li><a href="#Space/Tab conversion"> Space/Tab conversion</a></li>
77         <li><a href="#Evaluation order of _TWikiVaria"> Evaluation order of TWikiVariables</a></li>
78         <li><a href="#Encoding of form-field values"> Encoding of form-field values</a></li>
79         <li><a href="#script tags in topics"> &lt;script&gt; tags in topics</a></li>
80         <li><a href="#verbatim tags in topics"> &lt;verbatim&gt; tags in topics</a></li>
81         <li><a href="#=ALLVARIABLES="> ALLVARIABLES</a></li>
82         <li><a href="#=IF="> IF</a></li>
83         <li><a href="#New <code>$count(reg-exp)</code> variable i"> New $count(reg-exp) variable in Formatted Search</a></li>
84       </ul>
85     </li>
86     <li><a href="#Notes for Skin Developers"> Notes for Skin Developers</a><ul>
87         <li><a href="#Skin search path"> Skin search path</a></li>
88         <li><a href="#Supporting web names that are !"> Supporting web names that are WikiWords</a></li>
89         <li><a href="#Deprecation of %EDITTOPIC%"> Deprecation of %EDITTOPIC%</a></li>
90         <li><a href="#Template Parameters"> Template Parameters</a></li>
91         <li><a href="#HTTP and HTTPS"> HTTP and HTTPS</a></li>
92         <li><a href="#QUERYSTRING"> QUERYSTRING</a></li>
93       </ul>
94     </li>
95     <li><a href="#Notes for Plugin Developers"> Notes for Plugin Developers</a><ul>
96         <li><a href="#Changes to variable parsing"> Changes to variable parsing</a></li>
97         <li><a href="#Internals"> Internals</a></li>
98         <li><a href="#Extensions to the Func API"> Extensions to the Func API</a></li>
99       </ul>
100     </li>
101     <li><a href="#TWiki 4.0.1 Patch Release Detail"> TWiki 4.0.1 Patch Release Details</a><ul>
102         <li><a href="#TWiki 4.0.1 Fixes"> TWiki 4.0.1 Fixes</a></li>
103       </ul>
104     </li>
105     <li><a href="#TWiki 4.0.2 Patch Release Detail"> TWiki 4.0.2 Patch Release Details</a><ul>
106         <li><a href="#TWiki 4.0.2 Fixes"> TWiki 4.0.2 Fixes</a></li>
107         <li><a href="#TWiki 4.0.2 Enhancements"> TWiki 4.0.2 Enhancements</a></li>
108       </ul>
109     </li>
110     <li><a href="#TWiki 4.0.3 Patch Release Detail"> TWiki 4.0.3 Patch Release Details</a><ul>
111         <li><a href="#TWiki 4.0.3 Fixes"> TWiki 4.0.3 Fixes</a></li>
112         <li><a href="#TWiki 4.0.3 Enhancements"> TWiki 4.0.3 Enhancements</a></li>
113       </ul>
114     </li>
115     <li><a href="#TWiki 4.0.4 Patch Release Detail"> TWiki 4.0.4 Patch Release Details</a><ul>
116         <li><a href="#TWiki 4.0.4 Fixes"> TWiki 4.0.4 Fixes</a></li>
117         <li><a href="#TWiki 4.0.4 Enhancements"> TWiki 4.0.4 Enhancements</a></li>
118       </ul>
119     </li>
120     <li><a href="#TWiki 4.0.5 Patch Release Detail"> TWiki 4.0.5 Patch Release Details</a><ul>
121         <li><a href="#TWiki 4.0.5 Fixes"> TWiki 4.0.5 Fixes</a></li>
122         <li><a href="#TWiki 4.0.5 Enhancements"> TWiki 4.0.5 Enhancements</a></li>
123       </ul>
124     </li>
125   </ul>
126 </div>
127
128 ## <a name="Notes for end users"></a> Notes for end users
129
130 ### <a name="Editing at the same time as othe"></a> Editing at the same time as other people
131
132 Dakar release introduces a brand-new strategy for handling simultaneous changes to a topic by several people. Instead of one person locking the topic, and other having to wait until they are finished, Dakar allows multiple simultaneous edits of the same topic, and then _merges_ the different changes.
133
134 You probably won't even notice this happening unless you are changing existing text in the file at the same time as someone else. In this case, you may see TWiki inserting "change marks" into the text to highlight conflicts between your edits and another persons. These change marks are only used if you edit the same part of a topic as someone else, and they indicate what the text used to look like, what the other person's edits were, and what your edits were. For example, let's say you have a topic that contains this text:
135
136 <table>
137   <tr bgcolor="lightgrey">
138     <th>You edit</th>
139     <th>You see</th>
140   </tr>
141   <tr bgcolor="lightgrey">
142     <td><pre>
143 Casablanca is
144 Humphrey Bogart's finest film.
145 Of all the gin joints in all the world,
146 you had to walk into mine.
147 </pre></td>
148     <td> Casablanca is Humphrey Bogart's finest film. Of all the gin joints in all the world, you had to walk into mine. </td>
149   </tr>
150   <tr>
151     <td colspan="2">and you start editing this text before going for coffee. Meanwhile, a colleague also starts editng the same topic and changes the text to:</td>
152   </tr>
153   <tr bgcolor="lightgrey">
154     <td><pre>
155 <b>The Maltese Falcon</b> is
156 Humphrey Bogart's finest film.
157 Of all the gin joints in all the world,
158 you had to walk into mine.
159 </pre></td>
160     <td> The Maltese Falcon is Humphrey Bogart's finest film. Of all the gin joints in all the world, you had to walk into mine. </td>
161   </tr>
162   <tr>
163     <td colspan="2">When you get back from coffee, you finish your edit, changing the text to</td>
164   </tr>
165   <tr bgcolor="lightgrey">
166     <td><pre>
167 <b>To Have or Have Not</b> is
168 Humphrey Bogart's finest film.
169 <b>You know how to whistle, don't you Steve?
170 You just put your lips together and blow.</b>
171 </pre></td>
172     <td> To Have or Have Not is Humphrey Bogart's finest film. You know how to whistle, don't you Steve? You just put your lips together and blow. </td>
173   </tr>
174   <tr>
175     <td colspan="2">and saving it. The topic will now look like this when you display it:</td>
176   </tr>
177   <tr bgcolor="lightgrey">
178     <td><pre>
179 &lt;div &gt;&lt;b&gt;CONFLICT&lt;/b&gt; original 5:&lt;/div&gt;
180 Casablanca is
181 &lt;div &gt;&lt;b&gt;CONFLICT&lt;/b&gt; version 6:&lt;/div&gt;
182 The Maltese Falcon is
183 &lt;div &gt;&lt;b&gt;CONFLICT&lt;/b&gt; version 7:&lt;/div&gt;
184 To Have or Have Not is
185 &lt;div &gt;&lt;b&gt;CONFLICT&lt;/b&gt; end&lt;/div&gt;
186 Humphrey Bogart's finest film.
187 You know how to whistle, don't you Steve?
188 You just put your lips together and blow.
189 </pre></td>
190     <td>
191       <div><b>CONFLICT</b> original 5:</div> Casablanca is <div><b>CONFLICT</b> version 6:</div> The Maltese Falcon is <div><b>CONFLICT</b> version 7:</div> To Have or Have Not is <div><b>CONFLICT</b> end</div> Humphrey Bogart's finest film. You know how to whistle, don't you Steve? You just put your lips together and blow. </td>
192   </tr>
193 </table>
194
195 As you can see, your changes have been merged with your colleagues. The merge is done on a line-by-line basis, and if your changes do not overlap, then change marks will not be used (as is the case for the last line of the example).
196
197 Merging only applies to text fields. When there are conflicts in field data in forms such as checkboxes, radio buttons and selects, the most recent change (usually your change) always wins, even if someone else has changed the form since you started editing. Of course, all changes are available from the topic history.
198
199 Because there are cases where you actually want to avoid overlapping edits altogether (e.g. if you are changing forms data) TWiki will **warn** if you attempt to edit a topic that someone else is editing. It will also warn if a merge was required during a save.
200
201 ### <a name="User Interface Internationalisat"></a> User Interface Internationalisation
202
203 TWiki will now pick up the language you are using in your browser, and try to present system messages in that language, if it is available. If your preferred language is not available, TWiki will revert to English. You'll also have an option to choose a language different from that used in your browser.
204
205 User Interface Internationalisation support is optional and enabled by the \{UserInterfaceInternationalisation\} setting.
206
207 The translation is performed by the Perl standard internationalization framework. If you want to contribute a new language, it would be most welcome: see TWiki:Codev.UserInterfaceLocalisation for instructions on how to help.
208
209 ### <a name="New options on the editing scree"></a> New options on the editing screen
210
211 You will notice a couple of changes to the editing screen: first, there is no switch for releasing the edit lock any more (if locks are enabled, they are always released when an edit finishes). You will also notice a new "force new revision" checkbox. TWiki normally doesn't add a new revision if the same user re-edits a topic within a certain time period; this checkbox allows you to _force_ TWiki to add a revision for every change, regardless of how small it is.
212
213 ### <a name="Change notification"></a> Change notification
214
215 You now have much more control over _which_ topics in a web you are interested in changes to. You can choose to receive notifications about topics selected by name, or by their parent relationship. See [[MailerContrib]] for more details. Note that the `mailnotify` cron script has moved out of the `bin` directory and into the `tools` directory - active crontab entries needs to be updated accordingly.
216
217 ### <a name="E-mail addresses"></a> E-mail addresses
218
219 Because of the security risks inherent in publishing e-mail addresses in personal topics, the storage of user's emails has been moved to the password manager. For sites that use the `.htpasswd` password manager, e-mail addresses that new users provide during registration are stored in the `.htpasswd` file. To aid in migration, if TWiki can't find a registered e-mail address in `.htpasswd`, it will still look in the personal topic. All users should register a valid e-mail address at [[ChangeEmailAddress]].
220
221 If a different password manager is in use (e.g. LDAP, or 'none'), user e-mails will still be stored in personal topics. Sites that use other password systems (such as LDAP) should consider implementing a TWiki password manager, so that TWiki can look up email addresses, rather than storing them in personal topics.
222
223 ### <a name="Parameterised Includes"></a> Parameterised Includes
224
225 `%INCLUDE{}%` variables have a predefined set of parameters. In the past, any parameters not in this set were simply ignored. With Dakar, these parameters are now defined as [[TWikiVariables]] within the included topic - for example,
226
227     %INCLUDE{ "BugList" FAVOURITE="Damsel Flies" }%
228
229 will define `%FAVOURITE%` as `Damsel Flies` in the included topic, so if `BugList` contained the line
230
231     My favourite bugs are %FAVOURITE%
232
233 it will be expanded to
234
235     My favourite bugs are Damsel Flies
236
237 ### <a name="Named Section Include"></a> Named Section Include
238
239 The `%INCLUDE{}%` variable allows to include only a named section of the included topic. These sections are defined in the included topic using the `%STARTSECTION%` and `%ENDSECTION%` variables. For example, if the included topic has:
240
241     ---+ News
242
243     ---++ IT News
244     All news related to IT.
245     %STARTSECTION{"itnews"}%
246        * 2005-10-02 Final deployment of Dakar
247        * 2005-10-01 Moving platform to Dakar
248     %ENDSECTION{"itnews"}%
249
250 Using `%INCLUDE{ "AllNews" section="itnews" }%` will produce:
251
252        * 2005-10-02 Final deployment of Dakar
253        * 2005-10-01 Moving platform to Dakar
254
255 This syntax also allows for nested sections. For example, given the following topic:
256
257     %STARTSECTION{"outer"}%
258        * Top Outer Text
259     %STARTSECTION{"inner"}%
260        * Inner Text
261     %ENDSECTION{"inner"}%
262        * Top Outer Text
263     %ENDSECTION{"outer"}%
264
265 Using `%INCLUDE{"SampleTopic" section="outer"}%` will produce:
266
267        * Top Outer Text
268        * Inner Text
269        * Top Outer Text
270
271 And `%INCLUDE{"SampleTopic" section="inner"}%` will produce:
272
273        * Inner Text
274
275 Overlapped sections are also allowed.
276
277 ### <a name="RSS Feeds"></a> RSS Feeds
278
279 RSS feeds have been enhanced to display links as links to make the feeds more useful. They also now use the web-specific logos.
280
281 ## <a name="Notes for _TWikiAdmins and _Wiki"></a> Notes for TWikiAdmins and WikiMasters
282
283 ### <a name="Upgrading"></a> Upgrading
284
285 See [[TWikiUpgradeGuide]] for help in upgrading an existing Cairo (Sep 2004) installation.
286
287 ### <a name="Security"></a> Security
288
289 Dakar Release introduces the use of 'safe pipes' to prevent any malicious request from executing code on the server. This strategy stops any of the known attacks dead in its tracks. The Dakar codebase has not been impacted by any of the recent security advisories in any way. Several public sites have been running Dakar code for some months now, and to the best of our knowledge none has been hacked.
290
291 ### <a name="CPAN Requirements"></a> CPAN Requirements
292
293 CPAN:Text::Diff is a prerequisite for the UpgradeTWiki script only. CPAN:URI is a prerequisite for `configure`. Other new prerequisites are CPAN:CGI::Session and CPAN:CGI::Cookie, if you want to take advantage of the new session support.
294
295 If you want user interface internationalization support, CPAN:Locale::Maketext::Lexicon and CPAN:Encode (in perl 5.8's core) are required, as well as perl 5.8 or higher. See TWiki:Codev.UserInterfaceLocalisation for details on TWiki internationalization support.
296
297 ### <a name="Installation and configuration"></a> Installation and configuration
298
299 The installation and configuration processes have been simplified.
300
301 #### <a name="setlib.cfg"></a> setlib.cfg
302
303 The installer should now provide a file called `LocalLib.cfg` that contains local path settings. `setlib.cfg` contains documentation of what has to be done. Old `setlib.cfg` files **will not work** with Dakar.
304
305 #### <a name="TWiki.cfg"></a> TWiki.cfg
306
307 `TWiki.cfg` now contains all the default configuration settings, and the installer should provide a file called `LocalSite.cfg` that contains just those settings that are different than the defaults. The syntax of the settings in the file has also changed. Old `TWiki.cfg` files **will not work** with Dakar. The UpgradeTWiki script can be used to automate most of the necessary changes.
308
309 #### <a name="=testenv= / &lt;code&gt;configure="></a> =testenv / `configure`
310
311 `testenv` has been removed, and replaced with the new `configure` interface. This interface performs all the checking functions of the old `testenv`, adds several new ones (including permissions checks) and also acts as a browser interface allowing you to do **all** TWiki configuration from the browser. `configure` is now the main installation interface for TWiki.
312
313 The `configure` script can be used like the old `testenv` for public review of the configuration of the site. Saving from the interface is password-protected, using a password set in the configuration files, so to ordinary users `configure` just looks like a posh version of `testenv`. If you want to hide your configuration from public view, you can restrict access to the script using webserver access controls (Apache users see the Apache documentation on the 'require' directive for more infomation on how to do this).
314
315 #### <a name="=configure= optional features"></a> `configure` optional features
316
317 New optional features include \{AutoAttachPubFiles\} and \{EnableHierarchicalWebs\}. Both are switched off by default but can be enabled in `configure`.
318
319 #### <a name="Improved support for shorter URL"></a> Improved support for shorter URLs
320
321 See TWiki:TWiki.ShorterUrlCookbook
322
323 ### <a name="Preferences"></a> Preferences
324
325 There have been some significant changes to the handling of preferences, aimed at making them more logical, consistent and easy to use.
326
327 #### <a name="Changes to the evaluation order"></a> Changes to the evaluation order
328
329 The rules for preference evaluation (whether the user setting overrides the topic setting etc) have always been a bit confusing and difficult to use. For example, a topic setting would override a user setting, but a user setting would override a web setting, making per-web settings awkward to use. Mainly due to the introduction of hierarchical webs, preferences are now evaluated in the following order:
330
331 1. Topic
332 2. Web
333 3. Parent Web(s) (if appropriate. All parent webs are evaluated in bottom-up order)
334 4. Session
335 5. User
336 6. Local Site (as set in \{LocalSitePreferences\}, typically =%MAINWEB%.TWikiPreferences))
337 7. Default (as set in \{SitePrefsTopic\}, typically =%TWIKIWEB%.TWikiPreferences))
338
339 This is a change from previous versions, where the User preferences were evaluated between the topic and the web.
340
341 Note that a user can still dictate preference values that can't be overridden by the topic or the web level settings, but they will now need to set those preferences as FINALPREFERENCES. You can use `%ALLVARIABLES%` in a topic to get a dump of all preferences set in that context.
342
343 Permissions controls are not affected by this change.
344
345 #### <a name="Preferences Plugin"></a> Preferences Plugin
346
347 TWiki:Plugins.PreferencesPlugin has been included to allow more convenient editing of preferences. This plugin provides input controls, such as menus, radio buttons, and checkboxes to select preference settings.
348
349 The following standard preferences have been removed: [MAILTHISTOPIC](http://www.dementia.org/twiki/search?scope=text&web=all&order=topic&search=%25MAILTHISTOPIC%25&casesensitive=on&limit=all), [MAILTHISTOPICTEXT](http://www.dementia.org/twiki/search?scope=text&web=all&order=topic&search=%25MAILTHISTOPICTEXT%25&casesensitive=on&limit=all), [TOPICURL](http://www.dementia.org/twiki/search?scope=text&web=all&order=topic&search=%25TOPICURL%25&casesensitive=on&limit=all), [READTOPICPREFS](http://www.dementia.org/twiki/search?scope=text&web=all&order=topic&search=%25READTOPICPREFS%25&casesensitive=on&limit=all), [TOPICOVERRIDESUSER](http://www.dementia.org/twiki/search?scope=text&web=all&order=topic&search=%25TOPICOVERRIDESUSER%25&casesensitive=on&limit=all) (click on the name to search for occurrences on this site). If they are in use on your site, you can restore them to their Cairo settings by simply cutting and pasting the old definitions.
350
351 #### <a name="{_LocalSitePreferences} (was Mai"></a> \{LocalSitePreferences\} (was Main.TWikiPreferences)
352
353 Customized site preferences can now be saved in the \{LocalSitePreferences\} topic which will override settings in \{SitePrefsTopicName\}. This simplifies upgrades as you can overwrite the \{SitePrefsTopicName\} topic and gain any new or updated preference settings without losing your local customizations.
354
355 #### <a name="=FAVICON="></a> `FAVICON`
356
357 `favicon.ico` is a small graphic that _can_ appear in a variety of places in the browser: the titlebar, the taskbar, the address bar, bookmarks/favourites, and page tabs. Each web browser has a unique user interface, and as a result uses the Favicon in different ways. _Most_ browsers display it in _most_ of the locations listed.
358
359 Out of the box, TWiki is configured to easily customise the `favicon.ico` for each web. To switch to a new `favicon.ico`, upload it to the desired web's WebPreferences.
360
361 - - Set FAVICON = <http://www.dementia.org/twiki//view/%WEB%/WebPreferences/favicon.ico>
362
363 To provide a single, site-wide `favicon.ico`, hardcode a specific web, for example:
364
365 - - Set FAVICON = <http://www.dementia.org/twiki//view/TWiki/WebPreferences/favicon.ico>
366
367 #### <a name="=FORCENEWREVISIONCHECKBOX="></a> `FORCENEWREVISIONCHECKBOX`
368
369 Normally, if you make another edit within a one hour period (was `$editLockTime` in `lib/TWiki.cfg`, now `{ReplaceIfEditedAgainWithin}`), TWiki will fold together your changes. This is often the "right thing to do", as it can reduce the visual clutter of diffs.
370
371 The "Force New Revision" checkbox is a way to force it to create a separate revision each time you save.
372
373 The [[TWiki.TWikiPreferences|TWiki/TWikiPreferences]] variable `FORCENEWREVISIONCHECKBOX` controls whether this is checked by default or not.
374
375 On a related note, you can force **_every_** save to be a new revision number by editing `lib/TWiki.cfg` and setting <code>**\{ReplaceIfEditedAgainWithin\}**</code> to 0.
376
377 NOTE: Although this feature is being introduced in this release, it is also being deprecated at the same time. TWiki:Codev.EdinburghRelease is planned to provide the ability to elide revisions at the GUI level, rather than the Store level, thus obviating the need for this stopgap measure.
378
379 #### <a name="=WEBLOGONAME=, &lt;code&gt;WEBLOGOIMG&lt;/code&gt;, &lt;code&gt;WE"></a> =WEBLOGONAME, `WEBLOGOIMG`, `WEBLOGOURL`, `WEBLOGOALT`
380
381 Each web can have its own customised logo. The simplest way is to upload a `logo.gif` to a web's WebPreferences, and it will appear in the top-left corner.
382
383 To change the logo's filename, set the `WEBLOGONAME` variable. You'll especially need to do this if you use a different logo file format:
384
385 - - Set WEBLOGONAME = MyLogo.jpg
386
387 If you don't want to have custom logos on a per-web basic, but instead want to use a single, site-wide logo, hardcode a specific web in the `WEBLOGOURL` variable. For example:
388
389 - - Set WEBLOGOURL = %PUBURLPATH%/Main/WebPreferences/logo.png
390
391 #### <a name="=WIKILOGOIMG=, &lt;code&gt;WIKILOGOURL&lt;/code&gt;, &lt;code&gt;W"></a> =WIKILOGOIMG, `WIKILOGOURL`, `WIKILOGOALT`
392
393 These variables are now more closely associated with `WIKITOOLNAME`. If you change `WIKITOOLNAME`, you'll probably want to change these variables, too. `WIKILOGOIMG`, `WIKILOGOURL`, `WIKILOGOALT`, and `WIKITOOLNAME` are now used more consistently together.
394
395 ### <a name="Final Preferences"></a> Final Preferences
396
397 The `FINALPREFERENCES` setting prevents particular preference settings from being over-ridden at a lower level. The hierarchy of how `FINALPREFERENCES` settings are applied has been clarified/formalized as reflected in the following chart:
398
399 <table border="1" cellpadding="0" cellspacing="0">
400   <tr>
401     <th bgcolor="#99CCCC"><strong> Level </strong></th>
402     <th bgcolor="#99CCCC"><strong> Set By </strong></th>
403     <th bgcolor="#99CCCC"><strong> Local site examples </strong></th>
404   </tr>
405   <tr>
406     <td> default site </td>
407     <td> %TWIKIWEB%.TWikiPreferences or %WIKIPREFSTOPIC% </td>
408     <td>[[TWiki/TWikiPreferences]]</td>
409   </tr>
410   <tr>
411     <td> local site </td>
412     <td> %MAINWEB%.TWikiPreferences or %LOCALSITEPREFS% </td>
413     <td>[[Main/TWikiPreferences]]</td>
414   </tr>
415   <tr>
416     <td> web </td>
417     <td> WebPreferences </td>
418     <td> %WEB%.WebPreferences </td>
419   </tr>
420   <tr>
421     <td> user </td>
422     <td> In one's user topic </td>
423     <td> Main.admin </td>
424   </tr>
425   <tr>
426     <td> topic </td>
427     <td> "Edit topic preferences settings" under "More topic actions" </td>
428     <td> %WEB%.%TOPIC% </td>
429   </tr>
430 </table>
431
432 By default, the site level `FINALPREFERENCES` are set in [[Main.TWikiPreferences|Main/TWikiPreferences]] so as not to conflict with preference settings in that topic.
433
434 ### <a name="=mod_perl= support improvements"></a> `mod_perl` support improvements
435
436 TWiki no longer uses global variables other than for constants. Each CGI script creates a new "session object" that holds all session-specific information.
437
438 There is still an issue with the `@INC` path in `mod_perl`, that mainly impacts plugins that lazy-load modules. You should use the `PerlSetEnv` directive that `mod_perl` provides to make sure that your TWiki `lib` directory is permanently on the path, if you are using `mod_perl`.
439
440 ### <a name="Plugins"></a> Plugins
441
442 Plugins are no longer searched for every time a TWiki script is run. Instead they are automatically discovered in `configure`. To enable and disable plugins, use the `configure` interface. The entire @INC path is searched for plugins, so you can easily point at plugins outside the installation. However only the first instance of a plugin on the @INC path will be found (it is a path, after all).
443
444 `%INSTALLEDPLUGINS%` and `%DISABLEDPLUGINS%` are no longer supported in TWikiPreferences. If you have set `%INSTALLEDPLUGINS%` in TWikiPreferences, you need to move that setting into the `{PluginsOrder}` configuration key, using the `configure` interface. To disable plugins, uncheck them in the `configure` interface, and save the changes.
445
446 %X% Whenever you install a plugin, make sure you check [[TWikiPlugins#FAILEDPLUGINS]]. Several handlers have been deprecated, and updates of the plugins may be required. Contact the plugin author directly to get an update if none is available on the web.
447
448 ### <a name="Logins, Logouts, Sessions and Pa"></a> Logins, Logouts, Sessions and Passwords
449
450 TWiki:Plugins.SessionPlugin and TWiki:Plugins.AuthPagePlugin have been integrated into the core. TWiki now supports cookied sessions, in the context of a much improved authentication architecture. The setup for authentication is now much simpler, and for most sites can be done entirely from the `configure` interface. There are some incompatibilities with TWiki:Plugins.SessionPlugin, with resepect to the in-line variables. See [[TWikiUserAuthentication]] in the release for full details of how authentication works now. TWiki also now supports the concept of pluggable password managers, making the integration of corporate authentication services much simpler.
451
452 Administrators, especially of public sites, need to be aware of the security implications of cookied sessions, and the potential risks of cross-site scripting attacks that may be used to steal user sessions. See [[TWikiUserAuthentication]] for more details.
453
454 ### <a name="Protections"></a> Protections
455
456 The evaluation of protections has been re-worked to make it more naturally understandable, and also fill a number of holes in the protection scheme, These holes meant that it was relatively easy to _deny_ access to a topic, but rather difficult to subsequently _restore_ access without either compromising other topics, or compromising old revisions.
457
458 When deciding whether to grant access, TWiki now evaluates the following rules in order (read from the top of the list; if the logic arrives at **PERMITTED** or **DENIED** that applies immediately and no more rules are applied). You need to read the rules bearing in mind that VIEW and CHANGE access may be granted/denied separately.
459
460 1. If the user is a [[super-user|Main/WebHome#SuperAdminGroup]]
461   - access is **PERMITTED**.
462 2. If DENYTOPIC is set to a list of wikinames
463   - people in the list will be **DENIED**.
464 3. If DENYTOPIC is set to _empty_ ( i.e. `Set DENYTOPIC =` )
465   - access is **PERMITTED** _i.e._ no-one is denied access to this topic
466 4. If ALLOWTOPIC is set
467   1. people in the list are **PERMITTED**
468   2. everyone else is **DENIED**
469 5. If DENYWEB is set to a list of wikiname
470   - people in the list are **DENIED** access
471 6. If ALLOWWEB is set to a list of wikinames
472   - people in the list will be **PERMITTED**
473   - everyone else will be **DENIED**
474 7. If you got this far, access is **PERMITTED**
475
476 In addition, permissions set on a specific revision of a topic now _always_ apply to that revision, even if access to the topic is relaxed in a later revision. This change was necessary to prevent accidentally permitting access to sensitive data in old revisions.
477
478 The major impact of this change is that WebPreferences topics shipped with earlier releases of TWiki will have excessively restrictive controls, as the default settings were:
479
480 - Set DENYWEBVIEW =
481 - Set ALLOWWEBVIEW =
482   - This will now _deny_ view access to everyone _not_ in the list (i.e. everyone except admins)
483 - Set DENYWEBCHANGE =
484 - Set ALLOWWEBCHANGE =
485   - This will now _deny_ change access to everyone _not_ in the list (i.e. everyone except admins)
486 - Set ALLOWTOPICCHANGE =
487   - This will now _deny_ change access to everyone _not_ in the list (i.e. everyone except admins)
488
489 The standard webs shipped with this release have these settings disabled. However you are likely to have inherited the old default settings in your user webs. The easiest way to deal with this is to simply insert a # sign in these settings; for example:
490
491 - #Set DENYWEBVIEW =
492 - #Set ALLOWWEBVIEW =
493 - _etc_
494
495 %RED%Note:%ENDCOLOR% For security reasons, the [[Trash|Trash/WebHome]] web is shipped with `ALLOWWEBVIEW` set to empty (so it is only viewable by admins).
496
497 #### <a name="Site Permissions Overview"></a> Site Permissions Overview
498
499 The [[SitePermissions]] topic gives you a quick view of the permissions on each web - i.e. it aggregates ALLOWWEB\* etc. into a handy table. It is also installed on TWiki.org as TWiki:TWiki.SitePermissions.
500
501 ### <a name="Frustrating Robots and Spammers"></a> Frustrating Robots and Spammers
502
503 Standard TWiki incorporates some simple measures to protect e-mail addresses and control the activities of benign robots. These should be enough to handle intranet requirements. Administrators of public (internet) sites are **strongly** recommended to investigate the TWiki:Plugins/BlackListPlugin.
504
505 ### <a name="New User Registration"></a> New User Registration
506
507 The new user registration process has been extensively reworked to improve usability and security of the registration process.
508
509 1. FirstName and LastName are recorded separately and tabulated. See [[UserListByLocation]]
510 2. Sends a e-mail that the user has to respond to; registration data is staged until this is done
511 3. Populates a form in the user topic, if there is one in the NewUserTemplate. If there is no form, then bullets are used, as in pre-Dakar TWiki.
512 4. Sends different e-mails to the WIKIWEBMASTER and the USER, with the users containing the password unless \{HidePasswdInRegistration\} is set.
513 5. There is now a mechanism for bulk registration, with callbacks for augmentation (e.g. from other sources).
514 6. Absorbed TWiki:Codev.ResetPasswordByEmail.
515 7. Obsoleted TWiki:Codev.InstallPassword
516
517 ### <a name="E-mail addresses"></a> E-mail addresses
518
519 E-mail addresses for new users are no longer stored in home topics. Instead, the password manager API has been extended to support storing e-mails.
520
521 The default password manager stores e-mails in the `.htpasswd` file - you can safely edit this file with a text editor to modify the info field that contains the e-mail addresses (the format of each line in this file is `<username>:<password>:<info>`, and TWiki expects the info field to be a ;-separated list of e-mail addresses). Password managers for other systems e.g. LDAP can esily be extended to support the new API. If the password manager does not have an e-mail address for a user, then TWiki will still look in the users' personal topic.
522
523 The script `tools/upgrade_emails.pl` can be used to extract e-mail addresses for existing TWiki users from personal topics, and add them to the password manager.
524
525 - You are strongly recommended to run this script if you are running a public site.
526 - It will not modify existing personal topics.
527 - The script will tell you if any users are found that don't have an e-mail.
528 - You can re-run the script as many times as you like; once the password manager has an e-mail for a user, the e-mail in their personal topic is ignored.
529
530 You should also advise all your registered users to make sure they have a valid e-mail. They can do this by logging in and visiting [[ChangeEmailAddress]].
531
532 ### <a name="Change notification support"></a> Change notification support
533
534 The old `mailnotify` script has been retired in favour of the MailerContrib. See [[MailerContrib]] for information about functional changes.
535
536 ### <a name="Site Changes Summary"></a> Site Changes Summary
537
538 The [[SiteChanges]] topic mimics TWiki.org's TWiki:Codev:WebChangesForAllWebs - i.e. it shows a [[WebChanges]] view across a whole site. It's name was chosen to parallel SiteMap; at some point you can expect the arrival of SiteStatistics too.
539
540 ### <a name="What&#39;s a Web"></a> What's a Web
541
542 Old versions of TWiki would consider all subdirectories of the TWiki data directory to be webs. This behaviour has changed; now only subdirectories that contain a web preferences topic (`WebPreferences.txt`) will be considered to be webs. This may result in directories that used to return search matches no longer doing so.
543
544 ### <a name="Disable script tags"></a> Disable &lt;script&gt; tags
545
546 In recognition of security concerns around &lt;script&gt; tags, the administrator has the choice whether to allow users to add script to topics or not. See the `{AllowInlineScript}` setting in the **Security** section of <code>[configure](http://www.dementia.org/twiki/configure)</code>.
547
548 ## <a name="Notes for _TWikiApplication Deve"></a> Notes for TWikiApplication Developers
549
550 ### <a name="Space/Tab conversion"></a> Space/Tab conversion
551
552 Previous TWiki versions would automatically convert three spaces at the start of lines to a tab when the topic was saved. This meant that the saved topic was _not_ the same as the edited topic, which could result in considerable confusion. This conversion has been disabled, and the saved topic is now exactly what you see in the editor. One impact of this change is that any add-on scripts you may have developed that rely on bulleted list lines starting with a tab will no longer work. They must be adapted to treat groups of three spaces and single tabs as equivalent.
553
554 ### <a name="Evaluation order of _TWikiVariab"></a> Evaluation order of TWikiVariables
555
556 In previous TWiki versions the evaluation order of `%VARIABLE%s` depended on where they were expanded in the code. The parser was somewhat crude, and could easily be confused when embedded variables (variables embedded in the parameters of other variables) were used.
557
558 The parser has been replaced in Dakar with a deterministic variable parser with predictable behaviour. Specifically, variables are now always evaluated left to right and inside out. For example, consider `%VAR2{ "%VAR1{ "%VAR0{ "params" }%" }%" }% %VAR3%`. Previously, the expansion order would have depended on the order of expressions in the code, so the expansion may have proceeded VAR3 - VAR0 - VAR2 - VAR1. If you were lucky, this was the intended order. In Dakar, the order is now guranteed to be VAR0 - VAR1 - VAR2 - VAR3 (i.e. inside out and left to right).
559
560 The main impact of this is that some TWikiApplications may cease to work if they have been written to take advantage of the old chaotic order. There is no way to predict which will work and which will fail, so you will have to deal with this on a case-by-case basis. In most cases TWikiApplication authors will have worked hard to do the "sensible thing" so instances of this problem should be rare.
561
562 Note that because the TWiki spec allows double quotes within double-quoted strings in certain variable parameters it has been impossible to make the parser 100% deterministic. There may still be pathological cases where the parser may fail. In these cases, consider how open and close curly brackets are matched up.
563
564 ### <a name="Encoding of form-field values"></a> Encoding of form-field values
565
566 The encoding used to escape characters in form-field values has had to change. The old encoding could very easily be confused by text strings in data values. Existing topics with the old encoding will still be loaded into TWiki as before, but if edited they will be saved with the new encoding. This should not affect you unless you have searches that look for the old encodings; specifically, the %\_G\_%, %\_Q\_%, and %\_P\_% character sequences. Any such searches will not work any more, and need to be converted to search for the new encoding. Assuming they are `regex` type searches, you can use `(%_G_%|%0A)` to match encoded newlines in field data in both old and new format topics, `(%_Q_%|%22)` to match quotes, and `(%_P_%|25)` for percent signs.
567
568 ### <a name="script tags in topics"></a> &lt;script&gt; tags in topics
569
570 Previous releases of TWiki would attempt to interpret the content of &lt;script&gt; tags in topics as TWiki formatting language, often resulting in non-functional scripts. This release protects script sections from expansion by TWiki. Note that this means that [[TWikiVariables]] will **not** be expanded in script tags - they are passed through _verbatim_.
571
572 In recognition of security concerns around &lt;script&gt; tags, the administrator has the choice whether to allow users to add script to topics or not. Check the setting of `{AllowInlineScript}` in <code>[configure](http://www.dementia.org/twiki/configure)</code> to see if it is allowed on your site. If not, script sections will simply disappear from topics.
573
574 ### <a name="verbatim tags in topics"></a> &lt;verbatim&gt; tags in topics
575
576 Previous releases required `verbatim` tags to be on their own line. TWiki can now deal with inline verbatim blocks such as
577
578     blah<verbatim>inside</verbatim>after
579
580 results in
581
582 blah
583
584     inside
585
586 after
587
588 **NOTE:** VARIABLES are still Set within verbatim tags (this is a historical peculiarity)
589
590 ### <a name="=ALLVARIABLES="></a> `ALLVARIABLES`
591
592 You can use `%ALLVARIABLES%` in a topic to get a dump of all variables set in that context. Invaluable for debugging those tricky TWikiApplications!
593
594 ### <a name="=IF="></a> `IF`
595
596 The new `%IF()%` variable defines simple conditional statements that are evaluated at view time. This allows you to include content conditionally based on environmental factors. See [[IfStatements]] for more information on usage.
597
598 ### <a name="New &lt;code&gt;$count(reg-exp)&lt;/code&gt; variable i"></a> New `$count(reg-exp)` variable in Formatted Search
599
600 This new variable for [[FormattedSearch]] returns the number of instances a specified [[RegularExpression]] occur in a topic. This is useful for such things as counting the number of comments on a page (assuming they are marked my a unique heading level).
601
602 ## <a name="Notes for Skin Developers"></a> Notes for Skin Developers
603
604 ### <a name="Skin search path"></a> Skin search path
605
606 Earlier releases of TWiki only allowed for a single skin, so customising a single template in a skin meant deriving a whole new skin. Dakar introduces the concept of a skin search path, which lets you combine skins additively. For example, you can customise just the view template by defining a new `view.mylocalskin.tmpl` and then setting
607
608 - `Set SKIN = mylocalskin,pattern`
609
610 Since you have defined a view template for `mylocalskin`, it will be picked up when you view a topic because `mylocalskin` is first on the search path. But you didn't define `edit.mylocalskin.tmpl`, so when you edit the next skin on the search path will be used instead (in this case `edit.pattern.tmpl`). You can put as many skins on the search path as you like.
611
612 As with older releases, setting SKIN (or the `skin` parameter in the URL) replaces the existing skin path setting. Dakar supports _extension_ of the path as well, using _covers_.
613
614 - `Set COVER = mylocalskin`
615
616 pushes a different skin to the front of the skin search path. There is also an equivalent `cover` URL parameter. For example, [[http://www.dementia.org/twiki/view/%WEB%/WhatIsWikiWiki?cover=print.pattern|%WEB%/WhatIsWikiWiki?cover=print.pattern]]. This gives you an extra level of flexibility when defining skins.
617
618 See [[TWikiSkins]] for more information.
619
620 ### <a name="Supporting web names that are _W"></a> Supporting web names that are WikiWords
621
622 Although web names have been [[permitted to be WikiWords|TWiki:Codev/WebNameAsWikiName]] since the TWiki:Codev.CairoRelease, the base templates have been [[fixed|TWiki:Codev/DefaultTemplatesSupportWebNameAsWikiWord]] for Dakar.
623
624 Skins should be upgraded if they have standalone `%WEB%` variables; only standalone `%WEB%` text that potentially could be turned into a link (because of a [[WikiWord]]) needs to be escaped. Same for `%MAINWEB%` and `%TWIKIWEB%`.
625
626 Examples:
627
628 - `%WEB%` -- needs to be escaped with `<nop>%WEB%`
629 - `(%WEB%)` -- needs to be escaped because of parenthesis
630 - `"%WEB%"` -- no need to escape, does not get linked
631 - `<b>%WEB%</b>` -- no need to escape, does not get linked
632 - `%WEB%.%TOPIC%` -- no need, is a `Web.TopicName`
633 - `(%WEB%.%TOPIC%)` -- no need, is a `Web.TopicName`
634
635 Basically, any prefix other then space and parenthesis needs to be looked at. `%WEB%` in a `%SEARCH%` should not be escaped.
636
637 ### <a name="Deprecation of %EDITTOPIC%"></a> Deprecation of %EDITTOPIC%
638
639 In Cairo release (and earlier) the only way to have an edit link that changed with the context was to use `%EDITTOPIC%`. This was only available in view templates, and had no flexibility in formatting. It was also impossible to disable other active links, such as Attach.
640
641 Dakar release includes new support for "context if" parameters to the `%TMPL:P%` construct. See [[TWikiTemplates]] for details. The default templates shipped with Dakar have been modified to use this support. %EDITTOPIC has been deprecated, though it is still available as a simple edit link, defined in [[TWikiPreferences]]. Skin authors are strongly recommended to replace this link with context-if conditionals.
642
643 ### <a name="Template Parameters"></a> Template Parameters
644
645 `%TMPL:P%` now accepts parameters. Values passed in these parameters will be expanded when the `%TMPL:DEF%` is instantiated. See [[TWikiTemplates]] for full details. (Remember, this happens at template expansion time, which is usually very early in the rendering process.)
646
647 ### <a name="HTTP and HTTPS"></a> HTTP and HTTPS
648
649 These two new TWikiVariables give access to the HTTP headers sent by your browser. For example, your browser says your browser is %HTTP:\{"User-Agent"\}% (this will be filled in if you are running Dakar).
650
651 ### <a name="QUERYSTRING"></a> QUERYSTRING
652
653 This new TWikiVariable gives access to the full query string from the URL sent to your browser. For example, for the URL `http://www.dementia.org/twiki/view/%WEB%/%TOPIC%?make=Reliant&model=Robin`, the query string is `?make=Reliant;model=Robin` (yes, the semicolon is correct!)
654
655 ## <a name="Notes for Plugin Developers"></a> Notes for Plugin Developers
656
657 ### <a name="Changes to variable parsing"></a> Changes to variable parsing
658
659 In earlier TWiki versions there was considerable confusion over the syntax and semantics of Preferences, TWiki Variables, and Plugin variables. The documentation suggested that all %VARIABLES% were equal, but in fact some were more equal than others.
660
661 The syntax and semantics of preferences and [[TWikiVariables]] has been made consistent. `%VARIABLE%` has been made semantically identical to `%VARIABLE()%`, so if you set a preference named `%VARIABLE%` it will automatically be instantiated in place of `%VARIABLE{}%`. This is an elegant solution in several ways: first, it allows an administrator to electively disable TWikiVariables, simply by defining an overriding preference. Second, it rationalises the semantics in line with the common syntax. Third, it allows a single parser to do all the work, allowing localised optimisation. Fourth, it prevents a plugin from accidentally kidnapping system [[TWikiVariables]] (while this can still be done by registering a tag handler, it's a much more explicit process). Fifth, the ground rules are set for a possible future extension to support parameterised [[TWikiVariables]] e.g.
662
663 - `Set CAR{make model accessory} = I drive %make% %model% with %accessory% in my dreams`
664
665 `%CAR{make="an Aston Martin" model="DB9" accessory="a gorgeous blonde"}%`
666
667 ### <a name="Internals"></a> Internals
668
669 A lot of the TWiki internals have changed. As a result, plugins that bypass the `TWiki::Func` API and call core functions directly are unlikely to work.
670
671 The restructuring of the code internals is such that there are no 1:1 equivalents for the old core functions. Only the TWiki::Func API is guaranteed to work.
672
673 You should convert your plugins to call the `TWiki::Func` API. If you have called unpublished functions that have no equivalent in `TWiki::Func`, then you may still be able to call the function via the TWiki "session" object, `$TWiki::Plugins::SESSION`. See the implementation of the `TWiki::Func` module for ideas on how to do this. However calling internals is **not** recommended, even using this new mechanism, as they are liable to change without prior notice.
674
675 ### <a name="Extensions to the Func API"></a> Extensions to the Func API
676
677 - The `TWiki::Func` API has been extended to expose a number of new core functions. Review [[TWikiFuncDotPm]] for details.
678 - The `TWiki::Meta` API, which was previously for internal core use only, has now been exposed and may be used in plugins. See [[TWikiMetaDotPm]] for full details.
679 - Plugins which observed the existing published API (TWiki::Func) should continue to work.
680
681 ## <a name="TWiki 4.0.1 Patch Release Detail"></a> TWiki 4.0.1 Patch Release Details
682
683 The following fixes have been addressed in this release:
684
685 ### <a name="TWiki 4.0.1 Fixes"></a> TWiki 4.0.1 Fixes
686
687 <table border="1" cellpadding="0" cellspacing="0">
688   <tr>
689     <td>[[BUGS/Item1597]]</td>
690     <td> configure shows text outside the text boxes - thanks KoenMartens </td>
691   </tr>
692   <tr>
693     <td>[[BUGS/Item1592]]</td>
694     <td> Whoops, deprecated syntax was both alive and documented, trying something else </td>
695   </tr>
696   <tr>
697     <td>[[BUGS/Item1592]]</td>
698     <td> Killing some never documented syntax, allowing for more flexibility in explicit external [[]]-style links </td>
699   </tr>
700   <tr>
701     <td>[[BUGS/Item1591]]</td>
702     <td> Friendly fallback added to meta-&gt;getParent() </td>
703   </tr>
704   <tr>
705     <td>[[BUGS/Item1591]]</td>
706     <td> small fix to parent search but bug remains </td>
707   </tr>
708   <tr>
709     <td>[[BUGS/Item1590]]</td>
710     <td> Don't loose old TOPICPARENT on save </td>
711   </tr>
712   <tr>
713     <td>[[BUGS/Item1589]]</td>
714     <td> Don't report cfg-files as non-executable </td>
715   </tr>
716   <tr>
717     <td>[[BUGS/Item1587]]</td>
718     <td> Including upgrade_emails.pl in distro </td>
719   </tr>
720   <tr>
721     <td>[[BUGS/Item1583]]</td>
722     <td> Cairo compatibility for rev argument syntax </td>
723   </tr>
724   <tr>
725     <td>[[BUGS/Item1579]]</td>
726     <td> corrected spanish access key. </td>
727   </tr>
728   <tr>
729     <td>[[BUGS/Item1574]]</td>
730     <td> Net.pm: Tidying up e-mail split </td>
731   </tr>
732   <tr>
733     <td>[[BUGS/Item1574]]</td>
734     <td> Net.pm: Split only on , not on spaces when sending e-mail </td>
735   </tr>
736   <tr>
737     <td>[[BUGS/Item1572]]</td>
738     <td> made optional - thus removing the horrible slowdown it causes from the main loop </td>
739   </tr>
740   <tr>
741     <td>[[BUGS/Item663]]</td>
742     <td> Fix %MAINWEB%.TWikiPreferences to %LOCALSITEPREFS%; remove %TWIKIWEB% prefix where not needed </td>
743   </tr>
744   <tr>
745     <td>[[BUGS/Item663]]</td>
746     <td> TWiki.org doc merge: GNU patch requirement </td>
747   </tr>
748   <tr>
749     <td>[[BUGS/Item240]]</td>
750     <td> layout of more screen; added line "Current parent" with 2 searches inside IF - must be a more efficient way but how? </td>
751   </tr>
752   <tr>
753     <td>[[BUGS/Item240]]</td>
754     <td> just to be sure: replacing MAKETEXT text with English, to be translated later. </td>
755   </tr>
756   <tr>
757     <td>[[BUGS/Item240]]</td>
758     <td> removes unwanted left border in non-view pages </td>
759   </tr>
760   <tr>
761     <td> Item000 </td>
762     <td> replaced 9 tabs by 9 x 3 spaces </td>
763   </tr>
764   <tr>
765     <td> Item000 </td>
766     <td> Typo in ClassicSkin.pm </td>
767   </tr>
768   <tr>
769     <td> Item000 </td>
770     <td> Committed a whole lot of local setup by accident, reverting - sorry folks </td>
771   </tr>
772   <tr>
773     <td> Item000 </td>
774     <td> Typo fix in Search.pm </td>
775   </tr>
776   <tr>
777     <td> Item0 </td>
778     <td> Untainting the tainted title </td>
779   </tr>
780 </table>
781
782 The 4.0.1 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TWikiRelease04x00> revision **8740**.
783
784 ## <a name="TWiki 4.0.2 Patch Release Detail"></a> TWiki 4.0.2 Patch Release Details
785
786 The following fixes and minor enhancements have been addressed in this release:
787
788 ### <a name="TWiki 4.0.2 Fixes"></a> TWiki 4.0.2 Fixes
789
790 <table border="1" cellpadding="0" cellspacing="0">
791   <tr>
792     <td>[[BUGS/Item2004]]</td>
793     <td> Syntax error in DelimitedFile.pm </td>
794   </tr>
795   <tr>
796     <td>[[BUGS/Item1983]]</td>
797     <td> Search box bust when searching for WikiWords </td>
798   </tr>
799   <tr>
800     <td>[[BUGS/Item1978]]</td>
801     <td> Form.pm fails when the name field is [[Topic][fieldname]] for controls </td>
802   </tr>
803   <tr>
804     <td>[[BUGS/Item1971]]</td>
805     <td> Not possible to INCLUDE javascript from external sites </td>
806   </tr>
807   <tr>
808     <td>[[BUGS/Item1963]]</td>
809     <td> "public" in WEBLIST should include all webs if the user is an admin </td>
810   </tr>
811   <tr>
812     <td>[[BUGS/Item1961]]</td>
813     <td> LANGUAGES variable very slow </td>
814   </tr>
815   <tr>
816     <td>[[BUGS/Item1958]]</td>
817     <td> RSS feed mentions the TWikiAdministrator as creator </td>
818   </tr>
819   <tr>
820     <td>[[BUGS/Item1951]]</td>
821     <td> Excluding topic from SEARCH does not exclude WebHome (Doc improvement) </td>
822   </tr>
823   <tr>
824     <td>[[BUGS/Item1950]]</td>
825     <td> Denial of Service attack very easy on both Cairo and Dakar </td>
826   </tr>
827   <tr>
828     <td>[[BUGS/Item1944]]</td>
829     <td> Add Comment to Configure Page - AuthScripts section </td>
830   </tr>
831   <tr>
832     <td>[[BUGS/Item1937]]</td>
833     <td> rename script doesn't honour access control restrictions </td>
834   </tr>
835   <tr>
836     <td>[[BUGS/Item1935]]</td>
837     <td> preview script ignores access control settings </td>
838   </tr>
839   <tr>
840     <td>[[BUGS/Item1925]]</td>
841     <td> rdiff and changes scripts ignore access settings </td>
842   </tr>
843   <tr>
844     <td>[[BUGS/Item1921]]</td>
845     <td> Merging 3part duplicates the text screwing up the page </td>
846   </tr>
847   <tr>
848     <td>[[BUGS/Item1920]]</td>
849     <td> Hide form twisty gives poor usability for TWiki apps that use the form </td>
850   </tr>
851   <tr>
852     <td>[[BUGS/Item1912]]</td>
853     <td> 3-way merge doesn't call the plugins merge handler </td>
854   </tr>
855   <tr>
856     <td>[[BUGS/Item1911]]</td>
857     <td> Small typo correction in MANIFEST for upgrade_emails.pl </td>
858   </tr>
859   <tr>
860     <td>[[BUGS/Item1909]]</td>
861     <td> TWiki.pot should be included in distribution </td>
862   </tr>
863   <tr>
864     <td>[[BUGS/Item1903]]</td>
865     <td> Special chars not escaped in registration </td>
866   </tr>
867   <tr>
868     <td>[[BUGS/Item1902]]</td>
869     <td> New chars to escape during registration </td>
870   </tr>
871   <tr>
872     <td>[[BUGS/Item1900]]</td>
873     <td> Compatibility issue: variables only work when upper case. </td>
874   </tr>
875   <tr>
876     <td>[[BUGS/Item1899]]</td>
877     <td> statistics ignore pages with dashes and underscores </td>
878   </tr>
879   <tr>
880     <td>[[BUGS/Item1898]]</td>
881     <td> configure is unhelpful if rcs is not installed </td>
882   </tr>
883   <tr>
884     <td>[[BUGS/Item1897]]</td>
885     <td> Simultaneous edit feature is not at all reliable. </td>
886   </tr>
887   <tr>
888     <td>[[BUGS/Item1896]]</td>
889     <td> Skin fallback not working </td>
890   </tr>
891   <tr>
892     <td>[[BUGS/Item1895]]</td>
893     <td> $topic not substituted right in INCLUDEWARNING </td>
894   </tr>
895   <tr>
896     <td>[[BUGS/Item1882]]</td>
897     <td> "Plural to singular" unmarked breaks documentation </td>
898   </tr>
899   <tr>
900     <td>[[BUGS/Item1878]]</td>
901     <td> FORMLIST in ChangeForm.pm generates invalid html </td>
902   </tr>
903   <tr>
904     <td>[[BUGS/Item1871]]</td>
905     <td> Attachment table broken with version history </td>
906   </tr>
907   <tr>
908     <td>[[BUGS/Item1864]]</td>
909     <td> "Modify search" link in search results not working </td>
910   </tr>
911   <tr>
912     <td>[[BUGS/Item1863]]</td>
913     <td> missing oopslanguagechanged template </td>
914   </tr>
915   <tr>
916     <td>[[BUGS/Item1853]]</td>
917     <td> Sandbox doesn't report full errors for command execution on Windows </td>
918   </tr>
919   <tr>
920     <td>[[BUGS/Item1850]]</td>
921     <td> checkPassword not checkPasswd </td>
922   </tr>
923   <tr>
924     <td>[[BUGS/Item1849]]</td>
925     <td> Typo in code: checkPassword not checkPasswd, so remove user does not work </td>
926   </tr>
927   <tr>
928     <td>[[BUGS/Item1848]]</td>
929     <td> .htaccess.txt internal documentation unclear </td>
930   </tr>
931   <tr>
932     <td>[[BUGS/Item1840]]</td>
933     <td> Inadequate upgrade documentation </td>
934   </tr>
935   <tr>
936     <td>[[BUGS/Item1838]]</td>
937     <td> commonTagHandler garbles square bracket links in WebTopBar </td>
938   </tr>
939   <tr>
940     <td>[[BUGS/Item1830]]</td>
941     <td> Rename web does not work </td>
942   </tr>
943   <tr>
944     <td>[[BUGS/Item1829]]</td>
945     <td> the templates for SEARCH are broken </td>
946   </tr>
947   <tr>
948     <td>[[BUGS/Item1820]]</td>
949     <td> Reproducible case of not being able to log out </td>
950   </tr>
951   <tr>
952     <td>[[BUGS/Item1819]]</td>
953     <td> tainted username prevents exec() </td>
954   </tr>
955   <tr>
956     <td>[[BUGS/Item1803]]</td>
957     <td> Sorting bugs by merge field causes an internal error </td>
958   </tr>
959   <tr>
960     <td>[[BUGS/Item1789]]</td>
961     <td> User::isAdmin can create an empty SuperAdminGroup </td>
962   </tr>
963   <tr>
964     <td>[[BUGS/Item1788]]</td>
965     <td> Formatted search does not return values that are zero </td>
966   </tr>
967   <tr>
968     <td>[[BUGS/Item1787]]</td>
969     <td> I18N: Translation updates for 4.0.2 / new PatternSkin </td>
970   </tr>
971   <tr>
972     <td>[[BUGS/Item1781]]</td>
973     <td> Allow admin users to change passwords and mail addresses </td>
974   </tr>
975   <tr>
976     <td>[[BUGS/Item1778]]</td>
977     <td> Registration gives strange TWiki vars in user topic </td>
978   </tr>
979   <tr>
980     <td>[[BUGS/Item1771]]</td>
981     <td> Error message 'Oh dear' in warnyyyymm.txt isn't helpful </td>
982   </tr>
983   <tr>
984     <td>[[BUGS/Item1743]]</td>
985     <td> Attachment sort order is cockeyed </td>
986   </tr>
987   <tr>
988     <td>[[BUGS/Item1729]]</td>
989     <td> Better localisation of variable in Net.pm </td>
990   </tr>
991   <tr>
992     <td>[[BUGS/Item1724]]</td>
993     <td> Attach: FILENAME AND FILEPATH not showing the file name with non-alpha characters </td>
994   </tr>
995   <tr>
996     <td>[[BUGS/Item1720]]</td>
997     <td> Save script fails on old topic when sole argument is topicparent and there's a mandatory field in the form. </td>
998   </tr>
999   <tr>
1000     <td>[[BUGS/Item1714]]</td>
1001     <td> quotes in attachment comment break manage form </td>
1002   </tr>
1003   <tr>
1004     <td>[[BUGS/Item1687]]</td>
1005     <td> Must set TWiki::Plugins::SESSION before invoking registered tag handler </td>
1006   </tr>
1007   <tr>
1008     <td>[[BUGS/Item1677]]</td>
1009     <td> STARTSECTION/ENDSECTION variables being stripped from templates </td>
1010   </tr>
1011   <tr>
1012     <td>[[BUGS/Item1672]]</td>
1013     <td> Change PatternSkin to use non-table based layout </td>
1014   </tr>
1015   <tr>
1016     <td>[[BUGS/Item1657]]</td>
1017     <td> RenderListPlugin broken. The case where you draw a tree view does not work </td>
1018   </tr>
1019   <tr>
1020     <td>[[BUGS/Item1654]]</td>
1021     <td> mailnotify does not enter the command_line context </td>
1022   </tr>
1023   <tr>
1024     <td>[[BUGS/Item1652]]</td>
1025     <td> REVINFO{$time} should display time, not date - time </td>
1026   </tr>
1027   <tr>
1028     <td>[[BUGS/Item1649]]</td>
1029     <td> TWikiJavascripts prototype.js causes crash on Internet Explorer. </td>
1030   </tr>
1031   <tr>
1032     <td>[[BUGS/Item1645]]</td>
1033     <td> Someweb.WebTopicEditTemplate topic does not exist </td>
1034   </tr>
1035   <tr>
1036     <td>[[BUGS/Item1636]]</td>
1037     <td> ResetPasswd deletes email entry in .htpasswd </td>
1038   </tr>
1039   <tr>
1040     <td>[[BUGS/Item1634]]</td>
1041     <td> Pattern Skin in Dakar: verbatim text and large images makes everything wider than the screen. </td>
1042   </tr>
1043   <tr>
1044     <td>[[BUGS/Item1624]]</td>
1045     <td> FORMFIELD variable always expands to value of most recent topic revision </td>
1046   </tr>
1047   <tr>
1048     <td>[[BUGS/Item1623]]</td>
1049     <td> PatternSkin: WebLeftBar border margin </td>
1050   </tr>
1051   <tr>
1052     <td>[[BUGS/Item1621]]</td>
1053     <td> beforeSaveHandler not functioning correctly </td>
1054   </tr>
1055   <tr>
1056     <td>[[BUGS/Item1619]]</td>
1057     <td> Label form field content destroyed </td>
1058   </tr>
1059   <tr>
1060     <td>[[BUGS/Item1616]]</td>
1061     <td> inaccurate password_changed message </td>
1062   </tr>
1063   <tr>
1064     <td>[[BUGS/Item1611]]</td>
1065     <td> Generic doc work for TWiki 4.0.2 </td>
1066   </tr>
1067   <tr>
1068     <td>[[BUGS/Item1610]]</td>
1069     <td> Configure script corrupts NameFilter (Unmatched Bracket in Regex) </td>
1070   </tr>
1071   <tr>
1072     <td>[[BUGS/Item1608]]</td>
1073     <td> TOC{"MyTopic" web="MyWeb" } no longer forwards </td>
1074   </tr>
1075   <tr>
1076     <td>[[BUGS/Item1599]]</td>
1077     <td> "Upgrading a Beta" documentation errors </td>
1078   </tr>
1079   <tr>
1080     <td>[[BUGS/Item1595]]</td>
1081     <td> WebTopicCreator disallows topic names containing numbers </td>
1082   </tr>
1083   <tr>
1084     <td>[[BUGS/Item1587]]</td>
1085     <td> upgrade_emails.pl script missing in TWiki 4 distro </td>
1086   </tr>
1087   <tr>
1088     <td>[[BUGS/Item1583]]</td>
1089     <td> INCLUDE of a topic of a specific revision is not backwards compatible. </td>
1090   </tr>
1091   <tr>
1092     <td>[[BUGS/Item1579]]</td>
1093     <td> Incorrect properties in the Discard button in the action bar for the spanish translation </td>
1094   </tr>
1095   <tr>
1096     <td>[[BUGS/Item1574]]</td>
1097     <td> Registration process tries to send extra emails </td>
1098   </tr>
1099   <tr>
1100     <td>[[BUGS/Item1566]]</td>
1101     <td> DakarReleaseNotes.html and TWikiDocumentation.html not included in distribution of TWiki4.0 </td>
1102   </tr>
1103   <tr>
1104     <td>[[BUGS/Item1553]]</td>
1105     <td> Clean up "oops attention: merge_notice" </td>
1106   </tr>
1107   <tr>
1108     <td>[[BUGS/Item1515]]</td>
1109     <td> Localise formatting help </td>
1110   </tr>
1111   <tr>
1112     <td>[[BUGS/Item1430]]</td>
1113     <td> inconsistent width constraints on topbar and content area </td>
1114   </tr>
1115 </table>
1116
1117 ### <a name="TWiki 4.0.2 Enhancements"></a> TWiki 4.0.2 Enhancements
1118
1119 <table border="1" cellpadding="0" cellspacing="0">
1120   <tr>
1121     <td>[[BUGS/Item1964]]</td>
1122     <td> Configurable user homepage layout </td>
1123   </tr>
1124   <tr>
1125     <td>[[BUGS/Item1960]]</td>
1126     <td> WebRss lacks search options </td>
1127   </tr>
1128   <tr>
1129     <td>[[BUGS/Item1956]]</td>
1130     <td> Cleaned up Plugins.EmptyPlugin </td>
1131   </tr>
1132   <tr>
1133     <td>[[BUGS/Item1926]]</td>
1134     <td> Usability: Add tabindex + setfocus to template login form in TWiki.PatternSkin </td>
1135   </tr>
1136   <tr>
1137     <td>[[BUGS/Item1801]]</td>
1138     <td> Improved doc </td>
1139   </tr>
1140   <tr>
1141     <td>[[BUGS/Item1728]]</td>
1142     <td> increase security by defaulting "send password" in email off </td>
1143   </tr>
1144   <tr>
1145     <td>[[BUGS/Item1689]]</td>
1146     <td> Add more colors for text ink in Plugins.WysiwygPlugin </td>
1147   </tr>
1148   <tr>
1149     <td>[[BUGS/Item1148]]</td>
1150     <td> Consistent buttons in edit and editsettings </td>
1151   </tr>
1152   <tr>
1153     <td>[[BUGS/Item1147]]</td>
1154     <td> "Raw view" should turn into "Normal View" in raw mode </td>
1155   </tr>
1156   <tr>
1157     <td>[[BUGS/Item1146]]</td>
1158     <td> Two "Create" buttons </td>
1159   </tr>
1160 </table>
1161
1162 The 4.0.2 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TWikiRelease04x00> revision **9626**.
1163
1164 ## <a name="TWiki 4.0.3 Patch Release Detail"></a> TWiki 4.0.3 Patch Release Details
1165
1166 The following fixes and minor enhancements have been addressed in this release:
1167
1168 ### <a name="TWiki 4.0.3 Fixes"></a> TWiki 4.0.3 Fixes
1169
1170 <table border="1" cellpadding="0" cellspacing="0">
1171   <tr>
1172     <td>[[BUGS/Item668]]</td>
1173     <td> _default web gives include error for WebLeftBar but the topic does exist </td>
1174   </tr>
1175   <tr>
1176     <td>[[BUGS/Item444]]</td>
1177     <td> oops upload message with empty file is not intelligent </td>
1178   </tr>
1179   <tr>
1180     <td>[[BUGS/Item2530]]</td>
1181     <td> Prevent infinite recursion in TMPL:INCLUDE when including generic templates </td>
1182   </tr>
1183   <tr>
1184     <td>[[BUGS/Item2528]]</td>
1185     <td> Support for shortest view URLs </td>
1186   </tr>
1187   <tr>
1188     <td>[[BUGS/Item2524]]</td>
1189     <td> Make templates independent on TablePlugin </td>
1190   </tr>
1191   <tr>
1192     <td>[[BUGS/Item2509]]</td>
1193     <td> Render::getRenderedVersion converts translation token </td>
1194   </tr>
1195   <tr>
1196     <td>[[BUGS/Item2487]]</td>
1197     <td> Re-introducing attachment table list count </td>
1198   </tr>
1199   <tr>
1200     <td>[[BUGS/Item2481]]</td>
1201     <td> Need a configure data type to select a pluggable class (like TWiki::Store::*) </td>
1202   </tr>
1203   <tr>
1204     <td>[[BUGS/Item2476]]</td>
1205     <td> Topic action buttons shown with search result </td>
1206   </tr>
1207   <tr>
1208     <td>[[BUGS/Item2472]]</td>
1209     <td> Get user web name from config and not from registration form </td>
1210   </tr>
1211   <tr>
1212     <td>[[BUGS/Item2469]]</td>
1213     <td> TWikiAdminGroup definition topic must be called TWikiAdminGroup (not configurable) </td>
1214   </tr>
1215   <tr>
1216     <td>[[BUGS/Item2467]]</td>
1217     <td> Non-existing abbreviations in other than current web have web part stripped (AAA.BBB.FFF renders as FFF) </td>
1218   </tr>
1219   <tr>
1220     <td>[[BUGS/Item2464]]</td>
1221     <td> Definition of a group always requires "Group" in the group name </td>
1222   </tr>
1223   <tr>
1224     <td>[[BUGS/Item2463]]</td>
1225     <td> rdiff should show HTML comments </td>
1226   </tr>
1227   <tr>
1228     <td>[[BUGS/Item2441]]</td>
1229     <td> Func::getWikiToolName documentation is incorrect </td>
1230   </tr>
1231   <tr>
1232     <td>[[BUGS/Item2439]]</td>
1233     <td> Rename TWikiRelease04x00x00.html to TWikiRelease04x00.html </td>
1234   </tr>
1235   <tr>
1236     <td>[[BUGS/Item2436]]</td>
1237     <td> PatternSkin does not support PAGEBGCOLOR </td>
1238   </tr>
1239   <tr>
1240     <td>[[BUGS/Item2427]]</td>
1241     <td> viewfile delivers .tgz files as text (wrong mime type) </td>
1242   </tr>
1243   <tr>
1244     <td>[[BUGS/Item2426]]</td>
1245     <td> ICONTOPIC variable: Incorrect value deadlocks topic (no edit possible) </td>
1246   </tr>
1247   <tr>
1248     <td>[[BUGS/Item2422]]</td>
1249     <td> Inconsistent LocalSite.cfg.txt settings </td>
1250   </tr>
1251   <tr>
1252     <td>[[BUGS/Item2421]]</td>
1253     <td> Rename: Referrer topics need to be linked explicit </td>
1254   </tr>
1255   <tr>
1256     <td>[[BUGS/Item2409]]</td>
1257     <td> Form field checkbox option lost on topic edit </td>
1258   </tr>
1259   <tr>
1260     <td>[[BUGS/Item2402]]</td>
1261     <td> Sandbox not aware of I18N for user names </td>
1262   </tr>
1263   <tr>
1264     <td>[[BUGS/Item2399]]</td>
1265     <td> statistics does not like date variable sent to it because its tainted </td>
1266   </tr>
1267   <tr>
1268     <td>[[BUGS/Item2395]]</td>
1269     <td> Always show e-mail addresses to admins (USERINFO / HideUserDetails setting) </td>
1270   </tr>
1271   <tr>
1272     <td>[[BUGS/Item2394]]</td>
1273     <td> Allow registration without a running e-mail service (error during registration using TWiki::Net::_sendEmailBySendmail) </td>
1274   </tr>
1275   <tr>
1276     <td>[[BUGS/Item2390]]</td>
1277     <td> beforeAttachmentSaveHandler is broken on Solaris and RedHat </td>
1278   </tr>
1279   <tr>
1280     <td>[[BUGS/Item2380]]</td>
1281     <td> Logins / logouts with template login does not work with I18N topic names </td>
1282   </tr>
1283   <tr>
1284     <td>[[BUGS/Item2379]]</td>
1285     <td> Inconsistent meta data in registration </td>
1286   </tr>
1287   <tr>
1288     <td>[[BUGS/Item2369]]</td>
1289     <td> WIKIUSERNAME incorrectly expanded </td>
1290   </tr>
1291   <tr>
1292     <td>[[BUGS/Item2365]]</td>
1293     <td> Email address handling for registration and in users homepage is confusing and not working </td>
1294   </tr>
1295   <tr>
1296     <td>[[BUGS/Item2356]]</td>
1297     <td> in sequential rdiff a changed region is classified as twikiDiffAdd* </td>
1298   </tr>
1299   <tr>
1300     <td>[[BUGS/Item2353]]</td>
1301     <td> Cannot lock out re-registration by using htpasswd file anymore </td>
1302   </tr>
1303   <tr>
1304     <td>[[BUGS/Item2352]]</td>
1305     <td> Support secret values in configure (display stars for passwords) </td>
1306   </tr>
1307   <tr>
1308     <td>[[BUGS/Item2347]]</td>
1309     <td> Statistics without params updates only Main web </td>
1310   </tr>
1311   <tr>
1312     <td>[[BUGS/Item2339]]</td>
1313     <td> Unable to cleanly turn off WEBHEADERART completely causing unexpected major problems </td>
1314   </tr>
1315   <tr>
1316     <td>[[BUGS/Item2338]]</td>
1317     <td> Improve doc on session vars to preclude override of perms </td>
1318   </tr>
1319   <tr>
1320     <td>[[BUGS/Item2336]]</td>
1321     <td> Using htpasswd on the command line wipes out email address in .htpasswd file </td>
1322   </tr>
1323   <tr>
1324     <td>[[BUGS/Item2333]]</td>
1325     <td> TWiki::Func::readAttachment my line shows wrong parameters </td>
1326   </tr>
1327   <tr>
1328     <td>[[BUGS/Item2332]]</td>
1329     <td> GoodStyle talks about "Initials"; obsolete </td>
1330   </tr>
1331   <tr>
1332     <td>[[BUGS/Item2331]]</td>
1333     <td> Calling a speedy-fied view cgi from the commandline breaks template login </td>
1334   </tr>
1335   <tr>
1336     <td>[[BUGS/Item2327]]</td>
1337     <td> TWiki on Apache 2.0 hangs (Diab's TWikiOnApache2dot0Hangs patch) </td>
1338   </tr>
1339   <tr>
1340     <td>[[BUGS/Item2324]]</td>
1341     <td> PatternSkin menu layout issue with MS Internet Explorer 7 </td>
1342   </tr>
1343   <tr>
1344     <td>[[BUGS/Item2322]]</td>
1345     <td> Comment box should have ability to be disabled by skin template </td>
1346   </tr>
1347   <tr>
1348     <td>[[BUGS/Item2321]]</td>
1349     <td> Performance improvements to Users.pm implementation (large user bases) </td>
1350   </tr>
1351   <tr>
1352     <td>[[BUGS/Item2318]]</td>
1353     <td> Links in square brackets breaks if there is a space in front of chars like - and ( </td>
1354   </tr>
1355   <tr>
1356     <td>[[BUGS/Item2317]]</td>
1357     <td> ChangePassword confirms change without password-handler </td>
1358   </tr>
1359   <tr>
1360     <td>[[BUGS/Item2315]]</td>
1361     <td> Template file permissions more restrictive in tgz dist </td>
1362   </tr>
1363   <tr>
1364     <td>[[BUGS/Item2309]]</td>
1365     <td> Prevent change password to empty string (add MinPasswordLength configuration option) </td>
1366   </tr>
1367   <tr>
1368     <td>[[BUGS/Item2302]]</td>
1369     <td> Restore Using Forms for Settings Feature </td>
1370   </tr>
1371   <tr>
1372     <td>[[BUGS/Item2298]]</td>
1373     <td> TWiki::Data::DelimitedFile is not as robust as it could be </td>
1374   </tr>
1375   <tr>
1376     <td>[[BUGS/Item2297]]</td>
1377     <td> Lock down TWiki.TWikiPreferences to admin group </td>
1378   </tr>
1379   <tr>
1380     <td>[[BUGS/Item2293]]</td>
1381     <td> Registration fails if no mail available </td>
1382   </tr>
1383   <tr>
1384     <td>[[BUGS/Item2292]]</td>
1385     <td> SMTP mail fails if the server requires auth </td>
1386   </tr>
1387   <tr>
1388     <td>[[BUGS/Item2287]]</td>
1389     <td> When printing a view page, the print style is not called </td>
1390   </tr>
1391   <tr>
1392     <td>[[BUGS/Item2286]]</td>
1393     <td> When you move an attachment the rename screen shows all topics that refers to the topic name </td>
1394   </tr>
1395   <tr>
1396     <td>[[BUGS/Item2278]]</td>
1397     <td> userToWikiName broken </td>
1398   </tr>
1399   <tr>
1400     <td>[[BUGS/Item2274]]</td>
1401     <td> I18N: Non US-ASCII chars in usernames breaks groups </td>
1402   </tr>
1403   <tr>
1404     <td>[[BUGS/Item2271]]</td>
1405     <td> Cannot "put back" a moved non-wikiword topic </td>
1406   </tr>
1407   <tr>
1408     <td>[[BUGS/Item2261]]</td>
1409     <td> Error in Apache log due to TWikiWebPreferences (File does not exist / ATTACHEDFILELINKFORMAT preference) </td>
1410   </tr>
1411   <tr>
1412     <td>[[BUGS/Item2259]]</td>
1413     <td> TWiki::UI::Save::buildNewTopic does not treat onlywikiname as a Boolean </td>
1414   </tr>
1415   <tr>
1416     <td>[[BUGS/Item2247]]</td>
1417     <td> Unclosed DIV in viewprint.pattern.tmpl </td>
1418   </tr>
1419   <tr>
1420     <td>[[BUGS/Item2244]]</td>
1421     <td> Documented METASEARCH parameter defaults are not the actual defaults </td>
1422   </tr>
1423   <tr>
1424     <td>[[BUGS/Item2234]]</td>
1425     <td> natlogon broken due to recent changes in Client.pm </td>
1426   </tr>
1427   <tr>
1428     <td>[[BUGS/Item2227]]</td>
1429     <td> PatternSkin CSS updates for IE 7 </td>
1430   </tr>
1431   <tr>
1432     <td>[[BUGS/Item2226]]</td>
1433     <td> When you delete an attachment the rename screen shows all topics that refers to the topic name </td>
1434   </tr>
1435   <tr>
1436     <td>[[BUGS/Item2225]]</td>
1437     <td> Attachments are being named the full path name instead of the filename only </td>
1438   </tr>
1439   <tr>
1440     <td>[[BUGS/Item2223]]</td>
1441     <td> Empty textarea generated in raw mode (VIEW_TEMPLATE issue) </td>
1442   </tr>
1443   <tr>
1444     <td>[[BUGS/Item2214]]</td>
1445     <td> WebTopicCreator not stripping some disallowed characters </td>
1446   </tr>
1447   <tr>
1448     <td>[[BUGS/Item2186]]</td>
1449     <td> TWiki.SiteChanges shows oldest (not latest) changes </td>
1450   </tr>
1451   <tr>
1452     <td>[[BUGS/Item2163]]</td>
1453     <td> Groups should be defined in UsersWebName only (performance improvement) </td>
1454   </tr>
1455   <tr>
1456     <td>[[BUGS/Item2158]]</td>
1457     <td> TWiki leaks memory - mod_perl processes continually grow </td>
1458   </tr>
1459   <tr>
1460     <td>[[BUGS/Item2157]]</td>
1461     <td> Rendering of links containing periods does not work properly </td>
1462   </tr>
1463   <tr>
1464     <td>[[BUGS/Item2151]]</td>
1465     <td> Delete usecase broken in PatternSkin </td>
1466   </tr>
1467   <tr>
1468     <td>[[BUGS/Item2142]]</td>
1469     <td> Add option to write email into user topic </td>
1470   </tr>
1471   <tr>
1472     <td>[[BUGS/Item2141]]</td>
1473     <td> Error.pm not in sync with CPAN state </td>
1474   </tr>
1475   <tr>
1476     <td>[[BUGS/Item2140]]</td>
1477     <td> AUTHORS missing translators' credits </td>
1478   </tr>
1479   <tr>
1480     <td>[[BUGS/Item2133]]</td>
1481     <td> Editform templates are missing some save parameters (templatetopic and text) </td>
1482   </tr>
1483   <tr>
1484     <td>[[BUGS/Item2126]]</td>
1485     <td> Bulk register shouldn't change passwords of existing users </td>
1486   </tr>
1487   <tr>
1488     <td>[[BUGS/Item2116]]</td>
1489     <td> I18N: updated translations for TWiki 4.0.3 </td>
1490   </tr>
1491   <tr>
1492     <td>[[BUGS/Item2109]]</td>
1493     <td> Add css classes to PreferencesPlugin buttons </td>
1494   </tr>
1495   <tr>
1496     <td>[[BUGS/Item2105]]</td>
1497     <td> A form field defined as [[Main/Topic]] assumes that the topic is in the same web as the form </td>
1498   </tr>
1499   <tr>
1500     <td>[[BUGS/Item2102]]</td>
1501     <td> Clicking Upload without choosing a file gives error </td>
1502   </tr>
1503   <tr>
1504     <td>[[BUGS/Item2097]]</td>
1505     <td> Plugin API / Store.pm: beforeAttachmentSaveHandler broken </td>
1506   </tr>
1507   <tr>
1508     <td>[[BUGS/Item2096]]</td>
1509     <td> New topic missing from notification when renamed </td>
1510   </tr>
1511   <tr>
1512     <td>[[BUGS/Item2090]]</td>
1513     <td> Default values for fields not picked up in new form (TWIKI4 only) </td>
1514   </tr>
1515   <tr>
1516     <td>[[BUGS/Item2088]]</td>
1517     <td> PatternSkin MANIFEST is missing PatternSkin.pm </td>
1518   </tr>
1519   <tr>
1520     <td>[[BUGS/Item2057]]</td>
1521     <td> TMPL:P parameters broken </td>
1522   </tr>
1523   <tr>
1524     <td>[[BUGS/Item2054]]</td>
1525     <td> JSCalendarContrib only works with IE in PatternSkin </td>
1526   </tr>
1527   <tr>
1528     <td>[[BUGS/Item2050]]</td>
1529     <td> Easier overriding of PatternSkin </td>
1530   </tr>
1531   <tr>
1532     <td>[[BUGS/Item2048]]</td>
1533     <td> Mailto links written as <a href="mailto:address">mailto:address</a> causes flooding with warning messages about uninitialized value </td>
1534   </tr>
1535   <tr>
1536     <td>[[BUGS/Item2032]]</td>
1537     <td> Some UTF8 characters in form values broken (CGI.pm interaction) </td>
1538   </tr>
1539   <tr>
1540     <td>[[BUGS/Item2029]]</td>
1541     <td> Build script: New topics added to distribution are not versioned correctly </td>
1542   </tr>
1543   <tr>
1544     <td>[[BUGS/Item2019]]</td>
1545     <td> Add tracing to Client.pm (login scenarios) </td>
1546   </tr>
1547   <tr>
1548     <td>[[BUGS/Item2012]]</td>
1549     <td> Break RCS locks on topics automatically when saving (Cairo upgrade issue) </td>
1550   </tr>
1551   <tr>
1552     <td>[[BUGS/Item2010]]</td>
1553     <td> Email address in the email field for the user is not turned into a link </td>
1554   </tr>
1555   <tr>
1556     <td>[[BUGS/Item2009]]</td>
1557     <td> Email addresses are not fully padded with the NOSPAM </td>
1558   </tr>
1559   <tr>
1560     <td>[[BUGS/Item2003]]</td>
1561     <td> lib/CPAN/lib/Error.pm has debugging print enabled </td>
1562   </tr>
1563   <tr>
1564     <td>[[BUGS/Item1989]]</td>
1565     <td> Latest CGI::Session is broken </td>
1566   </tr>
1567   <tr>
1568     <td>[[BUGS/Item1982]]</td>
1569     <td> Sequence of form fields in topics do not follow form definition </td>
1570   </tr>
1571   <tr>
1572     <td>[[BUGS/Item1980]]</td>
1573     <td> Login text remains untranslated </td>
1574   </tr>
1575   <tr>
1576     <td>[[BUGS/Item1941]]</td>
1577     <td> If REPEATs are munged in templates, RDiff bombs out </td>
1578   </tr>
1579   <tr>
1580     <td>[[BUGS/Item1939]]</td>
1581     <td> Inconsistent handling of non-wikiword topic names when creating new topic </td>
1582   </tr>
1583   <tr>
1584     <td>[[BUGS/Item1890]]</td>
1585     <td> Wysiwyg plugin in infinite loop </td>
1586   </tr>
1587   <tr>
1588     <td>[[BUGS/Item1869]]</td>
1589     <td> Clarify security docs in configure </td>
1590   </tr>
1591   <tr>
1592     <td>[[BUGS/Item1843]]</td>
1593     <td> A 1.2 version of a topic cannot be deleted (spam) with cmd=delRev </td>
1594   </tr>
1595   <tr>
1596     <td>[[BUGS/Item1651]]</td>
1597     <td> Extract UserMapping and GroupMapping code out of User.pm and Users.pm (enable non-TWikiTopic based User and Groups definititions) </td>
1598   </tr>
1599   <tr>
1600     <td>[[BUGS/Item1613]]</td>
1601     <td> Renaming the Main web breaks several links to users </td>
1602   </tr>
1603   <tr>
1604     <td>[[BUGS/Item1602]]</td>
1605     <td> link to TWikiUpgradeGuide needed from TWiki Installation Guide </td>
1606   </tr>
1607   <tr>
1608     <td>[[BUGS/Item1560]]</td>
1609     <td> Non-existing favicon.ico is referenced in upgraded Cairo webs </td>
1610   </tr>
1611 </table>
1612
1613 ### <a name="TWiki 4.0.3 Enhancements"></a> TWiki 4.0.3 Enhancements
1614
1615 <table border="1" cellpadding="0" cellspacing="0">
1616   <tr>
1617     <td>[[BUGS/Item2452]]</td>
1618     <td> mime.types lacks some widely used file types </td>
1619   </tr>
1620   <tr>
1621     <td>[[BUGS/Item2301]]</td>
1622     <td> Put {linkProtocolPattern} into configure </td>
1623   </tr>
1624   <tr>
1625     <td>[[BUGS/Item2282]]</td>
1626     <td> SpreadSheetPlugin with SETIFEMPTY </td>
1627   </tr>
1628   <tr>
1629     <td>[[BUGS/Item2155]]</td>
1630     <td> Remove hardcoded fonts from twiki's default content </td>
1631   </tr>
1632   <tr>
1633     <td>[[BUGS/Item2125]]</td>
1634     <td> Add format parameter to META{"parent"} </td>
1635   </tr>
1636 </table>
1637
1638 The 4.0.3 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TWikiRelease04x00> revision **10706**..
1639
1640 ## <a name="TWiki 4.0.4 Patch Release Detail"></a> TWiki 4.0.4 Patch Release Details
1641
1642 The following fixes and minor enhancements have been addressed in this release:
1643
1644 ### <a name="TWiki 4.0.4 Fixes"></a> TWiki 4.0.4 Fixes
1645
1646 <table border="1" cellpadding="0" cellspacing="0">
1647   <tr>
1648     <td>[[BUGS/Item2578]]</td>
1649     <td> SECURITY HOTFIX: Improved protection against attaching php scripts that can be executed afterwords by simple view </td>
1650   </tr>
1651   <tr>
1652     <td>[[BUGS/Item2568]]</td>
1653     <td> Fix potential script error when attachment twisty is removed </td>
1654   </tr>
1655   <tr>
1656     <td>[[BUGS/Item2558]]</td>
1657     <td> TWiki 4.0.3 distributed LocalSite.cfg.txt uses incorrect syntax </td>
1658   </tr>
1659   <tr>
1660     <td>[[BUGS/Item2546]]</td>
1661     <td> Handmade twisty buttons has underline under them </td>
1662   </tr>
1663 </table>
1664
1665 ### <a name="TWiki 4.0.4 Enhancements"></a> TWiki 4.0.4 Enhancements
1666
1667 No enhancements.
1668
1669 The 4.0.4 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TWikiRelease04x00> revision **10799**
1670
1671 ## <a name="TWiki 4.0.5 Patch Release Detail"></a> TWiki 4.0.5 Patch Release Details
1672
1673 Note that TWiki 4.0.5 contains all fixes previously released at hotfixes 1 to 4 for TWiki 4.0.4.
1674
1675 The following fixes have been addressed in this release:
1676
1677 ### <a name="TWiki 4.0.5 Fixes"></a> TWiki 4.0.5 Fixes
1678
1679 <table border="1" cellpadding="0" cellspacing="0">
1680   <tr>
1681     <td>[[BUGS/Item2609]]</td>
1682     <td> Func.pm API function wikiToEmail has a coding error. </td>
1683   </tr>
1684   <tr>
1685     <td>[[BUGS/Item2602]]</td>
1686     <td> AfterEditHandler only called by preview, not save </td>
1687   </tr>
1688   <tr>
1689     <td>[[BUGS/Item2595]]</td>
1690     <td> Emails are not stored in user topic when TWiki setup in a corporate environment </td>
1691   </tr>
1692   <tr>
1693     <td>[[BUGS/Item2573]]</td>
1694     <td> %META{"formfield" name="formfieldname"}% broken (returns nothing) </td>
1695   </tr>
1696   <tr>
1697     <td>[[BUGS/Item2518]]</td>
1698     <td> INCLUDE from external url with filename breaks relative links of included content </td>
1699   </tr>
1700   <tr>
1701     <td>[[BUGS/Item2607]]</td>
1702     <td> Crash TWiki with IF variable. </td>
1703   </tr>
1704   <tr>
1705     <td>[[BUGS/Item2619]]</td>
1706     <td> TOC Link URI References are not Relative </td>
1707   </tr>
1708   <tr>
1709     <td>[[BUGS/Item2322]]</td>
1710     <td> Incomplete fix for Comment box should have ability to be disabled by skin template </td>
1711   </tr>
1712   <tr>
1713     <td>[[BUGS/Item2594]]</td>
1714     <td> Hierarchical webs and WEBLIST can make things excruciatingly slow </td>
1715   </tr>
1716   <tr>
1717     <td>[[BUGS/Item2666]]</td>
1718     <td> Javascript errors caused by twiki.js </td>
1719   </tr>
1720   <tr>
1721     <td>[[BUGS/Item2669]]</td>
1722     <td> Configure robustness update </td>
1723   </tr>
1724   <tr>
1725     <td>[[BUGS/Item2565]]</td>
1726     <td> SEARCH parameter newline not documented. </td>
1727   </tr>
1728   <tr>
1729     <td>[[BUGS/Item2631]]</td>
1730     <td> Reset Password does not work when $TWiki::cfg{MapUserToWikiName} = 0. </td>
1731   </tr>
1732   <tr>
1733     <td>[[BUGS/Item2684]]</td>
1734     <td> EditTablePlugin Don't complain on lock taken if taken by one self </td>
1735   </tr>
1736   <tr>
1737     <td>[[BUGS/Item2714]]</td>
1738     <td> SECURITY ISSUE! - Topics with ALLOWTOPICVIEW defined in "Edit Settings" (META) can be read by anyone with a specially crafted SEARCH. </td>
1739   </tr>
1740   <tr>
1741     <td>[[BUGS/Item2758]]</td>
1742     <td> Updated TWiki.TWikiVariables so that the variable precedence includes both TWiki.TWikiPreferences and Main.TWikiPreferences </td>
1743   </tr>
1744   <tr>
1745     <td>[[BUGS/Item2780]]</td>
1746     <td> Rename to non wikiword name gives empty message </td>
1747   </tr>
1748   <tr>
1749     <td>[[BUGS/Item2806]]</td>
1750     <td> Security Alert CVE-2006-4294 - viewfile doesn't follow rules for mapping attachment names </td>
1751   </tr>
1752   <tr>
1753     <td>[[BUGS/Item2821]]</td>
1754     <td> Potential bugs from parsing settings in topics when the following line contains white space. </td>
1755   </tr>
1756   <tr>
1757     <td>[[BUGS/Item2825]]</td>
1758     <td> Potential source of error related to code that checks access permissions. </td>
1759   </tr>
1760   <tr>
1761     <td>[[BUGS/Item2823]]</td>
1762     <td> SMTP recipient name format issue </td>
1763   </tr>
1764   <tr>
1765     <td>[[BUGS/Item2829]]</td>
1766     <td> EditTablePlugin select drops selected item if cell has whitespace </td>
1767   </tr>
1768   <tr>
1769     <td>[[BUGS/Item2625]]</td>
1770     <td> %SEARCH% does not work when non-wikiword used in topic="" parameter </td>
1771   </tr>
1772   <tr>
1773     <td>[[BUGS/Item2859]]</td>
1774     <td> Attachments are being named the full path name instead of the filename only </td>
1775   </tr>
1776   <tr>
1777     <td>[[BUGS/Item2746]]</td>
1778     <td> Disable tag parameter issue in preview </td>
1779   </tr>
1780   <tr>
1781     <td>[[BUGS/Item2856]]</td>
1782     <td> make TWikiForms defined in another web clickable in "changeform" </td>
1783   </tr>
1784   <tr>
1785     <td>[[BUGS/Item2721]]</td>
1786     <td> Newly created topics have wrong version number when using RcsLite </td>
1787   </tr>
1788   <tr>
1789     <td>[[BUGS/Item2928]]</td>
1790     <td> Mailto links in brackets [[Main/WebHome]] contain visible when text is upper case </td>
1791   </tr>
1792   <tr>
1793     <td>[[BUGS/Item2884]]</td>
1794     <td> EditTablePlugin does not honour ALLOWTOPICCHANGE (bug introduced in 4.0.4 hotfix 3) </td>
1795   </tr>
1796   <tr>
1797     <td>[[BUGS/Item2980]]</td>
1798     <td> TWiki::Func::checkAccessPermission issue with '' vs. undef </td>
1799   </tr>
1800 </table>
1801
1802 ### <a name="TWiki 4.0.5 Enhancements"></a> TWiki 4.0.5 Enhancements
1803
1804 No enhancements
1805
1806 The 4.0.5 release was built from SVN <http://svn.twiki.org/svn/twiki/tags/TWikiRelease04x00x05> revision **11821**...