Welcome to the stable version of JSPWiki 2.9!

JSPWiki 2.9  is the first version of JSPWiki which is released completely under
the Apache License.

Please report any issues at https://issues.apache.org/jira/browse/JSPWIKI

UPDATES SINCE 2.8.4
===================

The full list is available in the ChangeLog file.  Highlights include

* The java packages have been renamed from com.ecyrd.jspwiki to org.apache.wiki.
	

* Support external properties in WikiEngine (idea from John McKinney)
          You can now override individual properties in jspwiki.properties using standard
          Java System properties.

* Extended the list of lucene searchable file suffixes, we now do 
           ".txt", ".ini", ".xml", ".html", "htm", ".mm", ".htm", ".xhtml", ".java", ".c", ".cpp",
            ".php", ".asm", ".sh",  ".properties", ".kml", ".gpx", ".loc"

UPDATES SINCE 2.8.3
===================

The full list is available in the ChangeLog file.  Highlights include

* Improvements in JCR Export

* Numerous minor bug fixes


UPDATES SINCE 2.8.2
===================

The full list is available in the ChangeLog file.  Highlights include

* Improved logging

* JDK6 compilation support

* Brazilian Portuguese translation, thanks to Paulo Amaral

* Addition of new PageViewPlugin

* Numerous bugfixes, esp. in sorting.


NEW FEATURES SINCE 2.6.x
========================

* JSPWiki now requires JDK 1.5 to run.

* Simplified Chinese, Dutch, Italian and Russian localizations added!

* There is no more need for JAAS files!  Hooray!  This has
  been replaced with custom jspwiki properties.  Please see
  the UPGRADING document.

* Massive improvements to the default template, like
  section editing.
  
* Sneak preview in the default editor

* WikiWizard is removed (it is LGPL), but FCK integration is available,
  and WikiWizard can still be installed as a separate package.

* German, Finnish, Spanish, Simplified Chinese and Dutch language corepages

* Support for the UniversalEditButton (http://universaleditbutton.org/).

* Password hashes are now salted.  This means you can't share the passwords
  if you have JSPWiki 2.6 instances, as the passwords are upgraded
  transparently.

The full log of any issues fixed can be found at:

https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310732&styleName=Html&version=12312864

Please also see http://www.jspwiki.org/wiki/NewIn2.8

UPGRADE NOTES
=============

Please see the UPGRADING document in this same directory.


EXPERIMENTAL FEATURES
=====================

There are some features in this release which could mostly be considered
experimental at best.  The following ones are known to work only
partially:

* WebDAV support.  This is known to be broken on pretty many levels...

* Admin interface.  Check out /admin/Admin.jsp.

KNOWN PROBLEMS
==============

* WebDAV does not yet support the new authentication/permissions scheme.
  Therefore, if you have very sensitive data in your wiki, you might not want
  to enable it.

* Not all old plugins work.  Specifically any plugins, which construct 
  new WikiPages will fail because of the constructor has been changed.

* The PageFilter API was changed in 2.6

* Our documentation simply sucks at this point.  Please forgive us,
  and point where those fixes are needed.  We will improve upon
  based your input.

* The ShortURLConstructor does not work reliably.  Please use
  ShortViewURLConstructor, or Apache mod_rewrite.

* Running with a security manager isn't yet supported (see JSPWIKI-129).
