1MoinMoin Version History
2========================
3
4Please note: Starting from the MoinMoin version you used previously, you
5should read all more recent entries (or at least everything marked with HINT).
6
7This release has known bugs (see MoinMoin:MoinMoinBugs), but we think it is
8already better than the previous stable release. Our release policy is not
9trying to make a "perfect release" (as that release might NEVER get released),
10but to make progress and don't delay releases too much.
11
12
13Version 1.9.11 (2020-11-08)
14
15  SECURITY HINT: make sure you have allow_xslt = False (or just do not use
16  allow_xslt at all in your wiki configs, False is the internal default).
17  Allowing XSLT/4suite is very dangerous, see HelpOnConfiguration wiki page.
18
19  HINT: Python 2.7 is required! See docs/REQUIREMENTS for details.
20
21  HINT: please read the changelog below carefully before upgrading to 1.9.10.
22        This release has some fundamental changes you (and your wiki users)
23        should be aware of beforehands.
24
25  Fixes:
26  * security fix for CVE-2020-25074:
27    fix remote code execution via cache action
28    changeset with fix: d1e5fc7d
29  * security fix for CVE-2020-15275:
30    fix malicious SVG attachment causing stored XSS vulnerability
31    changeset with fix: 64e16037
32  * make setup.py and .cfg ascii-only, #40
33  * fix SubProcess' os.setsid usage, #44
34  * fix interwiki test fails that crept into 1.9.10 release
35  * highlight parser: use language as code_type rather than "highlight"
36  * catch indexer error for too long names, #57
37  * improved indexer logging so logging never crashes due to
38    encoding issues for non-ascii page or attachment names.
39  * fix mailheader parsing, add tests for mailimport, #53
40  * workaround werkzeug errors='fallback:...' regression, #37
41  * mailimport: fix AttributeError, #55
42  * surge protection / hosts_deny: fix broken html, #60
43
44  Other changes:
45  * upgrade werkzeug 0.14.1 -> 1.0.1, adapt imports
46    HINT: if you use the ProxyFix code, the required import has changed to:
47          from werkzeug.middleware.proxy_fix import ProxyFix
48  * add secure-cookie 0.1.0 (code was formerly part of werkzeug.contrib), adapt imports
49  * update pygments 2.1.3 -> 2.5.2
50  * update passlib 1.7.1 -> 1.7.2
51  * update parsedatetime 2.4 -> 2.6
52
53
54Version 1.9.10 aka "the end of spam release" (2018-09-09)
55
56  Fixes:
57  * security fix for CVE-2017-5934, XSS in GUI editor related code
58  * fix wrong digestmod of hmac.new calls (incorporate 1.9.9 patch)
59  * fix broken table attribute processing (wikiutil.escape)
60  * fix AttributeError in multifile action
61  * read text attachments using universal newlines (including \r line seps)
62  * anywikidraw / twikidraw: check write permissions early
63  * fix exec_cmd for windows: preexec_fn is UNIX only
64
65  New features:
66  * added a convenient way to create a user account via the superuser's
67    "Settings" -> "Switch User" form:
68
69    just type in the new user's name there, switch to the account and
70    fill out the email address. You do not need to set a password, the
71    account will not be usable until the users claims it via the "forgot
72    my password" functionality on the login page (and sets a password).
73
74  * you now can also type in an existing user's name there to switch to the
75    account, instead of selecting it (convenient if you have many users).
76
77  * newaccount action by default only available for superusers.
78
79    This is to avoid spam bots creating huge amounts of crap accounts on
80    internet connected wikis.
81
82    This is done via a new cfg.actions_superuser = ['newaccount', ] default.
83
84    If you prefer to have newaccount action available for every visitor (not
85    advisable for internet connected wikis), use this in your wiki config:
86
87    actions_superuser = FarmConfig.actions_superuser[:]
88    actions_superuser.remove('newaccount')
89
90    For internet connected wikis, a safer way is to let potential new users
91    ask for an account. Everyone in the superuser list can easily create a new
92    account (wiki username and email address needed). If you run a public
93    MoinMoin wiki on the internet, document the way to get an account on
94    your front page.
95
96  * support tel: urls
97
98  Other changes:
99  * safer internal default ACL: Known and All now only have read permissions.
100
101    This is to avoid that you accidentally give r/w permissions to the world
102    when running a wiki on the internet.
103
104    Considering there are lots of spam bots out there, that can create a ton
105    of spam pages in little time, we advise you to keep the safer default for
106    internet connected wikis and only allow specific users / groups read/write
107    access.
108
109    See also the updated sample configs / the HelpOnAccessControlLists help
110    page.
111  * disable the gui editor / enforce the text editor by default
112
113    fckeditor 2.6.11 as we bundle it (latest available version, but years
114    old) might have security issues meanwhile as it is not maintained any
115    more.
116
117    also, there ever have been major issues with MoinMoin's integration of
118    that "gui editor" (as our documentation pointed out since long).
119
120    if you want to give wiki users the choice to choose the gui editor
121    nevertheless, you can re-enable it in your wiki config:
122
123    editor_force = False
124    editor_ui = 'freechoice'
125  * change log_reverse_dns_lookups default to False.
126  * update / upgrade bundled software:
127    * upgrade werkzeug to 0.14.1
128    * upgrade passlib to 1.7.1
129    * upgrade parsedatetime to 2.4
130  * moved MoinMoin 1.9.x development to GitHub:
131    https://github.com/moinwiki/moin-1.9/
132  * update mailing list address and download URL in pypi metadata
133  * enabled Travis CI to run the unit tests for PRs / branches
134  * fixed some stuff found by PyCharm Code Inspection
135  * make build reproducible
136
137
138Version 1.9.9 aka "The undead MoinMoin Halloween Release" 2016-10-31
139
140  Fixes:
141  * security: fix XSS in AttachFile view (multifile related) CVE-2016-7148
142  * security: fix XSS in GUI editor's attachment dialogue CVE-2016-7146
143  * security: fix XSS in GUI editor's link dialogue CVE-2016-9119
144  * catch IOError for zipfile errors (sometimes triggered by zipfile.is_zipfile
145    false positives, see http://bugs.python.org/issue28494 ).
146
147  Other changes:
148  * update moin.spec, setup.py: py27 only
149
150
151Version 1.9.9rc1:
152
153  Fixes:
154  * add meta "viewport" for small device viewports
155  * add meta X-UA-Compatible IE=Edge, make IE happy on intranets
156
157  New features:
158  * AttachFile multifile operation: support copying multiple files to another page
159  * cfg.xmlrpc_overwrite_user is a new setting to control whether the xmlrpc
160    code overwrites an already authenticated user before processing a request.
161    True (default): behaviour as in 1.9.8 and before
162    False: use this if you want to use GivenAuth (e.g. http basic auth) for
163           xmlrpc requests.
164
165  Other changes:
166  * upgraded bundled 3rd party code:
167    * werkzeug 0.11.11
168    * passlib 1.6.5
169    * pygments 2.1.3
170    * parsedatetime 2.1
171    * FCKEditor 2.6.11
172  * removed some bundled stuff we needed due to stdlib issues in older Pythons:
173    * MoinMoin.support.difflib
174    * MoinMoin.support.tarfile
175    * MoinMoin.support.HeaderFixed (-> email.header)
176  * SubProcess: reimplement exec_cmd, remove our stdlib hacks
177  * remove own usage of python_compatibility module which we needed to support
178    older Pythons. the module is still there, in case some 3rd party moin
179    extensions used it.
180
181
182Version 1.9.8:
183  New features:
184  * cfg.recovery_token_lifetime to determine how long the password recovery
185    token will be valid, default is 12 [h]. Check this setting to be adequate
186    before doing (global) password resets, so your users have enough time to
187    react before the toke times out!
188  * cfg.log_events_format can be used to configure the format of the records
189    written to <data_dir>/event-log:
190    0 = dot not create event-log entries (saves disk space, disk I/O)
191    1 = standard (like in moin <= 1.9.7) [default]
192    2 = extended (add infos about username, wikiname, url)
193  * add a tool to output the contents of the event-log to CSV:
194    moin export eventlog --file=output.csv
195    Output encoding is utf-8, columns are in this order:
196    time, event, username, ip, wikiname, pagename, url, referrer, ua
197    time: UNIX timestamp (float)
198  * reimplement cfg.log_timing - if True, emits INFO level log output like:
199    "timing: <REMOTE_ADDR> <URL> <REFERRER> <TIME> <SLOWNESS-INDICATOR>"
200    TIME is in seconds, the slowness indicator is "." for sub-second requests
201    or N times "!" for requests taking N seconds (so you easily can grep for
202    slow stuff).
203  * add "abuse" logging. this will log every attempt to login (successful ones
204    as well as unsuccessful ones). abuse logging is configured via the logging
205    configuration, see example in wiki/config/logging/abuse.
206    Currently, abuse logging is implemented for:
207    * authentication system
208      * "moin" auth
209      * "given" auth
210      * setuid (when superuser switches to another user)
211    * new user creation
212    * some security/ACL violations (xmlrpc and perhaps others not implemented)
213  * surge protection for authentication (currently only for MoinAuth):
214    a) surge protect by IP
215       This covers the case someone is trying to authenticate way too
216       often - we don't look at the username here, just at the remote IP
217       address. If surge protection kicks in for some specific IP, that IP
218       won't be able to try to authenticate any more until surge_lockout_time
219       is over.
220       Note: be careful with users behind proxies or NAT routers - these are
221             common and legitimate cases with (potentially lots of)
222             authentication requests coming from same IP.
223             if it is a trusted proxy, you can configure moin so it sees the
224             real remote IP address (not just the proxy's address).
225    b) surge protect by name
226       This covers the case someone is trying to authenticate for a
227       specific user name way too often (e.g. when someone tries to attack the
228       wiki admin's account). We don't look at the IP here, just at the user
229       name. If surge protection kicks in for some specific user name, that user
230       name will not be able to try to authenticate any more until
231       surge_lockout_time is over.
232       Note: this even covers widely distributed attacks against a user, but
233             you should only enable this if you are aware that the "real" user
234             also won't be able to authenticate while surge protection is active
235             (at least not using the account for that specific username).
236             Thus, there is some denial-of-service danger with this if the
237             attacker can guess or find your valid user names (which isn't too
238             difficult if your wiki is publicly readable).
239             This is bad, but technically hard to avoid.
240    Configuration (allowing 10 authentication attempts per hour):
241        surge_action_limits = {
242            # ...
243            'auth-ip': (10, 3600),  # same remote ip (any name)
244            'auth-name': (10, 3600),  # same name (any remote ip)
245         }
246  * backlinks performance tuning: the pagename in the theme has historically
247    been used to trigger a "linkto:ThisPage" search. While this is a nice
248    feature for human users of the wiki (esp. on category pages), it has one
249    big issue: as it is a normal link, stupid crawlers (ignoring "nofollow")
250    follow it and cause a lot of unneccessary load.
251
252    What moin shows in that "backlinks" place can now be configured in your
253    wiki config:
254
255    # always render the backlink as in moin < 1.9.8 (bad bots causing high load!):
256    backlink_method = lambda cfg, req: 'backlink'
257
258    # always render a simple link to same page, as in moin 2.0:
259    backlink_method = lambda cfg, req: 'pagelink'
260
261    # logged-in users get the backlink, anon users/bots get a pagelink (default):
262    backlink_method = lambda cfg, req: 'backlink' if req.user.valid else 'pagelink'
263
264    # logged-in users get the backlink, anon users/bots get simple text:
265    backlink_method = lambda cfg, req: 'backlink' if req.user.valid else 'text'
266  * AbandonedPages macro: check user agent to reduce load caused by bots
267  * RSS feed: check for bots and rather give them empty results than waste a
268    lot of time with them
269  * ldap_auth: support placeholders for basedn also, e.g. you could use:
270    base_dn='uid=%(username)s,ou=people,dc=company,dc=com'
271  * move or delete multiple attachments (see checkboxes and buttons on the
272    AttachFile view). Be careful: in the same way as you could delete a single
273    attachment with one click, you can now delete all attachments of a page
274    with one click (we don't ask for a 2nd confirmation, so think first).
275  * mailimport: use relative attachment link markup instead of absolute links,
276    enables some page renaming operations without needing to edit the markup.
277  * better caching and lookup optimizations for userprofile data:
278    * name, email, jid, openids -> userid lookups
279    * page subscriptions for notifications (as a consequence, determination of
280      subscribers when a page is saved is much faster now, esp. for wikis with
281      many users) - see also MoinMoinBugs/GetSubscribersSlow
282  * Notification template strings are now configurable via cfg.mail_notify_...
283    * page_text (this puts together the pieces for the mail body, used for all
284      changed / deleted / renamed page mail notifications)
285    * page_changed_subject, page_changed_intro
286    * page_deleted_subject, page_deleted_intro
287    * page_renamed_subject, page_renamed_intro
288    * att_added_subject, att_added_intro
289    * att_removed_subject, att_removed_intro
290    * user_created_subject, user_created_intro
291    * Best is to read HelpOnConfiguration and look at MoinMoin.config.multiconfig
292      to see the help text and the defaults.
293    * The defaults are chosen to be the same as the old hardcoded values, so the
294      translations keep working.
295    * If you overwrite the strings in your configuration moin will still try to
296      translate your strings, but it will only find translations if you add them
297      to the gettext catalogs, too.
298    * Examples:
299
300      a) notification mail body: you don't want the rendered diff, you don't
301         want to link to the diff, but to the full page view on your wiki.
302
303      # original (default) value
304      mail_notify_page_text = '%(intro)s%(difflink)s\n\n%(comment)s%(diff)s'
305      # put this in your wiki config
306      mail_notify_page_text = '%(intro)s%(pagelink)s\n\n%(comment)s'
307
308      b) notification mail subject:
309      # original (default) value
310      mail_notify_page_changed_subject = '[%(sitename)s] %(trivial)sUpdate of "%(pagename)s" by %(username)s'
311
312      c) notification mail intro:
313      # original (default) value
314      mail_notify_page_changed_intro = \
315          ("Dear Wiki user,\n\n"
316           'You have subscribed to a wiki page or wiki category on "%(sitename)s" for change notification.\n\n'
317           'The "%(pagename)s" page has been changed by %(editor)s:\n')
318
319      Note: if you change "*_page_changed_*", you likely also want to change
320      "*_page_deleted_*" and "*_page_renamed_*", maybe even "*_att_added_*"
321      and "*_att_removed_*".
322
323  Fixes:
324  * security fix: XSS in useragents stats
325  * do not create empty pagedirs (with empty edit-log). To clean up all the
326    trash pagedirs, use moin ... maint cleanpage.
327  * page rename/delete, attachment add/remove email notifications work now
328    (somehow we had an event for this, but no code handling it)
329  * AttachFile do=get and do=view: send 404 status if file does not exist
330  * link rel="Alternate" links: rather use page.url than request.href, so
331    url_prefix_action gets used for the (print and raw) action URLs
332  * fixed wrong detection of UI language from accept-language header for not
333    logged-in users if the language identifier there was (partially) uppercase.
334  * fix Python 2.7.4/5 compatibility issue with rss_rc action using handler._out
335  * fix "moin import wikipage" timestamp confusion
336  * use 302 http status for #redirect as some clients cache 301 redirects, but
337    the #redirect might get changed or removed later (so it should not be
338    cached and we also can't really say it is permanent)
339  * fix crash when macro names contain non-ascii chars
340  * CopyPage action: fix NameError exception when TextCha was answered wrong
341  * docbook formatter: fix image URL generation, avoid script name duplication
342  * fix caching scope of name2id/openid2id caches (was: "wiki", now:
343    "userdir"). this is relevant for shared user_dir configurations.
344  * moin maint cleancache: cleans up openid2id cache now also
345  * "userdir" caching scope used for userid lookup caches (the previously used
346    name2id cache with "wiki" caching scope could have outdated data if you
347    share the user_dir between multiple wikis)
348  * catch "filename too long" exception if some crap URL refers to a too long
349    pagename that the filesystem can not represent. It is treated like a not
350    existing page then, so you don't get a traceback in your log file.
351
352  Other changes:
353  * rss_rc action (RSS feed) is now much faster / much less resource consuming
354    when requested for a specific single page. As we have a link to this in
355    every page's html output, this likely also lightens the load caused by bots
356    and search engine crawlers.
357  * tuned editlog.news() - only open/read log if there is new stuff in it after
358    last read position
359  * improve python2.5 compatibility (with_statement)
360  * add bingbot to ua_spiders
361  * upgraded bundled werkzeug to 0.8.3
362  * upgraded bundled passlib to 1.6.2
363  * upgraded bundled pygments to 1.6
364
365
366Version 1.9.7:
367  New features:
368  * passlib support - enhanced password hash security. Special thanks go to
369    the Python Software Foundation (PSF) for sponsoring development of this!
370
371    Docs for passlib: http://packages.python.org/passlib/
372
373    If cfg.passlib_support is True (default), we try to import passlib and set
374    it up using the configuration given in cfg.passlib_crypt_context (default
375    is to use sha512_crypt with default configuration from passlib).
376
377    The passlib docs recommend 3 hashing schemes that have good security, but
378    some of them have additional requirements:
379    sha512_crypt needs passlib >= 1.3.0, no other requirements.
380    pbkdf2_sha512 needs passlib >= 1.4.0, no other requirements.
381    bcrypt has additional binary/compiled package requirements, please refer to
382    the passlib docs.
383
384    cfg.password_scheme should be '{PASSLIB}' (default) to tell that passlib is
385    wanted for new password hash creation and also for upgrading existing
386    password hashes.
387
388    For the moin code as distributed in our download release archive, passlib
389    support should just work, as we have passlib 1.6.1 bundled with MoinMoin
390    as MoinMoin/support/passlib. If you use some other moin package, please
391    first check if you have moin AND passlib installed (and also find out the
392    passlib version you have installed).
393
394    If you do NOT want to (not recommended!) or can't use (still using python
395    2.4?) passlib, you can disable it your wiki config:
396
397        passlib_support = False  # do not import passlib
398        password_scheme = '{SSHA}'  # use best builtin hash (like moin < 1.9.7)
399
400    Please note that after you have used moin with passlib support and have user
401    profiles with passlib hashes, you can't just switch off passlib support,
402    because if you did, moin would not be able to log in users with passlib
403    password hashes. Password recovery would still work, though.
404
405    password_scheme always gives the password scheme that is wanted for new or
406    recomputed password hashes. The code is able to upgrade and downgrade hashes
407    at login time and also when setting / resetting passwords for one or all
408    users (via the wiki web interface or via moin account resetpw script
409    command).
410
411    So, if you want that everybody uses strong, passlib-created hashes,
412    resetting the passwords for all users is strongly recommended:
413    First have passlib support switched on (it is on by default), use
414    password_scheme = '{PASSLIB}' (also default), then reset all passwords.
415
416    Same procedure can be used to go back to weaker builtin hashes (not
417    recommended): First switch off passlib support, use password_scheme =
418    '{SSHA}', then reset all passwords.
419
420    Wiki farm admins sharing the same user_dir between multiple wikis must use
421    consistent password hashing / passlib configuration settings for all wikis
422    sharing the same user_dir. Using the builtin defaults or doing the
423    configuration in farmconfig.py is recommended.
424
425    Admins are advised to read the passlib docs (especially when experiencing
426    too slow logins or when running old passlib versions which may not have
427    appropriate defaults for nowadays):
428    http://packages.python.org/passlib/new_app_quickstart.html#choosing-a-hash
429    http://packages.python.org/passlib/password_hash_api.html#choosing-the-right-rounds-value
430
431  * Password mass reset/invalidation support, see docs/resetpw/.
432    This is useful to make sure everybody sets a new password and moin computes
433    the password hash using the current configuration.
434
435  * Customizable default password checker:
436    Moin's default password checker used and still uses min_length=6 (minimum pw
437    length) and min_different=4 (minimum count of different chars in the password).
438    If you feel that you need to require better passwords from your users, you
439    can customize it now like that in your wiki config:
440
441    password_checker = lambda cfg, request, name, pw: multiconfig._default_password_checker(cfg, request, name, pw, min_length=10, min_different=7)
442
443  * Removing/disabling inactive users (moin ... account inactive)
444    Many wikis have a lot of inactive users, that never ever made a single edit.
445    See help of the command for more details, be careful.
446  * SystemAdmin user browser: show disabled user accounts at the bottom of
447    the list
448  * At startup, announce moin version and code path in log output (makes
449    support and debugging easier).
450  * AttachList: introduced search_term parameter (optional) for listing
451    attachments filtered by a regular expression on their name.
452  * sign release archive using GnuPG with the key of tw@waldmann-edv.de
453    ID 31A6CB60 (main key ID FAF7B393)
454
455  Fixes:
456  * logging: if the logging config file can't be read, give a helpful error msg
457  * logging: use info loglevel (not warning) for telling about using the builtin
458    default logging config
459  * moin script commands: warn if someone gave ... to the moin script, avoids a
460    strange and unhelpful 'empty module name' error message
461  * reorder html input fields in recoverpass form, to help browsers remember
462    the user name and password (not erroneously the recovery token and password)
463  * don't try to send password recovery email to user if email address in
464    user profile is empty
465  * cache action: fix 304 http status
466  * rst parser: fix safe_import for level param in __import__ call of docutils 0.10
467  * moin maint cleancache: also kill the i18n cache 'meta' pickle file
468  * sendmail: catch unicode errors when E-Mail addr has non-ascii chars
469  * redirect last visited: if last visited page is on same wiki, use a local
470    redirect, do not compute via interwiki map (fixes https: usage)
471
472
473Version 1.9.6:
474
475  Fixes:
476  * fix remote code execution vulnerability in twikidraw/anywikidraw action
477  * fix path traversal vulnerability in AttachFile action
478  * fix XSS issue, escape page name in rss link
479  * escape user- or admin-defined css url
480  * make taintfilename more secure
481  * use a constant time str comparison function to prevent timing attacks
482  * Attachment handler: catch all Zip-related errors
483
484
485Version 1.9.5:
486
487  Fixes:
488   * Security fix: fix virtual group bug in ACL evaluation.
489   * Avoid crash if #refresh processing instruction is used without arguments.
490   * Fix issue with non-ASCII textchas.
491   * Xapian indexing: remove copy.copy() that crashed on Windows/IIS/isapi-wsgi
492     after page save.
493   * Fix dictionary file reading crash under Windows.
494   * Work around crash of AdvancedSearch macro rendering caused by non-ascii
495     mimetypes.types_map entries.
496   * Added migration script for moin 1.8.9.
497   * rss_rc: Fix diffs added in RSS with diffs=1 (now they correspond to item
498     listed in feed and not just last page diffs). Links generated with ddiffs=1
499     also fixed.
500   * rss_rc: fix double escaping issue.
501   * rss_rc: respect show_names configuration option.
502   * rss_rc: proper support of rename, revert, page creation.
503   * modern/modernized theme: fix padding/width for editor preview
504   * group/pagelinks formatters: avoid to create unnecessary output, redirect
505     output of send_page call with the groups formatter, it must not be written
506     to the output stream
507   * rst parser: fix include and macro directives
508   * wikisync: fix unicode pagename sending for python 2.7 httplib
509
510  New features:
511   * add a comment_required config option (default: False) to require a
512     non-empty comment when saving a page
513   * when a save error happens, show the editor again and highlight the error
514   * rss_rc: several new options added: lines parameter gives ability to set
515     maximum size of diffs showed in RSS. show_att parameter gives ability
516     to show information aboout attachment-related items in RSS. page parameter
517     gives ability to specify set of pages for which changes RSS feed should be
518     generated. Configuration of defaults and limits can now be done via wiki
519     configuration mechanism.
520   * As soon as it is now possible to provide RSS for page change history,
521     appropriate alternate link is now added for every page (controlled by
522     rss_show_page_history_link configuration parameter).
523   * Search: "no_highlight:" search query option provided for suppressing
524     highlighting search results.
525   * Search macros: new options for FullSearch, FullSearchCached and PageList
526     available:
527     * highlight_titles option controls highlighting of matches in search
528       results provided by these macros. Default value is set in
529       search_macro_highlight_titles configuration option)
530     * highlight_pages option controls adding of highlight URL parameter to
531       page links (so search term is highlighted when user goes to one of
532       these pages via provided link) in search results. Default value is set
533       in search_macro_highlight_pages configuration option.
534     Usage of these options is disabled (via search_macro_parse_args
535     configuration option) by default due to behavioural changes introduced
536     in macro parameter parsing mechanism to support them. Related to
537     http://moinmo.in/FeatureRequests/FullSearchResultsWithoutHighlight .
538
539  Other changes:
540   * Remove 4suite dependency for docbook formatter, use minidom (included in
541     Python).
542   * Upgraded FCKeditor to 2.6.8.
543
544
545Version 1.9.4:
546
547  HINT: Python >= 2.5 is maybe required! See docs/REQUIREMENTS for details.
548
549  Fixes:
550   * Fix XSS / remove javascript URL support in rst parser (CVE-2011-1058).
551   * werkzeug: Removed a dummy import. Fixes Python 2.7 compatibility.
552   * Fix linux-to-windows edit-log migration/upgrade issue (wrong line endings)
553   * logfile: strip \n lineends from line data (\n is part of the file
554     structure, not of the data)
555   * Fix for MoinMoinBugs/SinglePageSlideShowAndParserMarkup.
556   * Simplify auto scroll initialization; fix bug in IE init discovered when
557     using IE7 on pages with wide tables.
558   * Fix timestamp in edit lock message to show the time when edit-locking ends.
559   * Updated wikiserverconfig.py from internal defaults, sync the one in
560     toplevel dir and the one in wiki/server/ - fixes hostname setting.
561   * SubProcess: make sure files are closed at the end (experimental change).
562   * text plain formatter: fix bullet_list, see number_list.
563   * Add some image mimetypes to MIMETYPES_MORE to fix windows issues.
564   * Include page name in password reset URL.
565   * Fix moin export dump to generate relative URLs.
566   * Fix MonthCalendar mouseover for pages with ampersand in page name.
567   * ldap_login: assign server early, it is used in exception handler.
568   * OpenID server preferences: fix traceback related to request method.
569   * Work around page.mtime_usecs() returning 0 for pages without edit-log.
570   * revert action: catch and display all SaveErrors when revert failed.
571   * Fixed bug in groups formatter which caused the last list item to be not in the group.
572   * Avoid strange exception in zipfile.py for pre-1980 timestamps.
573   * TableOfContents: fix for other markups than default wiki markup, e.g. rst
574   * script.account.homepage: added wiki format to homepage_default_text
575   * Enable webkit based browsers (try chrome/safari/konqueror now) for GUI
576     editing (after fixing selection FCKeditor plugin for chrome).
577   * Parsers: avoid crash when Parser.format() call gets inhibit_p kw arg.
578   * advancedsearch: fix problem with non-ascii chars breaking up words for OR
579     and NOT terms
580   * fix globaledit script to keep comments on Homepage...Template pages
581
582  New features:
583   * Added print mode to action.SlideShow, see
584     FeatureRequests/PrintableSinglePageSlideshows.
585   * xmlrpc: new methods xmlrpc_getProcessingInstruction(Version)
586   * Add support for other password hashes (all of them will get auto-upgraded
587     to SSHA when user logs in):
588     * {DES} (Unix crypt(3))
589     * {MD5} (MD5-based crypt())
590     * {APR1} (Apache .htpasswd).
591   * Experimental queued indexing support to work around memory leak - use it like this:
592     # put all pages into indexer queue:
593     python MoinMoin/script/moin.py index build --mode=makequeue
594     # take <count> pages out of the indexer queue and index them,
595     # you need to repeat the following line respective to the total amount of pages
596     # in your wiki (doing more indexer calls does no harm, doing less means an
597     # incomplete index):
598     python MoinMoin/script/moin.py index build --mode=buildnewindexqueued --count=500
599     python MoinMoin/script/moin.py index build --mode=buildnewindexqueued --count=500
600     python MoinMoin/script/moin.py index build --mode=buildnewindexqueued --count=500
601     # ...
602     # switch to new index:
603     python MoinMoin/script/moin.py index build --mode=usenewindex
604
605  Other changes:
606   * Raise exceptions as recommended in PEP 8.
607   * Updated i18n / underlay pages.
608   * Updated interwiki map.
609   * Use logging.traceback to get more information if a indexing filter crashes.
610   * u200b is not considered a space any more in unicode 4.0.1.
611   * Improve textcha security, use some crypto and timing to make cheating
612     harder - use cfg.textchas_expiry_time = 600 (default, seconds) to set the
613     time a textcha is valid.
614   * Upgraded bundled werkzeug to 0.8.1, pygments to 1.4, flup to repo tip.
615
616
617Version 1.9.3:
618  Fixes:
619  * Fix XSS in Despam action (CVE-2010-0828).
620  * Fix XSS issues (see MoinMoinBugs/1.9.2UnescapedInputForThemeAddMsg):
621    * by escaping template name in messages
622    * by fixing other places that had similar issues
623  * Make moin compatible to werkzeug 0.5 .. 0.6.2 (1.9.2 had issues
624    with xmlrpc when used with werkzeug 0.6.x).
625  * MoinMoin.util.filesys: disable usage of dircache, deprecate dc* functions,
626    because the dircache stdlib module can't work correctly for fast updates of
627    directories.
628  * rss_rc and sisterpages actions: fix Content-Type header (mimetype)
629  * Fix associating OpenID identity with user, wasn't adapted to werkzeug yet.
630  * openidrp auth: fix undefined _ (gettext)
631  * Fix auth.cas and userprefs.oidserv request object usage.
632  * highlight parser: fixed MoinMoinBugs/LineNumberSpansForProcessInstructionsMissed
633  * Pygments syntax highlighting: add missing code files
634  * Notifications: use same email subject format for every notification
635  * Fix docbook formatter crashing, see MoinMoinPatch/IncludeMacroWithDocBookFormatter
636  * Fix regex content search for xapian search.
637  * Get rid of the empty line at the end of code highlights.
638  * GUI editor: compute editor height like the text editor does.
639  * Added help texts for: standalone server and moin migration.
640  * script.maint.cleancache: clean also i18n cache files
641  * Improved formatter.text_plain, see FeatureRequests/TextPlainFormatterRewrite
642    (fixes many issues of this formatter).
643  * text_html_text_moin_wiki: fixed index error for width="", see also:
644    MoinMoinBugs/GUI_convertor_list_index_out_of_range
645  * xmlrpc: disable editor backup for putPage, renamePage and revertPage
646    because if pages get uploaded by xmlrpc then the draft cache file can
647    rapidly increase in size, causing high memory usage because it needs to
648    get loaded into memory for updating/processing.
649  * Emit Content-Type header (with charset) for SlideShow action and many other
650    actions that just call send_title().
651  * ActionBase: better compatibility to moin 1.8, use request.values by
652    default, optionally use request.form data only
653
654  New features:
655  * RenamePage action: added ability to create redirect pages when renaming
656    (turned off by default, see show_rename_redirect config option).
657  * formatter/text_html: Added line number links to code blocks.
658  * diff action:
659    * Fixed whitespace in generated (html) diff view table so white-space: pre
660      can be used (and whitespace in diffs preserved).
661    * Added links to first/last revision.
662  * MoinMoin.widget.browser: introduced feature for sorting tables, see:
663    http://moinmo.in/FeatureRequests/SortableTables
664  * SystemAdmin user and attachment browsers: sorting feature used there now
665  * Scrolling the text editor to the double clicked line.
666  * Enable double-click-editing by default.
667  * WikiConfigHelp macro: make heading and description display optional,
668    heading level as a parameter (default 2)
669  * If edit ticket check fails, send the editor with the current content.
670  * moin import wikipage - use this script to import local files as a wiki page
671
672  Other changes:
673  * upgraded pygments from 1.2.2 to 1.3.1
674  * upgraded FCKeditor from 2.6.4.1 to 2.6.6
675  * added configuration snippet for ldap authentication against 2 servers
676  * improved script help output
677
678Version 1.9.2:
679  Fixes:
680  * Fixed CVE-2010-0668: major security issues were discovered in misc. parts
681    of moin.
682    HINT: if you have removed superuser configuration to workaround the issue
683    (following our security advisory), you may re-add it after installing this
684    moin release. If you don't need superuser capabilities often, it might be
685    wise to not have superusers configured all the time, though.
686  * Fixed CVE-2010-0669: potential security issue due to incomplete user profile
687    input sanitizing.
688  * Improved package security: cfg.packagepages_actions_excluded excludes
689    unsafe or otherwise questionable package actions by default now.
690  * wiki parser: fixed transclusion of (e.g. video) attachments from other
691    pages.
692  * Fixed edit locking for non-logged in editors and cfg.log_remote_addr=False.
693  * mailimport: fix missing wikiutil import for normalize_pagename
694  * SubProcess: fix "timeout" AttributeError
695  * "standalone" wikiserver.py: fixed calling non-existing os.getuid on win32
696  * HTTPAuth deprecation warning moved from class level to __init__
697  * Fixed MoinMoinBugs/1.9DiffActionThrowsException.
698  * Fixed misc. session related problems, avoid unneccessary session file
699    updates.
700  * Fix/improve rename-related problems on Win32 (depending on Windows version).
701  * Fixed spider / user agent detection.
702  * Make sure to use language_default when language_ignore_browser is set.
703  * diff action: fix for case when user can't revert page.
704  * Fix trail size (was off by one).
705  * Updated bundled flup middleware (upstream repo checkout), avoids
706    socket.fromfd AttributeError on win32 if cgi is forced, gives helpful
707    exception msg.
708  * wikiutil: Fixed required_arg handling (no exception when trying to raise
709    exception that choice is wrong).
710  * Do not use MoinMoin.support.* to import 3rd party code, give dist packages
711    a chance.
712  * wikiutil.clean_input: avoid crash if it gets str type
713  * request: fixed for werkzeug 0.6 and 0.5.1 compatibility. Please note that
714    we didn't do much testing with 0.6 yet. So, if you use 0.6, please do some
715    testing and provide feedback to us.
716  * AttachFile._build_filelist: verifies readonly flag for unzip file link
717  * attachUrl: fix wrongly generated tickets (e.g. for AttachList macro)
718  * http headers: fix duplicated http headers (e.g. content-type)
719
720  New features:
721  * info action: added pagination ability to revision history viewer.
722    Use cfg.history_paging = True [default] / False to enable/disable it.
723  * ldap_login auth: add report_invalid_credentials param to control wrong
724    credentials error message (this is typically used when using multiple
725    ldap authenticators).
726  * Add RenderAsDocbook to actions_excluded if we have no python-xml.
727  * Upgraded pygments to 1.2.2 (some fixes, some new lexers).
728  * Text editor: if edit_rows==0 (user profile or config), we dynamically size
729    the text editor height. This avoids double sliders for the editor page
730    in most cases.
731
732  Other changes:
733  * New docs/REQUIREMENTS.
734  * Added a less magic cgi/fcgi driver (moin.fcgi), added fixer middleware
735    for apache2/win32 to it.
736
737
738Version 1.9.1:
739  Bug fixes:
740  * Fixed CVE-2010-0667: sys.argv security issue.
741  * Fixed FileSessionService - use session_dir from CURRENT request.cfg (it
742    mixed up session_dirs in farm setups).
743    HINT: if you added the hotfix to your wikiconfig, please remove it now.
744  * Fixed creation of lots of session files (if anon session were enabled and
745    user agent did not support cookies).
746  * Fixed session file storage for a non-ascii base path.
747  * Fixed session cookie confusion for nested URL paths (like path=/ and
748    path=/mywiki - for more info, see also "New features").
749  * Handle cookie_lifetime / anonymous_session_lifetime upgrade issue
750    gracefully: emit errors/warnings to log, use old settings to create
751    cfg.cookie_lifetime as expected by moin 1.9.
752  * flup based frontends: fixed SCGI and AJP (didn't work).
753  * farmconfig example: remove wrong comment, add sample http/https entry.
754  * Fixed password reset url (email content needs full URL).
755  * Page: fixed adding of page contents (only data added now, without metadata) -
756    fixes MoinMoinBugs/DeprecatedPageInclusionErrornousPageInstructionsProcessing
757  * xmlrpc:
758    * Process attachname in get/putAttachment similarly.
759    * revertPage: convert pagename to internal representation.
760    * Fixed auth calls used by jabberbot (needs more work).
761  * Added missing config.umask support code (setting was not used), fixed
762    config.umask usage for page packages.
763  * Fixed browser language detection.
764  * Fixed language pack generation/installation for pt-br, zh, zh-tw.
765  * Fixed caching of formatted msgs, see MoinMoinBugs/1.9EditPageHelpLinksBroken.
766  * Fixed usage of i18n.wikiLanguages() on class level (moved to method), failed
767    when tools import the module (e.g. pydoc -k foo).
768  * highlight parser:
769    * fixed caching issue for "toggle line numbers" link.
770    * added missing support for console/bash session
771  * Fixed precedence of parsers: more special parsers now have precedence
772    before moin falls back to using the HighlightParser (syntax highlighting).
773  * Added extensions to the rst, moin and creole parser (example.rst, example.moin and
774    example.creole attachments are rendered now when viewed).
775  * Fixed MoinMoinBugs/LineNumberSpansForProcessInstructionsMissed for
776    moin_wiki, highlight and plain parser.
777  * Fixed MoinMoinBugs/LineNumberAnchorsInPreformattedText for highlight and
778    plain parser.
779  * Fixed MoinMoinBugs/TableOfContentsBrokenForIncludedPages.
780  * Exception raised on calling add_msg() after send_title(), which leads to
781    Internal Server Error on calling several actions (diff, preview) for
782    deprecated pages, is replaced with warning and call stack information in
783    the log.
784  * AttachFile.move_file: send events (so e.g. xapian index update happens)
785  * SubProcess: fixed win32-specific parts, fixed imports (fixes calling of
786    external xapian index filters)
787  * Fixed auth methods that use redirects (like OpenID).
788  * OpenID client:
789    * Add setting cfg.openidrp_allowed_op, default is [].
790    * Fixed logging in with openid and associating with an existing account.
791    * openidrp_sreg extension: handle UnknownTimeZoneError gracefully
792  * OpenID server:
793    * Fixed TypeError.
794    * Fixed processing POSTed form data AND URL args.
795
796  New features:
797  * diff: Added displaying of information about revisions (editor, size,
798    timestamp, comment), added revision navigation.
799  * text editor: added @TIMESTAMP@ variable for adding a raw time stamp
800  * xmlrpc: added renamePage and deleteAttachment methods.
801  * Accept "rel" attribute for links (moin wiki parser).
802  * Generate session cookie names to fix cookie path confusion and enable port-
803    based wiki farming.
804
805    HINT: New setting cfg.cookie_name:
806
807    None (default): use MOIN_SESSION_<PORT>_<PATH> as session cookie name. This
808                    should work out-of-the-box for most setups.
809
810    'siteidmagic': use MOIN_SESSION_<SITEID>, which is unique within a wiki farm
811                   created by a single farmconfig (currently, cfg.siteid is just
812                   the name of the wiki configuration module).
813
814    'other_value': use MOIN_SESSION_other_value - this gives YOU control. Just
815                   use same value to share the session between wikis and use a
816                   different value, if you want a separate session.
817
818    HINT: Please do not use cfg.cookie_path any more - it usually should not be
819    needed any more, as we now always put path=/ into the cookie except if you
820    explicitly configure something else (only do that if you know exactly what
821    you're doing and if the default does not work for you).
822
823    HINT: see also the HelpOnSessions page which shows some typical configs.
824  * Store expiry into sessions, use moin maint cleansessions script to clean up.
825    HINT: use moin ... maint cleansessions --all once after upgrading.
826    HINT: you may want to add a cron job calling moin ... maint cleansessions
827          to regularly cleanup expired sessions (it won't remove not expired
828          sessions).
829
830  Other changes:
831  * Added rtsp, rtp, rtcp protocols to url_schemas.
832  * Added more info about index building to xapian wikiconfig snippet.
833  * Updated the wikicreole parser to version 1.1.
834
835
836Version 1.9.0:
837  Note: This is a reduced CHANGES, ommitting details from rc/beta test and
838        also less interesting minor changes and fixes. It shows changes
839        relative to 1.8.6 release.
840        If you want to see full detail, read it there:
841        http://hg.moinmo.in/moin/1.9/file/b290d938be63/docs/CHANGES
842
843  New features: ==============================================================
844  * HINT: MoinMoin requires Python 2.4 now. If you only have Python 2.3 and
845    you don't want to upgrade it, please use MoinMoin 1.8.x.
846  * HINT: MoinMoin is now a WSGI application.
847    Please read the new install docs about how to use it, see:
848    http://master19.moinmo.in/InstallDocs
849    You also have a local copy of that page as docs/INSTALL.html.
850  * HINT: due to big changes in the request processing and the request
851    object (related to the WSGI refactoring), many 3rd party plugins might
852    need code updates to work with moin 1.9.
853  * HINT: We now offer different sized sets of system/help pages and the default
854    underlay just contains a single page: LanguageSetup. You need to be
855    superuser, visit that page and then install the language packs you like
856    (minimum is the essential set for English).
857  * HINT: LanguageSetup is the default page_front_page, you need to change that
858    after installing language packs (see above).
859
860  * New modular group and dict data access, you can use group and dict
861    backend modules to access group and dict data stored anywhere you like.
862    Currently we provide these backends:
863      * WikiGroups and WikiDicts backends get data from wikipages. They work
864        similar to old wikidicts code (but with less caching issues :).
865      * ConfigGroups and ConfigDicts backends get data from a dictionary
866        defined in the wiki config.
867      * CompositeGroups and CompositeDicts compose several backends, so data
868        may be retrieved from several sources. For example, groups may be
869        defined in the wiki config and on wiki pages.
870    * Using cfg.groups and cfg.dicts, you can define the backend to use to
871      access group and dict information (default: WikiGroups / WikiDicts
872      backend).
873      See the wiki/config/more_samples/ directory (groups_wikiconfig_snippet
874      and dicts_wikiconfig_snippet).
875    * See also the new HelpOnDictionaries and HelpOnGroups pages.
876
877  * Improved Xapian indexing / search:
878    * Moin's Xapian based search code was refactored:
879      * It is now based on the xappy library (see MoinMoin.support.xappy).
880      * Minimum Xapian requirement is 1.0.6 now.
881      * Outdated and unmaintained xapwrap lib was removed.
882      * regex search with Xapian enabled also is based on the xapian index now
883    * Safe 2-stage xapian index rebuilding:
884      moin index build --mode=buildnewindex  # slow, concurrent
885      <stop wiki>
886      moin index build --mode=usenewindex  # fast
887      <start wiki>
888    * Added wikiconfig snippet for xapian search.
889
890  * Improved drawing support:
891    * TWikiDraw:
892      * Support code was refactored/moved to the twikidraw action.
893      * Use drawing:example.tdraw to invoke it (drawing:example also still
894        works for backwards compatibility)
895      * Drawings are now stored as a single attachment foo.tdraw.
896        We added a migration script that converts your existing drawings.
897    * AnyWikiDraw:
898      * Java applet added, source code see contrib/.
899      * Support code for it is in anywikidraw action.
900      * Use drawing:example.adraw to invoke it.
901      * Drawings are stored in a similar way as foo.adraw.
902    * cfg.extensions_mapping added for mapping of attachment file extensions
903      to actions (currently used for anywikidraw/twikidraw action)
904
905  * Themes / static files related:
906    * Added modernized_cms theme (hides most wiki widgets from modernized if the
907      user is not logged in).
908    * Static file serving built-in (moved wiki/htdocs to MoinMoin/web/static/htdocs).
909      MoinMoin.web.static has a static file serving wrapper that uses the files
910      from htdocs subdirectory by default (docs=True).
911      You can also give another path or switch off creation of that static wrapper.
912      See the docstring of the static package for details.
913    * Theme packages: do_copythemefile now copies theme files to
914      MoinMoin/web/static/htdocs.
915
916  * Syntax highlighting is based on the pygments library now, it does this for
917    LOTS of stuff (programming languages, config files, ...) - use it like this:
918    {{{#!highlight xxx
919    ...
920    }}}
921    xxx is any of the markups pygments supports (see HelpOnParsers).
922    Note: we still have some (deprecated) small wrappers around pygments,
923    so the old syntax #!python/pascal/cplusplus/... still works.
924
925  * Authentication improvements:
926    * HTTP auth related (see also HelpOnAuthentication):
927      * HTTPAuthMoin: http basic auth done by moin
928      * HINT: auth.http.HTTPAuth is now auth.GivenAuth
929        This was badly named from the beginning as for most servers, it just
930        looked at REMOTE_USER environment variable and relied on the server
931        doing the authentication (could be http basic auth or any other auth).
932    * LDAP/AD auth: new name_callback param to create a custom wiki username (not
933      the ldap login username)
934    * OpenID auth:
935      * Support for Simple Registration (SREG) extension.
936        Basic profile fields can be copied from OpenID provider when logging in.
937      * Support for Teams extension.
938      * Ability to accept logins from specific OpenID providers.
939        Login form changes based on configuration for better usability:
940        * 0 providers: normal text input box for OpenID URL
941        * 1 provider: hidden field, automatic form submission with JavaScript
942        * 2+ providers: select field, uses directed identity
943
944  * Sessions / cookies:
945    * HINT: cfg.cookie_lifetime is now a tuple (anon, loggedin), giving the
946      lifetime of the cookie in hours, accepting floats, for anon sessions and
947      logged-in sessions. Default is (0, 12). 0 means not to use a session
948      cookie (== not to establish a session) and makes only sense for anon users.
949    * cfg.cookie_httponly is new and defaults to False. Please note that if you
950      set it to True, TWikiDraw and similar stuff won't be able to use the session
951      cookie. Thus, if your wiki page doesn't allow writing for everybody, saving
952      a drawing will fail, because there is no session (== no logged in user) for
953      the TWikiDraw applet's saving POSTs.
954
955  * Macros:
956    * WikiConfigHelp: added section keyword for selecting a subset of the
957      description, e.g. <<WikiConfigHelp(section="xapian")>>
958    * HighlighterList: show Pygments syntax highlighters (see HelpOnParsers)
959
960  * Actions:
961    * SlideShow action added (please use the "modernized" theme [default])
962    * raw action mimetype support: ...?action=raw&mimetype=text/css
963    * PackagePages: create package file on-the-fly in memory and send it to the
964      client (do NOT create package.zip attachment)
965
966  * Improved logging / debugging / developer support:
967    * Main exception handler: include request url in log output.
968    * Environment variable MOIN_DEBUGGER=off/web/external (default is "off").
969    * Handle wikiserverconfig(_local) in the same way as wikiconfig(_local).
970
971  * GUI editor: improved attachment dialog
972
973  * "moin ... account homepage" script to create user homepages.
974
975
976  Removed features: ==========================================================
977  * Removed cfg.traceback_* settings (use logging configuration)
978  * Removed old session code and settings:
979    * Removed cfg.session_handler and session_id_handler (use cfg.session_service)
980    * Removed cfg.anonymous_session_lifetime (use cfg.cookie_lifetime)
981
982
983  Bug fixes: =================================================================
984  * Xapian indexing:
985    * Rely on xapian's locking (remove moin's additional and sometimes broken
986      locking, that blocked index-rebuilds or updates sometimes).
987    * Removed indexer threading.
988    * Fixed (reimplemented) indexer queue.
989    * Less disruptive xapian index rebuild.
990  * AdvancedSearch: example didn't work, fixed
991
992  * With the groups/dicts code rewrite, we fixed the caching problems that the
993    old code (< 1.9) sometimes had.
994
995  * Actions:
996    * Abort RenamePage if renaming of main page fails (do not try to rename
997      subpages).
998    * AttachFile do=view: quote filename and pagename params for EmbedObject
999      macro call
1000    * unsubscribe action: add msg types so icons get displayed
1001
1002  * Parsers:
1003    * fixed MoinMoinBugs/LineNumbersWorkingBuggyWithHighlightParser
1004
1005  * GUI editor: roundtripping works now for .pdf/doc/... attachment transclusion
1006
1007  * AttachFile: added remove_attachment() and FileRemovedEvent (mail and xapian
1008    support, no jabber support yet).
1009
1010  * Fix makeForbidden403() calls - is makeForbidden(403, ...) now.
1011  * sendmail: add more debug logging, check for empty recipients list
1012  * Fix MoinMoinBugs/MissingPageShouldn'tOfferToCreatePageForReadonlyUsers
1013  * Fix MoinMoinBugs/1.6XmlRpcPutPagePagenameEscape
1014  * Bug with "language:en" was fixed for the Moin search. Now language:
1015    behaves like described on HelpOnSearching.
1016  * Fixed MoinMoinBugs/DeprecatedIsNotRespected (search ranking, WantedPages).
1017  * OpenID: always return error messages with CancelLogin if OpenID process fails.
1018  * suid: simplify and fix, bigger selection box
1019
1020  * patch werkzeug 0.5.1 to catch OverFlowError and ValueError so it doesn't
1021    crash when receiving invalid If-modified-since header from client.
1022
1023
1024  Other changes: =============================================================
1025  * 'modernized' theme:
1026    * use it by default (1.8 used 'modern')
1027    * move title_with_separators() from Modernized theme to ThemeBase
1028    * add a span with "pagepath" class to title_with_separators
1029  * add the sidebar() method from Mandarin and Gugiel themes to ThemeBase
1030  * updated flup to 1.0.2+ ( http://hg.saddi.com/flup-server/rev/6ea1ffac1bcb )
1031  * updated pygments to 1.1.1+ ( http://dev.pocoo.org/hg/pygments-main/rev/948f8885af16 )
1032  * updated parsedatetime to 0.8.7
1033  * increase surge protection limits for AttachFile to avoid trouble with image galleries
1034  * HINT: simplify wikiserver configuration by using same names as werkzeug's
1035    run_simple() call.
1036  * Removed moin account check's --lastsaved option, it is default now
1037    (checking last use with trail file did not work in 1.9 anyway).
1038  * ImageLink page has been killed (ImageLink macro is gone since 1.6.1).
1039  * Allowed disabling of timezone and language user prefs if they are
1040    part of the user's login fields (i.e. OpenID SREG).
1041  * Added option to disable local registration links and direct user
1042    to registration page at an OpenID provider instead.
1043
1044  Developer notes: ===========================================================
1045  * groups and dicts API changes:
1046    * request.groups and request.dicts provide access to groups and dicts.
1047    * MoinMoin.wikidicts is gone, please use MoinMoin.datastruct.
1048    * LazyGroup and LazyGroupsBackend base classes for implementing backends
1049      which potentially deal with huge amounts of data (like a LDAP directory).
1050      Use MoinMoin/datastruct/backends/config_lazy_groups.py as a draft for
1051      new backends.
1052    * See http://moinmo.in/Groups2009 for more details.
1053  * i18n: new approach for defining sets of system/help pages (see i18n.strings).
1054    CheckTranslation, page packager, wikiutil.isSystemPage() use those sets.
1055  * killed deprecated macro.form attribute (didn't work as expected anyway due
1056    to WSGI refactoring) - please use macro.request.{args,form,values}
1057
1058
1059Version 1.8.8:
1060  Fixes:
1061    * Fixed XSS issues (see MoinMoinBugs/1.9.2UnescapedInputForThemeAddMsg).
1062    * Fixed XSS in Despam action (CVE-2010-0828).
1063    * wikiutil.clean_input: avoid crash if it gets str type
1064    * Add RenderAsDocbook to actions_excluded if we have no python-xml
1065    * AttachFile._build_filelist: verifies readonly flag for unzip file link
1066    * attachUrl: fix wrongly generated tickets (e.g. for AttachList macro)
1067    * MoinMoin.util.filesys.dc* (dircache can't work reliably):
1068      * disable usage of dircache, deprecate dc* functions
1069      * remove all calls to filesys.dc* (dclistdir, dcdisable)
1070    * Fixed crash, see MoinMoinPatch/IncludeMacroWithDocBookFormatter
1071    * Avoid hardly recoverable crashes if #format specification is invalid
1072
1073  New features:
1074    * auth.ldap_login: add report_invalid_credentials param to control wrong
1075      credentials error message (typically used when using multiple ldap
1076      authenticators)
1077
1078
1079Version 1.8.7:
1080  Fixes:
1081  * Fixed major security issues in miscellaneous parts of moin.
1082    HINT: if you have removed superuser configuration to workaround the issue
1083    (following our security advisory), you may re-add it after installing this
1084    moin release. If you don't need superuser capabilities often, it might be
1085    wise to not have superusers configured all the time, though.
1086  * Improved package security: cfg.packagepages_actions_excluded excludes
1087    unsafe or otherwise questionable package actions by default now.
1088  * wiki parser: fixed transclusion of (e.g. video) attachments from other
1089    pages.
1090  * Fixed edit locking for non-logged in editors and cfg.log_remote_addr=False.
1091  * xmlrpc:
1092    * Process attachname in get/putAttachment similarly.
1093    * revertPage: convert pagename to internal representation.
1094  * Fixed config.umask usage for page packages.
1095  * Fixed usage of i18n.wikiLanguages() on class level (moved to method),
1096    failed when tools import the module (e.g. pydoc -k foo).
1097  * SubProcess: fixed win32-specific parts, fixed imports (fixes calling of
1098    external xapian index filters)
1099
1100
1101Version 1.8.6:
1102  Bug fixes:
1103  * Xapian indexing / indexing filters:
1104    * fix deadlocks with well- and misbehaving external filters
1105    * work around indexing run crashing when encountering encoding problems
1106      with non-ascii filenames
1107    * OpenOffice/OpenDocument filters: catch UnicodeDecodeErrors (happens
1108      with password protected files)
1109  * i18n: check if languages is not initialized yet, don't crash
1110  * http_redirect: use 301 redirect for some cases
1111  * do not use httponly session cookies, makes trouble with twikidraw and ACLs
1112  * GetText2 macro: fix for named placeholder
1113  * Fix SHA -> SSHA password hash upgrade for old user profiles.
1114  * abort RenamePage if renaming of main page fails (do not try to rename
1115    subpages)
1116
1117  New features:
1118  * search: improve search result ordering
1119  * add MS Powerpoint indexing filter (needs catppt from catdoc package)
1120  * migration scripts: make finding damaged edit-log entries easier
1121  * SubscribeUser action: support username regexes and unsubscribing.
1122    Usage (enter this into the input form field you get after invoking
1123    SubscribeUser action from the "More Actions" menu:
1124    [+|-][re:]username[,username,...]
1125
1126    +username: subscribes user <username> (+ is optional/default)
1127    -username: unsubscribes user <username>
1128    +re:username_re: subscribes users who match <username_re> regex.
1129    -re:username_re: unsubscribes users who match <username_re> regex.
1130
1131
1132Version 1.8.5:
1133  Bug fixes:
1134    * Attachment links: fix processing of attributes (e.g. 'target', 'title')
1135    * Upgrade FCKeditor from 2.6.4 to 2.6.4.1.
1136    * PDF embedding: fix html, works better with PDF browser plugins now.
1137    * Fix typo in rightsidebar CSS.
1138    * Action revert: avoids reverting to a deleted current revision.
1139    * Action diff: enable prev/next button only in the range of given revisions.
1140    * Add a Auto-Submitted: auto-generated header to generated mails.
1141    * Include comment in email notifies.
1142    * mailimport: fix endless looping while trying to import a forwarded mail.
1143    * fuid: keep same fake_mtime for intervals of max_staleness duration.
1144    * Fixes a bug with empty list items in the GUI editor.
1145    * Improve filesys.rename compatibility code (win32).
1146    * Fix locking for CacheEntry.
1147    * Xapian indexing: catch exception when a bad zip file is encountered.
1148    * openidrp / botbouncer: fix param count for CancelLogin().
1149
1150  New features:
1151    * Added CAS authentication.
1152    * Added httponly cookie support and use it for session cookie.
1153
1154  Other changes:
1155    * HTTP auth: added debug logging.
1156    * Minor LDAP auth improvements.
1157    * Data browser widget:
1158      * Add (h)column<idx> css class to make it styleable.
1159      * Include only necessary autofilter options.
1160    * moin maint cleancache purges now drafts, too.
1161    * Add gopher and apt protocols to url_schemas.
1162    * Add .csv, .flv, .swf to MIMETYPES_MORE.
1163
1164
1165Version 1.8.4:
1166  Bug fixes:
1167    * ACL security: fix bug in hierarchical ACL processing, more restrictive
1168      sub page ACLs did not work if the current user name did not give a match
1169      within the sub page ACL (instead, the less restrictive parent page ACL
1170      was used).
1171      Non-hierarchical ACL processing (the default) is NOT affected.
1172    * Creole parser: fix spaces in multiline elements.
1173    * Use msie.css only for Internet Explorer older than version 8, fixes
1174      e.g. the double rendering of link icons.
1175    * http auth: do auth_type comparisons case-insensitively (spec-compliant)
1176
1177  New features:
1178    * EmbedObject macro: changed default width value for PDF files to 100%
1179                         (use a recent Adobe Reader to make this work).
1180    * CopyPage action: added a TextCha for it
1181
1182  Other changes:
1183    * Creole parser: Add second license: BSD
1184
1185
1186Version 1.8.3:
1187  Bug fixes:
1188    * AttachFile XSS fixes: move escaping to error_msg / upload_form
1189    * AttachFile move: add more escaping (maybe not XSS exploitable though)
1190    * email attachments import with xapian indexing enabled: fix AttributeError
1191    * fix wrong links in attachment notifications
1192    * AttachFile do=view: quote filename and pagename params for EmbedObject
1193      macro call
1194    * AttachFile: fix exception when someone just clicks on upload, without
1195      giving a file
1196    * ldap_login: use None as default value for ssl certs/keys (using '' for
1197      the pathes lets it fail with Connect Error)
1198    * release edit lock if someone saves an unchanged page
1199    * fix sendmail.encodeAddress (do not [QP] encode blanks, do not un-
1200      necessarily use [QP] encoding for pure ascii mail addresses)
1201    * Fixed docs bug: see HINT about secrets configuration at version 1.8.0
1202      (1.8.0 Other changes).
1203    * backup action: add 'self' dummy argument for backup_exclude function
1204    * login action: fix formatting of error messages
1205    * unsubscribe action: add msg types so icons get displayed
1206    * fix quoting for pagehits stats (info action) - was not working for pagenames with blanks
1207    * macro.TableOfContents: bug fix for MoinMoinBugs/TableOfContentsIgnoresSectionNumbersPragma
1208
1209  New features:
1210    * added modernized_cms theme
1211    * use url_prefix_fckeditor if you don't want to use the builtin FCKeditor
1212      of moin, but a separate one at some specific url
1213    * action.Load: added textcha feature
1214    * add mumble protocol (nice and good quality F/OSS VOIP conference chat sw)
1215    * ldap auth: new name_callback param to create a custom wiki username (not
1216      the ldap login username).
1217
1218  Other changes:
1219    * add compatibility code for set to xapwrap.index (fix py 2.6 warnings)
1220    * wikiutil: MIMETYPES_MORE extended for .md5 as text/plain
1221
1222
1223Version 1.8.2:
1224  Bug fixes:
1225    * Fix AttachFile and antispam XSS issues.
1226    * Modernized, modern and rightsidebar themes: make nonexistent or
1227      badinterwiki links gray also when they are already visited.
1228    * Fix anchor parsing for interwiki links and #redirect processing
1229      instruction.
1230    * user.apply_recovery_token: key must be of type string (for Python 2.6).
1231    * Fix MoinMoinBugs/GuiEditorBreaksIndentedTable.
1232    * Fix autofilter javascript breakage caused by including a databrowser
1233      widget.
1234    * Use per-wiki i18n cache (fixes wrong links to other farm wikis).
1235    * Made cfg.interwikiname and cfg.user_homewiki unicode objects (str only
1236      worked for ascii names).
1237    * Xapian search: fixed historysearch.
1238    * Xapian search indexing:
1239      * Fix index updating for trivial changes.
1240      * With history search enabled and in update mode, do not try to re-index
1241        old page revisions again.
1242      * With history search enabled, index page attachments only once.
1243      * Fix last modified time of xapian index (shown on SystemInfo page).
1244    * Make logging handlers defined in logging.handlers work (e.g.
1245      class=handlers.RotatingFileHandler)
1246    * Jabber notifications:
1247      * Use an RFC compliant message type.
1248      * Fix user creation notifications.
1249    * OpenID: Compatibility fix for python-openid 2.x.x (also works with
1250      1.x.x), fixes crash when trying to associate moin user to OpenID.
1251    * Have a wikiserverconfig.py in wiki/server/ so setup.py copies it.
1252    * Fixed inconsistent handling of fragments / anchor IDs:
1253      * Fixed creole and wiki parser, other parsers might need similar fixes.
1254      * IDs with blanks, non-ASCII chars etc. are now sanitized in the same way
1255        for links as well as for link targets, so the user editing a page won't
1256        have to bother with it.
1257        E.g. [[#123 foo bar]] will link to:
1258        * <<Anchor(123 foo bar)>> (moin) or {{#123 foo bar}} (creole)
1259        * headline = 123 foo bar = (moin / creole)
1260        Simple rule: if the link and the target are consistent, it should work.
1261      * The creole wiki parser created non-human-readable sha1 heading IDs
1262        before 1.8.2, now it creates same (sometimes readable) heading IDs as
1263        the moin wiki parser.
1264      * TitleIndex/WordIndex now also use IDs sanitized in that way internally.
1265      HINT: if you manually worked around the inconsistencies/bugs before, you
1266            likely have to remove those workarounds now. Same thing if you used
1267            creole's sha1 heading IDs or IDs on TitleIndex/WordIndex.
1268
1269  Other changes:
1270    * Updated FCKeditor to 2.6.4 (== many bug fixes in the GUI editor).
1271    * Enhanced privacy by a new setting: cfg.log_remote_addr (default: True),
1272      it controls whether moin logs the remote's IP/hostname to edit-log and
1273      event-log. Use log_remote_addr = False to enhance privacy.
1274    * Streamline attachment_drawing formatter behaviour.
1275    * Search results: only redirect to a single search result for titlesearch
1276      (fuzzy goto functionality), but not for fulltext search results.
1277
1278
1279
1280Version 1.8.1:
1281  Bug fixes:
1282    * Workaround win32 locking problems (caused by spurious access denied
1283      exceptions on that platform).
1284    * Fix unicode errors that happened when password checker failed a password
1285    * WikiConfig/WikiConfigHelp: fixed wrong language table headings
1286    * Themes: make the margins around trail line work properly
1287    * "modernized" theme:
1288      * make broken links gray
1289      * add new right/center/left/justify css classes
1290      * don't force Arial
1291    * Standalone server: be more specific when catching socket exceptions,
1292      treat socket errors in http header emission in the same way.
1293    * GUI editor:
1294      * Fix heading levels when inserting new headings.
1295      * Fix headers already sent exception when using e.g. edit LOCKing.
1296    * Xapian indexing: fixed missing import for execfilter (only happened on
1297      non-posix platforms like win32)
1298
1299  * New features:
1300    * Themes:
1301     * Make the TOC shrinkwrap, add white background to navigation macro.
1302       The table of contents looked bad spanning the whole width of the page.
1303       It's made to shrinkwrap now, so it will only get as wide, as the longest
1304       heading. We use display:inline-table, so this won't work in MS IE6,
1305       which still displays it the old way.
1306       Navigation macro now has a white background, to make it more readable
1307       when it's floating over a pre block or TOC.
1308     * Make the numbers in lists in table of contents right-aligned.
1309     * Refactored and extended theme.html_stylesheets() to make alternate
1310       stylesheets possible. Stylesheet definitions now can either be:
1311       2-tuples: (media, href)  # backwards compatibility
1312       or:
1313       3-tuples: (media, href, title)  # new, for defining alternate stylesheets
1314       This works within themes as well as in the wiki config.
1315       See also: http://www.w3.org/Style/Examples/007/alternatives.html
1316
1317
1318Version 1.8.0:
1319  Note: This is a reduced CHANGES, ommitting details from rc/beta test and
1320        also less interesting minor changes and fixes. It shows changes
1321        relative to 1.7.2 release.
1322        If you want to see full detail, read it there:
1323        http://hg.moinmo.in/moin/1.8/file/6130eab15936/docs/CHANGES
1324
1325  New Features: ==============================================================
1326    * HINT: New "modernized" theme - if you use "modern" [default], try:
1327      theme_default = 'modernized'
1328      If you find problems with "modernized", please report them because we
1329      want to use it as default theme in future.
1330    * GUI Editor:
1331      * upgraded to use FCKEditor version 2.6.3
1332      * user can insert and modify various types of MoinMoin links
1333    * New plugin_dirs setting to allow multiple plugin pathes (additional to
1334      the automatically configured plugin_dir [default: data_dir/plugin]).
1335    * @EMAIL@ expands to a MailTo macro call with the obfuscated email address
1336      of the current user.
1337    * New macros "WikiConfig" and "WikiConfigHelp".
1338    * Per-parser quickhelp, 'quickhelp' class variable of parser class.
1339    * Secure session cookies for https (see cfg.cookie_secure).
1340    * Added left/center/right/justify css classes to builtin themes.
1341      Use them like:
1342      {{{#!wiki justify
1343      this content is justified....
1344      }}}
1345
1346  Removed Features: ==========================================================
1347    * HINT: url_prefix setting (use url_prefix_static or just use the default)
1348    * traceback_log_dir setting (we just use logging.exception)
1349    * editor_quickhelp setting (replaced by per-parser quickhelp)
1350    * Restoring backups with the backup action and related settings (while
1351      creating backups is no big issue and should work OK, restoring them
1352      had fundamental issues related to overwriting or not-overwriting of
1353      existing files - thus we removed the "restore" part of the action and
1354      recommend that you just contact the wiki server admin in case of trouble,
1355      give him your wiki backup file and let him carefully restore it.)
1356    * Removed unmaintained DesktopEdition (moin 1.5.x style) and phpwiki
1357      migration scripts from contrib/ directory.
1358
1359  Bug Fixes: =================================================================
1360    * GUI Editor - fixed lots of bugs.
1361    * Fixing https detection for servers using HTTPS=1 and also for WSGI
1362      servers not using HTTPS/SSL_ environment, but just wsgi.url_scheme.
1363    * Search results: link to 'view' rendering of found attachments.
1364    * Standalone server: fix serverClass and interface argument processing,
1365      announce used serverClass in log output.
1366    * mointwisted: fixed Twisted start script.
1367    * Logging:
1368      * Use logging framework for messages emitted by warnings module (e.g.
1369        DeprecationWarning), silence some specific warnings.
1370      * Removed superfluous linefeeds in timing log output.
1371    * Bug fix for language not installed (MoinMoinBugs/WikiLanguageNotDefined).
1372    * Fixed editbar hidden comment link cosmetics for sidebar themes (hide the
1373      complete list element).
1374    * MoinMoinBugs/DoubleScriptNameInSitemap (fixing urls given by sitemap
1375      action, if the wiki does not run in the root url of the site)
1376    * Fixed backup action configuration (broke on win32).
1377    * Fixed MoinMoinBugs/PackagesAddRevision.
1378    * SyncPages: add workaround for callers calling log_status with encoded
1379      bytestrings.
1380    * Fixed dbw_hide_buttons javascript.
1381    * HINT: Jabber bot can now be configured to use an authentication realm
1382      which is different from the server's hostname; the xmpp_node
1383      configuration parameter can now contain a full JID and the xmpp_resource
1384      parameter is no longer supported.
1385
1386  Other Changes: =============================================================
1387    * HINT: new configuration for misc. secrets, please use either:
1388          secrets = "MySecretLooongString!" # one secret for everything
1389      or:
1390          secrets = {
1391              'xmlrpc/ProcessMail': 'yourmailsecret', # for mailimport
1392              'xmlrpc/RemoteScript': 'yourremotescriptsecret',
1393              'action/cache': 'yourcachesecret', # unguessable cache keys
1394              'wikiutil/tickets': 'yourticketsecret', # edit tickets
1395              'jabberbot': 'yourjabberbotsecret', # jabberbot communication
1396          }
1397      Secret strings must be at least 10 chars long.
1398      Note: mail_import_secret setting is gone, use
1399            secrets["xmlrpc/ProcessMail"] instead of it.
1400      Note: jabberbot secret setting is gone, use
1401            secrets["jabberbot"] instead of it.
1402    * HINT: user_autocreate setting was removed from wiki configuration and
1403      replaced by a autocreate=<boolean> parameter of the auth objects that
1404      support user profile auto creation.
1405    * moin import irclog: use irssi parser to format logs, mapped .irc
1406      extension to text/plain mimetype.
1407    * HINT: backup action: backup_exclude (default: "do not exclude anything")
1408      is now a function f(filename) that tells whether a file should be
1409      excluded from backup.
1410      You can get the old regex exclusion functionality by using:
1411      backup_exclude = re.compile(your_regex).search
1412      Be careful with your regex, you might need to use re.escape() to escape
1413      characters that have a special meaning in regexes (e.g.: \.[] etc.).
1414      If in doubt, maybe just leave backup_exclude at the default and don't
1415      exclude anything.
1416    * Speed up javascript comments processing on IE by getElementsByClassName()
1417    * Added sk (slovak) i18n, updated i18n.
1418
1419
14201.7.3:
1421  New features:
1422    * Secure session cookies for https, see cfg.cookie_secure.
1423    * Add left/center/right/justify classes to builtin themes.
1424
1425  Fixes:
1426    * Python 2.3 compatibility fixes.
1427    * Fixed https detection for servers using HTTPS=1 and also for wsgi servers
1428      not using HTTPS/SSL_ environment, but just wsgi.url_scheme.
1429    * GUI editor:
1430      * Fix crash when editing a page with non-ASCII pagename and inserting a link
1431      * Fix "headers already sent exception" with edit LOCKs.
1432    * i18n.__init__: Bug fix for wiki language not installed.
1433    * Fixed URLs given by sitemap action, if the wiki does not run at / URL.
1434    * Search results: link to 'view' rendering of found attachments
1435    * Logging:
1436      * Removed superfluous linefeed in timing log output.
1437      * Use logging framework for messages emitted by warnings module (e.g.
1438        DeprecationWarning), silence some specific warnings.
1439    * Fix dbw_hide_buttons javascript.
1440    * Standalone server:
1441      * fix serverClass argument processing
1442      * fix --interface="" argument processing
1443    * mointwisted:
1444      * added missing pidFile parameter
1445      * better use Config.name for pidFile to avoid conflicts and keep same
1446        behaviour as in the past
1447    * Jabber bot can now be configured to use an authentication realm which
1448      is different from the server's hostname
1449
1450
1451Version 1.7.2:
1452  Fixes:
1453    * Fix leakage of edit-log file handles (leaked 1 file handle / request!).
1454    * Fix for MoinMoinBugs/SystemAdminMailAccountData (using POST and forms)
1455    * Wiki parser: avoid IndexError for empty #! line
1456    * MonthCalendar macro: fix parameter parsing / url generation
1457    * Xapian indexing filters (MoinMoin/filter/ or data/plugin/filter/):
1458      Some indexing filter scripts (e.g. for MS Word documents or PDF files)
1459      failed on windows because of the single-quote quoting we used (that
1460      works on Linux and other Posix systems). The fix introduces platform-
1461      dependant automatic quoting, using double-quotes on win32 and single-
1462      quotes on posix.
1463      HINT: if you use own filter plugins based on execfilter, you have to
1464      update them as the filename quoting (was '%s') is now done automatically
1465      and must not be part of the command string any more (now just use %s).
1466      See MoinMoin/filter/ for some up-to-date code (esp. the PDF filter).
1467    * Prevent CategoryTemplate being listed as a category (it is a Template,
1468      but matched also the category regex) - added to sample wikiconfig.
1469    * LDAP auth: fix processing of TLS options
1470    * UpdateGroup xmlrpc server side: fix wrong arg count error
1471    * UpdateGroup client: use multicall / auth_token, refactor code so that
1472      updateGroup function is reusable.
1473    * Improve Python 2.3 compatibility, add notes where 2.4 is required.
1474
1475
1476Version 1.7.1:
1477  New features:
1478    * New 'cache' action (see developer notes).
1479
1480  Fixes:
1481    * Security fix: XSS fix for advanced search form
1482    * Avoid creation of new pagedirs with empty edit-log files by just
1483      accessing a non-existant page. If you used 1.7 before, you likely have
1484      quite some trash pagedirs now and you can clean them up by using:
1485      moin --config-dir=... --wiki-url=... maint cleanpage
1486      This will output some shell script (please review it before running!)
1487      that can be used to move trash pages into some trash/ directory and also
1488      moves deleted pages into some deleted/ directory. Maybe keep a copy of
1489      those directories for a while just for the case.
1490    * Server specific fixes:
1491      * standalone (wikiserver.py): fix --pidfile and --group option, fix
1492        operation without a wikiserverconfig.py (use builtin defaults).
1493      * mod_python: work around mod_python 3.3.1 problems with file uploads.
1494        Note: if you are still using mod_python, we strongly recommend you
1495	      try out mod_wsgi (in daemon mode) - it has less bugs, better
1496	      security, better separation, WSGI is a Python standard, and moin
1497	      developers also use WSGI. See HelpOnInstalling/ApacheWithModWSGI.
1498    * revert action: fixed for deleted pages.
1499    * Search:
1500      * Xapian indexing: Removed crappy "hostname" tokenization.
1501        Fixes MoinMoinBugs/1.7 XapianNotWorkingWithLeadingNumbersInTitle.
1502        Also tokenize CamelCase parts of non-wikiwords.
1503      * Make query parser reject more invalid input.
1504      * If query parsing raises a BracketError, at least tell what the problem
1505        is (and not just raise empty  ValueError).
1506      * Category search: ignore traling whitespace after ----
1507    * Argument parser:
1508      * Fixed sort() usage in UnitArgument to be Python 2.3 compatible.
1509      * Fixed MoinMoinBugs/TypeErrorInWikiutils.
1510    * Macros:
1511      * TableOfContents: skip outer-most <ol> levels when page isn't using
1512        the biggest headings
1513      * MonthCalendar: fix MoinMoinBugs/MonthCalendarBreaksOnApostrophe
1514    * xslt parser: fix MoinMoinBugs/DoNotConvertUnicodeToUTF8ForXsltParser
1515    * OpenID RP: make it compatible to python-openid 2.2.x
1516    * PackagePages.collectpackage: removed encoding from file name of zipfile
1517    * Surge protection: exclude localnet no matter whether user is known or not.
1518    * Notifications: fix MoinMoinBugs/DuplicateNewUserNotification
1519    * Script moin account create/disable/resetpw: checks for already existing
1520      user now.
1521
1522  Other changes:
1523    * Prevent CategoryTemplate being listed as a category (it is a Template)
1524      by changing the default page_category_regex.
1525
1526  Developer notes:
1527    * New MoinMoin.action.cache - can be used to cache expensively rendered
1528      output, e.g. generated images). Once put into the cache, moin can emit
1529      a http response for that content very fast and very efficient (including
1530      "304 not changed" handling.
1531    * New file-like API in MoinMoin.caching (good for dealing with medium
1532      to large files without consuming lots of memory).
1533    * wikiutil.importPlugin supports getting the whole plugin module object
1534      by giving function=None.
1535
1536
1537Version 1.7.0:
1538  Note: This is a reduced CHANGES, ommitting details from rc/beta test and
1539        also less interesting minor changes and fixes. It shows changes
1540        relative to 1.6.3 release.
1541        If you want to see full detail, read it there:
1542        http://hg.moinmo.in/moin/1.7/file/76265568e8d3/docs/CHANGES
1543
1544  New Features: ==============================================================
1545    * HINT: we added generic UPDATE instructions as docs/UPDATE.html.
1546
1547    * HINT: Standalone server usage changed:
1548      * Standalone server can now be started via the "moin" script command,
1549        optionally backgrounding itself.
1550        See: moin server standalone --help
1551      * In the toplevel dir, we have renamed moin.py to wikiserver.py (it was
1552        often confused with the moin scripting command).
1553        Now you have:
1554        * wikiserver.py - to start the standalone server
1555        * wikiserverconfig.py - to configure the standalone server
1556        * wikiserverlogging.conf - to configure logging for it (default config
1557          is ok for all day use, but can easily be modified for debugging)
1558        * wikiconfig.py - to configure the wiki engine
1559      * Removed old moin daemonizing script (replaced by moin server standalone
1560        --start/stop)
1561      * We now provide the "moin" script command also for people not using
1562        setup.py, see wiki/server/moin.
1563
1564    * Logging
1565      * New powerful and flexible logging, please see wiki/config/logging/ -
1566        HINT: you have to upgrade your server adaptor script (e.g. moin.cgi)
1567        and load a logging configuration that fits your needs from there, or
1568        alternatively you can also set MOINLOGGINGCONF environment variable
1569        to point at your logging config file.
1570        If you use some of our sample logging configs, make sure you have a
1571        look INTO them to fix e.g. the path of the logfile it will use.
1572      * Moin now logs the path from where it loaded its configuration(s).
1573
1574    * Authentication / Sessions:
1575      * HINT: New authentication plugin system, see HelpOnAuthentication. If
1576        you do not use the builtin default for 'auth' list, you likely have to
1577        change your configuration. See wiki/config/snippets/ for some samples.
1578      * HINT: New session handling system (no moin_session any more, now done
1579        internally and automatically), see HelpOnSessions for details.
1580      * Added OpenID client and server support.
1581        See: HelpOnAuthentication and HelpOnOpenIDProvider.
1582      * cfg.trusted_auth_methods is a list of auth methods that put an
1583        authenticated user into the "Trusted" ACL group.
1584
1585    * User profiles / password recovery / notification:
1586      * New newacount action for creating new user accounts/profiles. If you
1587        don't want users creating new accounts on their own, you can add this
1588        action to actions_excluded list.
1589      * New recoverpass action for password recovery:
1590        If you forgot your password, recoverpass sends you an email with a
1591        password recovery token (NOT the encrypted password) that is valid
1592        for 12 hours.
1593      * New moin account resetpw script for resetting a user's password by
1594        the wiki admin.
1595      * New preferences plugin system, see MoinMoin/userprefs/__init__.py.
1596      * New notification system with an optional jabber notification bot, see
1597        HelpOnNotification. HINT: wiki users have to check their notification
1598        settings, esp. if they want to receive trivial update notifications.
1599
1600    * The diff action now has navigation buttons for prev/next change and also
1601      a revert button to revert to the revision shown below the diff display.
1602    * ThemeBase: support Universal Edit Button, see there for details:
1603      http://universaleditbutton.org/
1604    * ?action=info&max_count=42 - show the last 42 history entries of the page.
1605      max_count has a default of default_count and a upper limit of
1606      limit_max_count - you can configure both in your wiki config:
1607      cfg.history_count = (100, 200) # (default_count, limit_max_count) default
1608    * The CSV parser can sniff the delimiter from the first CSV line so other
1609      delimeters than ";" can be used.
1610    * Admonition support. Added styling for tip, note, important, warning
1611      and caution in the modern theme. For more info see HelpOnAdmonitions.
1612    * DocBook-formatter:
1613      * supports HTML entities like &rarr; and &#9731;
1614      * supports the FootNote macro
1615      * supports bulletless lists
1616      * support for admonitions
1617      * will export the wiki page's edit history as the generated article's
1618        revision history. Doesn't add history of included pages.
1619      * supports for the MoinMoin comment element, though only inline comments
1620        are likely to be valid since the DocBook remark is an inline element.
1621    * New Hits macro: shows the total hits for the page it is used on.
1622
1623  Removed Features: ==========================================================
1624    * HINT: Removed attachments direct serving (cfg.attachments - this was
1625            deprecated since long!). Use AttachFile action to serve attachments.
1626    * Duplicated file attachment upload code was removed from Load action (just
1627      use AttachFile action to deal with attachments).
1628    * Removed 'test' action. If you like to run unit tests, use py.test.
1629    * Removed Login macro.
1630
1631  Bug Fixes: =================================================================
1632    * Better handling of ImportErrors (farmconfig, macros, wikiserverconfig).
1633    * Fix failure of detection of on-disk cache updates.
1634    * Fix traceback in filesys.py on Mac OS X when "import Carbon" fails.
1635
1636    * AttachFile action / file up- and download / zip support:
1637      * WSGI: use wsgi.file_wrapper (or a builtin simple wrapper). Fixes memory
1638        consumption for sending of large file attachments.
1639      * FastCGI: flush often. Fixes memory consumption for sending of large
1640        file attachments.
1641      * Use the open temporary file for receiving file attachment uploads
1642        (fixes big memory consumption for large file uploads).
1643      * Catch runtime errors raised by zipfile stdlib modules when trying to
1644        process a defective zip.
1645      * When unzipping member files, decode their filenames from utf-8 and
1646        replace invalid chars.
1647      * Make error msg less confusing when trying to overwrite a file attachment
1648        without having 'delete' rights.
1649
1650    * HINT: page_*_regex processing had to be changed to fix category search.
1651      If you don't use the builtin (english) defaults, you will have to change
1652      your configuration:
1653        old (default): page_category_regex = u'^Category[A-Z]'
1654        new (default): page_category_regex = ur'(?P<all>Category(?P<key>\S+))'
1655      As you see, the old regex did work for detecting whether a pagename is
1656      a category, but it could not be used to search for a category tag in the
1657      page text. The new regex can be used for both and identifies the complete
1658      category tag (match in group 'all', e.g. "CategoryFoo") as well as the
1659      category key (match in group 'key', e.g. "Foo") by using named regex
1660      groups. \S+ means the category key can be anything non-blank.
1661      If you like to simultaneously support multiple languages, use something
1662      like this: ur'(?P<all>(Kategorie|Category)(?P<key>\S+))'
1663      HINT: after changing your configuration, please rebuild the cache:
1664        * stop moin
1665        * moin ... maint cleancache
1666        * start moin
1667      If you don't do this, your groups / dicts will stop working (and also
1668      your ACLs that use those groups). You better do a test whether it works.
1669
1670    * Xapian search / indexing / stemming:
1671      * Use text/<format> as mimetype for pages.
1672      * Index also major and minor for mimetypes, so it will find 'text' or
1673        'plain' as well as 'text/plain'
1674      * Fix searching for negative terms.
1675      * Improve result list ordering.
1676      * Index filters: redirect stderr to logging system.
1677      * Remove crappy num regex from WikiAnalyzer, improve tokenization.
1678      * Fix AttributeError that happened when trying to access an attribute only
1679        used with xapian search (but regex search is not done by xapian)
1680      * Fix IndexErrors happening when pages are renamed/nuked after the index
1681        was built.
1682      * Fixed indexing of WikiWords (index "WikiWords", "Wiki" and "Words").
1683      * Fix crash if default language is un-stemmable.
1684      * xapian_stemming: removed some strange code (fixes search
1685        title:lowercaseword with xapian_stemming enabled)
1686      * Fixed category indexing (index CategoryFoo correctly as CategoryFoo, not
1687        Foo - for all languages, see page_*_regex change above).
1688    * Builtin search: support mimetype: search for pages for the builtin search
1689      engine (using text/<format>).
1690
1691    * Parser fixes:
1692      * Wiki: fix subscript parsing (was broken for cases like 'a,,1,2,,').
1693      * Docbook: fixed detection of WikiWords.
1694      * All: Add ssh protocol to url_schemas for ssh:... URLs.
1695
1696    * XMLRPC:
1697      * Fix xmlrpc request.read() call to use content-length, if available,
1698        fixes hangs with wsgiref server.
1699      * Wiki xmlrpc getPageInfoVersion() fixed:
1700        * works correctly now for old page versions (was unsupported)
1701        * works correctly now for current page version (reported wrong
1702          data when a page had attachment uploads after the last page
1703          edit)
1704        * returns a Fault if it did not find a edit-log entry
1705
1706  Other Changes: =============================================================
1707    * Using better ACLs and comments on system/help pages now, just taking
1708      away 'write' permission, but using default ACLs for everything else.
1709    * HINT: If you want to use xapian based indexed search, you need to have
1710      Xapian >= 1.0.0 (and you can remove PyStemmer in case you have installed
1711      it just for moin - we now use the stemmer built into Xapian as it
1712      supports utf-8 since 1.0.0).
1713    * Changed default value of cfg.search_results_per_page to 25.
1714    * Surge Protection: If a user is authenticated by a trusted authentication
1715      (see also cfg.auth_methods_trusted) then he/she won't trigger surge
1716      protection, but moin will just log a INFO level log msg with the user's
1717      name so you can find the culprit in case he/she is overusing ressources.
1718    * HINT: Added MyPages and CopyPage to actions_excluded because MyPages
1719      doesn't work without special SecurityPolicy anyway and CopyPage has
1720      questionable behaviour.
1721    * Load action now just creates a new revision of the target page, the
1722      target pagename defaults to the current page name and can be edited.
1723      If the target pagename is empty, moin tries to derive the target pagename
1724      from the uploaded file's name.
1725      Load tries to decode the file contents first using utf-8 coding and, if
1726      that fails, it forces decoding using iso-8859-1 coding (and replacing
1727      invalid characters).
1728    * HINT: cfg.show_login is gone, see code in theme/__init__.py, this may
1729      affect many themes!
1730    * HINT: a new userprefs/ plugin directory will be created by the usual
1731      "moin migration data" command.
1732    * DocBook-formatter:
1733      * generates a valid DOCTYPE
1734      * table support has been improved
1735      * handling of definitions and glossaries is more robust
1736      * supports program language and line numbering in code areas
1737    * HINT: ldap_login behaves a bit different now:
1738      In previous moin versions, ldap_login tended to either successfully
1739      authenticate a user or to completely cancel the whole login process in
1740      any other case (including ldap server down or exceptions happening).
1741      This made subsequent auth list entries rather pointless.
1742      Now it behaves like this:
1743        * user not found in LDAP -> give subsequent auth list entries a
1744          chance to authenticate the user (same happens if it finds multiple
1745          LDAP entries when searching - it logs an additional warning then).
1746        * user found, but wrong password -> cancel login
1747        * ldap server not reachable or other exceptions -> give subsequent
1748          auth list entries a chance
1749      So please make sure that you really trust every auth list entry you have
1750      configured when upgrading or it might maybe change behaviour in a
1751      unexpected or unwanted way.
1752    * ldap_login now supports failover: if it can't contact your LDAP server
1753      (e.g. because it is down or unreachable), it will just continue and
1754      try to authenticate with other authenticators (if there are any in
1755      cfg.auth list). So if you have some mirroring LDAP backup server, just
1756      put another authenticator querying it there:
1757          ldap_auth1 = LDAPAuth(server_uri='ldap://mainserver', ...)
1758          ldap_auth2 = LDAPAuth(server_uri='ldap://backupserver', ...)
1759          auth = [ldap_auth1, ldap_auth2, ]
1760
1761  Developer notes: ===========================================================
1762    * Page.last_edit() is DEPRECATED, please use Page.edit_info().
1763    * Page._last_edited() is GONE (was broken anyway), please use
1764      Page.editlog_entry().
1765    * New request.send_file() call, making it possible to use server-specific
1766      optimizations.
1767    * getText's (aka _()) 'formatted' keyword param (default: True in 1.6 and
1768      early 1.7) was renamed/changed: it is now called 'wiki' and defaults to
1769      False. Example calls:
1770      _('This will NOT get parsed/formatted by MoinMoin!')
1771      _('This will be parsed/formatted by MoinMoin!', wiki=True)
1772      _('This will be used as a left side of percent operator. %s',
1773        wiki=True, percent=True)
1774    * Page.url 'relative' keyword param (default: True in 1.6 and early 1.7)
1775      was changed to default False).
1776    * The themedict no longer contains 'page_user_prefs' and 'user_prefs',
1777      this may affect custom themes.
1778    * The rst-parser's admonition class names are no longer prepended with
1779      "admonition_". Instead the class names are now for example "note"
1780      and not "admonition_note".
1781
1782
1783Version 1.6.3:
1784  Fixes:
1785    * Security fix: a check in the user form processing was not working as
1786      expected, leading to a major ACL and superuser priviledge escalation
1787      problem. If you use ACL entries other than "Known:" or "All:" and/or
1788      a non-empty superuser list, you need to urgently install this upgrade.
1789    * Security fix: if acl_hierarchic=True was used (False is the default),
1790      ACL processing was wrong for some cases, see
1791      MoinMoinBugs/AclHierarchicPageAclSupercededByAclRightsAfter
1792    * For {{transclusion_targets}} we checked the protocol to be http(s),
1793      this check was removed (because file: and ftp: should work also) and
1794      it's not moin's problem if the user uses silly protocols that can't
1795      work for that purpose.
1796    * Fixed TableOfContents macro for included pages.
1797    * server_fastcgi: added Config.port = None. If you want to use some port
1798      (not a fd), you can set it now in your Config, e.g. port = 8888.
1799    * category: search matches categories even if there are comment lines
1800      between the horizontal rule and the real categories, e.g.:
1801      ... some page text ...
1802      ----
1803      ## optionally some comments, e.g. about possible categories:
1804      ## CategoryJustACommentNotFound
1805      CategoryTheRealAndOnly
1806
1807      Note: there might be multiple comment lines, but all real categories
1808            must be on a single line either directly below the ---- or
1809            directly below some comment lines.
1810
1811  Other changes:
1812    * Added 'notes' to config.url_schemas, so you can use notes://notessrv/...
1813      to invoke your Lotus Notes client.
1814    * After creating a new user profile via UserPreferences, you are logged
1815      in with that user (no need to immediately enter the same name/password
1816      again for logging in).
1817
1818
1819Version 1.6.2:
1820  Fixes:
1821    * Security fix: check the ACL of the included page for the rst parser's
1822      include directive.
1823    * Potential security/DOS fix: we removed cracklib / python-crack support
1824      in password_checker as it is not thread-safe and caused segmentation
1825      faults (leading to server error 500 because the moin process died).
1826    * Fix moin_session code for auth methods other than moin_login (e.g. http).
1827      If you have worked around this using moin_anon_session, you can remove
1828      this workaround now (except if you want anon sessions for other reasons).
1829    * Fix moin_session code to delete invalid session cookies and also create
1830      a new session cookie if it got a valid user_obj at the same time.
1831    * Fix xmlrpc applyAuthToken: give good error msg for empty token.
1832    * Fixed category search, use category:CategoryFoo as search term.
1833    * xapian_stemming = False (changed default) to workaround some problems
1834      in the code enabled by it. Fixes the problems when searching for
1835      lowercase or numeric titles or word fragments with the builtin search.
1836    * Fix trail for anon users without a session, do not show a single page.
1837    * Fix MoinMoinBugs/WikiSyncComplainsAboutTooOldMoin.
1838    * Wiki parser: fixed strange insertion of unwanted paragraphs.
1839    * Wiki parser: fix interwiki linking:
1840      Free interwiki links did not change since 1.5 (they still require to match
1841      [A-Z][A-Za-z]+ for the wikiname part, i.e. a ASCII word beginning with an
1842      uppercase letter).
1843      Bracketed interwiki links now behave similar to how they worked in 1.5:
1844      Moin just splits off the part left of the colon - no matter how it looks
1845      like. It then tries to find that in the interwiki map. If it is found,
1846      a interwiki link gets rendered. If it is not found, moin will render a
1847      link to a local wiki page (that has a colon in the pagename). It will
1848      also render a local wiki page link if there is no colon at all, of course.
1849      Examples:
1850      [[lowercasewikiname:somepage]] does an interwiki link (if in the map).
1851      [[ABC:n]] does a local link to page ABC:n (if ABC is NOT in the map).
1852    * Wiki parser: fix interwiki linking for the case that there are query args
1853      in the interwiki map entry and you give additional query args via link
1854      markup (uses correct query arg separator now), e.g.:
1855      [[Google:searchterm|search this|&foo=bar]]
1856    * Creole parser: fixed bug that prevents images inside links.
1857    * Python parser: catch indentation error.
1858    * PageEditor: fixed copyPage for write restricted pages.
1859    * GUI editor: fixed javascript error with too complex word_rule regex,
1860      see MoinMoinBugs/GuiEditorSyntaxError.
1861    * Fixed FCKeditor dialog boxes for FireFox3.
1862    * NewPage macro/newpage action: fixed for non-ascii template pagenames.
1863    * FootNote macro: Fix MoinMoinBugs/FootNoteNumbering.
1864    * EmbedObject macro: bug fix for image mimetype
1865    * WSGI:
1866      * fix TWikiDraw saving a drawing by also evaluating the query args.
1867      * work around unpythonic WSGI 1.0 read() API, fixing broken xmlrpc
1868        putPage with mod_wsgi
1869    * Fix highlighting (see MoinMoinBugs/SearchForPagesWithComments).
1870    * Fix logfile code for EACCESS errors.
1871    * Removed the "logging initialized" log messages because it was issued once
1872      per request for CGI.
1873
1874  Other changes:
1875    * Show "Comments" toggling link in edit bar only if the page really
1876      contains comments.
1877    * Made default configuration of surge protection a bit more forgiving,
1878      especially for edit action which is currently also used for previews.
1879    * Updated i18n, system/help pages, added Macedonian system text translation.
1880    * Improved moin xmlrpc write command's builtin docs and auto-append
1881      ?action=xmlrpc2 to the target wiki url given.
1882
1883
1884Version 1.6.1:
1885  New features:
1886    * Improved params for [[target|label|params]]:
1887      Added accesskey link tag attribute, e.g.: [[target|label|accesskey=1]].
1888      Additionally to specifying link tag attributes (like class=foo), you can
1889      now also specify &key=value for getting that into the query string of
1890      the link URL.
1891      The "&" character is important, don't forget it or it won't get into the
1892      query string!
1893      E.g. for an attachment, you can use:
1894      [[attachment:foo.pdf|Direct download of foo.pdf|&do=get]]
1895      E.g. for linking to some specific diff, you can use:
1896      [[SomePage|see that diff|&action=diff,&rev1=23,&rev2=42]]
1897      See also the updated HelpOnLinking page!
1898    * AdvancedSearch: make multipe categories/languages/mimetype selections possible
1899    * Added a configuration directive to only do one bind to the LDAP server.
1900      This is useful if you bind as the user the first time.
1901      ldap_bindonce = False # default
1902
1903  Fixes:
1904    * Fix XSS issue in login action.
1905    * Fix wrong pagename when creating new pages on Mac OS X - that was a big
1906      showstopper for moin 1.6.0 on Mac OS X.
1907    * Fixed 1.6 migration script:
1908      Make sorting python 2.3 compatible.
1909      Just skip corrupted event log lines.
1910      Fix link conversion by using data.pre160 as data_dir.
1911      Fix bad /InterWiki pagenames when encountering interwiki links with bad
1912      wiki names.
1913      Improve ImageLink conversion by using its argument parser code.
1914      Added STONEAGE_IMAGELINK (default: False) switch to wiki markup converter,
1915      toggle it if you had a very old ImageLink macro in production and the
1916      converter output has target and image interchanged.
1917      Fixed UnicodeDecodeError for wrongly encoded attachment filenames.
1918    * Wiki parser:
1919      Fix parsing of link/transclusion description and params.
1920      Fix relative attachment targets.
1921      Fix supported URL schemes (some got lost since 1.5.8).
1922      Showing an upload link for non-existing non-text/non-image transclusions
1923      now (like e.g. *.pdf).
1924    * RST parser: fix attachment: and drawing: processing
1925    * Fix quickhelp when editing RST markup pages.
1926    * Fix Despam action: editor grouping was broken, increase time interval
1927      to 30 days.
1928    * Fix AdvancedSearch domain:system search crashing.
1929    * Only switch off xapian search if we didn't use it because of missing index.
1930    * Fix saving twikidraw drawings by removing 'java' from spider regex.
1931    * Fix classic theme's unsubscribe icon's action link.
1932    * Fix AttachFile action: don't show unzip for packages, only show install
1933      for superuser.
1934    * Fix "su user" troubles on UserPreferences.
1935    * Removed unit tests from ?action=test (due to changes in our test
1936      environment, using py.test now, this was broken).
1937    * Duplicated the top directories' moin.py to wiki/server/moin.py so it gets
1938      installed by setup.py.
1939    * Fix MoinMoinBugs/1.6.0LanguageIgnoreBrowserConfigurationError
1940    * Fix MoinMoinBugs/MoveAttachmentNotWorkingWithModPython
1941    * Fix MoinMoinBugs/1.6.0SupplementationAndAccessRights
1942    * Fix MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin
1943    * Fix MoinMoinBugs/GuiEditorExcelPasteExpatErrorUnboundPrefix
1944
1945  Other changes:
1946    * I18n texts, system and help pages updated, please update your underlay
1947      directory (see wiki/underlay/...).
1948    * Improved "moin" script help, invoke it with "moin ... package command --help".
1949    * Added some .ext -> mimetype mappings missing on some systems (like Mac OS X).
1950    * Removed ImageLink macro, as this can be easily done with moin wiki link
1951      syntax now - see HelpOnMacros/ImageLink (the 1.6 migration scripts convert
1952      all ImageLink calls to moin wiki link syntax).
1953    * Updated EmbedObject macro.
1954
1955
1956Version 1.6.0:
1957 * This is a reduced CHANGES, ommitting details from rc/beta test and also
1958   less interesting minor changes and fixes. If you want to see full detail,
1959   read it there: http://hg.moinmo.in/moin/1.6/file/640f21787334/docs/CHANGES
1960
1961   It took MoinMoin development a lot of work and time to implement all the new
1962   and fixed stuff, so please, before asking for support:
1963   * take the time to read all the stuff below
1964   * read the new help pages (copy them from wiki/underlay/ directory)
1965
1966 * HINT: If you are upgrading from a older moin version and want to keep your
1967   existing data directory, it is essential that you read and follow
1968   README.migration because the wiki markup and user profiles changed significantly.
1969   See also more HINTs below...
1970
1971  New features: ==============================================================
1972
1973  User interface: ------------------------------------------------------------
1974    * Removed "underscore in URL" == "blank in pagename magic" - it made more
1975      trouble than it was worth. If you still want to have a _ in URL, just
1976      put a _ into pagename.
1977    * Discussion pages, see FeatureRequests/DiscussionAndOrCommentPages.
1978    * cfg.password_checker (default: use some simple builtin checks for too
1979      easy passwords and, if available, python-crack).
1980      Use password_checker = None to disable password checking.
1981    * We now have a drafts functionality (no */MoinEditorBackup pages any
1982      more):
1983      * If you edit a page and cancel the edit, use preview or save, a draft
1984        copy gets saved for you to a internal cache area (data/cache/drafts/).
1985      * If it is a save what you did and it succeeds, the draft copy gets
1986        killed right afterwards.
1987      * If you accidentally used cancel or your browser or machine crashes
1988        after you used preview, then just visit that page again and edit it.
1989        the editor will notify you that there is a draft of this page and you
1990        will see a "Load draft" button. Click on it to load the draft into the
1991        editor and save the page.
1992      * The draft storage is per user and per page, but only one draft per page.
1993    * cfg.quicklinks_default and cfg.subscribed_pages_default can be used to
1994      preload new user profiles with configurable values.
1995    * attachment links for non-existing attachments look different now:
1996      the note about the non-existing attachment moved to the link title,
1997      the link is shown with nonexistent class (grey).
1998    * attachment embeddings for non-existing attachments show a grey clip
1999    * The list of InterWiki sites is editable in the wiki (page InterWikiMap),
2000      it is getting reloaded every minute.
2001    * We support some new languages and also have new underlay pages, thanks
2002      to all translators and people helping with the docs!
2003
2004  Actions: -------------------------------------------------------------------
2005    * Synchronisation of wikis using the SyncPages action.
2006    * Xapian (see http://xapian.org/) based indexed search code.
2007      To use this:
2008      * Install xapian-core and xapian-bindings on your machine.
2009        We used 0.9.4, but newer code should hopefully work, too.
2010      * cfg.xapian_search = True
2011      * Execute this to build the index:
2012        $ moin ... index build   # indexes pages and attachments
2013        $ moin ... index build --files=files.lst  # same plus a list of files
2014        You should run those commands as the same user you use for your wiki,
2015        usually this is the webserver userid, e.g.:
2016        $ sudo -u www-data moin --config=... --wiki-url=wiki.example.org/ \
2017               index build --files=files.lst
2018    * New searches:
2019        - LanguageSearch: language:de
2020        - CategorySearch: category:Homepage
2021        - MimetypeSearch: mimetype:image/png (for attachments/files)
2022        - DomainSearch: domain:underlay or domain:standard
2023        - History Search: available in advanced ui
2024      Note: Some currently only available when Xapian is used.
2025    * New config options and their defaults:
2026        xapian_search        False  enables xapian-powered search
2027        xapian_index_dir     None   directory for xapian indices
2028                                    (can be shared for wiki farms)
2029        xapian_stemming      True   toggles usage of stemmer, fallback
2030                                    to False if no stemmer installed
2031        search_results_per_page 10  determines how many hits should be
2032                                    shown on a fullsearch action
2033        xapian_index_history False  indexes all revisions of pages to
2034                                    allow searching in their history
2035    * Speeded up linkto search by avoiding read locks on the pagelinks file.
2036
2037    * The action menu now calls the actions for the revision of the page you
2038      are currently viewing. If you are viewing the current page revision, you
2039      get the same behaviour as in moin 1.5, but if you are viewing an old
2040      page revision, action "raw" will now show you the raw text of this OLD
2041      revision (not of the current revision as moin 1.5 did it).
2042      Note that not every action does evaluate the rev=XX parameter it gets.
2043      Also please note that the edit, info, ... links in the editbar do NOT
2044      use the rev parameter, but operate on the latest page revision (as
2045      they did in moin 1.5).
2046    * Info action lost the links for "raw", "print" and "revert" actions,
2047      because you can now just view an old revision and select those actions
2048      from the menu there.
2049
2050    * ?action=sitemap emits a google sitemap (XML), listing all your wiki pages
2051      and the wiki root URL.
2052      Page                      Priority / Frequency / Last modification
2053      --------------------------------------------------------------------
2054      /                         1.0 / hourly / <now>
2055      cfg.page_front_page       1.0 / hourly / page last edit
2056      TitleIndex,RecentChanges  0.9 / hourly / <now>
2057      content pages             0.5 / daily / page last edit
2058      system/help pages         0.1 / yearly / page last edit
2059
2060    * Action DeletePage and RenamePage can now be used for subpages of a page, too.
2061    * Added Action CopyPage so you can use now an existing page or page hierarchy
2062      as template for a new page, see FeatureRequests/CloneOrCopyPages.
2063    * "Package Pages" action supports attachments now.
2064    * Added SisterPages support:
2065      * action=sisterpages will generate a list of url pagename lines for all
2066        pages in your moin wiki.
2067      * action=pollsistersites will poll all sister sites listed in
2068        cfg.sistersites = [(wikiname, fetchURL), ...]
2069        The fetch URL for the sistersites depends on the wiki engine, e.g.:
2070        # moin based wiki:
2071        ('MoinExample', 'http://moin.example.org/?action=sisterpages')
2072        # oddmuse based wiki:
2073        ('EmacsWiki', 'http://www.emacswiki.org/cgi-bin/test?action=sisterpages')
2074        # JspWiki based wiki:
2075        ('JspWiki', 'http://www.jspwiki.org/SisterSites.jsp')
2076      * If the current page exists on some sister wiki, a link to it will be
2077        added to the navibar.
2078      You can use sister wikis for adding another dimension to your wiki UI: use
2079      it for simple multi language support, or for comments, or anything else
2080      "related" you need.
2081      TODO: add sistersites_force with sister sites we link to even if they do not
2082            have the page yet (will work only for moin as we don't know
2083            pagename>url transformation of other wikis)
2084    * showtags action that lists all tags related to a page.
2085    * action=view does use mimetypes of EmbedObject too and text files will be shown
2086      by using their colorized parsers
2087
2088  Macros: --------------------------------------------------------------------
2089    * RecentChanges:
2090      * If a change has happened after your bookmark, the updated/new/renamed
2091        icon links to the bookmark diff.
2092      * If a page does not exist any more (because it was deleted or renamed),
2093        we link the deleted icon to the diff showing what was deleted (for the
2094        delete action). For the rename action, we just show the deleted icon.
2095    * Conflict icon in RecentChanges is shown if a edit conflict is detected.
2096    * Enhanced SystemAdmin's user browser, so a SuperUser can enable/disable
2097      users from there.
2098    * Included EmbedObject macro for embedding different major mimetypes:
2099      application, audio, image, video, chemical, x-world.
2100      You are able to change the defaults of allowed mimetypes in the config
2101      var mimetypes_embed. The config var mimetypes_xss_protect is used to deny
2102      mimetypes. The order of both variables is Allow, Deny (mimetypes_embed,
2103      mimetypes_xss_protect).
2104    * Added support for @SELF to the NewPage macro.
2105    * GetText2 macro that allows to translate messages that contain data.
2106    * Make the FootNote macro filter duplicates and display a list of numbers
2107      instead of a list of identical footnotes. Thanks to Johannes Berg for the
2108      patch.
2109
2110  Parsers: -------------------------------------------------------------------
2111    * Moin Wiki parser: Changed markup for links, images and macros, see these
2112      wiki pages: HelpOnLinking, HelpOnMacros
2113    * New wiki markup for /* inline comments */ - they get rendered as a span
2114      with class="comment", see next item:
2115    * There is a new item in the edit bar: "Comments". If you click it, the
2116      visibility of all class "comment" tags will be toggled. There is a user
2117      preferences item "show_comments" to set if the default view shows them or not.
2118    * The wiki parser can be used with css classes now:
2119      {{{#!wiki comment
2120      This will render output within a div with class "comment".
2121      You can use any wiki markup as usual.
2122      }}}
2123      You can also combine multiple css classes like this:
2124      {{{#!wiki red/dotted/comment
2125      This will render a red background, dotted border comment section.
2126      }}}
2127      The same thing will work for any other css classes you have.
2128      If the css classes contain the word "comment", they will trigger some
2129      special feature, see next item:
2130    * Wiki nested parser/pre sections work now, using this syntax:
2131      a) just use more curly braces if you have 3 closing in your content:
2132         {{{{
2133         }}} <- does not terminate the section!
2134         }}}}
2135      b) use {{{ + some magic string:
2136         {{{somemagicstring
2137         }}} <- does not terminate the section!
2138         somemagicstring}}}
2139      c) {{{whatever#!python
2140         # py code
2141         whatever}}}
2142      Pitfall: stuff like below does not work as it did in 1.5:
2143         {{{aaa
2144         bbb}}}
2145      Solution:
2146         {{{
2147         aaa
2148         bbb
2149         }}}
2150    * Added support for ircs: URLs (secure IRC).
2151    * New text/creole parser that allows you to use WikiCreole 1.0 markup,
2152      use #format creole.
2153    * HTML parser (called "html") that allows you to use HTML on the page.
2154      Thanks to the trac team for the nice code.
2155    * Added the diff parser from ParserMarket, thanks to Emilio Lopes, Fabien
2156      Ninoles and Juergen Hermann.
2157
2158  XMLRPC: --------------------------------------------------------------------
2159    * actions_excluded now defaults to ['xmlrpc'] - this kind of disables the
2160      built-in wiki xmlrpc server code (not completely: it will just answer
2161      with a Fault instance for any request). If you want to use xmlrpc v1 or
2162      v2, you have to remove 'xmlrpc' from the actions_excluded list (for
2163      example if you want to use wikisync, mailimport or any other feature
2164      using xmlrpc). If you enable xmlrpc, it will be possible that someone
2165      changes your wiki content by using xmlrpc (it will of course honour ACLs).
2166    * New XMLRPC methods (see doc strings for details):
2167      * getMoinVersion
2168      * system.multicall -- multicall support
2169      * Authentication System: getAuthToken/appyAuthToken
2170      * getDiff -- method to get binary diffs
2171      * mergeDiff -- method to local changes remotely
2172      * interwikiName -- method to get the IWID and the interwiki moniker
2173      * getAllPagesEx -- method to get the pagelist in a special way (revnos,
2174        no system pages etc.)
2175      * getAuthToken -- make and authentication token by supplying username/password
2176      * applyAuthToken -- set request.user for following xmlrpc calls (within the
2177                          same multicall)
2178      * getUserProfile -- method to get user profile data for request.user
2179    * Added XMLRPC methods for attachment handling. Thanks to Matthew Gilbert.
2180    * XMLRPC putPage method adjusted to new AuthToken, config vars
2181      xmlrpc_putpage_enabled and xmlrpc_putpage_trusted_only removed.
2182
2183  Scripts / Commandline interface: -------------------------------------------
2184    * moin export dump now better conforms to the theme guidelines.
2185    * Added a --dump-user option to the moin export dump command.
2186      Thanks to Oliver O'Halloran.
2187
2188  Security / Auth / AntiSpam / etc.: -----------------------------------------
2189    * Hierarchical ACLs are now supported, i.e. pages inheriting permissions
2190      from higher-level pages. See HelpOnAccessControlLists.
2191    * If you have "#acl" (without the quotes) on a page, this means now:
2192      "this page has own (empty) ACLs, so do not use acl_rights_default here"
2193      Please note that this is COMPLETELY DIFFERENT from having no ACL line at
2194      all on the page (acl_rights_default is used in that case).
2195    * Antispam master url is now configurable via cfg.antispam_master_url.
2196      The default is to fetch the antispam patterns from MoinMaster wiki.
2197    * Antispam now checks the edit comments against BadContent also.
2198    * TextCHAs (text-form CAPTCHAs).
2199      Due to increasingly annoying wiki spammers, we added the option to use
2200      TextCHAs (for page save (not for preview!), for attachment upload, for
2201      user creation (not for profile save)).
2202      This function is disabled by default. If you run a wiki that is editable
2203      by anonymous or non-approved users from the internet (i.e. All: or Known:
2204      in ACL terms), you should enable it in your wiki config by:
2205      textchas = { # DO NOT USE EXACTLY THESE QUESTIONS!!!
2206          'en': {
2207              u'H2O is ...': u'water', # bad: too common
2208              u'2 apples and three bananas makes how many fruits?': ur'(five|5)', # good
2209              u'2 apples and three pigs makes how many fruits?': ur'(two|2)', # good
2210              u'2+3': ur'5', # bad: computable
2211              u'
2212          },
2213          'de': { # for german users
2214              u'H2O ist ...': u'wasser',
2215          },
2216      }
2217      This means that english users will get some random question from the 'en'
2218      set, german users will get some from the 'de' set. If there is no 'de'
2219      set configured, moin will fallback to language_default and then to 'en',
2220      so make sure that you at least have a 'en' set configured (or whatever
2221      you have set as language_default).
2222      You need to use unicode for the questions and answers (see that u"...").
2223      For the answer, you need to give a regular expression:
2224      * In the easiest case, this is just some word or sentence (first en
2225        example). It will be matched in a case-insensitive way.
2226      * For more complex stuff, you can use the power of regular expressions,
2227        e.g. if multiple answers are correct (second en example). Any answer
2228        matching the regular expression will be considered as correct, any
2229        non-matching answer will be considered as incorrect.
2230
2231      Tipps for making it hard to break for the spammers and easy for the users:
2232      * Use site-specific (not too common) questions.
2233      * Don't use too hard questions (annoys legitimate users).
2234      * Don't use computable questions.
2235      * Don't reuse textchas from other sites.
2236
2237      textchas_disabled_group = None # (default)
2238      Set this to some group name and noone in this group will get textchas.
2239      E.g.: textchas_disabled_group = u'NoTextChasGroup'
2240
2241    * The login page gives now the possibility to recover a lost password, thanks to
2242      Oliver Siemoneit. This is especially useful for wikis where access to user
2243      preferences is restricted by acl.
2244    * Session handling for logged-in users and (not by default due to expiry
2245      problems) anonymous users.
2246    * Updated the ldap_login code from 1.5 branch, supports TLS now.
2247      See MoinMoin/config/multiconfig.py for supported configuration options
2248      and their defaults (and please just change what you need to change,
2249      in your wikiconfig).
2250    * Interwiki auth: You need to define cfg.trusted_wikis and
2251       cfg.user_autocreate to use it. Logging in works by entering:
2252      Name: RemoteWikiName RemoteUserName
2253      Password: remotepass
2254      Then moin contacts RemoteWikiName after looking it up in the interwiki
2255      map and tries to authenticate there using RemoteUserName and remotepass.
2256      If it succeeds, the remote wiki will return the remote user profile items
2257      and your local moin will autocreate an account with these values.
2258
2259  Server / Network / Logging: ------------------------------------------------
2260    * The standalone server script moved to the toplevel directory. This makes
2261      it possible to directly start moin.py without additional configuration
2262      to run a MoinMoin DesktopEdition like wiki setup.
2263      Be careful: DesktopEdition uses relaxed security settings only suitable
2264      for personal and local use.
2265    * Added TLS/SSL support to the standalone server. Thanks to Matthew Gilbert.
2266      To use TLS/SSL support you must also install the TLSLite library
2267      (http://trevp.net/tlslite/). Version 0.3.8 was used for development and
2268      testing.
2269
2270    * cfg.log_reverse_dns_lookups [default: True] - you can set this to False
2271      if rev. dns lookups are broken in your network (leading to long delays
2272      on page saves). With False, edit-log will only contain IP, not hostname.
2273    * Added support for "304 not modified" response header for AttachFile get
2274      and rss_rc actions - faster, less traffic, less load.
2275
2276    * Added logging framework, using stdlib's "logging" module. Just do
2277      import logging ; logging.debug("your text"). Depending on configuration
2278      in the server Config class, your stuff will be written to screen (stderr),
2279      to a moin logfile, to apache's error.log, etc.:
2280      logPath = None # 'moin.log'
2281      loglevel_file = None # logging.DEBUG/INFO/WARNING/ERROR/CRITICAL
2282      loglevel_stderr = None # logging.DEBUG/INFO/WARNING/ERROR/CRITICAL
2283      NOTE: this is NOT in wikiconfig, but e.g. in moin.cgi or moin.py or ...
2284
2285    * Added some experimental and disabled code, that uses x-forwarded-for
2286      header (if present) to get the right "outside" IP before a request
2287      enters our chain of trusted (reverse) proxies.
2288      This code has the problem that we can't configure it in wikiconfig, so
2289      if you want to use it / test it, you have to edit the moin code:
2290      MoinMoin/request/__init__.py - edit proxies_trusted (near the top).
2291      We will try to make this easier to configure, but there was no time left
2292      before 1.6.0 release for doing bigger code refactorings needed for that.
2293
2294  Mail: ----------------------------------------------------------------------
2295    * You can send email to the wiki now (requires xmlrpc), see:
2296      FeatureRequests/WikiEmailIntegration, HelpOnConfiguration/EmailSupport
2297
2298    * Mail notifications contain a link to the diff action so the user
2299      can see the coloured difference more easily. Thanks to Tobias Polzin.
2300
2301  Other changes: =============================================================
2302    * HINT: please copy a new version of your server script from the wiki/server/
2303      directory and edit it to match your setup.
2304    * HINT: instead of "from MoinMoin.multiconfig import DefaultConfig" you
2305      need to use "from MoinMoin.config.multiconfig import DefaultConfig" now.
2306      You need to change this in your wikiconfig.py or farmconfig.py file.
2307      See MoinMoin/multiconfig.py for an alternative way if you can't do that.
2308    * HINT: you need to change some imports (if you have them in your config):
2309      Old: from MoinMoin.util.antispam import SecurityPolicy
2310      New: from MoinMoin.security.antispam import SecurityPolicy
2311      Old: from MoinMoin.util.autoadmin import SecurityPolicy
2312      New: from MoinMoin.security.autoadmin import SecurityPolicy
2313    * HINT: you need to change your auth stuff, the new way is:
2314      from MoinMoin.auth import moin_login, moin_session
2315      from MoinMoin.auth.http import http
2316      auth = [http, moin_login, moin_session]
2317      Do it in a similar way for other auth methods.
2318    * HINT: you need to change your url_prefix setting in 2 ways:
2319      1. The setting is now called url_prefix_static (to make it more clear
2320         that we mean the static stuff, not the wiki script url).
2321      2. The strongly recommended (and default) value of it is '/moin_static160'
2322         for moin version 1.6.0 (and will be ...161 for moin 1.6.1). It is
2323         possible and recommended to use a very long cache lifetime for static
2324         stuff now (Expires: access plus 1 year), because we require to change
2325         the URL of static stuff when the static stuff changes (e.g. on a
2326         version upgrade of moin) to avoid problems with stale cache content.
2327         Your moin will be faster with lower load and traffic because of this.
2328         For standalone server, we use 1 year expiry for static stuff now.
2329         For Apache, Lighttpd and other "external" servers, you have to care
2330         for configuring them to use a long expiry and change url_prefix_static
2331         related configuration on upgrade.
2332      HINT: if you run standalone or Twisted server, the easiest way to get a
2333            working configuration (with server configuration matching wiki
2334            configuration) is to NOT set url_prefix_static at all. Moin will
2335            use matching configuration defaults in this case.
2336    * url_prefix_action ['action'] was introduced for lowering load and traffic
2337      caused by searchengine crawlers. Up to now, crawlers where causing a high
2338      load in internet moin wikis because they tried to get about everything,
2339      including all actions linked from the user interface.
2340      Known crawlers only get 403 for most actions, but nevertheless they first
2341      tried. There was no means keeping them away from actions due to the rather
2342      braindead robots.txt standard. You can only disallow pathes there, but
2343      moin's actions were querystring based, not path based (this would need
2344      regex support in robots.txt, but there is no such thing).
2345      This changed now. Moin is able to generate action URLs you can handle in
2346      robots.txt, like /action/info/PageName?action=info. So if you don't want
2347      bots triggering actions, just disallow /action/ there. Keep in mind that
2348      attachments are handled by /action/AttachFile, so if you want attached
2349      files and pictures indexed by search engine, don't disallow
2350      /action/AttachFile/ in your robots.txt. In order to use this feature,
2351      set url_prefix_action in your wikiconfig to e.g. "action".
2352    * We use (again) the same browser compatibility check as FCKeditor uses
2353      internally, too. So if GUI editor invocation is broken due to browser
2354      compatibility issues or a wrong browser version check, please file a bug
2355      at FCKeditor development or browser development.
2356    * HINT: We removed Lupy based indexed search code. If you were brave enough
2357      to use cfg.lupy_search, you maybe want to try cfg.xapian_search instead.
2358
2359  Developer notes: ===========================================================
2360    * We moved the IE hacks to theme/css/msie.css that gets included after all
2361      other css files (but before the user css file) using a conditional
2362      comment with "if IE", so it gets only loaded for MSIE (no matter which
2363      version). The file has some standard css inside (evaluated on all MSIE
2364      versions) and some * html hacks that only IE < 7 will read.
2365      HINT: if you use custom themes, you want to update them in the same way.
2366    * autofilters for databrowser widget. Thanks to Johannes Berg for the patch.
2367    * changed formatter.attachment_link call (it is now more flexible,
2368      because you can render the stuff between link start and link end yourself)
2369    * Page.url() does not escape any more. You have to use wikiutil.escape()
2370      yourself if you want to write the URL to HTML and it contains e.g. &.
2371    * The testing wikiconfig moved to tests/wikiconfig.py, the testing wiki
2372      is now created in tests/wiki/...
2373    * HINT: Killed "processors" (finally), formatter method changed to:
2374      formatter.parser(parsername, lines)
2375    * Refactored some actions to use ActionBase base class.
2376    * Moved "test" action from wikiaction to MoinMoin/action/
2377      (and use ActionBase).
2378    * Moved MoinMoin/config.py to MoinMoin/config/__init__.py.
2379    * Moved MoinMoin/multiconfig.py to MoinMoin/config/multiconfig.py.
2380    * Moved "SystemInfo" macro from wikimacro to MoinMoin/macro/.
2381    * Moved wikiaction.py stuff to MoinMoin/action/__init__.py.
2382    * Moved wikimacro.py stuff to MoinMoin/macro/__init__.py.
2383    * Moved wikirpc.py stuff to MoinMoin/xmlrpc/__init__.py.
2384    * Moved wikitest.py stuff to action/test.py (only used from there).
2385    * Moved formatter/base.py to formatter/__init__.py (FormatterBase).
2386    * Moved util/ParserBase.py to parser/ParserBase.py.
2387    * Moved / splitted request.py into MoinMoin/request/*.
2388      Most stuff will be broken, please help fixing it (usually some imports
2389      will be missing and the adaptor script will need a change maybe):
2390      Tested successfully: CGI, CLI, STANDALONE, FCGI, TWISTED
2391    * Moved security.py to security/__init__.py.
2392    * Moved wikiacl.py to security/__init__.py.
2393    * Moved logfile/logfile.py to logfile/__init__.py.
2394    * Moved mailimport.py to mail/mailimport.py.
2395    * Moved util/mail.py to mail/sendmail.py.
2396    * Moved auth.py to auth/__init__.py.
2397      Moved util/sessionParser.py to auth/_PHPsessionParser.py.
2398      teared auth code into single modules under auth/* - moin_session handling
2399      and the builting moin_login method are in auth/__init__.py.
2400    * Added wikiutil.MimeType class (works internally with sanitized mime
2401      types because the official ones suck).
2402    * Renamed parsers to module names representing sane mimetypes, e.g.:
2403      parser.wiki -> parser.text_moin_wiki
2404    * Added thread_monitor debugging aid. It can be activated using:
2405      from MoinMoin.util import thread_monitor; thread_monitor.activate_hook()
2406      and then triggered by requesting URL ...?action=thread_monitor - please
2407      be aware that monitoring threads has a big performance impact on its own,
2408      so you only want to temporarily enable this for debugging.
2409      By default, it dumps its output to the data_dir as tm_<timestamp>.log,
2410      you can change this at bottom of action/thread_monitor.py if you want to
2411      see output in your browser.
2412    * Introduced scope parameter to CacheEntry() - if you specify 'farm', it
2413      will cache into a common directory for all wikis in the same farm, if you
2414      specify 'wiki', it will use a cache directory per wiki and if you specify
2415      'item', it will use a cache directory per item (== per page).
2416      Creating a CacheEntry without explicit scope is DEPRECATED.
2417    * Smileys moved from MoinMoin.config to MoinMoin.theme.
2418    * Removed all _ magic in URLs and filenames.
2419    * request.action now has the action requested, default: 'show'.
2420    * Cleaned up duplicated http_headers code and DEPRECATED this function
2421      call (it was sometimes confused with setHttpHeaders call) - it will
2422      vanish with moin 1.7, so please fix your custom plugins!
2423      The replacement is:
2424          request.emit_http_headers(more_headers=[])
2425      This call pre-processes the headers list (encoding from unicode, making
2426      sure that there is exactly ONE content-type header, etc.) and then
2427      calls a server specific helper _emit_http_headers to emit it.
2428      Tested successfully: CGI, STANDALONE, FCGI, TWISTED
2429    * setResponseCode request method DEPRECATED (it only worked for Twisted
2430      anyway), just use emit_http_headers and include a Status: XXX header.
2431      Method will vanish with moin 1.7.
2432    * cfg.url_prefix is DEPRECATED, please use cfg.url_prefix_static.
2433    * d['title_link'] is not supported any more. You can easily make that link
2434      on your own in your theme, see example in MoinMoin/theme/__init__.py,
2435      function "title".
2436    * There is a new Page method called Page.get_raw_body_str that returns
2437      the encoded page body. This is useful if you just deal with byte data
2438      (e.g. while generating binary diffs).
2439    * The TagStore/PickleTagStore system is used to store the syncronisation tags.
2440    * XMLRPC functions may return Fault instances from now on
2441    * Moin got multicall support, including a module that makes it usable on the
2442      client-side without requiring Python 2.4
2443    * Added no_magic to text_html formatter to disable tag autoclosing.
2444    * MOIN_DEBUG can be set in the environment to let MoinMoin ignore exceptions
2445      that would lead to a traceback in the browser. Thanks to Raphael Bossek.
2446    * There is a new MoinMoin.Page.ItemCache class now with automatic cache
2447      invalidation based on global edit-log. We currently use it to cache page
2448      acls, speedup Page.get_rev and reading the page local edit-log.
2449    * Added wikiutil.renderText parse and format raw wiki markup with all page elements.
2450    * The user file format has changed, old files will be read correctly but
2451      will silently be upgraded to the new format so old versions will not
2452      read the new files correctly (this only affects 'subscribed_pages' and
2453      'quicklinks' which will be lost when downgrading.)
2454
2455
2456Version 1.5.8:
2457  New features:
2458    * Added timing.log to help performance debugging. Use cfg.log_timing = True
2459      to update <data_dir>/timing.log (default is False, meaning no logging).
2460
2461      Example log entries:
2462
2463
2464      Timestamp       PID   Timing Flag action     URL
2465      -----------------------------------------------------------------------------
2466      20070512 184401 22690 vvv         None       moinmoin.wikiwikiweb.de/RssFeeds
2467      20070512 184401 22690 0.267s    - show       moinmoin.wikiwikiweb.de/RssFeeds
2468
2469      Timestamp: YYYYMMDD HHMMSS (UTC)
2470      PID: the process ID of the moin process
2471      Timing: when action starts, it will be "vvv"
2472              when it ends, it logs the total time it needed for execution
2473      Flag (some are only logged at end of action):
2474      +   Page exists
2475      -   Page does not exist
2476      B   user agent was recognized as bot / spider
2477      !x! Action took rather long (the higher the x, the longer it took - this
2478          makes it easy to grep for problematic stuff).
2479      Action: action name (None is when no action was specified, moin assumes
2480              "show" for that case)
2481      URL: the requested URL
2482
2483      For more information about tuning your moin setup, see:
2484      http://moinmoin.wikiwikiweb.de/PerformanceTuning
2485    * Added support for ircs, webcal, xmpp, ed2k and rootz protocols - we
2486      moved all protocols to config.url_schemas, so this is not empty any more.
2487      It is possible to use these protocols now on wiki pages and in the
2488      navi_bar. We just generate the URLs, it is up to your browser what it
2489      does when clicking on those links.
2490    * cfg.traceback_show (default: 1) can be used to disable showing tracebacks.
2491      cfg.traceback_log_dir (default: None) can be used to set a directory
2492      that is used to dump traceback files to. Your users will get a notice to
2493      which (random) file in that directory the traceback was been written.
2494      NOTE: while you can feel free to set traceback_show = 0 and
2495      traceback_log_dir = None, we will also feel free to reject bug reports
2496      when you (or your site's users) don't give us enough information (like a
2497      traceback file) to debug the problem. If you set traceback_show = 0,
2498      we recommend pointing traceback_log_dir to a directory with reasonable
2499      free space and putting a page onto your wiki that describes who has to
2500      get contacted (usually the wiki server admin) in case a traceback happens.
2501      The admin can then locate the traceback file and submit it to moin
2502      development, if the bug is not already known (see MoinMoin:MoinMoinBugs).
2503      Of course we will also need all the other details of a bug report, not
2504      only the traceback file.
2505
2506  Other changes:
2507    * Updated spider agents list.
2508    * Reduce bot/spider cpu usage for SystemInfo, OrphanedPages, WantedPages,
2509      PageHits, PageSize, WordIndex macros (we just return nothing for bots).
2510
2511  Bugfixes:
2512    * XSS fixes, see http://secunia.com/advisories/24138/ (item 1 and 2).
2513    * ACL security fixes:
2514      * MonthCalendar respects ACLs of day pages now.
2515      * Check the ACL for the rst markup include directive.
2516    * Fixed cleaning of edit comments (control chars in there could damage
2517      edit-log).
2518    * Fixed in-process caching of antispam patterns (didn't update the cache
2519      for multi-process, persistent servers).
2520    * Correct encoding/decoding for surge-log data, fixes leftover
2521      surge-logXXXXXXX.tmp files in data/cache/surgeprotect.
2522    * Fixed mode of cache files (mkstemp creates them with 0600 mode).
2523    * Symbolic entities with numbers (like &sup2;) did not work, fixed.
2524    * We open data/error.log earlier now and we also use it for FastCGI.
2525    * Fixed unicode cfg.page_group_regex.
2526    * Fixed moin.spec to use english date format.
2527    * GUI converter: fixed conversion of relative wiki links.
2528    * Fixed NewPage macro button label to not be formatted as wiki text.
2529
2530Version 1.5.7:
2531  New features:
2532    * added url_prefix_local which is used for stuff that must be loaded from
2533      same site as the wiki engine (e.g. FCKeditor GUI editor applet), while
2534      url_prefix can be a remote server serving the static files (css/img).
2535      If not set (or set to None), url_prefix_local will default to the value
2536      of url_prefix.
2537    * We save some CPU and disk I/O by having EditTemplates and LikePages macro
2538      (both used on MissingPage) check whether the requesting entity was
2539      identified as a spider (e.g. search engine bot) and do nothing in that
2540      case. Normal users won't see any difference.
2541    * For AttachFile, you can now choose to overwrite existing files of same
2542      name (nice for updating files).
2543
2544  Bugfixes:
2545    * XSS Fixes:
2546      * fixed unescaped page info display.
2547      * fixed unescaped page name display in AttachFile, RenamePage and
2548        LocalSiteMap actions
2549    * WantedPages listed existing pages that are not readable for the user,
2550      but are linked from pages that ARE readable for the user (so this is NOT
2551      a privacy/security issue). We now don't list those pages any more as it
2552      is pointless/confusing, the user can't read or edit there anyway.
2553    * MoinMoin:MoinMoinBugs/TableOfContentsUsesNonExistingIncludeLinks
2554    * MoinMoin:MoinMoinBugs/ActionsExcludedTriggerError
2555    * GUI editor/converter:
2556      * ignore <col>/<colgroup>/<meta> elements
2557      * support <a> within blockquote
2558    * Remove generated=... attribute from pagelink html output (this attr is
2559      for internal use only). w3c validator is now happier again.
2560    * Fixed css class "userpref" (not: "userprefs") of the Login form.
2561    * Fixed the version number check in the xslt parser for 4suite >= 1.0.
2562    * We reset the umask to the wanted value every request. This should fix
2563      wrong file modes when used with Twisted (twistd uses a hardcoded 0077
2564      umask in daemonize()).
2565    * Avoid trouble when saving pages with antispam function when MoinMaster
2566      wiki is having troubles (catch xmlrpc Fault).
2567
2568  Other changes:
2569    * Standalone server does not do reverse DNS lookups any more (this is a
2570      standard feature of BaseHTTPServer stdlib module, but we override this
2571      now and just print the IP).
2572    * We moved the IE hacks to theme/css/msie.css that gets included after all
2573      other css files (but before the user css file) using a conditional
2574      comment with "if IE", so it gets only loaded for MSIE (no matter which
2575      version). The file has some standard css inside (evaluated on all MSIE
2576      versions) and some * html hacks that only IE < 7 will read.
2577      HINT: if you use custom themes, you want to update them in the same way.
2578    * Improved ldap auth:
2579      * cfg.ldap_name_attribute was removed because of new cfg.ldap_filter.
2580        If you had ldap_name_attribute = 'sAMAccountName' before, just use
2581        ldap_filter = '(sAMAccountName=%(username)s)' now.
2582      * New cfg.ldap_filter used for the ldap filter string used in the ldap
2583        search instead of the rather limited, partly hardcoded filter we used
2584        before. This is much more flexible:
2585        ldap_filter = '(sAMAccountName=%(username)s)'
2586        You can also do more complex filtering expressions like:
2587        '(&(cn=%(username)s)(memberOf=CN=WikiUsers,OU=Groups,DC=example,DC=org))'
2588      * Added some processing to filter out result entries with dn == None.
2589      * We set REFERRALS option to 0 before initializing the ldap server
2590        connection (this seems to be needed for Active Directory servers).
2591      * We support self-signed ssl certs for ldaps - completely untested.
2592      * New cfg.ldap_surname_attribute (usually 'sn'), was hardcoded before.
2593      * New cfg.ldap_givenname_attribute (usually 'givenName'), hardcoded before.
2594      * New cfg.ldap_aliasname_attribute (usually 'displayName') - if this
2595        attribute is not there or empty (in the results of the ldap lookup for
2596        the user), we just make up the aliasname from surname and givenname
2597        attribute.
2598      * We only request the attributes we need from ldap (was: all attrs).
2599      * We deny user login (and break out of auth chain) for the following cases:
2600        * if a user is not found by ldap lookup
2601        * if we find more than one matching entry
2602        * if the password is empty or incorrect
2603        * if some exception happens
2604      * Please note that there is an updated ldap sample config in directory
2605        wiki/config/more_samples/.
2606      * Added experimental LDAP SSL/TLS support (untested, please help testing),
2607        see also the sample config.
2608    * Work around a IE7 rendering problem with long pages getting more and
2609      more narrow. We just applied the same "fix" as we used for IE6, using
2610      "display: none" for span.anchor for IE browsers.
2611    * RSS feed related:
2612      * We used to emit a <link> tag for the action=rss_rc RSS feed on any
2613        page. This was changed, we now emit that link only on RecentChanges and
2614        the current user's language translation of RecentChanges.
2615        This was changed because Google Toolbar requests the RSS feed linked
2616        by such a link tag every time it sees one. Thus, if you used the wiki
2617        normally, it requested the RSS feed every few seconds and caused
2618        problems due to surge protection kicking in because of that.
2619      * HINT for custom theme users: if your theme code calls
2620        rsslink(), then you need to change that to rsslink(d) for 1.5.7+.
2621
2622
2623Version 1.5.6:
2624  A general security notice:
2625      Check your Python version, there was a buffer overflow issue in Python
2626      recently! Details: http://moinmoin.wikiwikiweb.de/PythonUnicodeEscapeBug
2627
2628  Bugfixes:
2629    * Fix AttributeError traceback with Standalone server (if_modified_since)
2630    * Fix AttachFile "304 not modified" and redirect status code for Twisted
2631    * http auth: we now decode username and password to unicode (using
2632      config.charset == utf-8). Same for SSL client cert auth and CN.
2633    * Avoid infinite recursion in Page.parsePageLinks.
2634    * Fixed standalone server failing to shutdown if interface == "".
2635    * Now MoinMoin does not think anymore that every page links to various user
2636      homepages.
2637    * Made the irssi parser more tolerant (Thanks to "TheAnarcat").
2638    * Now multiple formatters can be used per request, the send_page code was
2639      not reentrant to this regard. Fixes "empty" search results.
2640    * Fixed problem with "=" in ImageLink macro links.
2641    * Not a moin bug, but a silly stdlib os.tempnam function made trouble to
2642      some people because it lets you override the path given in the code
2643      by setting the environment variable TMP(DIR). We now use a different
2644      function to avoid renaming trouble when TMP(DIR) points to a different
2645      file system.
2646    * Fixed antispam update on every save (Thanks to "TheAnarcat").
2647    * GUI converter: don't throw away rowclass for tables.
2648    * GUI editor formatter: allow height for table cells.
2649    * GUI editor formatter: comment texts are output using the formatter now.
2650
2651  New features:
2652    * Mail notifications contain a link to the diff action so the user
2653      can see the coloured difference more easily. Thanks to Tobias Polzin.
2654    * FeatureRequests/MoveAttachments - you can move attachments from one
2655      page to another (and also rename the attachment at the same time).
2656      Thanks to Reimar Bauer.
2657    * Added support for linking to attachment: and inline: URLs with ImageLink.
2658    * Added UNIX socket support for FastCGI, just set the port to some (socket)
2659      filename. Details see: MoinMoin:FeatureRequests/FastCgiUnixSocket
2660    * [[Attachlist(pagename,mimetype)]] lists attachments of pagename (default:
2661      current page) with optional mimetype restriction (default: all).
2662      Thanks to Reimar Bauer.
2663
2664  Other changes:
2665    * Minor performance improvements (might be noticeable if you have many
2666      custom navi_bar entries and high server load).
2667    * Avoid usage of no-cache because it breaks attachment download on IE6.
2668      This is a IE bug, not a moin bug.
2669    * Added XHTML to the unsafe list.
2670    * Changed the rst parser to be compatible to the new docutils interface
2671      for directives.
2672    * Updated EmbedObject macro.
2673
2674
2675Version 1.5.5a:
2676  Bugfixes:
2677    * fixed ticket creation to only use constant values
2678
2679Version 1.5.5:
2680  HINT: read docs/README.migration.
2681  HINT: there was NO change in the underlay/ pages since 1.5.4.
2682  HINT: If you experience problems with the reStructured Text (rst) parser,
2683        please downgrade docutils to "0.4" because there were major interface
2684        breaking API refactorings on the docutils trunk.
2685
2686  Bugfixes:
2687    * GUI editor fixes:
2688      * Fixed MoinMoinBugs/GuiEditorModifiesInterwikiPreferred.
2689      * Fixed MoinMoinBugs/TableAlignmentProbsWithGUI.
2690    * Not a moin bug, but it severely annoyed IE users and also was less
2691      comfortable for users of other browser: since about 1.5.4, we served
2692      attachments with Content-Disposition: attachment - so that the user has
2693      to save them to disk. This was to fix a possible XSS attack using attached
2694      HTML files with Javascript inside for stealing your moin cookie or doing
2695      other nasty things. We improved this by using different behaviour depending
2696      on the potential danger the attached file has when served inline:
2697      mimetypes_xss_protect = ['text/html', 'application/x-shockwave-flash', ]
2698      This is the default value. If you know more dangerous stuff, please just
2699      add the mimetypes there to protect your users and file a bug report
2700      telling us what we missed.
2701    * Fixed MoinMoinBugs/ReStructuredTextRelativeLinksBroken, thanks to Stefan
2702      Merten.
2703    * Make tickets used for some actions more safe.
2704
2705  New features:
2706    * edit_ticketing [True] - we protect page save by a ticket (same stuff we
2707      already use for DeletePage and RenamePage action).
2708      NOTE: If you don't use your browser for editing, but some tool like
2709            "editmoin" or "MoinMoin plugin for jEdit", you'll need an update
2710            of them supporting the ticket.
2711            Alternatively, you can use edit_ticketing = False setting - this
2712            is not recommended for internet wikis as it will make spamming them
2713            easier.
2714    * If we detect some spammer, we kick him out by triggering surge protection
2715      (if surge protection is not disabled).
2716
2717Version 1.5.5rc1:
2718  Bugfixes:
2719    * Fixed MoinMoinBugs/XmlRpcBrokenForFastCgi - thanks to Johannes Berg.
2720    * Fixed gui editor converter confusing of `` and {{{}}} markup.
2721    * Fixed emission of HTTP headers (esp. Vary: Cache-Control:).
2722    * Fixed a bad crash that happens (on ANY page!) when you put a *Dict
2723      page's name as a member into a *Group page.
2724    * Fix MyPages action title to use an unformatted string.
2725    * Fix double quoted-printable encoding in generated emails (note: this is
2726      not a moin bug - this just works around bugs in python stdlib).
2727    * Fix mode of drawing files (use config.umask).
2728    * Fix trouble with /?action= urls by dropping getPageNameFromQueryString
2729      code.
2730    * Fixed sre unpickle issues seen on some machines by avoiding to pickle
2731      the regex.
2732    * Fix Clock code, add more timers.
2733    * Worked around FastCGI problem on Lighttpd: empty lines in the error log.
2734    * Fix (add) locking for caching's .remove() call, small fixes to lock code.
2735    * Print error message when --target-dir=path is missing from moin export
2736      dump command.
2737
2738  New features:
2739    * Added support for "304 not modified" response header for AttachFile get
2740      and rss_rc actions - faster, less traffic, less load.
2741    * Limit rss with full diffs to 5 items.
2742    * Allow surge_action_limits = None to disable surge protection.
2743    * moin.fcg improved - if you use FastCGI, you must use the new file:
2744      * can self-terminate after some number of requests (default: -1, this
2745        means "unlimited lifetime")
2746      * the count of created threads is limited now (default: 5), you can use
2747        1 to use non-threaded operation.
2748      * configurable socket.listen() backlog (default: 5)
2749    * Added indonesian i18n (id).
2750    * Some measures against spammers trying to brute force their spam into moin.
2751    * EmbedObject macro: added mov, mpg and midi support
2752    * moin ... export dump --target-dir=PATH --page=PAGENAME_REGEX
2753      You must specify --target-dir (where dump will write the html files to)
2754      and you may specify --page and either a page name or a regex used to
2755      match all pages you want to export. Default is to export all pages.
2756
2757  Other changes:
2758    * Tuning:
2759      * more efficient locking code on POSIX platforms, we do much less I/O
2760        for locking now
2761      * removed most chmod calls in favour of a single os.umask call
2762    * Improved Python 2.5 compatibility. Note: if you think that MoinMoin
2763      is using too much RAM, you might want to look at Python 2.5 because
2764      of its improved memory management.
2765    * Throw away SAVE comments longer than 200 chars (you can't enter those by
2766      the user interface, so only spammer using automatic POSTs do them).
2767    * Updated spider user agent list.
2768    * BadContent and LocalBadContent now get noindex,nofollow robots header,
2769      same as POSTs.
2770    * Standalone opens it logfile unbuffered from now on, thanks to
2771      Carsten Grohmann.
2772    * Avoid trouble when request.write() data contains None, just skip it -
2773      thanks to Juergen Hermann.
2774    * Instead of showing a ConfigurationError, moin now emits "404 Not found"
2775      http headers and a hint about what could be wrong. This won't fill up
2776      your logs just because of typos and spiders still trying old URLs.
2777
2778
2779Version 1.5.4:
2780    HINT: read docs/README.migration.
2781Version 1.5.4-current:
2782    * increased maxlength of some input fields from 80 to 200
2783
2784Version 1.5.current:
2785  Developer notes:
2786    * We switched to Mercurial SCM, see here for more infos:
2787      http://moinmoin.wikiwikiweb.de/MoinDev/MercurialGuide
2788
2789  Bugfixes:
2790    * fix MonthCalendar macro for non-ASCII pagenames (thanks to Jonas Smedegaard)
2791    * remove 'search' and 'google' from bot user agent list and add some more
2792      specific terms
2793    * Fix the forgotten password email login URL and also properly encode the
2794      email body. Thanks to Robin Dunn for the patch.
2795    * Applied a patch by Matthew Gilbert for increased compatiblity with
2796      latest docutils.
2797
2798
2799Version 1.5.3:
2800  New Features:
2801    * Added CSS classes for TableOfContents macro.
2802
2803  Bug Fixes:
2804    * GUI editor / GUI editor converter:
2805      * Fixed missing GUI editor link in edit bar.
2806      * Fixed table/row/cell style spaces.
2807      * Changed <p> generation for macros.
2808      * Fixed handling of subpages.
2809      * Fixed processing of complex list elements (thanks to Craig Markwardt).
2810      * Fixed processing of html \n (thanks to Craig Markwardt).
2811      * Fixed joining of comment lines with text below them.
2812      * Fixed table height attribute crash.
2813    * Fixed sslclientcert auth.
2814    * Added some missing files to i18n processing, translatable strings more
2815      complete now.
2816    * Change <p> generation from self-closing (<p />) to auto-closing (only
2817      emit <p>, let browser find place for </p>).
2818    * Fix eating of newline before tables.
2819    * Fixed incorrect login hint for not logged-in users trying a disallowed
2820      action.
2821    * Fixed nasty missing or double </a> formatter bug (mostly happening when
2822      user has enabled questionmarks for nonexisting pages).
2823
2824  Other Changes:
2825    * We catch and ignore html to wiki conversion errors in case of hitting
2826      the cancel button, so you can get out of the error screen.
2827
2828Version 1.5.3-rc2:
2829  New Features:
2830    * Modified SystemInfo macro to give human readable units and disk usage
2831    * cfg.editor_quickhelp makes the quick help below the editor configurable
2832      (at least as far as the default_markup is concerned). If set to None,
2833      it doesn't display any quickhelp. Thanks to Seth Falcon for the patch.
2834
2835  Bugfixes:
2836    * Fixed double class attribute for nonexistent links
2837    * Fixed double </a> with qm_noexist option
2838    * Fixed table xxx="yyy" style attribute parsing
2839    * If not (editor_force and editor_default == 'text') then display GUI mode
2840      switch button (this is only a partial fix, but enough to deny the GUI
2841      mode to your users completely)
2842    * Fixed XSS issue which could lead to cookie theft etc.
2843    * Fixed definition list "same level" indenting.
2844    * Fixed pagename in log for PackagePages action.
2845    * Made <p> self-closing and line-anchors more well-behaved, thanks to
2846      Martin Wilck for the patch. I didn't apply the <ol> patch, because this
2847      is no real problem, just a problem of a bad standard.
2848    * Fixed gui editor *bgcolor crash.
2849    * Support/Fix tableclass attr with gui editor.
2850
2851  Other changes:
2852    * Moved back UserPreferences action link from menu to top of page (renaming
2853      it to "Preferences"), added "Cancel" button to make it possible to return
2854      to the previous page without saving preferences.
2855    * Removed formatter.url "attrs" keyword arg that took premade html, we use
2856      separate kw args per attribute now.
2857    * Moved broken tests to MoinMoin/_tests/broken (= disabling them).
2858      All "active" tests run ok now.
2859      If you want to compare, I included the output of this test run:
2860      $ make test >tests/make_test.out
2861
2862
2863Version 1.5.3-rc1:
2864
2865  New features:
2866    * HINT: please read README.migration
2867    * Login and Logout are actions now, therefore you stay on the page where
2868      you were before.
2869    * UserPreferences is also an action now and moved from top border (in
2870      modern theme) to the "more actions" dropdown menu. You also stay on the
2871      same page.
2872    * There is also a [[Login]] macro now. You can put it on any page you want
2873      and if the user is not logged in, it renders the login form. If the user
2874      is logged in, it doesn't render anything.
2875    * We check cfg.superuser to be a list of user names (as documented) and
2876      deny superuser access if it is not. This avoids security issues by
2877      wrong configuration.
2878    * auth methods changed:
2879      HINT: if you wrote own auth methods, please change them as you see in
2880            MoinMoin/auth.py and test them again before relying on them.
2881      * now get a user_obj kw argument that is either a user object returned
2882        from a previous auth method or None (if no user has been made up yet).
2883        The auth method should either return a user object (if it has
2884        determined one) or what it got as user_obj (being "passive") or None
2885        (if it wants to "veto" some user even if a previous method already has
2886        made up some user object).
2887      * return value of continue_flag is now True in most cases (except if
2888        it wants to "veto" and abort).
2889      * moin_cookie auth method now logs out a user by deleting the cookie and
2890        setting user_obj.valid = 0. This makes it possible to still get the
2891        user's name in subsequent auth method calls within the same request.
2892      * added ldap_login and smb_mount auth methods, see MoinMoin/auth.py and
2893        wiki/config/more_samples/ldap_smb_farmconfig.py
2894    * MonthCalendar now takes an additional argument for specifying a template
2895      to use to directly invoke the page editor when clicking on non-existing
2896      day pages.
2897    * Added ImageLink macro. Thanks to Jeff Kunce, Marcin Zalewski, Reimar
2898      Bauer and Chong-Dae Park for working on it.
2899    * Lupy stuff (still experimental, partly broken and disabled by default):
2900      * Attachment search using lupy (lupy_search = 1 in your config)
2901        Title search will also search attachment filenames.
2902        Full text search will also search attachment contents.
2903      * Indexing filter plugins, see MoinMoin:FiltersForIndexing
2904        Some filters depend on external converters that might not be available
2905        for any platform (see Depends: line in filter plugin).
2906        Feel free to contribute more filter plugins, especially if you wrote
2907        some nice platform independant filter in Python for some popular file
2908        format! Filters implemented so far (depending on):
2909        MS Word, RTF, MS Excel (antiword, catdoc)
2910        PDF (pdftotext)
2911        OpenOffice.org XML based data formats (-)
2912        XML, HTML (-)
2913        text/* (-)
2914        JPEG's EXIF data (-)
2915        Binary generic (-)
2916      * As you might know, Lupy is "retired" (that means it isn't developped
2917        by its authors any more). We are currently evaluating Xapian as new
2918        indexing search engine in moin.
2919        If we succeed, we will replace Lupy stuff by some Xapian interface
2920        code in moin.
2921        But: the filters will likely stay, as we also need them with Xapian.
2922
2923    * A new MoinMoin script interface was introduced:
2924
2925      Syntax: moin [options] <cmdmodule> <cmdname> [options]
2926
2927      For example:
2928      moin --config-dir=/my/cfgdir --wiki-url=wiki.example.org/ \
2929           export dump --page=WikiSandBox
2930
2931      This will call the "moin" script, which will use the --config-dir and
2932      --wiki-url options to initialize, then it will go to MoinMoin.script
2933      module, import the export.dump module from there and run it, providing
2934      the additional --page value to it.
2935
2936      The old scripts that have not been migrated to this new interface can
2937      still be found in MoinMoin/script/old/ - including the old migration
2938      scripts.
2939    * moin ... account create --name=JoeDoe --email=joe@doe.org
2940    * moin ... account disable --name=JoeDoe
2941    * moin ... acount check     <-- this is what usercheck script was before
2942    * moin ... maint cleancache <-- this is what cachecleaner script was
2943    * moin ... maint cleanpage  <-- this is what pagescleaner script was
2944
2945  Bugfixes:
2946    * cookie_lifetime didn't work comfortable for low values. The cookie was
2947      created once on login and never updated afterwards. So you got logged
2948      out cookie_lifetime hours later, no matter whether you were active at
2949      that time or not. This has been changed, we update the cookie expiry now
2950      on every request, so it will expire cookie_lifetime after your last
2951      request (not after login).
2952    * Fixed logout problems when using cfg.cookie_path.
2953    * Fixed cookie_path for root url wikis.
2954    * Lupy search now behaves a bit less funky. Still no guarantees...
2955    * We lowered the twisted server timeout to 2 minutes now (was: 10) because
2956      it just used up too many files (open TCP connections until it timeouts)
2957      on our farm.
2958    * The algorithm used for processing the farmconfig.wikis list was changed
2959      to work for big farms (>= 50 wikis), too. This works around the python
2960      "re" module limitation of having a maximum of 100 named groups in a RE.
2961    * Fixed a TypeError which occurred for formatters that dislike None values.
2962      (cf. http://moinmoin.wikiwikiweb.de/MoinMoinBugs/PythonErrorEditingFrontPage)
2963    * Fixed GUI editor converter error for https:... image URLs.
2964    * ThemeBase (use by modern/rightsidebar): removed duplicate AttachFile from
2965      actions menu (we already have it in editbar).
2966    * Speedup group/dicts scanning for persistent servers.
2967    * Implemented HEAD requests for standalone server, this should fix some of
2968      the strange effects happening when using "Save as" on attachments.
2969    * Not a moin bug, but rather a workaround for non-standard non-ASCII DNS
2970      hostnames: we just use the IP instead of crashing now.
2971    * Spurious cyclic usage error in i18n fixed.
2972    * Fixed antispam for python 2.5a xmlrpclib.
2973    * I18n for linenumber toggle in listings.
2974    * All action menu entries are translatable now.
2975
2976  Other:
2977    * Added css classes for the rst admonitions. Thanks to TiagoMacambira!
2978
2979Version 1.5.2:
2980
2981  New features:
2982    * Added FullSearchCached macro which is statically cached.
2983      Use it if you do not depend on fresh search results but prefer raw speed.
2984    * Added surge protection, see HelpOnConfiguration/SurgeProtection.
2985    * Allow hex and symbolic entities.
2986    * If there is a user with empty password, we just generate a random one
2987      when he requests it getting sent by mail. Thanks to Reimar Bauer.
2988    * The superuser now can switch to another user using UserPreferences -
2989      nice to help your users when they forgot their password or need other
2990      help. You need to logout/relogin to use your own userid afterwards.
2991      This function only works correctly if you use moin_cookie authentication.
2992      Thanks to Reimar Bauer.
2993    * Add new markup for bulletless lists: just use a "." instead of "*".
2994
2995  Other changes:
2996    * Added "voyager" to bot useragent list.
2997    * Added locking for caching subsystem.
2998    * Deron Meranda's formatter API cleanup.
2999    * Added div and span to formatter API.
3000    * Removed old unfinished form and export code.
3001    * updated i18n
3002
3003  Fixes:
3004   * Fixed table attribute parsing.
3005   * Fixed cookie handling wrt properties adherance.
3006   * The new "." list markup makes it possible to have a bulletless list with
3007     elements on the same level. Before this change and only using indentation
3008     with blanks, that would get merged into a single paragraph.
3009   * It is possible now to have multiple paragraphs in the same list element,
3010     just leave an empty line in between the paragraphs.
3011   * Fixed GAP processing for ordered lists.
3012   * Fix text_gedit formatter's invalid list nesting.
3013   * Fixed hr crash in blockquote (but needs more work).
3014   * Fixed FootNote's formatter usage.
3015   * Fixed rst's headline levels.
3016   * Fixed MoinMoinBugs/WikiParserThinksItIsInsidePreWhenItIsNot
3017   * Fixed MoinMoinBugs/ListItemGeneratedOutsideList
3018   * Fixed that macros were followed by a wrong <p>.
3019   * Added <blockquote> to the block elements in the text_html formatter,
3020     so it does not close it erratically when you close a inner <p>.
3021   * GUI editor converter now also accept http: urls without // (relative or
3022     same server urls).
3023   * Fixed the DocBook parser in cases where the pagename was non-ascii.
3024   * Fixed MoinMoinBugs/ProcessInlineDontSupportUlElement
3025
3026
3027Version 1.5.1:
3028
3029  Fixes:
3030    * Fixed rst parser docutils version check
3031    * Repaired attachment unzipping feature.
3032    * Fixed the AddRevision command of the PackageInstaller.
3033    * improved the migration scripts (used to migrate pre-1.3 wikis to 1.3+):
3034      * do not crash on empty lines in event log
3035      * fix edit log format for very old moin data (like 0.11)
3036      * workaround for an ugly win32 operating system bug leading to wiki text
3037        file mtime not matching edit logs timestamp values if there was some
3038        timezone change since last edit (e.g. a daylight saving tz switch),
3039        but differing 3600s.
3040        This affected pre-1.3 moin wiki servers running on win32 OS only.
3041        We now try to correct those inconsistencies in mig05 by fuzzy matching.
3042    * fixed bracketed link scheme icon (css class)
3043    * we included a modified copy of Python 2.4.2's copy.py as some previous
3044      python versions seem to have problems (2.3.x, x < 5 and also 2.4[.0]),
3045      see: http://moinmoin.wikiwikiweb.de/MoinMoinBugs/DeepCopyError
3046      Our own copy.py was slightly modified to run on 2.3.x and 2.4.x.
3047    * Fixed the problem of not being able to change the date/time format back
3048      to "Default" (UserPreferences).
3049    * We generate the GUI editor footer now the same way as the text editor
3050      footer.
3051    * Include a CSS workaround for yet another IE bug, see:
3052      MoinMoinBugs:InternetExplorerPeekABooBugInRightSideBar
3053    * classic theme: added GUI editor link
3054    * classic theme: added pagename header to editor screen
3055    * the "mail enabled" check now also checks whether mail_from is set
3056
3057  Other changes:
3058    * Updated FCKeditor to current CVS (2006-01-08 == 2.2+)
3059    * Split up show_hosts into show_hosts and show_names
3060    * attachment:file%20with%20spaces.txt in attachment list
3061    * added support for file:// in GUI editor link dialogue, see also:
3062      MoinMoin:FileLinks
3063    * cfg.mail_smarthost now supports "server:port" syntax, the default port
3064      is 25, of course.
3065    * removed unused kwargs showpage/editable/form from wikiutil.send_footer
3066    * updated i18n (translation texts, additional languages)
3067    * removed interwiki:pagename from print view's top of page, added it to
3068      the "lasted edited" line at bottom right.
3069
3070
3071Version 1.5.0:
3072  HINT: 1.5.0 uses the same data/pages format as 1.3.x. The only thing you want
3073        to check is whether the 1.5.x version you are upgrading to has NEW mig
3074        scripts compared to the version you are running now (e.g. in 1.3.5 we
3075        added some scripts that fixed some small problems).
3076        See the MoinMoin/scripts/migration/ directory.
3077        You must run every mig script in sequence and only ONCE ever.
3078  Fixes:
3079    * Fix <x=y> table attributes parsing. Thanks to Reimar Bauer.
3080    * Fixed a few bugs in the reStructured text parser. Note that you
3081      need to install docutils 0.3.10 or newer (snapshot from December 2005
3082      or newer) to make reStructuring parsing work:
3083     * Case preservation for anonymous links
3084     * MoinMoin links get the appropriate CSS class
3085     * Images do not get special CSS markup anymore
3086     Thanks to Matthew Gilbert.
3087    * Fixed a bug in the WSGI code which led to incorrect exception handling.
3088    * Removed all nationality flags. They used to be used for indicating some
3089      specific language (NOT nationality) and this was simply wrong and a bad
3090      idea.
3091    * Fixed some header rendering issues (CSS).
3092    * SystemAdmin macro now checks against cfg.superuser list.
3093
3094  Other changes:
3095    * Added turkish i18n. To be considered as alpha as it got in last minute.
3096
3097
3098Version 1.5.0rc1:
3099  This is the first release candidate of MoinMoin 1.5.0.
3100
3101  Fixes:
3102    * fixed broken logs when a DeletePage (maybe also RenamePage) comment
3103      contained CR/LF characters (could happen when using copy&paste)
3104    * fixed GUI editor MoinEditorBackup page containing HTML instead of wiki
3105      markup
3106    * fixed invalid HTML in FootNotes
3107    * fixed HTML source in EditorBackup after canceling GUI editor
3108    * Footnotes of included pages are not shown at the bottom of the including page.
3109    * Bug in Dict handling that often breaks first entry
3110
3111Version 1.5.0beta6:
3112  Authentication:
3113    * Added SSO module for PHP based apps. Currently supported: eGroupware 1.2.
3114      No need to login in two systems anymore - MoinMoin will read the PHP session
3115      files.
3116
3117  Fixes:
3118    * Improved rendering of bullet lists and external links in Restructured text.
3119      Thanks to Matthew Gilbert.
3120    * Fixed modern theme rendering, including some fixes and workarounds for
3121      broken MS IE.
3122    * When checking for email uniqueness, do not compare with disabled user
3123      profiles.
3124    * Fix sending of HTTP headers for Despam action.
3125    * Add some margin left and right of the link icons.
3126
3127  Other changes:
3128    * Made it easier for auth methods needing a user interface (like ldap or
3129      mysql stuff). Unlike http auth, they usually need some "login form".
3130      We made UserPreferences login form values (name, password, login, logout)
3131      available as kw args of the auth method, so it is easy and obvious now.
3132    * Make login and logout show at the same place. Is only shown when
3133      show_login is True (default).
3134    * Disabled login using &uid=12345.67.8910 method. Please use name/password.
3135    * Made builtin moin_cookie authentication more modular: the cookie is now
3136      touched by MoinMoin.auth.moin_cookie only, with one minor discomfort:
3137      When creating a user, you are not automatically logged in any more.
3138    * We now use the packager for additional help and system pages in all other
3139      languages except English. The packages are attached to SystemPagesSetup
3140      page and can be installed from there after getting "superuser" powers.
3141      The "extra" package contains a collection of orphan pages not listed on
3142      some SystemPagesIn<Language>Group page.
3143
3144
3145Version 1.5.0beta5:
3146  Fixes:
3147    * Fixed a minor user interface bug: it showed RenamePage and DeletePage
3148      actions in the menu if you only had write rights and then complained
3149      when you really tried when you had no delete rights additionally.
3150    * We don't remove RenamePage and DeletePage from menu any more if user is
3151      unknown. This stuff is only driven by ACLs now.
3152    * Some fixes to Despam action.
3153    * Fixed moin_dump (broken by some recent theme init change).
3154    * Fixed a few tests by moving the theme init from moin_dump to RequestCLI.
3155    * removed old_onload reference from infobox.js
3156    * Fixed MoinMoin logo for IE.
3157    * search: fixed whitespace handling in linkto: search terms
3158    * Increased stability of the tests system by outputting results to sys.stdout
3159      instead of request. Note that this changes the semantics for e.g. mod_py or
3160      mod_fcgi.
3161    * Fixed packaging system in the case of AddRevision that does not alter the page.
3162    * Fixed a few bugs in the XML formatters (dom_xml, text_xml, xml_docbook).
3163    * Fixed link icons. We now just use a.xxx.before where xxx is the link scheme,
3164      e.g. a.http.before. See theme's common.css.
3165    * Hopefully fixed some issue with non-ASCII attachment filenames.
3166    * Workaround for Opera 8.5 making silly "No addition" categories.
3167    * Do not show GUI editor for non-wiki format pages, because we only have a
3168      converter from html to wiki right now.
3169    * Fix the modern CSS issues for editbar, when it shifted content far right.
3170      Also removed the absolute height value that never was right.
3171    * Fix mod_python adaptor bugs failing to handle Location correctly.
3172      See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=339543
3173
3174  Other changes:
3175    * Added irc:// to the builtin supported link schemas. You can remove it
3176      from config.url_schemas in case you have patched it in there.
3177    * Added cfg.user_autocreate (default: False). Use True to enable user
3178      profile autocreation, e.g. when you use http authentication, so your
3179      externally authenticated users don't need to create their moin profile
3180      manually. The auth method (see cfg.auth list) must check this setting
3181      if it supports auto creation.
3182    * Added user_autocreate support for auth.http and auth.sslclientcert.
3183    * Added "." and "@" to allowed characters in usernames. This is needed
3184      e.g. when using mod_pubcookie for authentication. mod_pubcookie returns
3185      userids like "geek@ANDREW.CMU.EDU" (e.g. the Kerberos domain is part of
3186      the id). Thanks to Brian E. Gallew for his patch, which we used for
3187      inspiration for user autocreation changes.
3188    * Changed auth method to return a tuple (user_obj, continue_flag), see
3189      comments in auth.py.
3190    * auth methods now create user objects with kw args auth_method and
3191      auth_attribs, so that moin knows later how the user was authenticated
3192      and which user object attributes were determined by the auth method.
3193    * Added MoinMoin/scripts/import/IrcLogImporter.py to import supybot's
3194      IRC logs into a moin wiki. We use MonthCalendar compatible page names,
3195      so you can use the calendar for showing / navigating the logs.
3196    * Removed packager binary from FCKeditor (fixing a Debian policy problem).
3197    * Worked around .png transparency bugs of IE with the new logo. We ship
3198      two logos: moinmoin.png without an alpha channel (IE compatible) and
3199      moinmoin_alpha.png which has an alpha channel and looks better on
3200      browsers with full .png support.
3201    * Allow a .zip file to have a directory in it if it is the only one.
3202
3203Version 1.5.0beta4:
3204  Fixes:
3205    * use <span class="anchor"> instead of <a> for line-xxx anchors, this
3206      fixes some rendering problems on IE
3207    * Fixed the ReStructured text parser when it was used with non-HTML
3208      formatters. Increased compatiblity with new docutils code.
3209      (Thanks to Matt Gilbert.)
3210  Other changes:
3211    * cfg.stylesheets = [] (default). You can use this on wiki or farm level
3212      to emit stylesheets after the theme css and before the user prefs css.
3213      The list entries must be ('screen', '/where/ever/is/my.css') style.
3214    * Added sample code for auth using an external cookie made by some other
3215      program. See contrib/auth_externalcookie/*. You need to edit it to
3216      fit whatever cookie you want to use.
3217
3218Version 1.5.0beta3:
3219  Fixes:
3220    * fixed editor preview throwing away page content for new pages
3221    * require POST for userform save and create* action
3222    * use request.normalizePagename() while collecting pagelinks
3223    * do not offer gui editor for safari
3224  Other changes:
3225    * tell user if account is disabled
3226    * added support for linking to .ico and .bmp
3227    * attachment methods for the text_xml and xml_docbook formatters
3228    * new favicon
3229    * updated i18n (fixed nl, did nobody notice this?) and underlay
3230    * changed show_interwiki default to 0
3231
3232Version 1.5.0beta2:
3233  Fixes:
3234    * fix wrong _ in title links (MoinMoinBugs/AddSpaceWikiNameAtHead)
3235    * fix gui editor (converter) crash on save
3236    * MoinMoinBugs/PageHitsFails
3237    * MoinMoinBugs/PackagePagesFailsBecauseAllowedActionsMissing
3238    * Avoid destroying existing page content if editor is called with
3239      template parameter for an existing page.
3240    * fix countdown javascript for browser status line in editor
3241    * added page title display for editor
3242    * added header div for classic theme
3243
3244  Authentication and related:
3245    * Added a WhoAmI.py wiki xmlrpc plugin to check whether auth works
3246      correctly for xmlrpc. There is a counterpart script WhoAmI.py that
3247      uses http auth when calling the xmlrpc plugin, so you can use it to
3248      check http auth.
3249
3250Version 1.5.0beta1:
3251    * Requirements changed to require Python >= 2.3. We recommend that
3252      you use the latest Python release you can get. The reason we
3253      dropped 2.2.2 support is because no developer or tester uses this
3254      old version any more, so incompatibilities crept in the code
3255      without anybody noticing. Using some recent Python usually is no
3256      real problem, see there for some hints in case you still run an
3257      old python: http://moinmoin.wikiwikiweb.de/NewPythonOnOldLinux
3258      The hint also does apply to other POSIX style operating systems,
3259      not only Linux.
3260    * We recommend you use MoinMoin/scripts/cachecleaner.py to clean the
3261      wiki's cache (see comments at top of the script).
3262      The cache will automatically be rebuilt (some operations may take
3263      some time when first being used, e.g. linkto: search, so be patient!).
3264
3265  Config Changes:
3266     * there is a file CHANGES.config with just the recently changed stuff
3267       from multiconfig.py
3268     * new defaults:
3269       * page_front_page old: u"FrontPage" new: u"HelpOnLanguages"
3270         please just read the help page in case you see it :)
3271       * bang_meta old: 0 new: 1
3272       * show_section_numbers old: 1 new: 0
3273       * some regexes that used to be [a-z]Uxxxx$ are now [a-z0-9]Uxxxx$
3274       * navi_bar has no page_front_page as first element any more
3275     * removed settings and code [new behaviour]:
3276       * acl_enabled [1]
3277       * allow_extended_names [1]
3278       * allow_numeric_entities [1]
3279       * backtick_meta [1]
3280       * allow_subpages [1]
3281     * new settings:
3282      * cfg.mail_sendmail = "/usr/sbin/sendmail -t -i" can be used if sending
3283        via SMTP doesn't work on your server. Default is None and that means
3284        using SMTP.
3285      * language_default replaces the old default_lang setting (just renamed).
3286      * language_ignore_browser = True can be used to let moin ignore the
3287        user's browser settings (e.g. if you run a local-language only wiki
3288        and your users use misconfigured or buggy browsers often). Default is
3289        False. Don't forget to set language_default when using this.
3290
3291    * Wiki Editor changes / new WYSIWYG editor
3292     * fully imported the javascript based LGPLed FCKeditor (many thanks
3293      to Fred CK for his great work). See http://fckeditor.net/ for details.
3294     * config for FCKeditor is at wiki/htdocs/applets/moinfckeditor.js
3295     * added cfg.interwiki_preferred (default = []) to set a list of wikis to
3296       show at the top of the wiki selection list when inserting an
3297       interwiki link (just use the same wiki name as in interwiki
3298       map). If the last list item is None, then the preferred wikis
3299       will not be followed by the entries of the interwiki map.
3300    * moved save/preview/... buttons to the top so that they can be
3301      easily reached
3302    * reduced edit_rows default to 20 lines
3303    * Added support for edit by doubleclick in the diff view
3304
3305    * Improved wiki farm support
3306     * make user files sharable between several wikis in a farm
3307      * allow/use interwiki subscriptions
3308      * use interwiki links in page trail
3309      * save bookmark per wiki name
3310     * cfg.cookie_domain can be used to set a cookie valid for a complete
3311       domain (default: None == only for this host). If you use '.domain.tld',
3312       the cookie will be valid for all hosts *.domain.tld - good for host
3313       based wiki farms.
3314     * cfg.cookie_path can be used to set a cookie valid for a wiki farm under
3315       some base path (default: None == only for this wiki's path). If you use
3316       '/wikifarm',  the cookie will be valid for all wikis
3317       server.tld/wikifarm/* - good for path based wiki farms.
3318     * Interwiki user homepage (if you have MANY users)
3319       Generated links for usernames are interwiki now, use cfg.user_homewiki
3320       (default: 'Self') to specify in which wiki the user home pages are
3321       located. Note: when pointing this to another wiki, the /MoinEditorBackup
3322       functionality will be disabled.
3323       @SIG@ also uses interwiki when needed.
3324
3325    * Authentication, ACLs and related
3326     * Modular authentication: cfg.auth is a list of functions that return a
3327       valid user or None, use it like this:
3328           from MoinMoin.auth import http, moin_cookie
3329           auth = [http, moin_cookie]
3330     * cfg.auth_http_enabled was removed, please use cfg.auth instead.
3331     * http auth now supports "Negotiate" scheme, too
3332     * Added sslclientcert auth method (Apache: untested, Twisted: not
3333       implemented, IIS: no idea). See MoinMoin/auth.py for details.
3334       Submit a patch if you have improvements.
3335     * cfg.superuser is a list of unicode usernames. It is used by some
3336       critical operations like despam action or PackageInstaller.
3337     * removed allowed_actions, we now use actions_excluded only and it
3338       defaults to [], that means, no action is excluded, everything is
3339       allowed (limited by ACLs). In case of RenamePage and DeletePage,
3340       this shouldn't be a problem as both can be reverted. In case you
3341       did not allow attachments, you now have to use:
3342       actions_excluded = ['AttachFile']
3343     * special users (All, Known, Trusted) in Groups are now supported
3344     * MoinMoin.security.autoadmin SecurityPolicy added
3345       When using this security policy, a user will get admin rights on his
3346       homepage (where pagename == username) and its sub pages. This is needed
3347       for the MyPages action, but can also get used for manual ACL changes.
3348       It can also be used for Project page auto admin functionality, see the
3349       comments in the script for details.
3350       Further it can automatically create the user's group pages when the
3351       user saves his homepage.
3352     * there is a UpdateGroup xmlrpc call, see MoinMoin/xmlrpc/UpdateGroup.py -
3353       you can use this to update your *Group pages e.g. when generating them
3354       from an external group database.
3355
3356    * UserPreferences changes
3357     * Alias name: is used for display purposes, when "name" is cryptic. It is
3358       shown e.g. in the title attribute of userid links (displayed when
3359       moving the mouse over it).
3360     * "Publish my email (not my wiki homepage) in author info" - use this
3361       if you don't have a wiki homepage, but if you want to be contactable
3362       by email. When you edit a page, your email address will be published
3363       as mailto: link on RecentChanges, at bottom of page (last editor) and
3364       in page info. If the wiki runs publically on the internet, be careful
3365       using this or your email address might be collected by spammers.
3366     * Preferred Editor: whether you want to use the text editor (as in
3367       previous moin versions), the gui editor (new!) or both (you will get
3368       2 edit links in that case).
3369     * a user can add/remove the current page to/from his quicklinks with an
3370       appropriate action now
3371     * if cfg.user_email_unique = False, we don't require user's email
3372       addresses to be unique
3373     * removed show_fancy_links user preferences setting to simplify code and
3374       caching. Displaying those icons is now done by CSS styles (see
3375       common.css). Maybe needs fixing for non-standard themes and RTL langs.
3376
3377    * Markup
3378     * added strikethrough markup: --(striked through text here)--
3379     * @ME@ expands to just the plain username (no markup added) on save
3380
3381    * User homepages
3382     * when a user accesses his own non-existing homepage (pagename ==
3383       username), the wiki will present the MissingHomePage system page
3384       content, explaining what a user homepage is good for and offer
3385       one-click editing it with content loaded from HomepageTemplate
3386     * creation of homepage subpages is assisted by the MyPages action, which
3387       offers rw, ro page creation (and a related group) or creation of private
3388       pages. If you are not in the user_homewiki, you will get redirected
3389       there first.
3390
3391  Other changes/new features:
3392    * Added PackageInstaller and unzipping support (see wiki page
3393      HelpOnActions/AttachFile for further details).  PackageInstaller requires
3394      the user to be in cfg.superuser list.
3395     * Added an PackagePages action to simplify the package creation.
3396    * Added location breadcrumbs - when you are on some subpage, the page
3397      title parts link to the corresponding parent pages, the last part does
3398      the usual reverse linking.
3399    * added WSGI server support, thanks to Anakim Border, see:
3400      wiki/server/moinwsgi.py (moin as WSGI app, uses the flup WSGI server,
3401                               see http://www.saddi.com/software/flup/)
3402      MoinMoin/server/wsgi.py (adaptor code)
3403    * added a "Despam" action to make de-spamming a wiki easy (mass revert
3404      bad changes done by a single author or bot). You need to be in
3405      cfg.superuser to use it.
3406    * Better diffs with links to anchors to the changed places
3407    * Enhanced table support in the DocBook formatter.
3408    * Added 'moin' daemon script, that let you run moin standalone
3409      server as daemon and control the server with simple command line
3410      intreface: moin start | stop | restart | kill
3411    * Add 'restart' option to mointwisted script
3412    * Add properties option to standalone server config. Allow
3413      overriding any request property like in other server types.
3414    * Add support for running behind proxy out of the box with out
3415      manual url mapping.
3416      See HelpOnConfiguration/IntegratingWithApache
3417    * added a WikiBackup action, configure it similar to this:
3418      data_dir = "/path/to/data"
3419      backup_include = [data_dir, ] # you can add other dirs here
3420      backup_users = ["BackupUserName", ] # only TRUSTED users!
3421      You usually don't need to change the default backup_exclude setting.
3422      The default backup_include list is EMPTY and so will be your
3423      backup in case you don't configure it correctly.
3424      If you put your data_dir there, the backup will contain private
3425      user data like email addresses and encrypted passwords.
3426    * Added a SubscribeUser action which allows the administrator to subscribe users to the
3427      current page.
3428    * Added thread count to SystemInfo macro.
3429    * Added Petr's newest patch against the DocBook code. It allows you to use macros (esp. the include macro) in DocBook pages in order to build larger documents.
3430    * Added a RenderAsDocbook action which redirects to the DocBook formatter.
3431    * Added searching for wiki-local words lists under <data_dir>/dict/.
3432      They are used additionally to the global lists in MoinMoin/dict/.
3433    * moin_dump now also dumps attachments referenced from the page.
3434      It doesn't dump stuff that is just attached, but not referenced!
3435    * On RecentChanges we now force the comment to be breakable, this improves
3436      rendering of over-long words or on narrow browser windows - especially
3437      for themes with limited content width like rightsidebar.
3438    * We now have the "new" icon on RecentChanges clickable, just links to the
3439      page.
3440    * Print view now shows "interwikiname: pagename" (for show_interwiki = 1).
3441
3442  International support:
3443    * mail_from can be now a unicode name-address
3444      e.g u'Jürgen wiki <noreply@jhwiki.org>'
3445
3446  Theme changes:
3447    * logo_string is now should be really only the logo (img).
3448      If you included your wiki's name in logo_string you maybe want to remove
3449      it now as it is shown as part of the location display now anyway (if
3450      you set show_interwiki = 1).
3451    * You maybe want to remove page_front_page from your navi_bar - we link to
3452      that page now from the logo and (new, if you set show_interwiki = 1) from
3453      the interwiki name displayed in location display, so you maybe don't need
3454      it in navi_bar, too.
3455    * If you have a custom theme, you should / may:
3456     * sync modern/css/screen.css #pagelocation #pagetrail stuff to your
3457       screen.css or pagelocation display (title()) will look strange (like a
3458       list).
3459     * remove "#title h1 ..." CSS (or any other CSS assuming h1 is a page
3460       title and not just a first level heading), it is not used any more.
3461     * we now render = heading = as <h1> (was <h2> before 1.5),
3462       == heading == as <h2> (was <h3>), etc.
3463     * maybe move both title() and trail() to header area, like the builtin
3464       themes do it.
3465     * there is a new interwiki() base theme method that optionally (if
3466       show_interwiki = 1) shows the interwiki name of this wiki and links to
3467       page_front_page. The css for it is #interwiki.
3468
3469  Developer notes:
3470    * Plugin API was improved. When plugin module is missing,
3471      wikiutil.PluginMissingError is raised. When trying to import a
3472      missing name from a plugin module, wikiutil.PluginMissingError is
3473      raised. You must update any code that use wikiutil.importPlugin.
3474      Errors in your plugin should raise now correct tracebacks. See
3475      http://moinmoin.wikiwikiweb.de/ErrorHandlingInPlugins
3476    * pysupport.importName was changed, it does not check for any
3477      errors when trying to import a name from a module. The calling
3478      code should check for ImportError or AttributeError. Previous
3479      code used to hide all errors behind None.
3480    * Its easier now to customize the editbar by overriding
3481      editbarItems() in your theme, and returning a list of items to
3482      display in the editbar. To change a single editbar link, override
3483      one of the xxxLink methods in your theme.
3484
3485  Internal Changes:
3486    * request.formatter (html) is available for actions now
3487    * theme API's d['page_home_page'] is gone (sorry) and replaced by
3488      d['home_page'] which is either None or tuple (wikiname,pagename).
3489      It is better to use the base classes function for username/prefs anyway.
3490    * introduced cfg.hacks for internal use by development, see comment in
3491      multiconfig.py and file HACKS.
3492    * added IE7 (v0.9) from Dean Edwards (see http://dean.edwards.name/IE7/) -
3493      that should fix quite some IE bugs and annoyances (on Win32).
3494      * for enabling IE7, use cfg.hacks = { 'ie7': True }
3495    * reducewiki now also copies all attachments (we use that to make underlay
3496      directory from moinmaster wiki's data_dir)
3497
3498  Fixes:
3499    * Fixed a typo in xslt.py which led to a traceback instead of an
3500      error message in case of disabled XSLT support.
3501    * Fixed crash in twisted server if twisted.internet.ssl is not
3502      available.
3503    * Fixed wrong decoding of query string, enable wiki/?page_name urls
3504      with non ascii page names.
3505    * Fixed wrong display of non ascii attachments names in
3506      RecentChanges and page revision history.
3507    * Fixed a crash when trying to run standalone server on non posix os.
3508    * Fixed highlight of misspelled words in Check Spelling action.
3509    * Fixed case insensitivity problems on darwin (Mac OS X). See
3510      MoinMoinBugs/MacHfsPlusCaseInsensitive
3511    * Added RecentChanges (only the english one) to the pages getting
3512      html_head_index headers
3513    * text_html cache files written with this code will invalidate themselves
3514      if they detect to be older than the wikiconfig. Note: you should remove
3515      all old text_html cache files once after upgrading, they will then be
3516      rebuilt automatically with the new code.
3517    * Fixed MoinMoinBugs/12_to_13_mig10_Walk
3518    * Fixed the word_rule: a word like AAAbbAbb isn't teared into two parts
3519      any more (was: AA<link>AbbAbb</link>)
3520    * Fixed false positive InterWiki markup for languages like Finnish.
3521      InterWiki links are only rendered if the left side has an appropriate
3522      entry in the interwiki map, otherwise it is rendered as simple text.
3523    * Fixed unicode error when uploding non-ascii file name using mod
3524      python.
3525    * Fixed error handling of wikirpc requests, should give more
3526      correct errors and prevent no error output and blocking the
3527      client in some cases.
3528    * Fixed the "lost password" mail processing. If a user entered some email
3529      address unknown to the system, he was not notified of this, but just got
3530      a useless mail with no account data in it. Now the system directly tells
3531      the user that he entered an unknown email address.
3532    * Fixed SystemInfo, it now also lists parsers in data/plugin/parser dir.
3533    * Fix error handling on failure, improved error display
3534    * Fix error handling when importing plugins or importing modules
3535      dynamically. The fix is not backward compatible with older plugins.
3536    * Fix chart action, returns a page with error message when chart
3537      can not be created.
3538    * Fixed formatter usage in the ShowSmileys macro.
3539    * Fixed updating pagelinks cache for [:page:text] or [wiki:Self:page text],
3540      fixes display of LocalSiteMap and rendering of such links.
3541    * Hopefully fixed urllib problems (esp. with py 2.4.2, but also before) by
3542      using our own urllib wrapper that handles encoding/decoding to/from
3543      unicode, see wikiutil.py. Also made a similar fix for making and parsing
3544      query strings.
3545    * Fixed MonthCalendar tooltips when containing special chars like quotes.
3546    * Added html escaping for diff text for RSS feed with diff=1.
3547    * The distance between page content beginning and the first = heading =
3548      was much too much. Fixed.
3549
3550Version 1.4:
3551
3552    We used that version number for an internal and early development version
3553    for what will be called moin 2.0 at some time in the future.
3554    There will never be a 1.4.x release.
3555
3556
3557Version 1.3.5 (2005-08-04, Revision moin--main--1.3--patch-883)
3558
3559Fixes:
3560    * small CSS fix for rightsidebar theme
3561    * applied some Debian patches (thanks to Jonas!):
3562      * de i18n spelling fixes
3563      * AttachFile fix, we strip CR in .draw files now
3564      * when loading spellcheck dictionaries, we want utf-8, but we make
3565        a 2nd try with iso-8859-1 encoding.
3566
3567New Features:
3568
3569    * enabled using https with the Twisted server:
3570      You need to use port 443, have PyOpenSSL (+ ssl libs it depends on)
3571      installed and have some site key and certificate PEM files configured in
3572      your twistedmoin.py file:
3573      sslcert = ('/whereever/cert/sitekey.pem', '/whereever/cert/sitecert.pem')
3574
3575
3576Version 1.3.5rc1 (2005-07-31, Revision moin--main--1.3--patch-865)
3577
3578Fixes:
3579
3580    * Fixed security bug when acl of deleted page was ignored. See:
3581      http://moinmoin.wikiwikiweb.de/MoinMoinBugs/ACLIgnoredAfterDelete
3582    * AttachFile did not display the original filename plus there
3583      was a confusion in input field labelling ('Rename to').
3584    * Fixed shortcut link non-existent page detection.
3585    * Fixed non-working bookmark function on python 2.2.x.
3586    * Fixed wikirpc getPageInfo call on python 2.2.x.
3587    * Fixed the failing import of plugins from the data/plugin/
3588      directories if run in zipimport environments.
3589    * Fixed traceback which occurred on negated searches.
3590    * Fixed crash when trying to render error message on twisted, fast
3591      cgi and modpy.
3592    * Fixed error message with modpy, used to show wrong errors below
3593      the real message.
3594    * Fixed search and goto text fields for better compatibility with
3595      dark themes and better control through css.
3596    * Show an edit link if MissingPage is missing and a warning in the
3597      server log.
3598    * Fixed missing footer in the editor.
3599    * Fixed indented (invalid) headings with broken links in table of
3600      contents.
3601    * Fixed crash when file name is too long, show standard error message.
3602    * Save trail file in a safe way, should be enough for normal use.
3603    * Fixed remember_last_visit user preferences option when show_trail
3604      is not selected.
3605    * Fixed the tests for Standalone, Twisted, FastCGI and Mod_Python.
3606      Run with ?action=test from any page.
3607    * Fixed rare bug when wrong search type was performed when pasting
3608      search term in Safari.
3609    * Fixed crash for custom formatters and dom_xml (which occurred if
3610      smileys were in the page).
3611    * Editor opens on double click in pages with single quote in the
3612      name, like "Ben's Wiki".
3613    * '/.' in page names are not replaced any more by '/(2e)'
3614    * Fixed the long delays while saving pages using RequestCLI.
3615    * Fixed variable expanding for users with non WikiName.
3616    * Fixed MonthCalendar's calculation of "today" to use the user's
3617      time zone setting.
3618    * Fixed moin_dump script, use same configuration options as other
3619      scripts.
3620    * Fixed url_mappings to work in proxied setups and sent mails
3621      again. Also fixed for image links. Thanks to JohannesBerg.
3622    * Fixed page shown after saving a drawing (esp. when saved from a
3623      sub page). Fixed help link for drawings.
3624    * Fixed mig10 script to run on Python < 2.3.
3625    * The twisted server defaulted to a socket timeout of 12 hours!
3626      We reduced that to a more sane 10 minutes, that should still be more
3627      than enough. This fixed the "too many open files" problem we
3628      encountered quite often recently. Thanks to Helmut Grohne!
3629
3630Other Changes:
3631
3632    * Added {hu} flag.
3633    * Added cz, pt and pt-br i18n.
3634    * We send a 404 http status code for nonexisting wiki pages now,
3635      maybe this will repell some search engines from requesting gone
3636      pages again and again. The wiki user still sees the MissingPage
3637      wiki stuff, so a user usually won't notice this change.
3638    * Return 500 error code on failure and exceptions.
3639    * Added some more bot / leech tool user agent strings.
3640    * Prevent page floating elements from floating out of the page over
3641      the footer, in modern, rightsidebar and classic themes.
3642    * Encode URLs in a safer way
3643    * We allow usernames with ' character in them now (like Tim O'Brian).
3644    * Added support for the new security flags in docutils 0.3.9.
3645    * @MAILTO@ expands now to safer [[MailTo()]] macro.
3646    * Clarified and i18ned lost password mails.
3647    * Added 'TitleIndex' and 'SiteNavigation' (+ translation) to the
3648      list of pages that use html_head_index (so that robots
3649      "index,follow").  Please make sure to have either FindPage,
3650      TitleIndex or SiteNavigation in your navi_bar or in your
3651      page_front_page content if you want search engines to find all
3652      your pages.
3653    * Make it possible to send account data when being logged in (for
3654      future reference or whatever purpose).
3655    * Speed up when running with persistent servers, the wiki config
3656      does only get loaded once and misc. stuff is being cached between
3657      requests now.
3658    * The unit tests are disabled when using multi threading, because
3659      the wiki configuration is shared between diffrent threads.
3660    * The main code path (using standalone server) of MoinMoin runs on
3661      PyPy now.
3662    * Formatters do automatically transform HTML to plain text if they are
3663      called with raw HTML code.
3664    * Using larger socket backlog on Standalone and FastCGI servers
3665      should be more reliable on high load.
3666    * We now strip leading path from attachments uploaded by IE (this is
3667      a bug in IE, not in MoinMoin). Better use a sane browser, like Firefox.
3668    * added "teleport" to the user agent blacklist
3669
3670New Features:
3671
3672    * Integrated Lupy indexer for better search performance. It is disabled
3673      by default as of 1.3.5 as it still has known issues.
3674      See multiconfig.py if you want to test it.
3675    * Integrated MonthCalendar 2.1, with some new features:
3676      * a mouseover bubble that shows first level headlines of the linked
3677        day page
3678      * all calendars with same pagename move when using cal navigation,
3679        thanks to Oliver Graf
3680      * included AnnualMonthlyCalendar patch of Jonathan Dietrich
3681        (use [[MonthCalendar(Yearly,,,+1,,6,1)]] syntax for birthdays and
3682        other annually repeating stuff)
3683      Make sure you remove old MonthCalendar.* from data/plugin/macro so that
3684      moin will use the new code in MoinMoin/macro/MonthCalendar.py.
3685      Maybe also clear the text_html cache.
3686    * Added the new XSLT parser and the DocBook parser. This should increase
3687      the 4suite compatiblity. See HelpOnXmlPages for details.
3688      It now should run on 4suite 1.0a4 and 1.0b1. Thanks to Henry Ho!
3689    * Added the DocBook formatter. This will let you generate DocBook markup
3690      by writing simple wiki pages. It needs PyXML.
3691    * It is now possible to customize parts of the UserPreferences page in
3692      your wikiconfig (changing defaults, disabling fields, removing fields):
3693      * Use user_checkbox_* for the checkboxes.
3694      * Use user_form_* for other fields.
3695      * See MoinMoin/multiconfig.py for the built-in defaults.
3696    * New standalone server classes: ThreadPoolServer using pool of
3697      threads, ThreadingServer with thread limit and ForkingServer.
3698    * New standalone server configuration options: serverClass,
3699      threadLimit, requestQueueSize.
3700    * Use "PythonOption Location" in mod_python setup to solve script_name
3701      problems.
3702
3703Developer notes:
3704
3705    * Theme can now override maxPagenameLength() method to control page
3706      name shortening.
3707    * A search Match now provides access to the full re match via
3708      the re_match attribute (use to access groups of the match)
3709    * Underlay is not managed by arch any more. The tree contains an
3710      underlay tarball, and you should untar after you update from main.
3711    * "make update-underlay" will untar underlay
3712    * "make merge" will star-merge main into your tree
3713    * "make test" will now create and run in a fresh testwiki instace
3714    * "make clean" options added
3715    * _tests module does not have a global request any more. To refer to
3716      the current request in a test, use self.request.
3717    * _tests.TestConfig class require a request in the constructor.
3718    * "python tests/runtests.py test_module" will run only test_module
3719    * request.cfg stays between requests (for persistent servers).
3720
3721
3722Version 1.3.4 (2005-03-13, Revision moin--main--1.3--patch-666)
3723
3724Fixes:
3725
3726    * Fixed ACL check in LikePages macro that caused links to unreadable
3727      pages to show.
3728    * Fixed ACL check in newpage action.
3729    * Fixed a security problem when admin policy defined in a custom
3730      SecurityPolicy class was ignored.
3731    * Fixed ACL check in action=show so that a user who may not read a page
3732      also can't find out WHEN the protected page was updated.
3733    * Workaround on Windows 95, 98, ME in order to clear the dircache.
3734      This fixes some bugs related to an outdated page list and newly created
3735      pages that did not appear immediately.
3736    * Fixed decoding issues of page names on Windows, finally.
3737      http://moinmoin.wikiwikiweb.de/MoinMoinBugs/BrokenUmlautsInLinksIn131
3738    * Fixed traceback on IIS.
3739      http://moinmoin.wikiwikiweb.de/MoinMoinBugs/request%2epy_broken_on_IIS
3740    * Fixed wikirpc for standalone server.
3741    * Other fixes (encoding and str/unicode data type related) to wikirpc
3742      server, fixing some non-ascii issues hopefully.
3743    * Fixed broken query strings for Standalone installations.
3744    * Fixed backlinks - the result did not always show all links, often it
3745      showed too many irrelevant matches (MoinMoinBugs/BacklinksAreBroken).
3746    * Fixed the acceptance of the show_hosts setting. Now you should be able
3747      to hide any IP or host name from being published by MoinMoin by enabling
3748      this option.
3749    * Fixed wrong line endings on email messages.
3750    * Fixed MoinMoinBugs/StandaloneUnquotesTooMuch.
3751    * Fixed crash when trail file is missing.
3752    * Fixed a traceback when searching for single ( or ).
3753    * Added mig10 script to fix crashes with uncoverted edit-locks and file
3754      attachments. Just use it as you did with mig1..mig9 before.
3755    * Added mig11 script to add __init__.py files to data/plugin (and below).
3756    * added some fixes for the xslt parser (thanks to fanbanlo), it might be
3757      still broken, but someone with deeper knowledge about xslt should fix it.
3758    * Replaced image link with W3C's "html 4.01 compliance" icon by a simple
3759      text link to avoid https: or config trouble.
3760    * Catch OverflowError backtrace when illegal date strings (e.g. <1970 or
3761      >2038) are fed to moinmoin's time routines. It will just output current
3762      date / time in those cases.
3763    * UserPreferences now also set a date_fmt preference and Date macro
3764      honours it. You may have to reset your UserPreferences value for that.
3765    * Fixed free parent and subpage links in interwiki notation.
3766      http://moinmoin.wikiwikiweb.de/MoinMoinBugs/FreeParentLinksAreBroken
3767    * Fixed a traceback for invalid ReST markup.
3768    * Fixed UnicodeError in SystemAdmin's Attachment Browser.
3769
3770Other Changes:
3771
3772    * Optimized the IRC parser.
3773    * Support for zipimport of the MoinMoin package. This allows you to use
3774      py2exe and similar programs.
3775    * Show the editor's name in the mail subject.
3776    * Added the pragmas description and keywords. They will add <meta> headers
3777      if used.
3778    * Added MoinMoin/scripts/xmlrpc-tools/putPageTest.py example script, useful
3779      as a starting point for importing data using wiki xmlrpc.
3780    * Optimised display on Opera browser.
3781
3782New features:
3783
3784    * The search modifier "linkto:" was introduced. You can use it to search
3785      for links.
3786    * The NewPage macro now can take a PageTemplate parameter, see HelpOnMacros.
3787    * New config settings (so you don't need to edit wikirpc.py any more):
3788      xmlrpc_putpage_enabled = 0 (if 1, enables writing to arbitrary page names)
3789      xmlrpc_putpage_trusted_only = 1 (if 0, doesn't require users to be
3790       authenticated by http auth - DANGEROUS, DO NOT SET TO 0!!!)
3791    * Added support for Digest and NTLM authentication with CGI (e.g. if you
3792      use those Apache modules)
3793    * The datetime string accepted by Date and DateTime macros was extended to
3794      accept a timezone specification, so now +/-HHMM is also valid, e.g.:
3795      2005-03-06T15:15:57Z (UTC, same as +0000)
3796      2005-03-06T15:15:57+0000 (UTC)
3797      2005-03-06T16:15:57+0100 (same time given as local time for time zone
3798                                with offset +0100, that is CET, e.g. Germany)
3799      2005-03-06T10:15:57-0500 (same time given as local time for time zone
3800                                with offset -0500, EST, US Eastern Std. Time)
3801      The values given as macro argument will be transformed to UTC internally
3802      and then adapted again according to viewing user's UserPreferences, so
3803      the user will see the same moment in time but shown in his local time
3804      zone's time (at least if he set his UserPreferences correctly and didn't
3805      forget changing them twice a year for DST and non-DST).
3806    * Readded (now optional) editlink footer to Include macro. Add
3807      ',editlink' to call to enable this.
3808    * star "smileys" e.g. {*}{*}{*}{o}{o}
3809
3810
3811Version 1.3.3 (2005-01-24, Revision moin--main--1.3--patch-595)
3812
3813Fixes:
3814
3815    * fixed ACL security problem in search
3816    * fix for IIS with CGI allowing page names that contain chars
3817      that are not in the system code page
3818    * fixed MoinEditorBackup revisions to start with 1 now
3819    * improved page locking ('current' file)
3820    * Unittests (normally shown at end of action=test output) are currently
3821      disabled for everything except CGI, because they only work reliably with
3822      CGI, giving wrong results for other request methods.
3823
3824
3825Version 1.3.2 (2005-01-23, Revision moin--main--1.3--patch-587)
3826
3827Fixes:
3828
3829    * ACL bugfix for deleted pages with ACL protection.
3830    * ACL bugfix for "Default" acl.
3831    * Fixed updating of groups and dicts
3832    * Python 2.2.x related fixes (worked on 2.3+)
3833      * Fixed traceback in RecentChanges.
3834      * Fixed traceback with links browser.
3835    * Fixed 0 revision display in 'Show changes'.
3836    * Fixed traceback in Antispam which occurred when it could not connect
3837      to MoinMaster. Log the errors to stderr or error.log.
3838    * Fixed bug in Page init (no date, use rev). Fixes problem with
3839      #deprecated PI.
3840    * Fixed empty lists in empty search results.
3841    * Cosmetic fix for modern theme (when viewed with Internet Explorer).
3842    * Fixed migration 9 script, do not drop newline, do not drop error.log,
3843      note about missing error.log.
3844    * Fixed repair_language.py script, keep ending newline on revisions.
3845    * Show headings and macro content in correct direction when mixing content
3846      in several directions in the same page and using caching.
3847    * Fixed bug in standalone re farmconfig.
3848    * Fixed DOS condition in antispam code.
3849    * Use smaller margin in print mode to get better results with
3850      Mozilla/Firefox.
3851    * Fixed some user input escaping issues.
3852    * Fixed a problem when one wiki plugin override other wikis plugins in
3853      same farm.
3854    * Fixed some broken tests.
3855    * Fixed recursive include in pstats.
3856    * Fixed bug in standalone - HTTP result code was 200 even when the access
3857      was forbidden.
3858    * Fixed traceback when trying to login with non-ascii password.
3859    * Fixed traceback when xml is not available, reported on Python 2.2.?
3860    * Fixed slideshow to show slides in sorted order again.
3861    * Fixed serving multiple wikis on same IP/different ports with twisted and
3862      farmconfig.
3863    * It is possible to run with data_underlay_dir = None for special
3864      application, but be aware that the wiki won't be usable unless you have
3865      at least some of the system pages from underlay/ available.
3866    * Files with Unicode characters in their filename are possible now.
3867    * Bugfix for broken [:page#anchor:text] links.
3868    * Workaround an instability of the gdchart module leading to
3869      stalled servers etc.
3870    * Fixed some event-log decoding issues that affect charts rendering.
3871
3872Other changes:
3873
3874    * Major speed improvement over 1.3.1. Many times faster title search,
3875      creating new page, opening page editor and any operation that list pages.
3876      See http://moinmoin.wikiwikiweb.de/MoinBenchmarks
3877    * Improved README.migration.
3878    * Cleaner design for login/register interface, login is always the default
3879      button when the user click Enter.
3880    * If there are problems found in the configuration, log the error
3881      and display helpful error messages in the browser.
3882    * More forgiving unicode configuration policy, you must use the u'string'
3883      format only for unicode values.
3884    * Added profiling to CGI.
3885    * The content of farmconfig.py is similar to wikiconfig.py now.
3886    * Unexpected errors while loading cache files are logged.
3887    * i18n for icon ALT tags.
3888    * Include request initialization code in the profile in standalone server.
3889    * When creating new theme, style sheets are inherited correctly, no need
3890      to override style sheets just to get them working.
3891    * Many times faster plugin system. Typical pages are about 35% faster,
3892      pages with many plugins can be many times faster.
3893    * Spiders are allowed to fetch attachments.
3894    * Old user files containing password hash encoded in pre 1.3 charset
3895      are auto repaired on first login.
3896    * data_dir defaults to './data', underlay_data_dir to './underlay' now.
3897      It is a good idea to replace those by absolute pathes in wikiconfig.py.
3898    * Renamed "Refresh" to "Delete Cache" - it was misused by users. The action
3899      was also moved into the action menu in the modern and rightsidebar themes.
3900    * Added a workaround for TableOfContents missing some links by making it
3901      uncacheable via a "time" dependency.
3902    * Removed interwiki icon and title attribute for wiki:Self:... links.
3903    * Unittests (normally shown at end of action=test output) are currently
3904      disabled because they worked unreliably, giving wrong results sometimes.
3905
3906New features:
3907
3908    * Create new pages easily using configurable interface and page templates
3909      with the new NewPage macro.
3910    * ReStructuredText (rst) support is built-in now. See HelpOnParsers.
3911    * New experimental feature in mointwisted.py - each interface may
3912      specify a port: '12.34.56.78:80'. Without a port, the port option
3913      is used.
3914
3915API changes:
3916
3917    * For a complete list of changes, see MoinMoin:ApiChanges.
3918    * wikiutil.importPlugin's first argument is now a wiki config instance
3919      (request.cfg) and there is no path keyword.
3920    * Wiki plugins always override MoinMoin plugins. wikiutil.importPlugin
3921      implements this override.
3922    * util.pysupport.importName does not accept path - you should call
3923      it with correct module name, e.g 'wikiconfig.plugin.parser.wiki' for
3924      wiki plugins, or 'MoinMoin.parser.wiki'.
3925    * wikiutil.extensionPlugin was renamed to wikiPlugins and it gets config
3926      instance instead of path.
3927    * New function wikiutil.importWikiPlugin used to import wiki plugins
3928      using a cache in a thread safe way.
3929    * New config option config.use_threads is used to activate thread
3930      safe code.
3931    * New keyword arguments for getPageList, enable 10X faster operation
3932      for common cases by controlling page filtering.
3933    * New up to 100X times faster getPageCount
3934
3935
3936Version 1.3.1 (2004-12-13, Revision moin--main--1.3--patch-434)
3937
3938Fixes:
3939
3940    * Fixed "Error Cyclic usage" crash when user had Italian (it), Korean
3941      (ko), Serbian (sr) or Vietnamese (vi) as user interface language.
3942    * Fall back to en (instead of crashing) when user uses a language moin
3943      does not support / does not support any more (like pt,sv,fi,sr).
3944    * In 1.3.0, people accidentally put iso-8859-1 chars into wiki configs,
3945      but those where expected to be pure utf-8 and thus it crashed.
3946      Fixed by using unicode strings (varname = u'whatever'), a matching
3947      encoding setting (see top of script comment) and, when decoding strings,
3948      using decode to ASCII with replace mode (this replaces non-ASCII chars,
3949      but at least it won't crash - and you get a warning to better use
3950      Unicode strings).
3951    * Fixed long time broken table formatting. ||<style="see css spec" a||b||
3952      Now even generates valid HTML! The old markup for align, valign, width,
3953      bgcolor still works, but synthesizes style attribute data.
3954    * SystemAdmin macro shows attachments of ALL pages now.
3955    * Users without write acl rights will be able to see attachments again and
3956      also have AttachFile action in menu.
3957    * Fixed wrong match count in search results, find all matches in page
3958      titles, show all matches in contents in some rare cases.
3959    * Run about 200% faster with long running processes (standalone, Twisted),
3960      about 20% faster with cgi, by better internal data handling in wikidicts.
3961    * On SF, the dict files use utf-8 encoding now. We included them also in
3962      distribution, see contrib/dict/.
3963    * Fixed permissions to shared template stuff.
3964    * Speeded up search, fixed wrong match counts.
3965    * Speeded up internal data handling (wikidicts).
3966    * Fixed rare unicode error after deleting a page (reported only on SuSE
3967      Linux 9.0 / Python 2.3.0).
3968    * Fixed file permissions of files in the data dir.
3969    * Fixed some cosmetic problems in migration scripts and use sys.path.insert
3970      to get latest moin code when executing them.
3971
3972Other Changes:
3973
3974    * Improved docs, system and help pages.
3975    * Updated translation files.
3976
3977Known Bugs:
3978
3979    * Internet Explorer renders our HTML/CSS in a suboptimal way.
3980      (MoinMoin:MoinMoinBugs/InternetExplorer)
3981      Workaround: use a non-broken browser like FireFox / Mozilla.
3982      Fixed in MoinMoin 1.3.2.
3983    * Passwords using non-ascii do not work.
3984      (MoinMoin:MoinMoinBugs/NonAsciiPasswordsBroken)
3985    * The TOC macro is broken partly.
3986      (MoinMoinBugs/TableOfContentsBrokenForIncludedPages,
3987       MoinMoinBugs/TableOfContentsLacksLinks)
3988    * See also: http://moinmoin.wikiwikiweb.de/MoinMoinBugs
3989
3990
3991Version 1.3.0 (2004-12-06, Revision moin--main--1.3--patch-400)
3992
3993    As you see from the length of the 1.3 changes below, 1.3 is a major(!)
3994    upgrade. We could have also named it "2.0", but we decided against.
3995    So take the time for reading the informations thoroughly and do the
3996    migration exactly as we tell you - this is no 5 minutes upgrade!
3997
3998    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3999    !!! We heavily changed configuration, data encoding, dir layout:    !!!
4000    !!!  * the default encoding changed to utf-8.                       !!!
4001    !!!  * also, we changed the escaping for special chars to %XX%YY in !!!
4002    !!!    URL and (xxyy) in file system.                               !!!
4003    !!!  * layout of data dir changed completely                        !!!
4004    !!! If you upgrade an existing wiki, you must run the migration     !!!
4005    !!! scripts or you will get data corruption or other problems.      !!!
4006    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4007
4008    HINT: Upgrading your wiki - critical information
4009
4010      If you are NOT starting from scratch, you MUST convert your existing
4011      data - see README.migration for details.
4012
4013      If you use ##language: xx comments on your OWN pages, you should also run
4014      repair_language script. Not needed for help/system pages as we already
4015      have done that for you.
4016
4017      MoinMoin uses Unicode internally now (UCS-2 with 16 bits or UCS-4 with
4018      32 bits, depending on your Python installation). The encoding used
4019      for page files and html output is set by config.charset.
4020
4021      Moin 1.3 uses utf-8 encoding only, there is NO SUPPORT for using a
4022      charset different from utf-8 with 1.3. If you try, you are on your own.
4023
4024    Directory layout
4025
4026      Directory layout was heavily changed. Each page now is a directory,
4027      containing page revisions, attachments, cache files and edit-log.
4028
4029      You can delete a page or move a page from one wiki to another
4030      easily. Look at the wiki/data directory to see.
4031
4032      Example:
4033        old: data/text/FrontPage
4034        new: data/pages/FrontPage/revisions/00000042
4035             data/pages/FrontPage/current (contains: 00000042)
4036        old: data/backup/FrontPage.xxxxxxxx
4037        new: data/pages/FrontPage/revisions/00000023
4038
4039      For cleaning up cache files, use MoinMoin/scripts/cachecleaner.py
4040      (see comments in script).
4041
4042   Python / Libs
4043
4044      * For using RSS, you need to have PyXML installed:
4045        Python 2.4*   -> PyXML 0.8.4 (cvs version)
4046        Python 2.3.x  -> PyXML 0.8.3
4047        Python 2.2.2+ -> ???
4048        This will also make "Live Bookmarks" of Mozilla Firefox working.
4049        New: if you don't have PyXML installed, the RSS icon on RecentChanges
4050        will not be displayed any more. Python with no PyXML installed
4051        generates invalid RSS XML.
4052
4053   Page names handling
4054
4055      * Handling of special characters in file names changed from _xx format
4056        to (xx...) format.
4057      * In URLs, moin now uses %xx%yy quoting, (because this is supported by
4058        browsers), and sub pages use "/" instead of the ugly "_2f".
4059      * Underscore character "_" is used now as a space character " " both
4060        in file names and URLs. " " and "_" will be handled equivalent at most
4061        places in the future (represented as "_", rendered as " ").
4062      * To prevent wiki abuse and user typing errors, page names are normalized
4063        in URLs, query strings, the "go" box and when renaming pages. This
4064        include leading, trailing and multiple slashes and white space. Certain
4065        invisible unicode characters are removed from page names.
4066      * Group page names are restricted even more, any non unicode alpha-numeric
4067        character is removed. This is done to enable changing acl syntax in
4068        the future. The restriction might be loosen on future versions.
4069      * You can edit config.page_invalid_chars_regex to control which characters
4070        are allowed in page names (Changing it is not supported).
4071      * When you enter page name, it is normalized and you are redirected to
4072        the normalized page, or if nothing left (e.g '/////'), to FrontPage.
4073      * When renaming a page to a name that can be normalized to an empty string,
4074        the new page name will be "EmptyName" and the user will not get an
4075        error message.
4076
4077   Underlay directory
4078
4079     * Pages (especially system and help pages) are now located in an underlay
4080       directory (data_underlay_dir). You will see the pages there if they are
4081       NOT covered (overlayed) by a page in the normal pages directory
4082       (as set using data_dir).
4083       MAKE SURE THAT data_underlay_dir IS CORRECT OR YOU WILL SEE MANY EMPTY
4084       PAGES ONLY IN A NEW WIKI.
4085     * If you edit a page that is shown from underlay directory, it will be
4086       copied to the normal page directory on save (copy-on-write).
4087     * You can use one copy of the underlay directory shared by many
4088       wiki instances. Each wiki will then have only your local, self-made
4089       wiki pages in its data directory, and only system and help pages in the
4090       single, shared underlay directory - this simplifies upgrades a lot.
4091     * It is recommended to keep your underlay system and help pages immutable
4092       using acl, so you can upgrade your wiki easily. The default help and
4093       system pages already have those ACLs (using MoinPagesEditorGroup).
4094     * Do not forget to remove your old help and system pages after migrating
4095       your wiki. We don't provide a script for that as that would be
4096       dangerous for edited pages. Just use some file manager (e.g. mc) to
4097       clean the data/pages/ directory. As soon as you have removed the
4098       system pages there, you will see the new pages in the underlay dir.
4099       See the EditedSystemPages page for a list of pages that exist in both
4100       data and underlay directory (use this page as admin!).
4101
4102       When updating from 1.2 or lower to 1.3 or higher, you will want to
4103       clean out the copies of the system pages in your {{{wiki/data}}}
4104       directory. All of these pages will now reside in the underlay
4105       directory. If you have system pages from 1.2 or lower in your
4106       wiki/data/ directory, they will overshadow the more up-to-date
4107       documentation. This can be done using the following manual procedure:
4108       1. You have just converted from 1.2 or lower to post-1.3.
4109       2. Go to your wiki's EditedSystemPages.
4110       3. Find all the pages that are MoinMoin system or help pages. You will
4111          know if it is one of those pages because it is not your page.
4112       4. Check if it is okay to delete by either:
4113          1. Using the this page "info" link and check the Revision History to
4114             see if it is greater than 1. If so, there are modifications, so do
4115             not delete the page and evaluate the modifications to see if they
4116             are necessary.
4117          2. Using your file browser (Windows Explorer, etc) to go to your
4118             wiki/data/<<systemPage>>/revisions/ directory and to see if there
4119             are no modifications. If there are, do not delete the page and
4120             evaluate the modifications to see if they are necessary.
4121       5. Delete that wiki/data/<<systemPage>> using your file browser.
4122
4123    Multiple languages
4124
4125      * New file name quoting method allow 50% longer page names in languages
4126        that use more than one byte per character, like Hebrew, Korean etc.
4127      * Configuration file uses 'utf-8' encoding now. Certain values that are
4128        marked with [Unicode] can use any character in your language. Examples
4129        are page names in navi_bar, page types regular expressions and site name.
4130      * For configuration examples adopted to your language, check ConfigMarket
4131        in the MoinMoin wiki.
4132      * The system and help pages that come with moin are now in utf-8.
4133      * MissingPage system page localized, should display in your language.
4134      * We did many i18n (translation) updates.
4135      * CSS file use utf-8 encoding. User css is also expected to be utf-8.
4136        This is relevant only if you use non-ASCII values in the CSS file.
4137      * config.upperletters and config.lowerletters were removed.
4138        We now use a pre-made ucs-2 spanning set and you usually don't have to
4139        change it. See MoinMoin/util/chartypes.py if you're interested.
4140      * ACL works with any user name or group name in any language, even names
4141        with spaces.
4142      * Now you can use any charset in config.charset. Note: only utf-8 is
4143        a supported configuration!
4144      * Improved url handling, now creating pages directly from the browser
4145        url box with non-ascii names works in most cases, even when
4146        config.charset is not utf-8.
4147      * When using non-utf-8 config.charset, characters in URLs that does
4148        fit in the charsets are replaced with "?" (instead of crashing).
4149      * All themes and most macros and actions are Right to Left friendly.
4150        Full RTL support planned for 1.3 release.
4151      * If page language is specified with #language processing instruction
4152        the page is displayed in the correct direction. Pages without
4153        language are displayed using the wiki default_lang.
4154
4155    Multiple configurations
4156
4157      * You can run multiple wikis from the same wiki directory or server.
4158        For example, you can run one Twisted server that serve multiple wikis,
4159        instead of running multiple servers. Samples of the new configuration
4160        are supplied in wiki/config/*.
4161      * You can't just use your old moin_config.py file. It is now called
4162        wikiconfig.py and the config variables now have to be in a class
4163        "Config" and that class must inherit from
4164        MoinMoin.multiconfig.DefaultConfig - see the provided wikiconfig.py
4165        sample for details.
4166        This is very useful, e.g. you could derive a GermanConfig from
4167        DefaultConfig. After that, you can derive configs for wikiA and wikiB
4168        from that GermanConfig.
4169      * farmconfig.py contains a mapping attribute called "wikis" with pairs of
4170        wikiconfig module name and regular expression. The regular expression
4171        is matched against the URL of the request and the first matching entry
4172        determines the config module to be imported by MoinMoin.
4173      * If you use farmconfig.py's "wikis" mapping, then any wiki has a private
4174        config module, named after the wiki - e.g. wiki named moinmoin would
4175        use moinmoin.py.
4176      * If you only have a single wiki, you do not need farmconfig.py. just make
4177        a wikiconfig.py and it will be used no matter what URL is requested.
4178      * There is one common global "config" that holds sitewide settings (like
4179        umask or charset) - you do not need to change settings there.
4180        This file is located in the MoinMoin code: MoinMoin/config.py.
4181
4182    General configuration
4183
4184      * SecurityPolicy now uses "write" instead of "edit" (so it is may.write
4185        now). This is to get it in sync with ACLs.
4186      * SecurityPolicy now automatically can use everything in acl_rights_valid.
4187      * There is a new config option "config_check_enabled". It will warn about
4188        any unknown variable name (probably typo) to stderr or error.log.
4189        If something doesn't work at all and changing the config does no
4190        difference, switch it on and look at the error message.
4191      * The sample config file comes with config_check_enabled = 1. If you
4192        introduce additional variables yourself, you definitely want to switch
4193        that check off or it will fill your log.
4194      * If you define "page_front_page" variable, this name will show in the
4195        navigation bar now, instead of the default "FrontPage".
4196
4197    New search engine
4198
4199     * Full text and title search do support multiple search terms now -
4200       see HelpOnSearching for details.
4201     * Regular expressions are still supported but have to be turned on per
4202       search term. Search terms in macros using regular expressions will have
4203       to be fixed.
4204     * The URL interface of the search engine has also changed. Links that
4205       point directly to search actions may be broken.
4206
4207    User names
4208
4209      * User names can not use group names, even if ACLs are not enabled.
4210        This will prevent error later, if you start to use acl in the future
4211        (acl is going to be mandatory in 1.5).
4212      * User names are not restricted any more to only CamelCase.
4213      * To prevent imposing as other users, leading, trailing and multiple
4214        whitespace in user names is not allowed. Only Unicode alpha numeric
4215        characters are allowed, with optional one space character between
4216        words.
4217      * When a user name with a group name or "bad" name is trying to
4218        access the wiki, he is redirected to the UserPreferences page and
4219        asked to create a new account.
4220      * When trying to login or create a new account with a bad name,
4221        correct error message is displayed in all cases.
4222
4223    CGI
4224
4225      * You can not use your old moin.cgi file, as we removed cgimain.py
4226        (was deprecated since 1.2). Copy the new file from the server dir.
4227
4228    Moin servers - Twisted and standalone
4229
4230      * Configuration self checking on startup. Will raise an error in case
4231        of bad configuration or non-accessible directories.
4232      * Both use shorter and identical configuration options.
4233      * Server scripts contain detailed comments and examples.
4234      * Configuration defaults changed to fit most users.
4235      * There is memory profiler option for debugging, switched off by default.
4236      * If you perform a standard install, server scripts should run out
4237        of the box or with minimal change.
4238
4239    Twisted server
4240
4241      * All code moved into the new server package, the server script
4242        contains only configuration options.
4243      * Listen to more than one interface with "interfaces" list.
4244      * Code updated to new Twisted API.
4245      * Use mointwisted script to start and stop the server, using
4246        "mointwisted start" and "mointwisted stop".
4247      * The Twisted server runs as daemon by default.
4248      * All moin Twisted files are called now mointwisted instead of
4249        moin_twisted.
4250      * Fixed getting username from Twisted request (http auth)
4251
4252    Standalone server
4253
4254      * Configuration moved from moin_config.py to moin.py.
4255      * If run as root, you can set both user and group for the server.
4256      * Can use logfile instead of logging to stderr.
4257      * Fixed missing unquoting of query string (caused problems in rare cases).
4258
4259    mod_python server
4260
4261     * moin_modpy server files renamed to moinmodpy.
4262
4263    Wiki Markup
4264
4265     * '''strong''', ''em'' and __underline__ have now paragraph scope. You can
4266       set these attributes on words level. For multiple paragraphs, wrap each
4267       with needed markup.
4268     * If you leave unclosed ''', '' and __  markup, its is closed when the
4269       paragraph ends.
4270
4271    User interface
4272
4273     * Due to many changes in CSS files, the wiki may look "broken" until
4274       your reload once or twice, or empty your browser cache.
4275     * The "Send mail notification" checkbox is replaced by "Trivial change"
4276       checkbox. The default behavior did not change - regular edit is not
4277       a trivial change, and mail will be sent to subscribes. If you check
4278       trivial change, mail will be sent only to users who selected to
4279       get trivial changes in their user preferences.
4280     * New theme "modern" has been added, and used as default theme.
4281     * classic and rightsidebar improved.
4282     * viewonly theme removed, as any theme can be use now as viewonly
4283       by using #acl All:read in the wikiconfig.
4284     * All themes use new navibar, displaying both wiki links, user links
4285       and the current page.
4286     * navibar and pagetrail use now shortened page names, so very long
4287       names does not break the interface visually.
4288     * All themes have improved search interface at the top of the window.
4289     * Only avaiable actions are displayed, so most situations when a user
4290       try to do something he can't do are prevented.
4291     * When creating a new page, no action is available until the page
4292       is created. You can't attach files to non-existing page any more.
4293     * Non registered users get a "login" link. Registered uses get
4294       "username" link to their home page, and "user preferences" link.
4295     * Messages more clear using bold type, designed by css.
4296     * Few useless messages removed (but there are many more)
4297     * Default wiki logo uses the wiki name instead of the MoinMoin troll
4298       logo.
4299
4300    Other fixes and changes
4301
4302     * Most generated html code is valid "html 4 strict". There are still
4303       some problems that still have to be fixed, mainly macros, table
4304       attributes, and inline markup crossing (<a><b></a></b>).
4305     * WantedPages can include and exclude system pages, which makes it
4306       much more useful.
4307     * Fixed a bug in TitleIndex where not all system pages are excluded.
4308     * RenamePage action now renames everything, including backups, page
4309       history, attachments. It does not change toplevel editlog, though.
4310       After you rename a page, you are redirected to the new page.
4311     * Syntax colorization supports more languages (Java, C++, Pascal)
4312     * Inline: display of attachments was extended. A Parser now knows which
4313       extensions it can handle.
4314     * TableOfContents and Include macros now cooperate a bit better. There
4315       are still problems with multiple Includes of the same page.
4316     * Excluded actions at bottom of page are not displayed any more.
4317     * Editor: removed the columns size setting, just using 100% of browser
4318       window width (it didn't work because of that anyway). Also removed that
4319       "reduce editor size" link at top of editor as you would lose your
4320       changes when using it.
4321     * Removed the option to choose text smileys instead of images, this made
4322       more trouble than it was worth. The text version is still given in ALT
4323       attribute.
4324     * Moved stuff from contribution/ to MacroMarket page on MoinMoin wiki
4325     * Some nasty people try to use a running moin as a proxy (at least they
4326       did on moinmaster.wikiwikiweb.de:8000, maybe due to the magic port
4327       number). We changed the code to check for that and just return 403
4328       in that case. Moin can not be used as a proxy anyway.
4329     * moin.cgi?test was removed in favor of a new buildin test
4330       action. It works for all deployments, just use ?action=test.
4331     * Sending mail does use tls if server supports it.
4332
4333    3rd party developer notes
4334
4335     * Themes should be now sub class of MoinMoin.theme.ThemeBase. Sub
4336       classes will get automatically all new improved user interface
4337       elements for free.
4338     * Theme authors should update their theme for 1.3. Some keys removed
4339       from them dict. See ThemeBase class in MoinMoin/theme/__init__.py.
4340     * Actions writers should call request.setContentLangauge with the
4341       correct language used by the action. This enable themes and other
4342       code to use correct direction.
4343     * The Formatter interface was changed. Formatters and parsers using
4344       the formatter interface have to be adjusted.
4345     * started deprecation of Processors: they are still recognized, but
4346       implementors should start to rewrite their Processors as Parsers.
4347       A processor with the same name as a parser in a pre #! section is
4348       currently preferred. This will change in the next release.
4349
4350    Deprecation notes
4351
4352     * Processors are deprecated, see section above.
4353
4354     * Using the cookie (or the login url with ID) only and not setting (or
4355       setting and not remembering) your email/password in UserPreferences
4356       is DEPRECATED. Those quite unsecure methods will likely be dropped
4357       in next moin version.
4358
4359     * Operating with acl_enabled = 0 is also DEPRECATED. Due to some other
4360       improvements planned, we will have to operate with ACLs enabled ONLY
4361       in a future moin version, so this setting will likely be dropped.
4362       So clean up your user accounts (see moin_usercheck.py) and switch ACLs
4363       on NOW.
4364       There are no drawbacks, so you will like it. Having ACLs enabled
4365       doesn't mean you really have to USE them on wiki pages...
4366
4367     * allow_extended_names = 0 is deprecated (default was/is 1).
4368       Future versions will be able to use extended names (aka free links) in
4369       any case and the config setting will be removed.
4370
4371     * allow_subpages = 0 is deprecated (default was/is 1).
4372       Future versions will be able to use subpages in any case and the config
4373       setting will be removed.
4374
4375     * attachments = {...} - we would like to remove that setting because of
4376       several reasons:
4377       * when not being extremely careful, this can easily lead to security
4378         problems (like when uploading a .php exploit and then executing it
4379         by accessing it directly via web server)
4380       * makes code more complicated - code that we want to change completely
4381         in next version
4382       If you need that feature, speak up now and tell us your reasons WHY you
4383       need it.
4384
4385
4386Version 1.2.4 (2004-10-23, Revision 1.187)
4387
4388This will probably be the last 1.2.x release as we are soon doing release
4389candidates for 1.3 release (with big internal changes) and are expecting
4390release 1.3 in december 2004.
4391
4392Fixes:
4393    * fixed "None" pagename bug in fullsearch/titlesearch
4394    * fixed projection CSS usage
4395    * the compiled page is removed when a page is deleted, so no ghost page
4396      appears after deletion
4397    * fixed AbandonedPages day-break problem
4398    * fixed [[GetVal(WikiDict,key)]]
4399    * the msg box is now outside content div on PageEditor, too
4400    * privacy fix for email notifications: you don't see other email addresses
4401      in To: any more. mail_from is now also used for To: header field, but
4402      we don't really send email to that address.
4403    * privacy fix for /MoinEditorBackup pages that were made on previews of
4404      pages that were not saved in the end
4405    * fix double content div on PageEditor preview
4406
4407Other changes:
4408    * workaround for broken Microsoft Internet Explorer, the page editor now
4409      stops expanding to the right (e.g. with rightsidebar theme).
4410      Nevertheless it is a very good idea to use a non-broken and more secure
4411      browser like Mozilla, Firefox or Opera!
4412
4413    * from MoinMoin.security.antispam import SecurityPolicy in your
4414      moin_config.py will protect your wiki from at least the known spammers.
4415      See MoinMoin:AntiSpamGlobalSolution for details.
4416
4417    * xmlrpc plugin for usage logging, currently used for antispam accesses
4418
4419    * (re-)added configurable meta tags:
4420        * html_head_queries = '''<meta name="robots" content="noindex,nofollow">\n'''
4421        * html_head_posts   = '''<meta name="robots" content="noindex,nofollow">\n'''
4422        * html_head_index   = '''<meta name="robots" content="index,follow">\n'''
4423        * html_head_normal  = '''<meta name="robots" content="index,nofollow">\n'''
4424
4425    * i18n updates/fixes
4426
4427    * New UserPreferences switch:
4428      you may subscribe to trivial changes (when you want to be notified about ALL
4429      changes to pages, even if the author deselected to send notifications).
4430
4431    * New AttachList and AttachInfo macros - thanks to Nigel Metheringham and
4432      Jacob Cohen.
4433
4434Version 1.2.3 (2004-07-21, Revision 1.186)
4435
4436Fixes:
4437    * fixed NameError "UnpicklingError" in user.py
4438    * fixed version number in moin.spec
4439    * reverts done by bots or leechers
4440      There was a bad, old bug that triggered if you did not use ACLs. In that
4441      case, moin used some simple (but wrong and incomplete) function to
4442      determine what a user (or bot) may do or may not do. The function is now
4443      fixed to allow only read and write to anon users, and only delete and
4444      revert to known users additionally - and disallow everything else.
4445    * avoid creation of unneccessary pages/* directories
4446    * removed double content divs in general info and history info pages
4447    * fixed wiki xmlrpc getPageHTML
4448    * fixed rightsidebar logout URL, also fixed top banner to link to FrontPage
4449    * use config.page_front_page and .page_title_index for robots meta tag
4450      (whether it uses index,follow or index,nofollow), not hardcoded english
4451      page names
4452    * ACL security fix for PageEditor, thanks to Dr. Pleger for reporting
4453    * default options for new users are same as for anon users
4454
4455Version 1.2.2 (2004-06-06, Revision 1.185)
4456
4457Fixes:
4458    * python related:
4459     * own copy of difflib removed
4460       Until moin 1.2.1 we had our own copy of python 2.2.3's difflib coming
4461       with moin. This was to work around some problems with broken older 2.2
4462       python installations. We removed this now because if you have py 2.3,
4463       there is even a better difflib coming with python (and that fixes an
4464       extremely slow diff calculation happening in some rare cases).
4465       So the good news is that when you run python 2.3, you don't need to do
4466       anything and it will run great. If you run python 2.2.3, it will mostly
4467       work good and you also don't need to do anything. The bad news is that
4468       if you run an old and broken 2.2 installation (2.2.1, maybe 2.2.2) you
4469       will have to fix it on your own (just copy difflib.py from python 2.2.3
4470       over to your python 2.2.x installation).
4471       But better upgrade to python 2.3 (for debian woody, there's a backport),
4472       as 2.3 generally runs better and faster than 2.2.
4473     * scripts changed to use #!/usr/bin/env python (not /usr/bin/python2.2)
4474
4475    * user accounts and ACLs:
4476     * we now require the user to specify a password for a new account (you
4477       were not able to login without a password anyway)
4478     * it is not allowed any more to create user accounts with user names
4479       matching config.page_group_regex - please check manually that you do
4480       not already have such users existing (like a user named "AdminGroup"):
4481       cd data/user ; grep name=.*Group *  # there should be no output!
4482     * subscription email sending now honours ACLs correctly
4483
4484    * markup / rendering / user interface fixes:
4485     * fixed merging multiple lines indented by the same amount of blanks
4486     * ## comments don't break tables in two parts
4487     * added a "remove bookmark" link to RecentChanges
4488     * fixed action=titleindex (added \n after each entry)
4489
4490    * RSS fixes:
4491     * non-ASCII characters should work now
4492     * RSS feed (Recentchanges?action=rss_rc) gives UTC timestamps now
4493     * removed attribute breaking RSS feed on RecentChanges
4494
4495    * better email generation:
4496     * if you use python >=2.2.2, we add a Message-ID header to emails
4497     * if you use python 2.2.1, there is no email.Header. Instead of crashing
4498       (like previous moin 1.2.x releases), we just use the subject "as is" in
4499       that case. If it is not ASCII, this is not standards compliant.
4500     * If you have >=2.2.2 it will use email.Header to make standards compliant
4501       subject lines.
4502     * use config.mail_from as sender address when sending "lost my password"
4503       emails
4504
4505    * file attachments:
4506     * fixed for standalone server
4507     * attachment URLs (when handled by moin) don't include server name
4508     * fixed some wrong &amp;amp; in html src
4509
4510    * better themeability:
4511     * some entries in dict "d" where only present in header theme calls, some
4512       only in footer theme calls. Now almost all is present in both calls.
4513     * added some missing "content" divs so sidebar themes look better
4514
4515    * fixed some crashes producing backtraces:
4516     * no IOError when diffing against deleted page
4517     * no backtrace in xml footnote generation
4518     * no SystemInfo crash when no editlog exists in new wikis
4519     * xmlrpc.getRecentChanges fixed
4520
4521    * MoinMoin.util.filesys.rename is now a wrapper around os.rename that
4522      fixes os.rename on broken win32 api semantics
4523
4524Other Changes:
4525    * saving traffic and load by improved robot meta tag generation:
4526     * "noindex,nofollow" on queries and POSTs
4527     * "index,follow" on FrontPage and TitleIndex (give robots a chance ;))
4528     * "index,nofollow" on all other pages (hopefully saving lots of senseless
4529       requests for page?action=...)
4530     * removed config.html_head_queries (was used for same stuff)
4531    * added russian i18n (utf-8)
4532    * misc. other translation updates / fixes
4533    * added rightsidebar theme
4534    * TitleIndex now folds case, so "APage" and "anotherPage" are both under
4535      letter "A".
4536    * added macro/PageHits.py - it calculates the hits each page gets since
4537      beginning of logging
4538
4539
4540    * Full text and title search do now support multiple search terms -
4541      see HelpOnSearching for details
4542
4543    * The Formatter interface was changed. Formatter and parser using
4544      the formatter interface have to be adjusted.
4545
4546Version 1.2.1 (2004-03-08, Revision 1.184)
4547
4548Fixes:
4549    * minimum requirement to run moin 1.2/1.2.1 is python 2.2.2
4550     * not: 2.2(.0), as this does not have True/False
4551     * not: 2.2.1, as this does not have email.Header. You maybe can work
4552       around that one by:
4553      * getting the python 2.2.x (x>=2) /usr/lib/python2.2/email directory
4554      * putting it into directory 'x' (whereever you like)
4555      * doing a sys.path[0:0] = ['x'] in moin.cgi [or other appropriate place]
4556      No guarantee, this is untested.
4557    * Twisted: the http headers missed the charset data, fixed
4558    * mod_python: fixes for mod_python 2.7
4559    * wiki/data/plugin/__init__.py added - fixes not working plugin modules
4560    * plugin processors work now, too
4561    * fixed displaying non-existent translations of SiteNavigation in footer
4562    * fixed zh-tw iso name (wrong zh_tw -> correct zh-tw)
4563    * fixed reversed diffs in RecentChanges RSS
4564    * fixed "last change" info in footer (wasn't updated)
4565    * fixed event.log missing pagename (and other) information
4566    * fixed horizontal line thickness >1
4567    * fixed setup.py running from CVS workdir
4568    * fixed crash when doing action=info on first revision of a page
4569    * fixed hostname truncation in footer
4570    * minor css fixes
4571    * fixed clear msg links (they missed quoting, leading to strange page
4572      names when you click on some of them)
4573    * fixed python colorizer processor
4574    * fixed quoting of stats cache filenames
4575    * catched "bad marshal data" error when switching python versions
4576
4577Other changes:
4578    * updated danish (da) i18n
4579    * updated japanese (ja) i18n
4580    * added serbian (sr) i18n
4581    * added chinese (zh) i18n
4582    * added a simple "viewonly" theme based on classic theme - you can use
4583      this as default theme, so anonymous users won't get the usual wiki stuff,
4584      but a far simpler (and less powerful) user interface.
4585      It also displays the navibar at the left side.
4586    * added moin.spec for building RPMs
4587    * included MoinMoin/i18n/* into distribution archive (nice for translators)
4588    * included some stuff under MoinMoin/scripts - xmlrpc-tools and account
4589      checking stuff. removed some version control clutter from the dist
4590      archive, too.
4591
4592    * code colorization was refactored and some new languages (Java, C++,
4593      Pascal) where added.
4594    * inline: display of attachments was extended. A Parser now knows which
4595      extensions it can handle.
4596
4597Version 1.2 (2004-02-20, Revision 1.183)
4598
4599New features:
4600    * MoinMoin now requires Python >=2.2.2., we recommend to use Python >=2.3.2
4601      (with 2.3.x, MoinMoin runs about 20-30% faster).
4602    * by refactoring request processing, we made it possible to run moin under
4603      persistent environments:
4604        * twisted-web (http://twistedmatrix.com)
4605        * httpdmain.py (use moin.py for starting this mini server)
4606        * mod_python
4607        * FastCGI
4608      Of course, CGI is still possible.
4609    * wiki pages will be compiled to bytecode now (by default), so no need for
4610      slow parsing/formatting on every view ("WASP", see caching_formats)
4611    * when using a persistent environment (like twisted) and WASP, you get up
4612      to 20x speed - compared to CGI and moin 1.1
4613    * added support for diffs between arbitrary revisions.
4614    * removed requirement of the external diff utility
4615    * config.auth_http_enabled (defaults to 0) - use this to enable moin
4616      getting your authenticated user name from apache (http basic auth,
4617      htpasswd) - if you enable this, your basic auth username has to be the
4618      same as your wiki username.
4619      Should work with CGI, FCGI and maybe even with mod_python.
4620      Does not change behaviour of moin under twisted or standalone server.
4621    * config.tz_offset = 0.0 sets a default timezone offset (in hours
4622      from UTC)
4623    * config.cookie_lifetime (int, in hours, default 12) sets the lifetime of
4624      the MOIN_ID cookie:
4625        == 0  --> cookie will live forever (no matter what user has configured!)
4626        > 0   --> cookie will live for n hours (or forever when "remember_me")
4627        < 0   --> cookie will live for -n hours (forced, ignore "remember_me"!)
4628    * added themeing and some themes (if you improve the existing themes or
4629      make nice new ones, please contribute your stuff!). The default theme is
4630      set by config.theme_default (and defaults to 'classic').
4631    * now supporting plugin directory for parsers, processors, themes, xmlrpc.
4632    * action=info now defaults to showing page revision history again
4633    * all actions accessing the logfile (as RecentChanges or history) are now
4634      much faster
4635    * #refresh processing instruction, config.refresh
4636        * config.refresh = (minimum_delay, target_allowed)
4637            * minimum delay is the minimum waiting time (in seconds) allowed
4638            * target_allowed is either 'internal' or 'external', depending on
4639              whether you want to allow only internal redirects or also
4640              external ones. For internal redirects, just use the Wiki pagename,
4641              for external, use http://... url.
4642        * #refresh 3                    == refresh this page every 3 seconds
4643        * #refresh 5 FrontPage          == internal redirect to FrontPage in 5s
4644        * #refresh 5 http://google.com/ == redirect to google in 5s
4645      Use very carefully! Allowing a low minimum_delay and putting a #refresh
4646      on RecentChanges might slow down your wiki significantly, when some
4647      people just let their browser refresh and refresh again. Also, it does
4648      cause quite some traffic long-term. So better do not use this without
4649      good reason! Default is None (switched off).
4650    * hide most UserPreferences options before user has logged in, less
4651      confusing for new users
4652    * "config.page_dict_regex" defines what pages are dictionary definitions
4653      Currently dictionaries are used for UserHomePage/MyDict where you can
4654      define key:: value pairs that get processed like @DATE@ expansion when
4655      saving a page. The 2 "@" will be added to your keys automatically.
4656      Please do not use @xxx@ strings on the right side (value), results may
4657      vary if you do.
4658      You can also access wiki dictionaries by using the internal macro
4659      [[GetVal(page,key)]]" - that will go to page "page" and return the
4660      value (right side) corresponding to "key".
4661      Implementation note: groups are a subset of the dictionary functionality.
4662    * standalone server should work now (see server/moin.py), so you don't
4663      need to setup apache or twisted for a local personal wiki, you only need
4664      python and moin for that now, no additional stuff any more!
4665    * if you run your wiki with charset = "utf-8" (the default is still
4666      iso8859-1), you might want to have a look at contributions/utf8-pages/
4667      to see if there are already translated system pages for your language.
4668
4669Fixes:
4670    * new importPlugin routine (the old one didn't work correctly)
4671    * removed 0xA0 characters breaking utf-8
4672    * system page recognition now uses wiki groups (see AllSystemPagesGroup),
4673      fixing the long-time broken system page exclusion on TitleIndex.
4674    * mostly HTML 4.01 Strict compliant HTML
4675    * design is done by CSS now, HTML is semantic markup only
4676    * removed target attribute from links, also [^NewWindow] markup - this
4677      is a HTML 3.2 feature and not valid in HTML 4.01
4678    * updated TWikiDrawPlugin to 20021003 version, with further modifications
4679      including source. It can draw imagemaps now and saves PNG. On display a
4680      GIF will be searched if no PNG is found. We recommend changing all GIFs
4681      to indexed PNGs cause this fallback might disappear in later versions.
4682
4683      Sample code using bash and ImageMagick (be sure you know what you do):
4684      for draw in `find /path/to/wiki/data -name \*.draw`; do
4685        file=`dirname $draw`/`basename $draw .draw`
4686        if [ -e "${file}.gif" ]; then
4687          echo "Converting ${file}.gif to ${file}.png"
4688          convert "${file}.gif" "${file}.png"
4689        fi
4690      done
4691
4692    * fixed email headers and encoding
4693    * Changed moin-usercheck to adhere to scripting standards; no
4694      proprietary config changes needed any more (added --config);
4695      --wikinames is now part of the usage message.
4696    * config.umask now defaults to 0770 - if you give world r/w access, ACLs
4697      could be rather pointless...
4698
4699Removed config variables:
4700    * external_diff (not needed any more, we have internal diff now)
4701    * shared_metadb (wasn't implemented for long - we will re-add it, when it is)
4702    * title1/2 (please use page_header1/2)
4703    * page_icons_up
4704
4705Changed config variables:
4706    * changed_time_fmt (removed some html and brackets around time from default)
4707    * html_head (default is empty string now)
4708    * page_footer1/2 (default is empty string now)
4709    * page_icons (is now a list of icon names, not html any more)
4710    * umask (default is 0770 now, not world r/w any more == more secure)
4711
4712New config variables (see MoinMaster:HelpOnConfiguration):
4713    * cookie_lifetime
4714    * mail_login
4715    * page_credits
4716    * page_dict_regex
4717    * page_group_regex
4718    * page_header1/2
4719    * page_iconbar
4720    * page_icons_table
4721    * page_license_enabled
4722    * page_license_page
4723    * theme_default
4724    * theme_force
4725    * tz_offset
4726
4727Other:
4728    * lots of internal code refactoring and optimization
4729    * began moving src code documentation to epydoc, see "make epydoc"
4730    * the URL for the RecentChanges RSS feed changed. It now only works with
4731      ...?action=rss_rc.
4732
4733Known problems:
4734    * theme support is neither complete (although covering most important
4735      stuff) nor perfect - work on that will continue...
4736    * we removed some html from system messages (the boxes at top of page you
4737      get after some actions), so it currently looks less nice than before.
4738    * html is not completely validating and it is not xhtml - this will be
4739      fixed as soon as we have the infrastructure for that (other parser, DOM)
4740    * problems with rtl (right-to-left) languages, will be fixed in 1.3
4741    * if you change moin_config or switch themes, moin will still use already
4742      cached page content. For the config this can be fixed by touching
4743      MoinMoin/version.py (or simply deleting everything in
4744      data/cache/Page.py). If you get more annoyed by this than pleased by
4745      caching speedup, you can also switch off caching (see docs on
4746      caching_formats).
4747
4748Themeing and HTML/CSS cleanup:
4749    * Browsers with completely broken CSS support (like e.g. Netscape 4.x) are
4750      no longer supported. If you still need to support them, do not upgrade to
4751      moin 1.2. If you still use these browsers, we recommend that you upgrade
4752      your browser first (Mozilla 1.5 has nice and standards compliant HTML and
4753      CSS support and is available as Free Software for Windows, Linux and Mac).
4754    * If you changed any html in code or by config you will have to check if it
4755      still works. For the usual stuff, look into `MoinMoin/theme/classic.py`
4756      and `classic/css/screen.css`. For config defaults of the html fragments,
4757      read `MoinMoin/config.py`. If you want to modify a theme, don't simply
4758      change classic, but copy or subclass it under a new theme name.
4759    * because of the new theme support the layout of the `htdocs` directory
4760      changed:
4761      * Instead of using icons under `img/` and css under `css/`, there will
4762        be an additional `themename/` directory in between, e.g. `classic/img/`
4763        and `classic/css/`. If you added own icons, you may have to copy them
4764        to the themes directory.
4765      * The filename of the CSS file has changed to the media type, so the
4766        normal one used for screen output has changed name from `moinmoin.css`
4767        to `screen.css`. There also were quite some changes and enhancements to
4768        the CSS files, so better use the new ones.
4769    * config.css_url was removed
4770
4771Plugins:
4772  * we use a new plugin loader that requires a correct `__init__.py` file in
4773    the plugin directories. See the directory `wiki/data/plugin/` in the
4774    distribution archive and just copy it over to your wiki's plugin directory.
4775
4776
4777Version 1.1 (2003-11-29, Revision 1.178)
4778
4779Version 1.1 requires Python 2.0 or higher, we recommend to use Python 2.2
4780(version 2.2.2 if that is available on your host) or even better >= 2.3.2
4781(with 2.3.x, MoinMoin runs about 20-30% faster).
4782
4783New features:
4784  Configuration:
4785    * config.default_lang lets you set a default language for users not
4786      having specified language in their browser or UserPreferences
4787    * "config.page_category_regex" defines what pages are categories
4788    * replaced `config.page_template_ending` by a more flexible setting
4789      named `config.page_template_regex`
4790    * the same with config.page_form_regex (was: page_form_ending)
4791    * "config.page_group_regex" defines what pages are group definitions
4792      Currently groups are used for "user groups" (see ACLs) and "page
4793      groups" (see AllSystemPagesGroup).
4794    * robot exclusion from all pages except the standard view action,
4795      via the config.ua_spiders regex (reduces server load)
4796    * "maxdepth" argument for the TableOfContents macro
4797    * config.title1, config.title2, config.page_footer1,
4798      config.page_footer2 can now be callables and will be called with
4799      the "request" object as a single argument (note that you should
4800      accept any keyword arguments in order to be compatible to future
4801      changes)
4802    * "config.html_pagetitle" allows you to set a specific HTML page
4803      title (if not set, it defaults to "config.sitename")
4804    * navi_bar / quicklinks can now contain free-form links, i.e.
4805      entries of the form "[url linktext]" just like in wiki pages
4806    * if a quick link starts with '^', it opens in a new window; help
4807      now opens in a new window also
4808    * `config.smileys` for user-defined smileys (default: `{}`) - a dict
4809      with the markup as the key and a tuple of width, height, border, image
4810      name as the value).
4811    * `config.hosts_deny` to forbid access based on IP address
4812    * `config.mail_login` can be set to username and password separated by
4813      a space, e.g. "username userpass", if you need to use SMTP AUTH
4814    * `config.edit_locking` can be set to None (old behaviour, no
4815      locking), 'warn <timeout mins>' (warn about concurrent edits, but
4816      do not enforce anything), or 'lock <timeout mins>' (strict locking)
4817    * optionally showing a license text on editor page, use:
4818      config.page_license_enabled = 1
4819      Optionally use these to customize what is shown there:
4820      config.page_license_text = "... your text ..."
4821      config.page_license_page = "MyLicensePage"
4822      See the default values in MoinMoin/config.py for details and
4823      override them in moin_config.py, if needed.
4824    * `config.shared_intermap` can be a list of filenames (instead of a
4825      single string)
4826    * If you have added your own `SecurityPolicy`, the class interface for
4827      that has changed (see `security.py`).
4828
4829  Authenticaton / Authorization:
4830    * added ACL support, written by Gustavo Niemeyer of Conectiva and
4831      Thomas Waldmann. See HelpOnAccessControlLists for more infos.
4832      You should use MoinMoin/scripts/moin_usercheck.py before activating
4833      ACLs or some users with bad or duplicate accounts might get into
4834      trouble.
4835    * A user account can be disabled using moin_usercheck.py or
4836      UserPreferences page. Disabling, but keeping it is good for edit
4837      history.
4838    * changed security default: deletion only available to known users
4839    * support for Basic authentication (Apache style: AUTH_TYPE="Basic",
4840      REMOTE_USER="WikiUserName"). If authentication is there, user
4841      will be in ACL class "Trusted".
4842    * support for username / password login
4843      The username / password login will ONLY work, if you define a
4844      password. With an empty password, username / password login is not
4845      allowed due to security reasons. Passwords are stored encrypted
4846      (format similar to Apache SHA) and can also be entered in the
4847      UserPreferences form in this format. When requesting login
4848      information by email, the password is also sent in this encrypted
4849      format (use copy&paste to fill it in the form).
4850      ...?action=userform?uid=<userid> is still possible, so if you have
4851      bookmarks, they will still work). The input field for the ID was
4852      dropped.
4853      NOTE: using the userid for login purposes is DEPRECATED and might
4854            be removed for better security soon.
4855    * after logging in, you will get a cookie valid until midnight.
4856      The next day, the cookie will expire and you will have to login
4857      again. If you don't want this, you can check the "remember me
4858      forever" option in UserPreferences.
4859    * if the page file is read-only, you get a message (i.e. you can now
4860      protect pages against changes if you're the wiki admin).
4861      Note: you can do that easier using ACLs.
4862
4863  Markup / Macros / Actions:
4864    * RandomQuote macro (and even parses Wiki markup now)
4865    * `[[Navigation]]` macro for slides and subpage navigation
4866    * [[ShowSmileys]] displays ALL smileys, including user-defined ones
4867    * the Include macro has new parameters (from, to, sort, items) and
4868      is able to include more than one page (via a regex pattern)
4869    * `MailTo` macro for adding spam-safe email links to a page
4870    * if a fancy link starts with '^' (i.e. if it has the form
4871      "[^http:... ...]"), it's opened in a new window
4872     * because of that, the NewWindow macro was removed from contrib
4873    * "#pragma section-numbers 2" only displays section numbers for
4874      headings of level 2 and up (similarly for 3 to 6)
4875    * ../SubPageOfParent links
4876
4877  User interface:
4878    * new fancy diffs
4879    * Page creation shows LikePages that already exist
4880    * editor shows the current size of the page
4881    * editor returns to including page when editing an included page
4882    * Visual indication we're on the editor page (new CSS style)
4883    * selection to add categories to a page in the editor (use preview
4884      button to add more than one category)
4885    * if user has a homepage, a backup of save/preview text is saved as
4886      a subpage UsersHomePage/MoinEditorBackup
4887    * added "revert" link to PageInfo view (which makes DeletePage more
4888      safe in public wikis, since you can easily revive deleted pages
4889      via revert)
4890    * Selection for logged in users (i.e. no bots) to extend the listing
4891      of recent changes beyond the default limits
4892    * Activated display of context for backlinks search
4893    * Subscriber list shown on page info
4894    * LikePages shows similar pages (using difflib.get_close_matches)
4895    * last edit action is stored into "last-edited" file, and
4896      displayed in the page footer
4897    * reciprocal footnote linking (definition refers back to reference)
4898    * "Ex-/Include system pages" link for title index
4899      Note: system/help pages algorithm is still mostly broken.
4900    * list items set apart by empty lines are now also set apart
4901      visually (by adding the CSS class "gap" to <li>)
4902    * "save" check for security.Permissions
4903    * Added Spanish, Croatian and Danish system texts
4904    * Added flag icons for the languages supported in "i18n"
4905    * updated help and system pages, more translations, see also
4906      AllSystemPagesGroup
4907    * there was quite some work done on wiki xmlrpc v1 and v2 - it
4908      basically works now.
4909
4910  Tools and other changes:
4911    * moin-dump: New option "--page"
4912    * there are some scripts MoinMoin/scripts/* using wiki xmlrpc for
4913      backup and wiki page copying applications
4914    * Updated the XSLT parser to work with 4Suite 1.0a1
4915    * more infos in cgi tracebacks
4916    * UPDATE.html is a HTML version of MoinMaster:HelpOnUpdating
4917
4918Unfinished or experimental features:
4919    * user defined forms
4920    * XML export of all data in the wiki
4921    * RST parser (you need to install docutils to use this)
4922    * SystemAdmin macro
4923
4924Privacy fixes:
4925    * do not use / display user's email address in public places
4926
4927SECURITY FIXES:
4928    * Removed two cross-site scripting vulnerabilities reported by "office"
4929
4930Bugfixes:
4931    * Bugfix for PageList when no arguments are given
4932    * Disallow full-text searches with too short search terms
4933    * [ 566094 ] TitleIndex now supports grouping by Hangul Syllables
4934     * fix for multibyte first char in TitleIndex
4935    * Footnotes were not HTML escaped
4936    * Numbered code displays are now in a table so that you can cut the
4937      code w/o the numbers
4938    * Bugfix for wrong mail notifications
4939    * Create unique anchors for repeated titles
4940    * [ 522246 ] Transparently recode localized messages
4941    * [ 685003 ] Using "preview" button when editing can lose data
4942    * use gmtime() for time handling
4943    * fixed negative gmtime() arguments
4944    * [[Include]] accepts relative page names
4945    * fixed ||NotInterWiki:||...||
4946
4947-----------------------------------------------------------------------------
4948Version 1.0 (2002-05-10, Revision 1.159)
4949
4950THIS IS THE LAST RELEASE WITH PYTHON 1.5.2 SUPPORT! If severe bugs
4951should occur, a maintenance release will fix them.
4952
4953Some optional features (like statistics) already require Python 2.0.
4954
4955New features:
4956    * security fix: "allow_xslt" has to be set to 1 in order to enable
4957      XSLT processing; note that this defaults to 0 because XSLT is able
4958      to insert arbitrary HTML into a wiki
4959    * "action=content" for transclusion into static web pages; emits the
4960      pure page content, without any <html>, <head>, or <body> tags
4961    * "?action=links&mimetype=text/plain" works like MeatBall:LinkDatabase
4962    * "Preferred language" and "Quick links" user settings
4963    * Added "processor" concept, processors work on the data in "code
4964      displays" and are called by a bangpath in the first line of data
4965    * Processors: Colorize, CSV (see HelpOnProcessors)
4966    * New icons: "{OK}", "(./)", "{X}", "{i}", "{1}", "{2}" and "{}"
4967      (see HelpOnSmileys)
4968    * FullSearch now displays context information for search hits
4969    * DeletePage offers a textentry field for an optional comment
4970    * Email notifications are sent in the user's language, if known from
4971      the preferences
4972    * @PAGE@ is substituted by the name of the current page (useful
4973      for template pages)
4974
4975Unfinished features:
4976    * user defined forms
4977    * XML export of all data in the wiki
4978    * RST parser (you need to install docutils to use this)
4979    * XMLRPC interface
4980
4981Bugfixes:
4982    * Syntax warning with Python 2.2 fixed
4983    * Macro-generated pagelinks are no longer added to the list of links
4984    * error codes returned by "diff" are reported
4985    * fix for attachments on pages with non-USASCII names
4986    * correct handling of spaces in attachment filenames and URLs
4987
4988-----------------------------------------------------------------------------
4989Version 0.11 (2002-03-11, Revision 1.151)
4990
4991Most important new features: file attachments, definition list markup
4992(glossaries), change notification via email, variable substitution when
4993saving pages, edit preview, and improved documentation.
4994
4995Note that the RSS features require a recent PyXML (CVS or 0.7) due to
4996bugs in the namespace handling of xml.sax.saxutils in earlier versions.
4997This is (hopefully) automatically detected on every installation.
4998
4999Statistical features are NOT designed to work with Python 1.5.2 and
5000require Python 2.0 or higher. Overall, MoinMoin 0.11 is not explicitely
5001tested for 1.5.2 compatibility.
5002
5003New features:
5004    * XML formatting now (most often) produces well-formed, and, depending
5005      on proper layout of the wiki page, valid StyleBook XML
5006    * Headers are now automatically numbered, unless you set the config
5007      item 'show_section_numbers' to 0
5008    * "#pragma section-numbers off" (or "0") switches that off explicitely,
5009      and "on" or "1" enables numbering
5010    * Added a "contributions" directory for 3rd party extensions
5011    * AttachFile action, contributed by Ken Sugino; note that you have
5012      to enable this action because of the possibility of DoS attacks
5013      (malicious uploads), by adding this to your moin_config:
5014            allowed_actions = ['AttachFile']
5015    * "attachment:" URL scheme allows access to attachments, to get files
5016       from other pages use "attachment:WikiName/filename.ext".
5017    * New macros: Date(unixtimestamp) and DateTime(unixtimestamp) to
5018      display a timestamp according to system/user settings
5019    * Variable substitution when a page is saved, note that saving
5020      template pages does NOT expand variables. Supported are:
5021        @DATE@      Current date in the system's format
5022        @TIME@      Current date and time in the user's format
5023        @USERNAME@  Just the user's name (or his domain/IP)
5024        @USER@      Signature "-- loginname"
5025        @SIG@       Dated Signature "-- loginname date time"
5026        @MAILTO@    A fancy mailto: link with the user's data
5027    * Copied some new emoticons from PikiePikie
5028        || {{{ :-? }}} || :-? || tongue.gif ||
5029        || {{{ :\  }}} || :\  || ohwell.gif ||
5030        || {{{ >:> }}} || >:> || devil.gif  ||
5031        || {{{ %)  }}} || %)  || eyes.gif   ||
5032        || {{{ @)  }}} || @)  || eek.gif    ||
5033        || {{{ |)  }}} || |)  || tired.gif  ||
5034        || {{{ ;)) }}} || ;)) || lol.gif    ||
5035    * AbandonedPages macro
5036    * Added definition list markup: {{{<whitespace>term:: definition}}}
5037    * Added email notification features contributed by Daniel Sa�    * SystemInfo: show "Entries in edit log"
5038    * Added "RSS" icon to RecentChanges macro and code to generate a
5039      RecentChanges RSS channel, see
5040          http://www.usemod.com/cgi-bin/mb.pl?UnifiedRecentChanges
5041      for details
5042    * Added config.sitename and config.interwikiname parameter
5043    * Better WikiFarm support:
5044      * <datadir>/plugin/macro and <datadir>/plugin/action can be used
5045        to store macros and actions local to a specific wiki instance
5046      * config.shared_intermap can contain a pathname to a shared
5047        "intermap.txt" file (i.e. one stored outside the datadir)
5048    * added `backtick` shortcut for {{{inline literal}}} (has to be
5049      enabled by "backtick_meta=1" in the config file); note that ``
5050      is then a shorter replacement for '''''' escaping
5051    * added inline search fields (at the bottom of each page)
5052    * Added preview to the editor, including spell checking
5053    * New languages: Chinese (Changzhe Han) and Portuguese (Jorge
5054      Godoy), updated French (Lucas Bruand), added Korean (Hye-Shik
5055      Chang) and Italian (Lele Gaifax)
5056    * New SystemAdmin macro
5057    * `[[Anchor(anchorname)]]` macro to insert anchors into a page,
5058      and [#anchorname Anchor Links].
5059    * User option to open editor view via a double-click
5060    * Added commentary field to editor, recent changes and page info
5061    * Page trails (user option)
5062    * UserPreferences: checkboxes for double-click edit, page trail,
5063      fancy links, emoticons, jump to last page visited, and some
5064      other yes/no options
5065    * "config.nonexist_qm" is now the default for a user setting
5066    * `[[GetText(text)]]` macro loads I18N texts (mainly intended
5067      for use on Help pages)
5068    * table attributes via "||<attrlist> ... ||", more details on
5069      http://purl.net/wiki/moin/HelpOnTables
5070    * PythonFaq interwiki tag and support for $PAGE placeholder
5071    * event logging, as the basis for future statistics
5072    * "moin-dump" command line tool to create a static copy of
5073      the wiki content
5074    * "config.external_diff" allows to set an exact path to the
5075      command, or change the name to for example "gdiff" if GNU
5076      diff is not a native command in your UNIX flavour
5077    * `[[PageSize]]` macro
5078    * the interwiki name "Self" now always points to the own wiki
5079    * config.title1 and config.title2 are inserted into the output
5080      right before and after the system title html code (title1
5081      is right after the <body> tag and normally undefined, title2
5082      defaults to the "<hr>" above the page contents)
5083    * Additional link on diff pages to ignore whitespace changes
5084    * Subpages (config.allow_subpages, config.page_icons_up)
5085    * super^script^, sub,,script,, and __underline__ markup
5086    * `[[FootNote]]` macro
5087    * many other new config options, see HelpOnConfiguration for
5088      a complete list
5089    * [[StatsChart(type)]] shows statistical charts (currently
5090      defined types: hitcounts, pagesize, useragents)
5091    * 'inline:' scheme works like 'attachment:', but tries to
5092      inline the content of the attachment into the page;
5093      currently knows about "*.py" sources and colorizes them
5094    * support for Java applet "TWikiDrawPlugin" via
5095      drawing:<drawingname> URL scheme (you need to activate
5096      the AttachFile action if you want drawings)
5097    * numeric entities (&#nnnnn;) are now optionally NOT escaped,
5098      which allows you to insert more characters into a Latin-1
5099      page, especially the Euro symbol
5100    * navi_bar is now a list of page names which should be linked
5101      on every page
5102    * test.cgi is now rolled into moin.cgi, and can be called
5103      by adding "?test" to the wiki base URL. Also, as a security
5104      feature, the server's environment is only shown for requests
5105      local to the web server.
5106
5107Unfinished features:
5108    * user defined forms
5109    * XML export of all data in the wiki
5110
5111Documentation:
5112    * extended the online help ("Help*" pages)
5113    * German help pages (thanks to Thomas Waldmann)
5114
5115Bugfixes:
5116    * #425857: python Parser bug on the second call
5117    * #424917: Caching control
5118    * #465499: Two HTTPS problems
5119    * #491155: FrontPage hardcoded
5120    * Handling of inbound UTF-8 encoded URIs (only with Python >= 2.0)
5121    * Fix for subtle changes in "re" of Python 2.2
5122    * User-provided URLs are now never URL-escaped, which allows appending
5123      #anchors and using %20 for spaces in InterWiki links
5124
5125-----------------------------------------------------------------------------
5126Version 0.10 (2001-10-28, Revision 1.134)
5127
5128This version is still Python 1.5.2 compatible, but it's not extensively
5129tested for that version and some parts of the system might not work
5130there, especially seldom used macros and actions. Bug reports welcome!
5131
5132New features:
5133    * "#deprecated" processing instruction
5134    * config entry "SecurityPolicy" to allow for customized permissions
5135      (see "security.py" for more)
5136    * added distutils support
5137    * though not extensively tested, the standalone server now does POST
5138      requests, i.e. you can save pages; there are still problems with
5139      persistent global variables! It only works for Python >= 2.0.
5140    * "bang_meta" config variable and "!NotWikiWord" markup
5141    * "url_mappings" config variable to dynamically change URL prefixes
5142      (especially useful in intranets, when whole trees of externally
5143      hosted documents move around)
5144    * setting "mail_smarthost" and "mail_from" activates mailing
5145      features (sending login data on the UserPreferences page)
5146    * very useful for intranet developer wikis, a means to view pydoc
5147      documentation, formatted via a XSLT stylesheet, for details see
5148      http://purl.net/wiki/python/TeudViewer?module=MoinMoin.macro.TeudView
5149      or MoinMoin/macro/TeudView.py
5150    * "LocalSiteMap" action by Steve Howell <showell@zipcon.com>
5151    * Added FOLDOC to intermap.txt
5152
5153Bugfixes:
5154    * Full config defaults, import MoinMoin now works w/o moin_config.py
5155    * Better control over permissions with config.umask
5156    * Bugfix for a UNIX time billenium bug (affecting RecentChanges
5157      sorting and page diffs)
5158    * data paths with directory names containing dots caused problems
5159
5160-----------------------------------------------------------------------------
5161Version 0.9 (2001-05-07)
5162
5163New features:
5164    * XML page input (pages that start with "<?xml") and XSLT formatting
5165    * Page caching, for now limited to XSLT processing (where it's
5166      absolutely needed); new code & API to add the "RefreshCache" link
5167    * Selection of common date/time formats in UserPreferences
5168    * New action "titleindex" to support wiki introspection (MetaWiki);
5169      see the new links below the index bar in "TitleIndex"
5170    * UserPreferences: editable CSS URL for personal styles
5171    * PageInfo: the editor's name or IP is shown for each change
5172    * WantedPages: a new macro that lists links to non-existent pages
5173    * OrphanedPages: a new macro that lists pages no other page links to
5174    * Extensions to the FullSearch macro (see HelpOnMacros)
5175    * Python syntax highlighting
5176    * "DeletePage" action (has to be activated, see MoinMoinFaq)
5177    * "Remove trailing whitespace from each line" option in the editor
5178    * I18N (currently German and Swedish)
5179    * Config option "url_schemas" to extend the supported URL types
5180    * Improved tracebacks by using Ka-Ping's "cgitb"
5181
5182Bugfixes:
5183    * The editor now sends a "no-cache" HTTP header
5184    * "PageList" results are now sorted
5185    * New config parameter "html_head_queries": send additional header
5186      for all pages EXCEPT the "normal" view; main usage is to have
5187      only the normal pages indexed by a spider, not the edit, print,
5188      etc. views (which cause multiple hits on the same information)
5189    * Store the modification time of the page file in the editlog, not
5190      the current time when the log entry is created
5191
5192-----------------------------------------------------------------------------
5193Version 0.8 (2001-01-23)
5194
5195New features:
5196    * Page templates (create a new page using a template page, by Richard)
5197    * Pluggable actions (by Richard)
5198    * Added "diff since bookmark"
5199    * Only "normal" URLs (outside of brackets) are converted to inline images
5200    * Show number of backups in SystemInfo macro
5201    * Show info on installed extension macros and actions
5202    * New macro: [[BR]] for line breaks
5203    * New action "LikePages" (again, Richard)
5204    * Highlighting of search results, and of bad words when spellchecking
5205    * Support for "file:" URLS
5206    * "SpellCheck" action (Richard, me, and Christian)
5207    * [[Include]] macro (you guessed it, Richard)
5208
5209Bugfixes:
5210    * Update bookmark with load time, not click time
5211    * Changed CSS styles to better suit Netscape's broken handling of CSS
5212
5213-----------------------------------------------------------------------------
5214Version 0.7 (2000-12-06)
5215
5216New features:
5217    * RecentChanges bookmarking
5218
5219Bugfixes:
5220    * SECURITY FIX
5221    * Non-greedy extended WikiNames
5222
5223-----------------------------------------------------------------------------
5224Version 0.6 (2000-12-04)
5225
5226New features:
5227    * [[UserPreferences]] macro and associated functions
5228    * [[TableOfContents]] macro
5229    * Mechanism for external macros (user extensions)
5230    * Numbered list types and start offsets
5231
5232Bugfixes:
5233    * Search dialogs did not work on the FrontPage
5234    * Add newline to text if last line has none (better diffs)
5235
5236-----------------------------------------------------------------------------
5237Version 0.5 (2000-11-17)
5238
5239New features:
5240    * Major refactoring: code is now broken up into modules within the
5241      "MoinMoin" package
5242    * Diagnosis of installation via a "test.cgi" script
5243    * Smileys
5244    * "#format" processing instruction
5245    * "##comment"
5246    * [[RandomPage]] and [[RandomPage(number)]] macro
5247    * configurable footer ("page_footer1" and "page_footer2")
5248    * "#redirect" processing instruction
5249
5250Bugfixes:
5251    * Bugfix for broken CGI environment of IIS/4.0
5252    * URLs and InterWiki links are now less greedy (punctuation at the end
5253      is excluded, and "<" ends them, too)
5254
5255-----------------------------------------------------------------------------
5256Version 0.4 (2000-11-01)
5257
5258New features:
5259    * Table markup "||a||b||c||"
5260    * Headlines "= H1 =", "== H2 ==", and so on up to H5
5261    * [[PageCount]] macro
5262    * Added [[Icon(image)]] macro and macro arguments
5263    * [[PageList(title-regex)]] macro
5264    * New help system (set of help pages describing all features)
5265
5266Bugfixes:
5267    * Create complete URL for "Clear message" link
5268    * Inline code spans needed cgi.escape
5269    * Better fix for Python 1.6 "re" problems
5270    * Fix for uppercase extensions in inline images ("foo.JPG")
5271    * Fixed colspan in RecentChanges
5272    * HR size is now limited to 8
5273    * "}" ends an URL pattern (fixes URLs right at the end of code displays)
5274
5275-----------------------------------------------------------------------------
5276Version 0.3 (2000-10-25)
5277
5278New features:
5279    * Check for inline images with InterWiki links (Spam:eggs.gif)
5280    * New config variable "allow_extended_names", which enables markup for
5281      wiki names containing ANY character like this: ["any chars"]
5282    * New config variable "html_head"
5283    * New macro [[SystemInfo]]
5284    * Added inline code ("{{{" and "}}}" on the same line)
5285    * Support for new config variable "max_macro_size"
5286
5287Bugfixes:
5288    * Don't treat sequences with a double colon (CPP::Namespace) as an
5289      InterWiki link
5290    * The local part of InterWiki links is now correctly URL-escaped
5291    * Quickfix for a bug in 1.6's regular expressions
5292    * Fixed "SpamSpamSpam" bug (multiple entries in word list)
5293    * Anchor names get quoted in WordIndex and TitleIndex
5294    * Filtering of filenames in page_list() corrected
5295    * Escape &, <, > when sending the editor
5296    * Final(?) fix for japanese wiki names
5297
5298-----------------------------------------------------------------------------
5299Version 0.2 (2000-08-26)
5300
5301New features:
5302    * When saving, a datestamp saved in the form and that of the file are
5303      compared now; so, accidently saving over changes of other people is
5304      not possible anymore (saving still needs file locking though, for
5305      race conditions)
5306    * if the directory "backup" exists in the data dir, pages are saved
5307      there before a new version is written to disk
5308    * Removed the "Reset" button from EditPage
5309    * Added "Reduce editor size" link
5310    * Added Latin-1 WikiNames (JürgenHermann ;)
5311    * Speeded up RecentChanges by looking up hostnames ONCE while saving
5312    * Show at most 14 (distinct) days in RecentChanges
5313    * Added icons for common functions, at the top of the page
5314    * Added a printing preview (no icons, etc.)
5315    * Added bracketed (external) URLs
5316    * Added support for quoted URLs ("http://...")
5317    * Added styles for :visited links to CSS
5318    * Embed image if an URL ends in .gif/.jpg/.png
5319    * No markup detection in code sections
5320    * Grey background for code sections
5321    * Added handling for numbered lists
5322    * the edit textarea now grows in width with the browser window
5323      (thanks to Sebastian Dau�for that idea)
5324    * Added page info (revision history) and viewing of old revisions
5325    * Added page diff, and diff links on page info
5326    * Added InterWiki support (use "wiki:WikiServer/theirlocalname"; the list
5327      of WikiServers is read from "data/intermap.txt")
5328    * Added "normal" InterWiki links
5329    * Added "action=raw" to send the raw wiki markup as text/plain (e.g. for
5330      backup purposes via wget)
5331
5332Bugfixes:
5333    * Removed an exception when saving empty pages
5334    * Fixed bold nested into emphasis ('''''Bold''' Italic'')
5335
5336-----------------------------------------------------------------------------
5337Version 0.1 (2000-07-29)
5338
5339Improvements over PikiPiki 1.62:
5340    * Moved configuration to "moin_config.py"
5341    * Added "edit_rows" setting
5342    * Added navigation bar
5343    * Improved HTML formatting
5344    * Added timing comment (page created in xx secs)
5345    * ISO date and time formats by default
5346    * Formatted RecentChanges with HTML tables
5347    * Uppercase letters for the index pages
5348    * Added PythonPowered logo
5349
5350Bugfixes:
5351    * Javadoc comments now get formatted properly in {{{ }}} sections
5352    * Remove \r from submitted pages (so we get PORTABLE wiki files)
5353    * chmod(0666) eases manual changes to the data dir
5354
5355-----------------------------------------------------------------------------
5356