<?xml version="1.0" encoding="utf-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!DOCTYPE status PUBLIC "-//APACHE//DTD Status V1.3//EN"
 "http://forrest.apache.org/dtd/status-v13.dtd">
<status>
  <developers>
<!-- in fifo order -->
    <person name="Stefano Mazzocchi"    email="stefano@apache.org"      id="SM" />
    <person name="Sam Ruby"             email="rubys@apache.org"        id="SR" />
    <person name="John Morrison"        email="morrijr@apache.org"      id="JRM" />
    <person name="David Crossley"       email="crossley@apache.org"     id="DC" />
    <person name="Steven Noels"         email="stevenn@apache.org"      id="SN" />
    <person name="Nicola Ken Barozzi"   email="nicolaken@apache.org"    id="NKB"/>
    <person name="Konstantin Piroumian" email="kpiroumian@apache.org"   id="KP" />
    <person name="Bert Van Kets"        email="bert@apache.org"         id="BK" />
    <person name="Marc Portier"         email="mpo@apache.org"          id="MP" />
    <person name="Jeff Turner"          email="jefft@apache.org"        id="JT" />
    <person name="Juan Jose Pablos"     email="cheche@apache.org"       id="JJP" />
    <person name="Dave Brondsema"       email="brondsem@apache.org"     id="DB" />
    <person name="Antonio Gallardo"     email="antonio@apache.org"      id="AG" />
    <person name="Reinhard P&#246;tz"   email="reinhard@apache.org"     id="RP"/>
    <person name="Ross Gardler"         email="rgardler@apache.org"     id="RDG"/>
    <person name="Thorsten Scherler"    email="thorsten@apache.org"     id="TS"/>
    <person name="Rick Tessner"         email="rick@apache.org"         id="RFT"/>
    <person name="Ferdinand Soethe"     email="ferdinand@apache.org"    id="FSO"/>
    <person name="Johannes Schaefer"    email="josch@apache.org"        id="JS"/>
    <person name="Cyriaque Dupoirieux"  email="cdupoirieux@apache.org"  id="CD"/>
    <person name="Bertrand Delacretaz"  email="bdelacretaz@apache.org"  id="BD"/>
    <person name="Tim Williams"         email="twilliams@apache.org"    id="TWW"/>
    <person name="Diwaker Gupta"        email="diwaker@apache.org"      id="DG"/>
    <person name="Gavin McDonald"       email="gmcdonald@apache.org"    id="GM"/>
    <person name="Sjur N Moshagen"      email="sjur@apache.org"         id="SNM"/>
    <person name="Brian M. Dube"        email="bdube@apache.org"        id="BMD"/>
    <person name="Jeremias Maerki"      email="jeremias@apache.org"     id="JM"/>
    <person name="Volunteer needed"   email="dev@forrest.apache.org" id="open"/>
  </developers>
  <contexts>
    <context id="code" title="Changes to the Code Base"/>
    <context id="docs" title="Changes to Documentation"/>
    <context id="admin" title="Changes to Project Administration"/>
    <context id="design" title="Changes to Design"/>
    <context id="build" title="Changes to Build"/>
  </contexts>
<!-- ===================================================================== -->
<!-- CHANGES                                                               -->
<!-- ===================================================================== -->
  <changes>
    <release version="0.10-dev" date="not yet released">
      <introduction>
        <p>
          See each <link href="site:plugins/index">plugin</link> for its
          detailed changes.
        </p>
      </introduction>
      <notes>
        <section>
          <title>Apache Forrest is pleased to release the new version: apache-forrest-0.10-dev</title>
          <p>
            It can be downloaded from one of the
            <link href="http://forrest.apache.org/mirrors.cgi">Apache Software
            Foundation mirror sites</link>.
          </p>
          <p>
            Apache Forrest&trade; software is a publishing framework that transforms
            input from various sources into a unified presentation in one or more
            output formats. The modular and extensible plug-in architecture of
            Apache Forrest is based on Apache Cocoon and the relevant industry
            standards that separate presentation from content. Forrest can generate
            static documents, or be used as a dynamic server, or be deployed by its
            automated facility.
          </p>
        </section>
        <section>
          <title>Requirements</title>
          <p>
            A Java Runtime Environment (1.5 or higher) installed.
          </p>
          <p>
            To build from source requires a Java Development Kit (1.5 or higher)
          </p>
          <p>
            Apache Ant is not required: Forrest uses its own packaged version of Ant in
            tools/ant/
          </p>
          <p>
            Apache Cocoon is not required: Forrest uses its own packaged version.
          </p>
        </section>
        <section>
          <title>Installing Apache Forrest</title>
          <p>
            The distribution contains all Forrest resources (skins, XSLTs,
            images, schemas), source code, and Forrest's own website
            documentation.
          </p>
          <p class="instruction">
            Copy somewhere permanent, like /usr/local/forrest or c:\forrest
            (Support for installation on Windows systems into directories
            containing spaces is very new, please report back on your success or
            failure.)
          </p>
          <p class="instruction">
            Set FORREST_HOME environment variable to point to that top-level
            directory.
          </p>
          <p class="instruction">
            Add to the system PATH environment variable, i.e. $FORREST_HOME/bin
            (Unix) or %FORREST_HOME%\bin (Windows)
          </p>
        </section>
        <section>
          <title>Getting Started</title>
          <p>
            See the file index.html for the quick start tips.
          </p>
        </section>
        <section>
          <title>Issue tracking</title>
          <p>
            If you notice what appears to be a bug or wish to make a
            contribution, please report it via the
            <link href="http://forrest.apache.org/issues.html">Forrest issue
            tracker</link>.
          </p>
        </section>
        <section>
          <title>Feedback</title>
          <p>
            Feedback, feature suggestions, contributions, bugs, and any other
            issues can be discussed on our
            <link href="http://forrest.apache.org/mail-lists.html">mailing
            lists</link>.
          </p>
        </section>
      </notes>
      <action dev="DC" type="add" context="docs" importance="high">
<!-- Please keep this action at the top -->
        Added document to facilitate
        <link href="site:upgrading_010">upgrading to v0.10-dev</link>
      </action>
<!-- 2016-## -->
<!-- 2016-07 -->
      <action context="code" type="add" dev="DC" fixes-bug="FOR-1257">
        Enabled web font file formats to be used. For example, the new
        Bootstrap-based CSS skin "fleece" uses 
        <link href="http://glyphicons.com/">GLYPHICONS Halflings</link> font.
      </action>
<!-- 2015-11 -->
      <action context="code" type="add" dev="DC" fixes-bug="FOR-1255">
        Backported the feature from the "scales" skin to the "pelt" skin for
        the "Conditional display of menuitems". Enabled via site.xml using
        the attribute type=showWhenSelected. See the demonstration in the
        "seed-sample" site.
      </action>
      <action context="code" type="add" dev="DC">
        Added a reader and a serializer for JSON.
      </action>
<!-- 2015-04 -->
      <action context="docs" type="update" dev="DC">
        Improved the "upgrading" notes to remind to keep any optional
        configuration files synchronised with the default.
      </action>
<!-- 2014-11 -->
      <action context="code" type="update" dev="SNM">
        Better support for i18n for the search box and its placeholder text.
        Also improved the same for the font resize buttons.
      </action>
<!-- 2014-08 -->
      <action context="code" type="update" dev="DC">
        Fixed the Lucene search results to properly show the note when
        zero hits are returned.
      </action>
<!-- 2014-06 -->
      <action context="code" type="update" dev="DC">
        Enable 'java' to be found on a modern Mac.
      </action>
<!-- 2013-12 -->
      <action context="code" type="add" dev="DC" fixes-bug="FOR-1245">
        Enable per-project configuration of Cocoon error handling.
        Added an <link href="site:faq/handle-errors">FAQ</link>.
      </action>
<!-- 2013-11 -->
      <action context="code" type="update" dev="DC">
        Updated JSch to v0.1.50
      </action>
      <action context="docs" type="add" dev="DC">
        Add a demonstration of various techniques for
        <link href="site:project-js-css">Using extra project JavaScript and CSS resources</link>.
        This also explains how to inject and locate the various resources.
      </action>
      <action context="code" type="update" dev="DC">
        For "skins", removed the "body onload=init()" from the internal xml.
        This was used by the fontsize.js script, which actually had
        its function contents commented-out and so was superfluous.
        It was preventing project scripts from using "onload".
      </action>
<!-- 2013-10 -->
      <action context="code" type="update" dev="DC">
        Enabled "link" and "script" elements in "header" for the document-v20 DTD.
      </action>
      <action context="code" type="update" dev="DC">
        Use locationmap to find project.css.** CSS resources.
      </action>
      <action context="code" type="update" dev="DC">
        Fixed locationmap to properly find project.js.** javascript resources.
      </action>
      <action context="docs" type="update" dev="DC">
        Improved the
        "<link href="site:buildPlugin">How to build a Plugin</link>"
        document, regarding creating your own local plugins.
      </action>
      <action context="docs" type="add" dev="DC">
        Linked to the Wayback Machine for older versions of documentation.
        See <link href="site:faq">FAQ</link>.
      </action>
<!-- 2013-09 -->
      <action context="code" type="update" dev="DC" fixes-bug="FOR-1240">
        Updated our packaged Cocoon and blocks to the latest Cocoon-2.1.13-dev version.
      </action>
<!-- 2013-03 -->
      <action context="code" type="update" dev="DC" fixes-bug="FOR-1240,FOR-1221" importance="high">
        Updated our packaged Cocoon and blocks to the latest Cocoon-2.1.12-dev version.
        Updated Xerces to 2.11.0 and xml-apis to 1.4.01 and Batik to 1.7
      </action>
      <action context="code" type="update" dev="DC">
        Updated log4j to 1.2.17 and slf4j to 1.7.2
      </action>
<!-- 2012-01 -->
      <action context="docs" type="update" dev="DC" fixes-bug="FOR-1233">
        Improved documentation about configuring project entities file,
        and general tips for upgrading.
      </action>
      <action context="code" type="update" dev="DC" importance="high" due-to="Karl Wright" fixes-bug="FOR-1231">
        Use JAVA_TOOL_OPTIONS to ensure UTF-8 everywhere.
      </action>
      <action dev="DC" type="update" context="docs">
        Remove the link to the demonstration of processing JIRA issues via RSS.
        As a demo, it was causing too many "errors" when network not available.
        It can still be used via
        <code>http://localhost:8888/forrest-issues.html</code>
      </action>
<!-- 2011-06 -->
      <action dev="DC" type="add" context="code">
        Add initial "logo" input plugin to Whiteboard.
        Assist management of project logos and banner images.
        For example, overlay a TM symbol using SVG to create a new image.
      </action>
<!-- 2011-02 -->
      <action context="code" type="update" dev="BMD" fixes-bug="FOR-1222">
        Upgraded packaged Jetty to version 6.1.26 from version 4.2.19.
      </action>
    </release>
    <release version="0.9" date="2011-02-07">
      <action dev="DC" type="add" context="docs" importance="high">
<!-- Please keep this action at the top -->
        Added document to facilitate
        <link href="site:upgrading_09">upgrading to v0.9</link>
      </action>
<!-- 2011-01 -->
      <action context="code" type="fix" dev="BMD" importance="high">
        Suppress extra generated id when converting xdoc sections to html.
        See <link href="site:upgrading_09">upgrading notes</link>.
      </action>
      <action context="docs" type="update" dev="DC">
        Added an <link href="site:faq/svn-eol-style">FAQ</link>
        to explain "svn:eol-style" and un-necessary svn diffs.
        See also <link href="site:forrestbot-svn">How to deploy
        documentation with the Forrestbot "svn" workstage</link>.
      </action>
      <action context="build" type="add" dev="DC">
        Added standalone 'validate-status' build target to validate the project
        status changes file.
      </action>
      <action context="code" type="fix" dev="DC" fixes-bug="FOR-1012">
        ForrestBar: Enabled access to some more intermediate processing data
        via the "Dev" menu.
      </action>
      <action context="docs" type="update" dev="DC" importance="high">
        Improved the FAQ about "version and properties" and linked to the
        documentation of the new <link href="site:properties">Properties</link> system.
      </action>
      <action context="code" type="update" dev="BMD" due-to="Richard Calmbach,Mathieu Champlon" fixes-bug="FOR-752">
        Fix hard-coded path in ForrestLogTargetFactory and
        ForrestConfUtils which caused files to be placed in the wrong
        directory when using ForrestBot.
      </action>
      <action context="code" type="update" dev="DC">
        ForrestBar added search options for Gossamer Threads archives and MarkMail archives.
      </action>
      <action context="code" type="update" dev="DC">
        ForrestBar updated to clarify some menus and items, add some tooltips,
        and fix some broken links.
      </action>
      <action context="code" type="update" dev="DC" due-to="DeBel" fixes-bug="FOR-1203">
        Improve startup performance by dealing with only the specified property
        rather than iterating through all of them.
      </action>
<!-- 2010-12 -->
      <action context="code" type="update" dev="DC" due-to="Simon Pepping" fixes-bug="FOR-1205">
        Fix syntax errors for import of additional style sheets for "tigris" skin.
      </action>
      <action context="docs" type="update" dev="DC" fixes-bug="FOR-1197">
        Improve ASF Branding and trademark statements for Forrest websites.
      </action>
<!-- 2010-10 -->
      <action dev="DC" type="add" context="code">
        Add initial "Markdown" output plugin to Whiteboard.
      </action>
      <action context="docs" type="add" dev="DC" fixes-bug="FOR-984" importance="high">
        Added an <link href="site:faq/oldjing">FAQ</link>
        to try to explain that Forrest does not require Java 6.
      </action>
<!-- 2010-09 -->
      <action context="docs" type="update" dev="BMD" fixes-bug="FOR-922">
        Improved the 
        <link href="site:sitemap-ref">Sitemap Reference</link> document.
      </action>
<!-- 2010-08 -->
      <action context="code" type="update" dev="TWW">
        Updated Ehcache to 2.2.0 version.
        Update commons-io, commons-jxpath, commons-collections, commons-lang, and commons-cli
        to latest versions.
      </action>
<!-- 2010-07 -->
      <action context="docs" type="update" dev="DC" fixes-bug="FOR-855,FOR-857">
        For packaged supporting products, we now refer to all licenses from our
        top-level LICENSE.txt file.
      </action>
<!-- 2010-06 -->
      <action context="code" type="add" dev="DC">
        Added new search facility to ForrestBar to enable search for a mail
        Message-Id (only at Gmane.org).
      </action>
      <action context="code" type="update" dev="DC" due-to="David Crossley, Tim Williams" fixes-bug="FOR-1198">
        Use plain svn commands rather than JSVN for forrestbot and plugins
        deployment.
      </action>
<!-- 2010-05 -->
      <action context="code" type="update" dev="TWW" fixes-bug="FOR-591">
        Switch to a new XML module providing better memory behavior.
      </action>
<!-- 2010-04 -->
      <action context="code" type="update" dev="TWW" due-to="Andreas Lehmkuehler">
        Fix property "project.issues-rss-url" to use https for our JIRA.
      </action>
      <action context="code" type="update" dev="TWW" fixes-bug="FOR-1177">
        Update Rhino to better licensed version rhino-1.6R5
      </action>
<!-- 2010-03 -->
      <action context="build" type="update" dev="GM" importance="high">
        Forrest minimum Java version is now Java 1.5
        <link href="site:faq/requirements">required</link>
        starting with Forrest-0.9-dev
      </action>
<!-- 2009-12 -->
      <action context="code" type="update" dev="BMD">
        For Howto docs, make use of generateId.xsl to resolve warnings in generated PDF.
      </action>
      <action context="code" type="update" dev="DC" fixes-bug="FOR-1186">
        Improved SVG template for generating "project name" image.
        Make it wider and add small space at right-hand end.
      </action>
      <action context="code" type="update" dev="BMD" fixes-bug="FOR-1000">
        Changed XSLT import statements in skins to use the LocationMap.
      </action>
<!-- 2009-11 -->
      <action context="code" type="update" dev="TWW" fixes-bug="FOR-1031" importance="high">
        Replaced the custom caching implementation with EHCache in the
        LocationMap feature. Given how integral the LM has become, this gives
        us much better overall performance, concurrent behavior, and cache
        configuration options.
        Added a default cache config file to main/webapp/WEB-INF/ehcache.xml
      </action>
<!-- 2009-10 -->
      <action context="code" type="add" dev="SNM">
        Added initial output plugin "iCal" to the whiteboard.
      </action>
      <action context="code" type="add" dev="DC" fixes-bug="FOR-1176" importance="high">
        Enabled use of EXSLT extensions via exslt.org stylesheets.
        See example "EXSLT" in the 'forrest seed-sample' site.
      </action>
      <action context="code" type="add" dev="DC" fixes-bug="FOR-1178" importance="high">
        Enabled the filtering of output messages from Ant
        (see <link href="site:faq/verbose-ant">FAQ</link>)
        and explained how to enable coloured output
        (see <link href="site:faq/coloured-ant">FAQ</link>).
      </action>
      <action context="code" type="add" dev="DC">
        Assist with xml debugging. Show list of catalog descriptors being used.
      </action>
<!-- 2009-09 -->
      <action context="docs" type="update" dev="DC">
        Improve i18n FAQ.
      </action>
      <action context="code" type="add" dev="DC">
        Enable our ASF mirrors system to present an xml listing of the client's closest mirrors.
      </action>
<!-- 2009-06 -->
     <action context="code" type="add" dev="DC" fixes-bug="FOR-1173" importance="high">
       Added a demonstration of using xml source documents without declaring a
       DTD. See example "no-dtd" in the 'forrest seed-sample' site.
     </action>
     <action context="code" type="add" dev="DC" fixes-bug="FOR-1172" importance="high">
       Added the ability to use RELAXNG to validate intermediate xml.
       Do 'localhost:8888/index.validation.xml' for example to validate the "index" page.
       Also see how to
       <link href="site:procedures/forrest-dev/validate-intermediate">validate intermediate</link>
       content for the whole site.
     </action>
<!-- 2009-05 -->
     <action context="code" type="add" dev="DC" fixes-bug="FOR-1170" importance="high">
       Added the ability for a "trademark statement" at bottom of all pages.
       For configuration details, see skinconf.xml from a new "seed" site.
     </action>
     <action context="code" type="fix" dev="DC" due-to="Brolin Empey">
       The "class" attributes in the document-v13 and document-v20 DTDs
       now enable multiple space-separated class definitions.
     </action>
     <action context="code" type="fix" dev="GM" due-to="Sina K. Heshmati" fixes-bug="FOR-1167">
       Enable "class" attribute to be used for "body" element.
     </action>
<!-- 2009-04 -->
     <action context="code" type="fix" dev="BMD" due-to="Andreas Lehmkuehler" fixes-bug="FOR-211">
       Some improvements for the "whole-site" PDF ability.
     </action>
<!-- 2009-03 -->
     <action context="docs" type="update" dev="GM" due-to="Thomas Witteriede" fixes-bug="FOR-707">
       Improvements to documentation for i18n and example. See the "seed-sample" site.
     </action>
     <action context="docs" type="update" dev="GM" due-to="Thomas Emmel" fixes-bug="FOR-1160">
       Improvements to documentation for <link href="site:locationmap">Locationmap</link>.
     </action>
<!-- 2009-01 -->
     <action context="code" type="fix" dev="TS" fixes-bug="FOR-1074"
        importance="high">
        There was a problem with plugins libs not being copied. Using
        the war task from ant fixes this issue.
     </action>
      <action context="code" type="fix" dev="DC" fixes-bug="FOR-1156" importance="high">
        Enabled the output html serializer to be configurable to either xhtml or html.
      </action>
      <action context="docs" type="update" dev="DC">
        Improved FAQ about reporting security issues and link to "ASF Security Team" new web site.
      </action>
<!-- 2008-12 -->
      <action context="code" type="fix" dev="DC" due-to="Antoine ROBERT" fixes-bug="FOR-1136">
        Remove extraneous quote in document-to-fo.xsl
      </action>
<!-- 2008-11 -->
      <action context="code" type="update" dev="DC">
        Forrestbot deploy.scp workstage now reports which files were transferred.
      </action>
      <action context="build" type="update" dev="DC" due-to="Thomas Emmel" fixes-bug="FOR-1131,FOR-1020">
        The preparation of the set of xmlcatalogs is better done in our "validation-props" ant target.
      </action>
      <action context="build" type="update" dev="DC">
        A better way to report the set of xmlcatalog files being used.
      </action>
      <action context="code" type="update" dev="DC" fixes-bug="FOR-984" importance="high">
        Updated to Jing release (from
        <link href="http://code.google.com/p/jing-trang/">http://code.google.com/p/jing-trang/</link>).
        As well as providing us with a reliable RELAX NG tool, this upgrade
        fixes an issue on some Java 6 with missing datatype library.
      </action>
<!-- 2008-10 -->
      <action context="code" type="update" dev="DC" importance="high">
        Updated to Apache-Ant-1.7.1 release.
        Also jsch-0.1.28 to jsch-0.1.39 release.
      </action>
      <action context="code" type="update" dev="DC">
        Added a 'forrest diagnostics' target which reports our Ant's diagnostics.
      </action>
<!-- 2008-09 -->
      <action context="docs" type="add" dev="DC" importance="high">
        Added new documents: <link href="site:forrestbot-svn">How to deploy
        documentation with the Forrestbot "svn" workstage</link> which
        explains how the Apache Forrest project manages their project documentation,
        and <link href="site:forrestbot-scp">How to deploy
        documentation with the Forrestbot "scp" workstage</link> which
        explains how to manage a personal or company website using Secure Shell
        SCP to deploy the generated documents.
      </action>
      <action context="code" type="update" dev="TS" due-to="Thorsten Scherler, David Crossley" fixes-bug="FOR-955,FOR-1017" importance="high">
        Our packaged version of Apache Cocoon has been upgraded to use the
        latest version of their stable 2.1 branch. This is a major step forward
        for Forrest. It enables us to use a reliable and up-to-date Cocoon.
        Forrest developers can again participate at Cocoon to fix issues or
        develop new blocks. A number of major performance issues are already
        fixed in this version. Also upgraded various other important supporting
        products such as Apache Xerces and Apache Xalan, etc.
        See <link href="site:upgrading_09/cocoon">upgrading notes</link>.
      </action>
      <action context="code" type="update" dev="TS" fixes-bug="FOR-1103" importance="high">
        Promoting the output.inputModule plugin to core. Main reason for the move is to
        prevent plugins dependencies since the code has attracted different use cases
        solved in plugins to move it into core.
      </action>
      <action context="code" type="update" dev="JM">
        Upgraded Apache FOP to version 0.95
      </action>
<!-- 2008-08 -->
      <action context="docs" type="add" dev="DC" fixes-bug="FOR-814" due-to="Carlos Tejo">
        Added example of using XInclude to the 'forrest seed-sample' site.
      </action>
      <action context="code" type="update" dev="DC" fixes-bug="FOR-1032">
        Added ability to use XInclude to the document-v20 xdoc DTD.
        See an example in a 'forrest seed-sample' site.
      </action>
<!-- 2008-03 -->
      <action context="code" type="add" dev="DC" fixes-bug="FOR-1071"
        importance="high">
        Enable configuration of some Cocoon sitemap components, e.g.
        output html encoding and document type declaration for html and xhtml serializers,
        JTidy properties file location for html generator.
        See <link href="site:faq/sitemap-entities">FAQ</link>
      </action>
      <action context="code" type="fix" dev="DC" fixes-bug="FOR-1075"
        importance="high">
        There was a partially implemented xml catalog with missing project symbols file.
        Only affected users of the 'seed-basic' template site.
        See notes in <link href="site:upgrading_09">upgrading to v0.9</link>
      </action>
      <action context="code" type="add" dev="GM" due-to="Sina K. Heshmati" fixes-bug="FOR-1038">
        Added initial whiteboard input plugin "baetle".
        Handle Baetle, the RDF vocabulary to describe the content of bug databases. 
      </action>
<!-- 2008-02 -->
      <action context="code" type="update" dev="TS" fixes-bug="FOR-635"
        importance="high"> Images had not been reliably reproduced in PDFs (fop version
        prior to 0.94). The old way always expected a physical URI (file or http) the new fop
        URIResolver in the FOP-NG block delegates to Cocoon's SourceResolver framework,
        meaning images can be the result of a pipeline. </action>
      <action dev="FSO" type="fix" context="docs">
            Fixed docs in several places to work with fop94 upgrade.
        </action>
      <action dev="FSO" type="update" context="code">
            Moved fo- and pdf-generation completely into pdf-plugin as part of the upgrade to fop 0.94.
            See plugin docs for addition details.
        </action>
<!-- 2008-01 -->
      <action context="docs" type="update" dev="DC" fixes-bug="FOR-1062" due-to="Carlos Tejo">
        Added demonstration of more xdoc elements to the sample document-v20
      </action>
      <action context="code" type="update" dev="TS" fixes-bug="FOR-733">
        The "wholesite" html/pdf ability was broken with the locationmap.
      </action>
      <action context="code" type="fix" dev="RDG" fixes-bug="FOR-905" due-to="Mark Eggers">
        Fixed the "forrest" command to cope with recent Cygwin changes with expanding pathnames.
      </action>
<!-- 2007-12 -->
      <action context="code" type="update" dev="GM" fixes-bug="FOR-940">
        Re-configured Forrest Zone to use SMF.
      </action>
<!-- 2007-10 -->
      <action context="code" type="update" dev="RDG" due-to="Uwe Kreibaum" fixes-bug="FOR-640">
         Fix unkown font error in FO generation.
      </action>
      <action context="code" type="fix" dev="TS">
        The "faq" documents were missing generated Table-of-Contents.
      </action>
      <action context="code" type="fix" dev="TS" fixes-bug="FOR-1049">
        Fixed bug regarding logging and Servlet Container when using Forrest as a WAR archive.
        In web.xml use context parameters instead of init-param.
      </action>
      <action context="docs" type="add" dev="GM" due-to="Steven Coco" fixes-bug="FOR-1047">
        Added documentation about using the "Debian update-alternatives system".
      </action>
<!-- 2007-09 -->
      <action context="code" type="add" dev="RDG">
        Added input plugin "uk.ac.osswatch.forrest.input.sourceforge".
        Extracts data from sourceforge.net
      </action>
<!-- 2007-08 -->
      <action context="code" type="add" dev="RDG">
        Added input plugin "uk.ac.osswatch.forrest.input.ohloh".
        Extracts data from OhLoh.net using their API.
      </action>
      <action context="code" type="add" dev="RDG">
        Added input plugin "uk.ac.osswatch.forrest.input.features".
        Allow project features to be recorded and rendered as part of a content object.
        This plugin is particularly useful when used in conjunction with the DOAP plugin.
      </action>
      <action context="code" type="add" dev="GM" due-to="Oshani Senevira" fixes-bug="FOR-1039">
        Added initial whiteboard input plugin "doac".
        Handle Description-Of-A-Career (DOAC) data in forrest content objects.
      </action>
<!-- 2007-07 -->
      <action context="code" type="update" dev="DC">
        Utilise the source document/header/link if available.
        Suggested by Oshani Seneviratne and various previous people.
      </action>
      <action context="code" type="update" dev="DC" due-to="Sina K. Heshmati" fixes-bug="FOR-1018">
        In SourceTypeAction, RDF files need to check the namespace of more than just the root element.
      </action>
<!-- 2007-06 -->
      <action context="code" type="update" dev="BMD" due-to="Patrick Ohly" fixes-bug="FOR-1013">
        Added method to make URLs absolute in PDF via skinconf.xml.
      </action>
      <action context="code" type="update" dev="BMD" due-to="Patrick Ohly" fixes-bug="FOR-355">
        Added method to disable table of contents in PDF via skinconf.xml.
      </action>
      <action context="docs" type="update" dev="DC">
        Enhance the "<link href="site:howto/asf-mirror">HowTo Generate an ASF mirrors page</link>" doc to better explain.
        Refer to Forrest site-author as an example. This doc explains many things
        which are useful beyond the "ASF mirrors" example. It shows how to
        add a specialised HTML form to a forrest-based site, howto to include
        and exclude non-linked extra documents to the processing using the
        Cocoon CLI.
      </action>
      <action context="docs" type="update" dev="DC">
        Refer to ForrestBar from
        <link href="site:procedures/forrest-dev">How to do development with Apache Forrest</link>
        as a way to easily view the internal processing steps.
      </action>
      <action context="code" type="fix" dev="GM" fixes-bug="FOR-1012">
        ForrestBar: Re-instated access to some intermediate processing data
        via the "Dev" menu (**/*.xml and **/*.fo)
      </action>
      <action dev="CD" type="update" context="docs">
        Add explanation of <link href="site:forrestbar">ForrestBar</link> menu items.
      </action>
      <action context="code" type="add" dev="RDG">
        Added output plugin "uk.ac.osswatch.forrest.themes".
        A theme used by the Simal project.
      </action>
      <action context="code" type="add" dev="RDG" due-to="Sina K. Heshmati" fixes-bug="FOR-1004">
        Added initial whiteboard input plugin "skos". Handles input documents
        as Simple Knowledge Organisation Systems (<link href="http://www.w3.org/2004/02/skos/">SKOS</link>),
        a set of specifications to support the representation of thesauri,
        classification schemes, taxonomies, etc.
      </action>
      <action context="code" type="add" dev="GM" due-to="Oshani Senevira" fixes-bug="FOR-1002">
        Added initial whiteboard input plugin "foaf".
        Handles input documents in Friend of a Friend (FOAF) format.
      </action>
<!-- 2007-05 -->
      <action context="code" type="add" dev="RDG">
        Added initial whiteboard input and output plugins "tei".
        These handle TEI-Lite Text Encoding Initiative (TEI).
      </action>
      <action dev="DC" type="add" context="code">
        Enable PHP by default. See the <link href="site:faq/php">FAQ</link>.
        Thanks to Cyriaque Dupoirieux for the suggestion.
      </action>
      <action context="docs" type="fix" dev="TS" due-to="Bart Molenkamp">
        Fix some menu items, links and version labels.
      </action>
      <action context="docs" type="update" dev="DC">
        Add more entries to <link href="site:glossary">glossary</link> to explain
        some Apache Cocoon terminology and link to relevant docs.
        Also add some more Forrest terminology.
      </action>
      <action context="docs" type="add" dev="DC" due-to="Ron Blaschke">
        Added FAQ for "Windows gets confused about which Java version to use".
        Thanks to Ron Blaschke and Ross Gardler.
      </action>
      <action dev="DC" type="fix" context="build" due-to="Ron Blaschke">
        Explicitly set the javac target@ to our defined base version.
        This fixed an issue with plugins being deployed by committers using
        more recent versions.
      </action>
<!-- 2007-04 -->
    </release>
    <release version="0.8" date="2007-04-18">
      <action dev="DC" type="add" context="docs" importance="high">
<!-- Please keep this action at the top -->
        Added document to facilitate
        <link href="site:upgrading_08">upgrading to v0.8</link>
      </action>
      <action dev="DC" type="add" context="docs">
        New section to explain <link href="site:locationmap">Locationmap processing</link>
        and the magic of the naming convention.
      </action>
      <action dev="DC" type="add" context="docs">
        New document to explain <link href="site:sitemap-explain">Cocoon sitemaps</link> using a specific worked example.
      </action>
      <action dev="DC" type="update" context="code">
        Enhanced the Message of the Day (MOTD) facility to enable specific matches.
        See skinconf.xml from a "seed" site for configuration details.
        The @starts-with=true anchors the URI string to the start, otherwise contains.
        To use it, declare skinconfig-v08-1.dtd in your skinconf.xml file.
      </action>
      <action dev="DC" type="add" context="docs">
        Added <link href="site:faq/docs">notes</link> to explain the main documentation,
        as well as documentation and examples in each plugins and documentation
        and examples in the 'forrest seed-sample' site.
      </action>
      <action dev="DC" type="add" context="docs">
        Added notes about <link href="site:validation/catalog">configuring</link>
        a system-wide XML Catalog Entity Resolver to share local DTDs between multiple projects.
      </action>
      <action dev="DC" type="add" context="docs">
        Added notes about <link href="site:validation/debug-catalog">debugging</link>
        the XML Catalog Entity Resolver for local DTDs.
      </action>
<!--2007-03-->
      <action dev="CD" type="update" context="code" fixes-bug="FOR-962">
        Enabled <link href="site:forrestbar">ForrestBar</link> preferences to specify the port number
        if 'forrest run' is different from the default 8888.
      </action>
      <action dev="DC" type="fix" context="code" fixes-bug="FOR-973">
        Handling of document/header/version elements is now re-enabled.
      </action>
      <action dev="DC" type="update" context="code">
        Improved the autogenerated site linkmap.html page. Do not show empty links for group labels.
        Use a better title and introduction.
        Use @description if available.
      </action>
      <action dev="TS" type="fix" context="docs" fixes-bug="FOR-861">
              Update docs to reflect locationmap naming conventions.
      </action>
      <action dev="RDG" type="fix" context="code" fixes-bug="FOR-735" importance="high">
              Thanks to Gunther Sablon for reporting this issue. Plugins were not being
              deployed to a Webapp WAR file correctly.
      </action>
      <action dev="DC" type="fix" context="code" fixes-bug="FOR-963">
         Hard coded URLs of versions causing maintenance issues in the generated Plugins Index.
         Use a parameter instead to construct the URL per version.
      </action>
      <action dev="RDG" type="fix" context="docs" fixes-bug="FOR-959" due-to="Randy Metcalfe">
              Add a HowTo sample document to the fresh-site samples.
      </action>
      <action dev="RDG" type="fix" context="code" fixes-bug="FOR-958" due-to="Vadim Gritsenko">
              Fixes problem if contexts were not utilized in status.xml, an incorrect changes document would be
              generated.
      </action>
      <action dev="RDG" type="update" context="code" importance="high" fixes-bug="FOR-735">
        Rename webapp build target to run-webapp to distinguish the resulting
        webapp from one suitable for deployment (use the war target for that)
        and provide a new xconf that is used in the war to ensure plugins can be found in war files
      </action>
<!--2007-02-->
      <action dev="RDG" type="add" context="code">
        Add initial DOAP plugin to Whiteboard.
      </action>
<!--2007-01-->
      <action dev="TS" type="add" context="code">
        Add initial Solr plugin to Whiteboard.
      </action>
      <action context="code" type="fix" dev="SNM" fixes-bug="FOR-704" due-to="Vronk Duat">
        With comments &amp; thanks also to Paul Kronenwetter, fixes a bug
        where duplicate apply-templates was causing duplicate content with span
        classes.
      </action>
<!-- 2006-09 -->
      <action context="code" type="fix" dev="TWW" importance="high" fixes-bug="FOR-732">
              Fix caching problem that made a restart neccessary after
              making a locationmap resource location change.
      </action>
      <action context="code" type="fix" dev="DC" importance="high" fixes-bug="FOR-927">
        After doing 'forrest clean' then Forrest could not be run without network access, due to
        not being able to retrieve plugin descriptor files.
      </action>
      <action context="code" type="update" dev="TS" importance="high" fixes-bug="FOR-924"
        due-to="Martin Stockhammer">Readding the loading from
        (default-)forrest.properties which got removed in r430588 when closing FOR-916.</action>
<!-- 2006-08 -->
      <action context="code" type="fix" dev="DC" fixes-bug="FOR-448" due-to="Jim Dixon">
        When using html as source, the "a" elements were not rendered properly if both
        @href and @name attributes. A side-effect of this fix is that now all other
        attributes such as @title or @target are copied over.
        Also removed the automated generation of @id attributes from @name attributes,
        which can lead to invalid IDs and other confusion.
      </action>
      <action type="update" context="docs" fixes-bug="FOR-920" dev="TS">
        Explain how to
        <link href="site:upgrading_08">update</link> the different module calls in
        custom code. </action>
      <action type="update" context="code" dev="TS" fixes-bug="FOR-920" importance="high">
        Merging the defaults and project modules to the new
        properties module. You can use it like {properties:forrest.home}, please refer to
        the
        <link href="site:upgrading_08">update documentation</link> how to
        change your {defaults:*} {project:*} and {forrest:*}.</action>
      <action context="code" type="update" dev="TS" fixes-bug="FOR-800">
        Make
        forrest.properties.xml (as aggregation of all properties) available via cocoon:// protocol.
        The last remaining issue was implementing the Iterator getAttributeNames in the
        ForrestConfModule. To see all available properties add
        org.apache.forrest.plugin.output.inputModule and request
        cocoon://module.properties.properties.</action>
      <action context="code" type="update" dev="TS" fixes-bug="FOR-916"
        due-to="Mathieu Champlon">
        Adding site-wide configuration files.
      </action>
<!-- 2006-07 -->
      <action context="code" type="update" dev="TS" due-to="David Crossley"> Updated the
        cocoon.xconf and declared the core components that are needed
        for flow. This makes it possible to use flow in forrest.</action>
<!-- 2006-06 -->
      <action context="code" type="update" dev="BD">
        Enabled i18n by default in fresh-site: as the default i18n config now requires
        an explicit locale specification (using an URL parameter for example), this shouldn't
        affect people who do not use i18n.
      </action>
      <action context="code" type="update" dev="BD">
        Completed the de and fr translations of the fresh-site, added fr and de
        versions of the index page as examples of language switching.
      </action>
      <action context="code" type="update" dev="BD" fixes-bug="FOR-887">
        Moved LocaleAction and LocaleMatcher configurations to main sitemap, and changed
        I18nTransformer use to take locale info from enclosing LocaleAction everywhere.
      </action>
      <action context="docs" type="update" dev="DC">
        Added FAQ to explain the Cocoon Cache and some ways to enhance responsiveness.
        Inspired by comments from Torsten Stolpmann.
      </action>
      <action context="docs" type="update" dev="DC" due-to="Brian Dube">
        Enhance the explanation of integrating
        <link href="site:faq/docbook">DocBook</link> sources to also explain
        how to use Content Aware Pipelines (SourceTypeAction).
      </action>
      <action context="docs" type="update" dev="DC" due-to="Jan Materne">
        Enhance the FAQ about efficiently generating
        <link href="site:faq/single-document">single documents</link>.
        Use 'wget' or Ant to retrieve individual files.
      </action>
      <action context="docs" type="update" dev="DC">
        Review and enhance the
        <link href="site:howToRelease">Release</link> doc.
      </action>
      <action context="docs" type="add" dev="DC">
        Added doc to explain
        <link href="site:status-themes">Skins and Dispatcher status</link>.
      </action>
      <action context="code" type="update" dev="DC">
        Updated to Apache-Ant-1.6.5 release, jsch-0.1.28, apache-jakarta-commons-net-1.4.1
      </action>
      <action context="code" type="update" dev="RDG" due-to="Brian Dube" fixes-bug="FOR-690">
        Use locationmap to resolve i18n catalogues.
      </action>
      <action context="docs" type="add" dev="FSO">
        Move documentation from text file into howto
        <link href="site:howToRelease">Release</link> doc and enhance it.
      </action>
      <action context="docs" type="add" dev="FSO">
        Re-arrange documentation menus, added best practice and procedures sections.
      </action>
      <action context="code" type="update" dev="AG">
        Updated xerces to 2.8.0, xml-apis to 1.3.03, log4j to 1.2.13 and ehcache to 1.2.
      </action>
      <action context="docs" type="add" dev="DC">
        Add document about project
        <link href="site:tasks">tasks</link>.
      </action>
      <action context="code" type="update" dev="DC" fixes-bug="FOR-824" due-to="Steve Masover">
        Howto-v20 now properly handles a/@class=fork etc. attribute to enable
        links to open in a new browser window.
      </action>
<!-- 2006-05 -->
      <action context="code" type="update" dev="DC" fixes-bug="FOR-492">
        Fixed inconsistent line-endings in comments of generated html.
      </action>
      <action context="docs" type="add" dev="DC" due-to="Gavin McDonald">
        Add initial <link href="site:glossary">glossary</link> to explain
        some Forrest terminology.
      </action>
      <action context="code" type="add" dev="DC" due-to="Ross Gardler" fixes-bug="FOR-756">
        Added initial whiteboard input plugin "citations". Thanks to Gavin for
        turning the contribution into a plugin.
        Use input docs that are lists of citations.
      </action>
      <action context="code" type="add" dev="DC" due-to="Ross Gardler" fixes-bug="FOR-755">
        Added initial whiteboard input plugin "glossary". Thanks to Gavin for
        turning the contribution into a plugin.
        Enable glossary input: a list of technical terms and definitions.
      </action>
      <action dev="TS" type="add" context="code">
        Added initial whiteboard input plugin "odt".
        Use OpenDocument ODT as input.
      </action>
      <action context="docs" type="update" dev="DC">
        Add note about using entity catalogs for DTDs etc. for
        <link href="site:buildPlugin">plugins</link>.
      </action>
<!-- 2006-04 -->
      <action context="docs" type="update" dev="CD">
        Improved the explanation of
        <link href="site:plugins/using">using plugins</link>:
        how they are declared, what version of a plugin is used, what locations are
        searched for plugins sources.
      </action>
      <action context="docs" type="update" dev="DC" due-to="Clay Leeds" fixes-bug="FOR-840">
        Enhance the FAQ about efficiently generating
        <link href="site:faq/single-document">single documents</link>.
      </action>
      <action context="docs" type="add" dev="DC">
        Add FAQ about using older versions of specific plugins.
      </action>
      <action context="build" type="add" dev="CD">
        Add new build target "clean-build".
      </action>
      <action context="code" type="add" dev="TS" due-to="Brian Dube" fixes-bug="FOR-842">
        Add support to the tigris skin for header/meta tags in xdoc input documents.
      </action>
      <action context="code" type="update" dev="CD">
        Able to <link href="site:plugins/using">declare</link>
        additional sources for plugins. Assists with development of private
        and local project-specific plugins.
      </action>
      <action context="code" type="add" dev="DC">
        Add demo page to seed site for "Using Scalable Vector Graphics (SVG)".
      </action>
<!-- 2006-03 -->
      <action context="docs" type="add" dev="DC">
        Link from whiteboard/forrestdoc/README.txt to some past mail discussion
        to encourage its development. Forrestdoc is a Javadoc-like/Sourcecode/Documentation
        management system.
      </action>
      <action context="code" type="update" dev="DC" fixes-bug="FOR-818">
        Forrestbot deploy.scp workstage now uses keyfile/passphrase in preference,
        then fallback to remote password.
      </action>
      <action context="docs" type="add" dev="DC">
        New page for <link href="site:thanks">thanks</link>.
      </action>
      <action context="docs" type="add" dev="DC">
        Add FAQ about <link href="site:faq/jobs">job postings</link>.
      </action>
      <action context="code" type="update" dev="RDG" due-to="Torsten Stolpmann" fixes-bug="FOR-806">
        Retrieve i18n catalogue from whatever skins directory is in use.
      </action>
      <action context="code" type="update" dev="FSO">
        Add explanation of processing to the pathutils stylesheet.
      </action>
      <action context="code" type="update" dev="RDG">
        Enable optional printing of image alt text in PDFs.
      </action>
      <action dev="DC" type="add" context="code">
        Added initial whiteboard input plugin "serverStatus".
        Uses the StatusGenerator to show Cocoon's operating environment
        and shows the contents of the cache stores.
      </action>
<!-- 2006-02 -->
      <action type="update" context="code" dev="RDG" due-to="Sjur N. Moshagen" fixes-bug="FOR-779,FOR-780,FOR-722">
        Update the Forrest plugin for the XMLmind XML Editor at
        <link href="site:tools/xxe">tools/xxe</link>
      </action>
      <action context="code" type="update" dev="DC">
        Upgrade our packaged Cocoon to cocoon-2.2.0-dev-r351990 and enhanced the notes
        about how to upgrade.
      </action>
      <action dev="DC" type="update" context="code">
        New skinconf parameter "disable-copyright-footer" (default=false)
        to not show the copyright notice in html page footer.
      </action>
      <action dev="DC" type="add" context="docs" due-to="Paul Kronenwetter" fixes-bug="FOR-778">
        Add FAQ about
        <link href="site:faq/checksums">Enabling Cocoon Checksum</link>.
      </action>
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard internal plugin "DevTools".
        Intended for various development-related tasks, e.g.
        publish a page to the local build directory from within 'forrest run'.
      </action>
      <action dev="DC" type="add" context="code">
        Added initial whiteboard output plugin "Anakia".
        Output as the Anakia "xdoc" format.
      </action>
      <action dev="DC" type="add" context="docs">
        Add explanation of
        <link href="site:procedures/forrest-dev/debug-sitemap-exec">Using Cocoon sitemap execution logger</link>.
      </action>
<!-- 2006-01 -->
      <action dev="RDG" type="update" context="code">
        Ensure that content exists before forrest starts.
      </action>
      <action dev="JS" type="update" context="code">
        Add a new xslt template "add.class" to properly append extra class attributes
        to note|warning|fixme|code elements to enable extra CSS classification.
        <link href="http://svn.apache.org/viewvc?rev=358325&amp;view=rev">Diff</link>
      </action>
      <action dev="DC" type="update" context="code">
        Review and synchronise our Cocoon configuration.
      </action>
      <action context="code" type="add" dev="CD">
        Added initial whiteboard output plugin "php" to integrate php calls.
      </action>
      <action dev="DC" type="add" context="docs">
        Add FAQ #crawler to explain how the Cocoon crawler gathers links.
      </action>
      <action dev="DC" type="add" context="docs">
        Add notes about how to use the <link href="site:bugs">Issue Tracker</link>.
      </action>
      <action dev="TS" type="update" context="docs"> Added lenya.zone
        site to the dispatcher section in the live sites.
      </action>
      <action dev="DC" type="add" context="code">
        New skinconf parameter "disable-copyright-footer" (default=false)
        to not show the copyright notice in html page footer.
      </action>
      <action dev="DC" type="update" context="docs">
        Update the notes on <link href="site:contrib/patch">patch</link> submission.
        Techniques suggested by Richard Calmbach and Ross Gardler.
      </action>
      <action dev="RDG" type="add" context="code" fixes-bug="FOR-588">
        Added ForrestConfModule as the beginning of a new configuration system.
      </action>
      <action dev="RDG" type="add" context="code" fixes-bug="FOR-388">
        A "half way" solution to using plugins in place. Note that if you modify
        your plugin code you will still need to do "ant local-deploy" to see the
        changes. This patch only ensures that the plugin is installed on the
        first run.
      </action>
      <action dev="DC" type="update" context="docs" due-to="Richard Calmbach" fixes-bug="FOR-568">
        Improved forrestbot docs.
      </action>
      <action dev="DC" type="update" context="docs">
        Enhance the FAQ #single-document about "project.start-uri" to control which files to process.
      </action>
      <action dev="DC" type="update" context="docs">
        Explain how developers can add sites to <link href="site:live-sites">Example sites</link>.
      </action>
      <action context="code" type="remove" dev="RDG" importance="high">
        Remove xconf support for plugins. Cocoon has moved away from this
        XConfToolTask xpatch technique.
        <link href="http://svn.apache.org/viewvc?rev=354749&amp;view=rev">Diff</link>
      </action>
      <action dev="DC" type="update" context="docs" due-to="Richard Calmbach" fixes-bug="FOR-751">
        Various documentation updates.
      </action>
      <action dev="DC" type="update" context="code">
        Reduce some log messages duplication. Tidy up the log configuration file.
        Add a commented example of adding contextual info to other logs.
      </action>
      <action context="code" type="update" dev="RDG" due-to="Richard Calmbach" fixes-bug="FOR-771">
        Improve symlink resolution and fix incorrect argument passing
        in the bin/forrest shell script.
      </action>
<!-- 2005-12 -->
      <action dev="RDG" type="add" context="code">
        Add new site seeding targets and a new business seed target.
        This allows for interactive creation of seed sites - existing
        'forrest seed' behaviour is unchanged which is equivalent to 'forrest seed-sample'.
        New ones are 'forrest seed-business' and 'forrest seed-basic'.
      </action>
      <action context="code" type="update" dev="DC" due-to="Paul Devine">
        Enable use of common character entities in skinconf.xml,
        e.g. accented characters and trademark symbols.
      </action>
      <action dev="DC" type="update" context="docs">
        Enhance etc/RELEASE_NOTES.txt
      </action>
      <action dev="FSO" type="update" context="code">
            Changed handling of table elements with class-attributes in source:
            Table elements w/o class elements will receive standard Forrest styling like before
            (cellpadding="4" cellspacing="1" class="ForrestTable")
            while elements that have class will pass unchanged.
            Note: To style tables with class elements like before you have to add styling code
            in the extra-css-section of skinconfig.
        </action>
      <action dev="FSO" type="update" context="code">
            Fixed problems with disappearing of id-attributes in img-element and several others.
        </action>
      <action dev="RDG" type="update" context="docs">
        Add section about using new/experimental features (e.g. Locationmap, Dispatcher) together with plugins.
        See <link href="site:buildPlugin">Howto Build Plugins</link> doc.
      </action>
      <action dev="DC" type="update" context="docs">
        Add section about managing the plugins descriptors to
        <link href="site:buildPlugin">Howto Build Plugins</link> doc.
      </action>
      <action dev="DC" type="add" context="code" importance="high">
        Added new "clean" targets. Doing 'forrest clean-site' will remove
        the contents of the project's generated documents directory.
        Doing 'forrest clean-work' will remove the project's work directories
        (usually build/tmp and build/webapp which include the Cocoon cache
        and the Cocoon logs).
        Doing 'forrest clean' will remove both sections.
      </action>
      <action dev="TS" type="update" context="code"> Added
        LocationmapSourceFactory.java. With this it is possible to request
        locationmap source via lm://my-location which makes it easier to use it
        without contacting a input module in java and any other files. <link
        href="http://svn.apache.org/viewcvs.cgi?rev=355474&amp;view=rev">Diff</link>
      </action>
      <action dev="TS" type="update" context="code"> Added variable.helper.xsl
        to the core, should be enhanced by matching the
        default.forrest.properties.xml. This xsl will produce all variables we
        use in skins to the new property system. Moved pathutils.xsl to the
        core from the skins. <link
        href="http://svn.apache.org/viewcvs.cgi?rev=356240&amp;view=rev">Diff</link>
      </action>
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard internal plugin "NoteTaking".
        Adds a form to a page that can be used to enter notes relating to the page.
      </action>
      <action dev="TS" type="update" context="code"> Added helper
        stylesheets to locationmap and core stylesheets. generateId.xsl (will
        generate a unique id) and replaceCharsInString.xsl (will find and
        replace character in a string) <link
        href="http://svn.apache.org/viewcvs.cgi?rev=358150&amp;view=rev">Diff</link>
      </action>
      <action context="code" type="add" dev="DC">
        Clarify some confusing notes about site/@href in seeds xdocs/site.xml files.
      </action>
<!-- 2005-11 -->
      <action context="code" type="add" dev="DG" fixes-bug="FOR-697">
       Finish renaming of files for a-to-b.xsl naming convention.
      </action>
      <action context="code" type="add" dev="CD">
        Add a Devs menu to ForrestBar to help with testing intermediate
        Cocoon pipelines.
      </action>
      <action context="code" type="update" dev="DC" due-to="Sjur N. Moshagen"
          fixes-bug="FOR-581,FOR-720">
        Fixed and enhanced the Forrest plugin for the XMLmind XML Editor at
        <link href="site:tools/xxe">tools/xxe</link>
      </action>
      <action context="code" type="update" dev="DC" due-to="Addison Berry"
          fixes-bug="FOR-180,FOR-716">
        Updated ForrestBar to be compatible with recent versions of Firefox.
      </action>
      <action context="code" type="add" dev="DC">
        Describe the
        <link href="site:faq/build_msg_a">status messages</link>
        that are issued by Cocoon CLI during processing of each doc.
      </action>
      <action context="code" type="add" dev="RDG" importance="high">
        The broken-links file is now copied into to the site root as
        "broken-links.xml" so that when building with Forrestbot
        you can easily view it.
      </action>
      <action context="code" type="update" dev="RDG" due-to="Josias Thoeny"
          fixes-bug="FOR-710">
        Correctly handle w3c-xml-schema rules in
        <link href="site:cap">SourceTypeAction</link>.
      </action>
      <action context="code" type="add" dev="RDG" importance="high" fixes-bug="FOR-200" due-to="Community">
        Reviewed all sitemaps to use locationmap references (lm:).
        At the same time we changed filenames of core stylesheets to follow
        a filename convention (e.g. html2document.xsl =&gt; html-to-document.xsl)
        which enables automated locationmap matches.
        Thanks to the many people who were involved with addressing this issue.
        See the commit logs associated with FOR-200.
      </action>
      <action context="code" type="add" dev="RDG" importance="high" fixes-bug="FOR-588">
        Prototype of new xml-based properties system. Projects and plugins can use a
        forrest.properties.xml file. At this stage, it supplements the existing
        forrest.properties file. See the projectInfo plugin for an example of its use.
      </action>
      <action context="code" type="add" dev="RDG" importance="high" fixes-bug="FOR-200" due-to="Community">
        Add notes about naming convention for locationmap references.
        Gathered from a ForrestFriday IRC session (thanks to Tim Williams for writing them up).
        See <link href="site:locationmap">locationmap docs</link>.
      </action>
      <action dev="TWW" type="add" context="code">
        Added initial whiteboard input plugin "XDoc".
        Forrest xdoc input to internal XHTML2.
      </action>
<!-- 2005-10 -->
      <action context="code" type="add" dev="RDG">
        Added initial whiteboard internal plugin "xhtml2". Started work on xhtml in the core.
      </action>
      <action context="code" type="update" dev="JJP">
        Upgrade our packaged Cocoon to cocoon-2.2.0-dev-r279987 and enhanced the notes
        about how to upgrade.
      </action>
      <action dev="TS" type="add" context="docs">Added basic instructions to
        deploy and install the ForrestBar from the source as readme.txt<link
        href="http://svn.apache.org/viewcvs.cgi?rev=328688&amp;view=rev">Diff</link>
      </action>
      <action dev="TS" type="update" context="code" due-to="Ross Gardler">Removed
        the project.theme-dir property by adding it to the lm like suggest by
        Ross. <link
        href="http://svn.apache.org/viewcvs.cgi?rev=328839&amp;view=rev">Diff</link>
      </action>
      <action dev="TS" type="update" context="code" > Changed the 'local
        forrest' caption to host:port format. Added localhost as option. added
        structurer xml view to devs. <link
        href="http://svn.apache.org/viewcvs.cgi?rev=329431&amp;view=rev">Diff</link>
      </action>
      <action dev="TS" type="update" context="code">Allowed as well
        localhost as local address for jetty for the ForrestBar. <link
        href="http://svn.apache.org/viewcvs.cgi?rev=329177&amp;view=rev">Diff</link>
      </action>
      <action context="docs" type="update" dev="RDG" fixes-bug="FOR-666">
        Clarify the FAQ about using
        <link href="site:faq/rawHTML">raw HTML</link>
        docs with no decoration.
      </action>
      <action context="code" type="update" dev="DG" fixes-bug="FOR-555">
        The xml comments from source files were not being generated to the output.
      </action>
      <action context="code" type="add" dev="DC" due-to="Pier Fumagalli">
        Add Cocoon Validation Block. Uses transformers to enable RELAX NG validation and
        W3C XML Schema validation using Jing and Xerces.
        See <link href="site:procedures/forrest-dev/debug-validation">documentation</link>.
      </action>
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard input plugin "ecs".
        Use the responses from Amazon web services (ECS) as input.
      </action>
      <action context="docs" type="add" dev="DC">
        We now have a regular 24-hour IRC session once per month. Developers get together.
        See <link href="site:forrest-friday">ForrestFriday</link>.
      </action>
<!-- 2005-09 -->
      <action context="code" type="add" dev="RDG" due-to="Joachim Breitsprecher" fixes-bug="FOR-660">
        Added initial whiteboard input plugin for Lenya integration.
      </action>
      <action context="code" type="add" dev="TWW">
        Added initial whiteboard input plugin for "Blog".
        Use an XPathDirectory generator to publish indices of articles.
      </action>
      <action context="code" type="add" dev="TWW">
        Added the beginnings of a sitemap analysis tool to the whiteboard.
        Doesn't do much at the moment.
      </action>
      <action context="code" type="add" dev="RDG">
        Added initial whiteboard input plugin for "Resume".
        Use input docs in xmlresume format.
      </action>
      <action context="code" type="add" dev="RDG" due-to="Rasik Pandey" fixes-bug="FOR-597">
        Added initial whiteboard internal plugin for "GoogleSitemap".
        Access a list of pages in "Google Sitemap" format.
      </action>
      <action context="code" type="add" dev="RDG" due-to="Alan Chandler">
        Add WTP 0.7 compatability for Eclipse plugin.
        Clarify installation notes.
      </action>
      <action context="code" type="update" dev="DC" fixes-bug="FOR-572">
        Add Cocoon Profiler block. Use this during development to list the
        various sitemap pipelines and components that are being used, how
        much time was used by each, whether each component uses the Cocoon
        cache, and show the actual xml data.
        See <link href="site:procedures/forrest-dev/debug-cocoon-profiler">documentation</link>.
        Thanks to Ron Blaschke for the suggestion.
      </action>
      <action context="docs" type="add" dev="TWW">
        Documenting some of the locationmap syntax and naming conventions
        as comments/examples
        until it can be done more formally.
        See 'forrest seed-sample' and
        <link href="site:locationmap">locationmap docs</link>.
      </action>
      <action context="code" type="add" dev="TWW">
        Use locationmap's mounting capability to allow selective project location overrides.
      </action>
      <action context="code" type="add" dev="TWW">
        Add locationmap selector based mounting (and project-based mounting).
      </action>
      <action context="code" type="add" dev="TWW">
        Add locationmap mounting capability.
      </action>
      <action context="code" type="update" dev="DC" due-to="Dave Brosius" fixes-bug="FOR-649">
        The hlink and vlink colors were not set correctly by SkinconfTransformer.
      </action>
      <action context="code" type="update" dev="DC" due-to="Gavin McDonald" fixes-bug="FOR-604">
        Synchronise the appearance of warning, fixme, and note elements
        in the pelt skin.
      </action>
      <action context="code" type="update" dev="RDG" due-to="Phillip Evens">
        Enhanced notes about using plugins.
      </action>
      <action context="code" type="update" dev="DC" fixes-bug="FOR-592">
        Strip remaining &lt;i18n:text&gt; elements that remain if i18n processing
        has been disabled. This was causing invalid HTML output.
        Thanks to assistance from Gavin McDonald.
      </action>
      <action context="code" type="add" dev="TS">
        Added support for actions in the locationmap.
      </action>
      <action context="code" type="add" dev="RDG">
        Plugins can now define their own *.xconf file to add configuration
        information to cocoon.xconf. Simply place your *.xconf file in
        PLUGIN_HOME/conf/*.xconf. Note that changes to this configuration
        file will not take effect until Forrest has been restarted.
      </action>
      <action context="docs" type="add" dev="DC">
        Add an
        "<link href="http://svn.apache.org/repos/asf/forrest/events/">events</link>"
        section to our SVN to hold materials for gatherings of developers that
        have been held outside the mailing list community.
      </action>
      <action context="docs" type="add" dev="DC">
        Add a new document
        <link href="site:procedures/forrest-dev">How to do development with Apache Forrest</link>.
        Provides some tips and procedures for all aspects of using Forrest.
      </action>
      <action context="docs" type="update" dev="DC" due-to="Addison Berry" fixes-bug="FOR-568">
        Clarify documentation for Forrestbot.
      </action>
      <action context="code" type="add" dev="RDG" due-to="Tom HANAX" fixes-bug="FOR-589">
        Added initial whiteboard output plugin for "voice".
        Read a document using a voice enabled browser such as Opera.
      </action>
      <action context="code" type="add" dev="DC" fixes-bug="FOR-592">
        Strip remaining &lt;i18n:text&gt; elements that remain if i18n processing
        has been disabled. This was causing invalid HTML output.
      </action>
      <action dev="RDG" type="update" context="code" due-to="Anil Ramnanan">
        Enhanced the initial Eclipse plugin for using Forrest via Eclipse.
        This work was enabled via a "Google Summer of Code" project.
        See <link href="site:tools/eclipse">docs</link>.
      </action>
      <action dev="TS" type="update" context="docs"> Added information about
        how to debug forrest java classes to the faq <link
        href="http://svn.apache.org/viewcvs.cgi?rev=291361&amp;view=rev">Diff</link>
      </action>
      <action dev="TS" type="add" context="code"> Added a shell script to
        do some steps of the cocoon update process. Still there are some steps
        that should rather be done by a script, rather than committer interaction.
        Updated the readme to state that some steps could be done by the
        script. <link
        href="http://svn.apache.org/viewcvs.cgi?rev=280710&amp;view=rev">Diff</link>
      </action>
      <action dev="TS" type="update" context="code" fixes-bug="FOR-253"> Added new
        seed targets seed-basic and seed-sample. That closes FOR-253. <link
        href="http://svn.apache.org/viewcvs.cgi?rev=231130&amp;view=rev">Diff</link>
      </action>
      <action dev="TS" type="update" context="code" fixes-bug="FOR-670" due-to="kevin"> Fixed sample
        sites from the seedTestBusiness FOR-670: forrest seedTestBusiness;
        forrest site fails resume dtd validation <link
        href="http://svn.apache.org/viewcvs.cgi?rev=279892&amp;view=rev">Diff</link>
      </action>
      <action context="code" type="add" dev="TS">
        Refactored the view resolver code of the internal.view plugin. Created an action that
        is doing the same as before the combination of sitemap+xsl. <br/>Added 2 java classes to package
        org.apache.forrest.plugin.internal.view.acting:<br/>
        1.FallbackResolverAction.java<br/>2.FallbackResolverHelper.java
      </action>
      <action context="code" type="add" dev="TS">
       Removed project.view-defaultView properties and added project.theme-extension instead. The combination
       of project.theme-extension and project.theme is equal to project.view-defaultView.
      </action>
      <action context="code" type="add" dev="TS">
       Added new elements to org.apache.forrest.conf.ForrestConfModule name="defaults":
       <br/> view-themes<br/>theme-ext<br/>theme<br/>
      </action>
      <action context="code" type="add" dev="TS">
       Removed "defaultView" and added new element to org.apache.forrest.conf.ForrestConfModule name="project":
       <br/>theme-ext
      </action>
      <action context="code" type="add" dev="TS">
       normalize-space() the forrest:properties before parsing them to the pipe
      </action>
      <action dev="DC" type="add" context="docs" fixes-bug="FOR-603"
        due-to="Addison Berry">
        Added document to explain the process for
        <link href="site:committed">Becoming an Apache Forrest
        committer</link>.
      </action>
      <action context="code" type="add" dev="DC">
        Use sets of symbols as xml entities for character replacement.
        There is a core set and each project can define a set.
        For example, use "<code>&amp;myp-t;</code>" to represent the
        project name together with trademark symbol
        "My Project Name&trade;".
        See <link href="site:faq/xml-entities">FAQ</link>.
      </action>
      <action context="code" type="add" dev="RDG">
        Plugins can now define their own *.xconf file to add configuration
        information to cocoon.xconf. Simply place your *.xconf file in
        PLUGIN_HOME/conf/*.xconf. Note that changes to this configuration
        file will not take effect until Forrest has been restarted.
      </action>
      <action context="code" type="add" dev="RDG">
        New site seeding mechanism. You can now run "forrest seed" as before, or you can run
        "forrest seed-business". The later will ask a number of questions about the site
        being seeded (business name, description etc.) and will create a very simple site
        designed for business. To quickly see the results, i.e. avoid
        answering the questions, do "forrest seedTestBusiness". More seed sites will be added
        in the future.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Added support for Locationmaps. This enables content to be retrieved from a location
        that is defined in a locationmap file. A project-based file can be located at
        <code>PROJECT_HOME/src/documentation/content/locationmap.xml</code> while core locationmaps
        are at <code>$FORREST_HOME/main/webapp/locationmap-*.xml</code> files.<br />The
        advantage of this is that the URL seen by the user need bear no relation to the location
        of the source document, thus Forrest can separate the client URL space from the source
        document URL space. Thus, using the locationmap it is possible to pull together
        documents from many different locations into a single uniform site.<br/>

        In addition, since the user URL space is now unconnected to the source URL space
        it is possible to move source documents without breaking any existing user links.<br/>

        See <link href="site:locationmap">locationmap docs</link> for more information.
        Thanks to Unico Hommes for the original locationmap implementation which
        was added to Forrest long ago.
      </action>
    </release>
    <release version="0.7.1-dev" date="not released">
      <introduction>
        <p>
          See each <link href="site:plugins/index">plugin</link> for its
          detailed changes.
        </p>
      </introduction>
      <notes>
        <section>
          <title>apache-forrest-0.7.1-dev</title>
          <p>
            Will only be released if absolutely necessary
          </p>
        </section>
      </notes>
      <action dev="DC" type="add" context="docs">
<!-- Please keep this action at the top -->
        Added document to facilitate
        <link href="site:upgrading_07">upgrading to v0.7</link>
      </action>
      <action context="code" type="update" dev="DC" fixes-bug="FOR-824" due-to="Steve Masover">
        Howto-v20 now properly handles a/@class=fork etc. attribute to enable
        links to open in a new browser window.
      </action>
      <action context="code" type="update" dev="DC" fixes-bug="FOR-818">
        Forrestbot deploy.scp workstage now uses keyfile/passphrase in preference,
        then fallback to remote password.
      </action>
      <action dev="FSO" type="update" context="code">
            Changed handling of table elements with class-attributes in source:
            Table elements w/o class elements will receive standard Forrest styling like before
            (cellpadding="4" cellspacing="1" class="ForrestTable")
            while elements that have class will pass unchanged.
            Note: To style tables with class elements like before you have to add styling code
            in the extra-css-section of skinconfig.
        </action>
      <action dev="FSO" type="update" context="code">
            Fixed problems with disappearing of id-attributes in img-element and several others.
        </action>
      <action dev="DC" type="update" context="code" importance="high">
        Added new "clean" targets. Doing 'forrest clean-site' will remove
        the contents of the project's generated documents directory.
        Doing 'forrest clean-work' will remove the project's work directories
        (usually build/tmp and build/webapp which include the Cocoon cache
        and the Cocoon logs).
        Doing 'forrest clean' will remove both sections.
      </action>
    </release>
    <release version="0.7" date="2005-06-23">
      <introduction>
        <p>
          See each <link href="site:plugins/index">plugin</link> for its
          detailed changes.
        </p>
      </introduction>
      <action dev="DC" type="add" context="docs">
<!-- Please keep this action at the top -->
        Added document to facilitate
        <link href="site:upgrading_07">upgrading to v0.7</link>
      </action>
      <action context="code" type="update" dev="JJP" fixes-bug="FOR-18">
          Config check for the i8n attribute for i18n transformer
          so it is used only when necessary.
       </action>
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard input plugin "Daisy".
        Input is content retrieved from a "Daisy CMS repository".
      </action>
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard output plugin "OpenOffice.org".
        Output OOo writer files.
      </action>
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard output plugin "Chart".
        Draw charts using jCharts.
      </action>
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard input plugin "Database".
        Uses much of the Cocoon DB block code and is part of a larger experiment
        to get Cocoon blocks working as Forrest plugins.
      </action>
      <action dev="DC" type="update" context="code" importance="high">
        Enhanced the Message of the Day (MOTD) facility.
        See skinconf.xml from a "seed" site for configuration details.
        Append a small text string after html title.
        Add text to a panel on the page.
        Select different messages depending on the URI string pattern.
        To use it, declare skinconfig-v07-1.dtd in your skinconf.xml file.
      </action>
      <action context="code" type="update" dev="DC" due-to="Cyriaque Dupoirieux" fixes-bug="FOR-355">
          Enable skinconf to specify optional page number format for PDF.
       </action>
      <action context="code" type="add" dev="RDG" fixes-bug="FOR-528">
          Plugins are now version controlled.
       </action>
      <action dev="DC" type="fix" context="code">
        The "extra-css" from skinconf.xml is now inserted at the very end
        of the CSS. That enables it to properly override other elements.
      </action>
      <action dev="RDG" type="update" context="docs" fixes-bug="FOR-470" importance="high">
        Rewrote example of raw content in fresh-site to correctly document the
        behaviour in 0.7.
      </action>
      <action dev="RDG" type="update" context="docs" importance="high">
        Removed ihtml example from fresh-site and replaced with an example of embedded HTML.
        The use of ihtml is now deprecated in favour of embedded HTML.
      </action>
      <action dev="DC" type="fix" context="code">
        Fixed a bug with individual "credit image" placement in the pelt skin.
        If one credit was specified to be in the alternative location, then
        all credits were placed there. Also added a second alternative location.
      </action>
      <action  dev="RDG" type="update" context="code">
        Split plugins.xml between plugins.xml in main plugins dir and
        whiteboard-plugins.xml in whiteboard/plugins and added relevant docs
        to plugins index page.
      </action>
      <action dev="JJP" context="code" fixes-bug="FOR-487" type="add">
      Added importance attribute to actions on status.dtd
      </action>
      <action  dev="RDG" type="update" context="code">
        Added ability to add page breaks to output. See <link href="site:faq/pageBreaks">Page Breaks FAQ</link>
      </action>
      <action dev="RDG" type="update" context="docs" fixes-bug="FOR-185">
        Allow the serving of raw SVG files to allow clients to render locally.
      </action>
      <action dev="RDG" type="update" context="docs">
        Plugin docs are now upated automatically when a plugin is deployed.
        Alternatively you can update the docs independantly by running the
        deploy-docs target in the plugin directory.
      </action>
      <action dev="RDG" type="update" context="code"
        fixes-bug="FOR-430" due-to="Florian G. Haas">
        * Uses skinconf.xml to determine background and border color for notes, warnings, and fixmes;
        * Uses skinconf.xml to determine background and border color for table cells (headers and data);
        * Honors headings type set in skinconf.xml (clean|underlined|boxed) and colors headings accordingly;
        * Uses skinconf.xml to determine font color for links.

        In addition, this patch extends the "link" template to also apply to the "fork", "jump", and "a" elements.
      </action>
      <action dev="DC" type="fix" context="code" fixes-bug="FOR-482,FOR-457" due-to="Mark Eggers">
        Generate html/head/meta elements from document-v2.
      </action>
      <action dev="DC" type="add" context="code">
        Added org.apache.forrest.plugin.input.listLocations plugin.
        Use lists of locations maintained in a simple xml format
        and transform them to documents.
      </action>
      <action dev="DC" type="update" context="code" fixes-bug="FOR-284" importance="high">
        Reinstate error reporting for broken "site:" and "ext:" links
        which are due to missing entries in site.xml or typos in site: links.
        The text "error:" is also prepended.
        This is a workaround for bug FOR-284 "link rewriting broken
        when linking to xml source views which contain site: links".
        This latter issue is handled by the core. However, if
        your project uses a Cocoon
        <link href="site:faq/cli-xconf">cli.xconf</link>
        then you will need add the same "exclude" entries.
      </action>
      <action dev="DC" type="update" context="code" fixes-bug="FOR-479" due-to="Mark Eggers">
       Handle FAQs sections and faqs with both howto-v1.* and howto-v2.* docs.
       Apply proper section numbering.
      </action>
      <action dev="DC" type="update" context="docs">
        Removed old versions of pre-release plugins following renaming to the
        convention defined in
        <link href="site:plugins/infrastructure">Plugin Infrastructure</link>.
      </action>
      <action dev="DC" type="add" context="code" fixes-bug="FOR-389" importance="high">
        Added org.apache.forrest.plugin.input.dtdx plugin by moving functionality
        out of the core.
        Generates DTD documentation using a custom Cocoon Generator.
      </action>
      <action dev="TS" type="add" context="docs">
        Removed the leather-dev docs and added the begining of the View plugin docs.
      </action>
      <action dev="TS" type="add" context="code">
        Changed plugin template location to {forrest.plugins.dir}/pluginTemplate
        in the build.xml of plugins/ and whiteboard/plugins/. That allows to create
        new plugins in the whiteboard/plugin/ directory.
      </action>
      <action dev="TS" type="add" context="code">
        Added viewHelper plugin and removed experimental leather plugin.
        Enhanced the documentation of view/viewHelper.
      </action>
      <action dev="TS" type="fix" context="code" fixes-bug="FOR-477" due-to="Kevin">
        Images group.svg and project.svg were rendered with the shadow effect slightly clipped.
        Needed to add width and height to filter element.
      </action>
      <action dev="TS" type="add" context="code">
        Created a new plugin org.apache.forrest.plugin.internal.view from the fbits core
        and removed the fbits plugin.
      </action>
      <action dev="RDG" type="update" context="code">
        Added FAQ about "pageBreakBefore" and "pageBreakAfter" class int PDF
        documents and describe how to enable the page break behaviour in HTML
        documents.
      </action>
      <action dev="RDG" type="update" context="code">
        Use "pageBreakBefore" and "pageBreakAfter" class to sections to force a
        page break in PDF output.
      </action>
      <action dev="DC" type="add" context="docs"
        fixes-bug="FOR-446" due-to="Ferdinand Soethe" importance="high">
      Added
      <link href="site:custom-html-source">How to customize
      processing of html source</link>
      </action>
      <action dev="RDG" type="update" context="code" importance="high">
        Moved status "changes" and "todo" page generation to the
        org.apache.forrest.plugin.input.projectInfo plugin.
      </action>
      <action dev="RDG" type="fix" context="code" fixes-bug="FOR-345" due-to="Cyriaque Dupoirieux">
        Fix broken links in Table of Contents when titles contain accented characters.
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-18" >
        I18n uses org.apache.cocoon.matching.LocaleMatcher instead of i18n transformer.
       This requires that your source must now be foo.lang.xml instead of foo_lang.xml
      </action>
      <action dev="RDG" type="add" context="code" fixes-bug="FOR-445" due-to="Cyriaque Dupoirieux">
        Added proxy.host, proxy.port, proxy.user and proxy.password to allow plugin downloads from behind a
        proxy.
      </action>
      <action dev="DC" type="fix" context="code" fixes-bug="FOR-246,FOR-431" due-to="Florian G. Haas">
        Fix various bugs with Lucene search.
      </action>
      <action dev="RDG" type="add" context="code" fixes-bug="FOR-373" due-to="Johannes Schaefer" importance="high">
        Added a plugin to handle input documents from Microsoft Excel.
      </action>
      <action dev="RDG" type="add" context="code" fixes-bug="FOR-417" due-to="Sjur N. Moshagen">
        Enabled XInclude in site.xml and tabs.xml
      </action>
      <action dev="RDG" type="add" context="code" due-to="Ron Blaschke" importance="high">
        Added external plugin POD-input to allow Plain Old Documentation (POD) files to
        be included in a Forrest site.
      </action>
      <action dev="AG" type="update" context="code">
        Updated nekodtd to 0.1.11
      </action>
      <action dev="RFT" type="add" context="code"  importance="high">
        Moved POD output from the common skin to its own plugin.
      </action>
      <action dev="DB" type="fix" context="code" fixes-bug="FOR-330" due-to="Gary Feldman">
        Fixed quotes in forrest.bat so forrest can be in a directory with spaces.
      </action>
      <action dev="RFT" type="add" context="code" fixes-bug="FOR-125" importance="high">
        Added a text-output plugin.
      </action>
      <action dev="RDG" type="add" context="code">
        Added WYSIWYG editor as a plugin (only works in dynamic webapps).
      </action>
      <action dev="RDG" type="add" context="code" fixes-bug="FOR-387"
        due-to="Jörg Werner" importance="high">
        Added photoGallery plugin.
      </action>
      <action dev="RDG" type="add" context="code">
        Added capability to deploy directly to site in SVN using "ant deploy"
        from within plugin directory.
      </action>
      <action dev="JJP" type="remove" context="code">
        Stopped doing deletion of the cache-dir, so consecutive "forrest site" actions
        can be cached.
      </action>
      <action dev="RDG" type="add" context="admin">
        Added testing facilities to plugins to facilitate integration testing.
      </action>
      <action dev="JJP" type="remove" context="code" importance="high">
      Merge xdocs and raw files in the same directory src/document/content/xdocs
      </action>
      <action dev="RDG" type="add" context="docs"
        due-to="Ian P. Springer" fixes-bug="FOR-369" importance="high">
      Added <link href="site:maven">How-To Run Forrest from Maven</link>.
      </action>
      <action dev="RDG" type="add" context="docs" importance="high">
      Added <link href="site:buildPlugin">How-To Build a plugin</link>.
      </action>
      <action dev="RDG" type="add" context="docs">
      Split plugin documentation between
      <link href="site:plugins/using">user</link> and
      <link href="site:plugins/infrastructure">developer</link> topics.
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-18">
      LocaleAction changed its API. The "lang" value is "language" now.
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-370">
       Ignore directory links for aggregations.
      </action>
      <action dev="RDG" type="add" context="docs"   due-to="Ferdinand Soethe" importance="high">
        Added HowTo about
        <link href="site:editcss">editing CSS</link> in a WYSIWYG fashion using Mozilla Firefox
        and its Edit-CSS plugin.
      </action>
      <action dev="JJP" type="add" context="docs">
        Added custom xml sample and project sitemap to the 'forrest seed site'.
      </action>
      <action dev="DC" type="add" context="docs"
        due-to="Stephan E. Schlierf" fixes-bug="FOR-351">
        Added
        <link href="site:corner-css">How to modify the color of generated corner images</link>.
      </action>
      <action dev="DC" type="add" context="docs">
        Added links to example websites to demonstrate each available
        <link href="site:skins">default skin</link>.
      </action>
      <action dev="DC" type="fix" context="build">
        Changed Ant build property name "version" to "forrest.version"
        to prevent collisions with other build systems when using the
        Ant "import" task.
      </action>
      <action dev="DC" type="fix" context="code">
        Fixed some public identifiers (for DTD-v2.0) which were still pointing
        to old versions of DTDs.
      </action>
      <action dev="DC" type="add" context="code"
        due-to="Tamara Harpster" fixes-bug="FOR-322">
        Added to the document-v20 DTD to support "usemap" attribute in img tag.
        Also added demonstration of client-side imagemap to the "seed site".
      </action>
      <action dev="JJP" type="update" context="docs"
        due-to="Joao Ferreira" fixes-bug="FOR-305">
        Added FAQ to explain character encoding for certain languages.
      </action>
      <action dev="RDG" type="add" context="code" importance="high">
        Enable sitemap plugins. Plugins allow Forrest to have functionality
        added through the addition of small code blocks (plugins). Plugins
        are downloaded automatically when a site that requires them is built.
        See <link href="site:plugins/using">Extending Forrest with Plugins</link>.
      </action>
      <action dev="JJP" type="update" context="code">
        Update fop-0.20.5 just with optional jimi support.
        This fixes the issue building the Apache FOP site.
        Replace libraries to use the cocoon-2.2.0-dev version.
      </action>
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard output plugin "htmlArea".
        Output pages that enable editing of the input. Only html at this stage.
      </action>
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard output plugin "rtf".
        Output documents as RTF.
      </action>
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard input plugin "logs".
        Use various logfiles as input. Currently only Java Logging API.
      </action>
      <action dev="DC" type="add" context="code"
        due-to="Upayavira" fixes-bug="FOR-204" importance="high">
        The brokenlinks file now contains referer information.
        Upgraded lib/core/cocoon.jar and added attribute "show-referrers"
        to the Cocoon cli.xconf
      </action>
      <action dev="TS" type="update" context="docs" importance="high">
        Updated How-To:
        <link href="site:pdf-tab">How to create a PDF document for each
        tab</link> to create subject-specific aggregated documents.
      </action>
      <action dev="DC" type="update" context="code" importance="high"><link href="site:faq/requirements">Java 1.4 is required</link>
        starting with Forrest-0.7-dev
      </action>
<!--17/11/04-->
      <action dev="RDG" type="add" context="code" importance="high">
        Add initial PDF plugin
      </action>
<!--16/11/04-->
      <action dev="RDG" type="add" context="code" importance="high">
        Add initial Wiki plugin
      </action>
<!--11/11/04-->
      <action dev="RDG" type="add" context="code" importance="high">
        Add initial Feeder plugin
      </action>
    </release>
    <release version="0.6" date="2004-10-15">
      <action dev="RDG" type="add" context="code">
        Added initial whiteboard internal plugin "IMSManifest".
        Alternative navigation method. Generates menu links from
        IMS Manifests (Learning Objects).
      </action>
      <action dev="DC" type="fix" context="code"   due-to="Arturo Vazquez">
        Proper positioning of icon/links for PDF, XML, POD, Print content
        options on pelt skin.
      </action>
      <action dev="AG" type="update" context="code">
        Updated commons-collections to 3.1,
        commons-logging to 1.0.4, jcs to 1.1-dev.20040811, lucene to 1.4.1
      </action>
      <action dev="DC" type="update" context="code" fixes-bug="FOR-122">
        Enable email address obfuscation to be configurable using the
        obfuscate-mail-value option in skinconf.xml
      </action>
      <action dev="DB" type="fix" context="code" fixes-bug="FOR-267">
        Allow forrest to run in a project directory with a space in the name.
      </action>
      <action context="code" dev="TS" type="fix">
        Fixed the domain bug of the searchbox in pelt.
      </action>
      <action context="code" dev="TS" type="fix">
        Fixed the menu in pelt by adding getMenu.js and changing the site2xhtml.xsl.
        Now the chapter image will get expand again.
      </action>
      <action context="code" dev="TS" type="add">
        getMenu.js - fixes a path issue and the double click behaviour of pelt.
      </action>
      <action context="code" dev="TS" type="add">
        Explained the usage of the extra-css element in skinconf.xml of the fresh site.
      </action>
      <action dev="DC" type="add" context="code" due-to="Fabio Rinaldi" fixes-bug="FOR-268">
        Initial Chaperon grammar for minimal MoinMoin Wiki to Forrest xdocs
        transformation. Source documents use the *.moinwiki filename extension.
      </action>
      <action dev="NKB" type="add" context="code">
        Requesting linkmap.html Forrest now renders the site.xml
        file as a table of contents.
      </action>
      <action dev="NKB" type="add" context="code">
        Now the *.ihtml and *.cwiki extensions are deprecated.
        To get the same functionality it is recommended to switch to
        *.html and *.jspwiki. With this it's now possible to have a
        site in simple html, edited with any html editor.
        The *.jspwiki extension was put to make it clear what the
        format is about.
      </action>
      <action dev="NKB" type="add" context="code">
        New project sitemap extension mechanism. Now it is possible to add
        a project sitemap that plugs into the processing at the beginning.
        If the requested url is resolved by it, it will serve the file directly.
        If the requested url with the extension changed to xml is matched, then
        Forrest will use that result as the intermediate format and render it.
        This will enable project-specific sitemaps to not collide with future
        Forrest updates.
      </action>
      <action dev="DC" type="fix" context="code" fixes-bug="FOR-268">
        Relative URIs with absolute paths were broken in the site.xml
        linking mechanism.
      </action>
      <action dev="DC" type="fix" context="code" due-to="Fabio Rinaldi">
        Re-write the Chaperon grammar for JSPWiki to address ambiguity with
        paragraphs and sub-sections.
      </action>
      <action dev="DB" type="add" context="code">
         Added configuration for XMLMind XML Editor to scratchpad.  Originally
         from splike.com
      </action>
      <action dev="DC" type="update" context="code" fixes-bug="FOR-240"
         due-to="Rick Tessner">
         Enhance the document2pod functionality to handle many other elements
         and enable the link to this format to be configured via skinconf.
         See the issue report for some notes.
      </action>
      <action dev="DC" type="add" context="code">
        Automatically add some meta elements to head of html
        (Generator name, Forrest version, skin name)
      </action>
      <action dev="DC" type="add" context="code">
        Optional feedback link for the footer of all skins.
      </action>
      <action dev="DC" type="add" context="code" due-to="Rick Tessner">
        New output format for POD (the Perl community's Plain Old Documentation)
        triggered using the .pod filename extension.
        Initial work, needs enhancement. See
        <link
          href="http://marc.theaimsgroup.com/?t=107512563400001">forrest-dev
          discussion</link>
      </action>
      <action dev="RDG" type="add" context="code">
        Eclipse plugin code added to scratchpad (donated by <link href="http://www.burrokeet.org/">Burrokeet</link>).
        Initial work, needs enhancement.
      </action>
      <action dev="DB" type="remove" context="code" fixes-bug="FOR-181">
        Skins "forrest-css" and "avalon-tigris" are deleted. The
        "tigris-style" is renamed to "tigris". Aliases
        set in place for backward-compatibility.
        The old "forrest-site" and "krysalis-site" skins are retained for
        a little while longer,
        but are deprecated, so please move to one of the other skins.
        See notes about <link href="site:skins">Default skins</link>.
      </action>
      <action dev="AG" type="update" context="code">
        Updated Ant 1.6.2.
      </action>
      <action dev="DB" type="fix" context="code" fixes-bug="FOR-214">
        JCS log messages go through cocoon instead of to stdout.
      </action>
      <action dev="DB" type="fix" context="code" due-to="Johannes Schaefer" fixes-bug="FOR-226">
        Generate proper html for figures in simplified docbook.
      </action>
      <action dev="DC" type="update" context="code"
        due-to="Rick Tessner" fixes-bug="FOR-174">
        Have @class attribute in DTD for every element, which enables the
        "extra-css" section in the skinconf to be put to good use.
        Updated all v1.2 DTDs to become v1.3 DTDs (forward compatibility:
        v1.2 docs will work fine as V1.3).
        Updated the v2.0a DTDs to become v2.0 DTDs (forward incompatibility:
        v1.2/1.3 docs are not forward-compatible as V2.0).
        Added demo of extra-css to the seed site and updated some
        sample docs to use new v1.3 DTDs.
        See the <link href="site:dtd-docs">samples and reference docs</link>.
        See the issue report for full list of changes.
      </action>
      <action dev="DC" type="add" context="docs">
        Added a How-To:
        <link href="site:asf-mirror">Generate an ASF mirrors page using
        interactive web form</link> using ihtml to include additional html
        form elements.
      </action>
      <action dev="DB" type="add" context="code" fixes-bug="FOR-219">
        Added forrestbot deploy.svn implmentation.
      </action>
      <action dev="DB" type="update" context="build" fixes-bug="FOR-113" due-to="Pierrick Brihaye">
        Support running Forrest on Win9x.
      </action>
      <action dev="DB" type="update" context="build" fixes-bug="FOR-207">
        Don't copy unneeded project files in 'war' and 'webapp' targets.
      </action>
      <action dev="DB" type="update" context="build" fixes-bug="FOR-216">
        Add more descriptions to forrest targets.  Highlight the most common ones.
      </action>
      <action dev="TS" type="add" context="docs" due-to="Stephan E. Schlierf" fixes-bug="FOR-218">
        Added a How-To:
        <link href="site:pdf-tab">How to create a PDF document for each
        tab</link> to create subject-specific aggregated documents.
      </action>
      <action dev="DC" type="add" context="docs">
        Created the <link href="site:howto">How-To</link> section of the
        documentation. Continue Dianna Shannon's good work with designing
        the DTDs, concepts, and documentation effort at Cocoon.
      </action>
      <action dev="TS" type="add" context="code" fixes-bug="FOR-182">
        The new "pelt" skin (uses CSS and div).
        See notes about <link href="site:skins">Default skins</link>.
      </action>
      <action dev="DC" type="update" context="code">
        Projects can use a local CatalogManager.properties to declare
        additional Catalogs for DTDs and other entities.
      </action>
      <action dev="DB" type="update" context="code">
        Improve look of PDF pages.
      </action>
      <action dev="DB" type="fix" context="code" fixes-bug="FOR-138">
        PDF pages receive skinconf properly (through the skinconf pipeline).
      </action>
      <action dev="DB" type="fix" context="code" fixes-bug="FOR-154">
        FAQ page does not need to provide it's own extra index.
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-165">
        Brokenlinks file is now generated in project.home rather than forrest.home
      </action>
      <action dev="DC" type="add" context="docs" fixes-bug="FOR-107">
        Added a mechanism to enable impoverished XML tools that do not use
        the Catalog Entity Resolver to fetch the DTDs direct from the website.
        See notes for "Upgrading to v0.6".
        Please help to upgrade our /dtd/.htaccess file (see issue FOR-107)
        and please help to address the SVN Issue
        <link href="http://subversion.tigris.org/issues/show_bug.cgi?id=1233">1233</link>.
      </action>
      <action dev="DB" type="add" context="code" fixes-bug="FOR-142">
        In skinconfig, add box-location attribute to search element.
      </action>
      <action dev="DB" type="remove" context="code">
        Remove 'template' skin; better to base a new skin on an existing one.
      </action>
      <action dev="JJP" type="fix" context="docs">
        Replace URLs in all docs to be http://forrest.apache.org/
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-130">
        Add missing xdocs from the validate.exclude property. Allowing to exclude files.
      </action>
      <action dev="DB" type="fix" context="code" fixes-bug="FOR-114">
        Improved resolving image references in PDFs.
      </action>
      <action dev="NKB" type="fix" context="code">
        Now CSS files are parsed internally, so that the urls are included in the static
        site generation.
      </action>
      <action dev="DC" type="update" context="docs" importance="high">
        Forrest is now a top-level Apache project. The new website is at
        <link href="http://forrest.apache.org/">http://forrest.apache.org/</link>
      </action>
      <action dev="JJP" type="fix" context="code">
        Lucene-index target works. If search@provider="lucene" is set create a search index.
        Build site and run targets as per project directory instead of forrest.home.
      </action>
      <action dev="DB" type="update" context="code" fixes-bug="FOR-148">
         Fix relative links and image references in aggregate pages.
      </action>
      <action dev="JJP" type="update" context="code" due-to="Florian G. Haas" fixes-bug="FOR-9">
          Worked search functionality into all skins.
          Fixed query parameters for Google site search.
          Lateral search box was incompatible with new skinconf.xml format.
      </action>
      <action dev="JJP" type="add" context="docs" due-to="Florian G. Haas" fixes-bug="FOR-9">
         Added new documentation about
        <link href="site:searching">Searching Forrest-built documentation</link>
        which describes both Lucene and Google search.
      </action>
      <action dev="JJP" type="update" context="code">
         Upgrade to cocoon 2.1.5
      </action>
      <action dev="JJP" type="remove" context="code">
         Clean up first Lucene search implementation in Forrest.
      </action>
      <action dev="NKB" type="add" context="code" due-to="Unico Hommes">
        Locationmap modules added.  Not in use yet.
      </action>
      <action dev="NKB" type="add" context="code">
        Forrestdoc code added to scratchpad; previously was <link href="http://jakarta.apache.org/alexandria/">Jakarta Alexandria</link>
      </action>
      <action dev="DB" type="update" context="code" fixes-bug="FOR-123">
        Removed author and cvs-id tags from code and xdocs.
      </action>
      <action dev="JJP" type="update" context="code">
        Repack Jetty without JSP support. Now we can remove org.apache.jasper.jar
      </action>
      <action dev="DB" type="update" context="admin">
        Moved forrestbot2 from scratchpad into main.  Uses ant 1.6's
        'import' task instead of XSLT/ant.  Webapp completely
        rewritten to use JSTL, Struts, Java utility classes, and
        OpenSymphony's OSUser for flexible authentication.
      </action>
      <action dev="NKB" type="update" context="code">
        Forrest does not copy anything around anymore. The only step
        to make it work is to have java compile the forrest jar; all
        other resources are used in their original location.
      </action>
      <action dev="DC" type="fix" context="code"
        due-to="Rick Tessner" fixes-bug="FOR-146">
        Moved all references to //skinconfig out of the document2html.xsl
        into the site2xhtml.xsl file.
        * Rationalized the Table of Contents stuff by creating a "toc"
        mode in the common/xslt/html/document2html.xsl. That is then
        used to generate the per-page ToC and the ToC attached to the menu.
        * Removed extraneous default xsl matchers on the non-common
        document2html and site2xhtml XSLs. This allows matches
        defined in the imported transformation sheets to match
        (imported sheets have lower precedence).
        * Defined a couple of <code>&lt;div id="..."&gt;</code> place holder
        tags used by the document2html. Those are then skinned by the
        site2xhtml sheets.
        * Note: If you have your own skins that were referencing "$config" or
        "//skinconfig" in the document2html.xsl then you need to make similar
        changes.
        * For more information see the FOR-146 issue report.
      </action>
      <action dev="DB" type="add" context="code" fixes-bug="FOR-120">
        Add &lt;copyright-link&gt; element to skinconf
      </action>
      <action dev="DB" type="remove" context="code" fixes-bug="FOR-131">
        The .ehtml files have been deprecated.  Use .ihtml instead.  Future html input support will be
        based on <link href="http://issues.apache.org/eyebrowse/BrowseList?listId=65&amp;by=thread&amp;from=748321">this
        discussion</link>.
      </action>
      <action dev="JJP" type="fix" context="code">
        Remove misleading error message. Reported a cocoon bug #28939
      </action>
      <action dev="JJP" type="remove" context="code">
       Revert the changes to access skinconf using "skinconf//" done on r10259
      </action>
      <action dev="JJP" type="add" context="docs">
       Information about the new
       <link href="site:mail-lists/forrest-user">forrest-user</link>
       mail list.
      </action>
      <action dev="JJP" type="update" context="code">
        Jetty jar was mistakenly compiled for jdk 1.4
        - now re-compiled for jdk 1.3
      </action>
      <action dev="DB" type="remove" context="code" fixes-bug="FOR-140">
        Forrest-targets with ant proxy is obsolete; use forrestbot now.
      </action>
      <action dev="DB" type="update" context="code" fixes-bug="FOR-137">
        'build patch' command updated for SVN.
      </action>
      <action dev="JJP" type="update" context="code" due-to="Florian G. Haas" fixes-bug="FOR-9">
        Completely rewritten Lucene-based index and search functionality.
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-139">
        skinconf was being ignored for the svg and fo formats.
      </action>
      <action dev="JJP" type="fix" context="code" due-to="Nick Chalko" fixes-bug="FOR-136">
        "Warning" was mistakenly labeled as "Note" in PDF.
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-69">
        site2book.xsl handle all menu-item and menu attributes
      </action>
      <action dev="DB" context="code" due-to="Rob Exley" fixes-bug="FOR-115" type="fix">
        Proper table around 'graphic' in simplified docbook.
      </action>
      <action dev="JJP" type="fix" context="code">
        Replace document() function to get skinconf values and use "//skinconfig".
        Fix order so it can validate skinconf.
        Use <code>&lt;search/&gt;</code> instead of
        <code>&lt;disable-search/&gt; &lt;disable-lucene/&gt;
        &lt;searchsite-domain/&gt; &lt;searchsite-name/&gt;</code>.
        Fix skinconf.xsl so it produces a proper skinconf
      </action>
      <action dev="AG" type="fix" context="code">
        Updated jetty to 4.2.19
      </action>
      <action dev="JJP" type="fix" context="code">
        Update scripts and config files to allow upgrade to cocoon 2.1.5-dev
      </action>
      <action dev="JJP" type="add" context="code">
        New stylesheet to import the original cocoon.xconf file
      </action>
      <action dev="JJP" type="fix" context="code">
        Stop overwriting skinconf and cocoon.xconf on webapp target.
        Libs were not copied on the webapp target.
      </action>
      <action dev="JJP" type="add" context="code">
        Move context targets from forrest.build.xml to targets/context
        Use skinconf DTD.
        Use xmlvalidate for skinconf.
        Create upgradeskinconf.xsl for old skinconf.xml files
      </action>
      <action dev="JJP" type="add" context="code">
        The language alternative div displays language in your own language.
      </action>
      <action dev="DB" type="add" context="code">
        Docbook support for refentry element and it's children.  Generally used for man pages.
      </action>
      <action dev="JJP" type="add" context="code">
        Do not create ToC unless it has been defined on the skinconf.
        Change level attribute to max-depth attribute.
        Add a min-sections attribute to define a minimun number of sections
        before create a toc.
      </action>
      <action dev="JJP" type="add" context="code">
        Add Language alternatives div. To test it:
        i18n-foo.html
      </action>
      <action dev="JJP" type="add" context="code"
        due-to="Florian G. Haas" fixes-bug="FOR-112">
        Page size and orientation for pdf.
      </action>
      <action dev="DB" type="update" context="code" due-to="Apache Infrastructure">
        Converted repository from CVS to SVN.
      </action>
      <action dev="JJP" type="update" context="code">
        Upgrade to batik 1.5.1
      </action>
      <action dev="JJP" type="update" context="code">
        Add i18n to single file content.
      </action>
      <action dev="JJP" type="fix" context="code">
       ToC element is optional on skinconf.
      </action>
      <action dev="AG" type="update" context="code">
        Updated Ant 1.6.1
      </action>
      <action dev="JJP" type="update" context="code">
        Add i18n to tabs.
      </action>
      <action dev="RDG" type="update" context="code">
        Putting a jettyconf.xml file in your document directory will override
        the one supplied in the default Forrest context. Also no longer copies
        jettyconf.xml to build dir (one more file closer to no copying ;-))
      </action>
      <action dev="JJP" type="fix" context="code">
        Allow a full url image to be included on a pdf file.
        Use only tmp as the temporary directory.
      </action>
      <action dev="JJP" type="fix" context="code">
        Split build file in various parts (webapp,war,validate,site)
      </action>
      <action dev="DB" type="update" context="code">
        Support multiple skin descriptor files via the forrest.skins.descriptors property
      </action>
      <action dev="JJP" type="fix" context="code">
        Move ant + Jetty under tools on the build target
      </action>
      <action dev="NKB" type="update" context="code">
        Libraries are not copied anymore in the servlet context of
        the dist and of the project being built; they are added
        instead to the classpath of jetty for the 'run' target and
        of the Cocoon CLI for the default 'site' target.
      </action>
      <action dev="DB" type="add" context="build" fixes-bug="FOR-108">
        New 'clean-dist' target for build.xml, which is now the default target.
      </action>
      <action dev="JJP" type="fix" context="code">
        Wrong directory being used for wiki grammars.
      </action>
      <action dev="JJP" type="update" context="code">
        Upgrade to Jing 20030619.
      </action>
      <action dev="NKB" type="update" context="code">
        Validation is now "dynamic", by setting the parser feature
        "http://apache.org/xml/features/validation/dynamic".
        This means that documents with DTD are fully validated,
        while documents without DTD are just checked for well-formedness.
      </action>
      <action dev="NKB" type="add" context="code">
        Added SkinconfTransformer, that augments the skinconf.xml
        by adding these attributes to colors if not present:
        @highlight, @lowlight, @font, @link, @vlink, @hlink.
      </action>
      <action dev="RDG" type="update" context="code" fixes-bug="FOR-59"
       due-to="Juan Jose Pablos" due-to-email="cheche@apache.org">
       Removed xml2xhtml.xsl import in profile2page.xsl that was not used (file not present).
      </action>
      <action dev="RDG" type="update" context="code" fixes-bug="FOR-98">
        New build target to build a webapp that can be distributed.
        "war" target depends on "code" which will produce an deployable webapp,
        "run" target depends on "webapp-local" which leaves many files in the project
        directory to ease editing (e.g. src, resources and skins)
      </action>
      <action dev="NKB" type="add" context="code">
        Now skins can get a stab at enhancing skinconf.xml, by placing
        a skinconf.xsl file in the skin directory.
        By default some values are added by the common skin, like
        default Forrest colors.
      </action>
      <action dev="JJP" type="update" context="code">
        Upgrade to cocoon 2.1.3
        nekodtd 0.1.9
        remove excalibur-concurrent-20020820.jar
        remove excalibur-cli-1.0.jar
        remove excalibur-datasource-vm12-20021121.jar
        remove jakarta-oro-2.0.6.jar
      </action>
      <action dev="RP" type="add" context="code">
        Add support for Openoffice Writer 1.1 files.
      </action>
      <action dev="NKB" type="update" context="code">
        Instead of forrest-targets.ent with Ant 1.6 Forrest can now also be used with
        the new import facility: &lt;import file="forrest-targets.xml"/&gt;
      </action>
      <action dev="NKB" type="add" context="code">
       Fixes to the krysalis skin to bring it up to snuff.
       Added lateral search bar.
       Added credits section.
       Use automatically skinnable borders
       Fix code font size.
       Other small enhancements.
      </action>
      <action dev="NKB" type="update" context="code">
        Automatic generation of borders from skin colors and naming convention.
        Rounded and straight 45 degrees corners supplied.

       For example, to generate a 'r'ounded corner for 't'op 'l'eft the size
       of '5' pixels of background 'header', foreground 'tab-selected' and
       border of 'tab-unselected' I can just ask for:

         /skin/images/rc-t-l-5-1header-2tab-selected-3-tab-unselected.png
      </action>
      <action dev="NKB" type="update" context="code">
        Removed all validation includes and excludes from the fresh site,
        except the most basic one. This means that the feature is to
        be considered deprecated.
      </action>
      <action dev="NKB" type="add" context="code">
        New "extra-css" tag in skinconf can contain css that is injected in
        forrest.css, added in the skins by default.
      </action>
      <action dev="NKB" type="add" context="code">
        New section in skinconf about colors used by the site.
        Enabled for krysalis-site and tigris-style.
        If a needed color is not specified, the default one is used.
      </action>
      <action dev="NKB" type="add" context="code">
        Now skin resources can be generated from skinconf.xml from xslt.
        For example '/myskin/css/my.css.xslt' is used by forrest on 'skinconf.xml'
        to get 'my.css'
      </action>
      <action dev="NKB" type="add" context="code" fixes-bug="FOR-98"
        due-to="Ross Gardler" due-to-email="ross@saafe.org">
        It is now possible to have two levels of tabs.
      </action>
      <action dev="NKB" type="add" context="code">
        External links are now identified by a small trailing icon.
        The icon can be overridden by the skin and the behaviour
        can be disabled in skinconf.xml.
      </action>
      <action dev="NKB" type="add" context="code">
        Added new 'tigris' skin, by using exactly the same
        skin version 1.1. from the project Style at http://style.tigris.org/.
        This will completely replace the avalon-tigris skin in subsequent versions.
        The avalon-tigris skin is to be considered deprecated and no longer
        developed.
      </action>
      <action dev="DB" type="add" context="code">
        Properties from ${user.home}/forrest.properties are loaded, after
        the project's forrest.properties and before the default-forrest.properties are.
      </action>
      <action dev="AG" type="update" context="code">
        Updated Ant 1.6.0
      </action>
      <action dev="DB" type="update" context="code">
        Refactored forrestbot to organize workstages and their implementations.
        Properties named by workstage and implementation for clarity and to
        prevent conflicts.
      </action>
      <action dev="DB" type="update" context="code">
        The 'clean-site' target appears in 'forrest -projecthelp'.  Deletes
        temp, webapp, and brokenlinks files too.
      </action>
      <action dev="DB" type="add" context="docs">
        Began documentation for new forrestbot; moved stable forrestbot docs
      </action>
      <action dev="NKB" type="fix" context="code" fixes-bug="FOR-87,FOR-88"
        due-to="Ross Gardler" due-to-email="ross@saafe.org">
        Now skins that are edited in place have their non-traversable
        resources also copied for static rendering.
      </action>
      <action dev="NKB" type="add" context="code"  >
       New file format: '.aart'. These are text files that are converted
       automatically be Cocoon in SVG, if requested with a '.png' extension.
      </action>
      <action dev="NKB" type="update" context="code"  >
        Updated and separated in their directory all the resources
        needed by Chaperon, and make the pipeline generate the
        xml grammar versions if unavailable.
        This fixes some wiki rendering bugs and makes sections
        follow the correct level nesting.
      </action>
      <action dev="NKB" type="update" context="code"  >
        Now also all forrest /resources are editable in forrest.home
        and translations in their source space.
      </action>
      <action dev="NKB" type="update" context="code" fixes-bug="FOR-85"
        due-to="Ross Gardler" due-to-email="ross@saafe.org">
        Skins are now editable directly in FORREST_HOME.
      </action>
      <action dev="NKB" type="fix" context="code" fixes-bug="FOR-86"
        due-to="Ross Gardler" due-to-email="ross@saafe.org">
        DHTML menus in Krysalis skin now work on all levels.
      </action>
      <action dev="DC" type="update" context="code">
        Updated Entity Resolver from pre-release to official
        xml-commons-resolver-1.1 release.
      </action>
      <action dev="JJP" type="update" context="code">
        Updated Jetty to 4.2.14
      </action>
      <action dev="NKB" type="update" context="code">
        Removed the deprecated Ant @tag@ substitution method for skins to
        reduce copying further.
      </action>
      <action dev="JJP" type="fix" context="code">
      Wrong default value for translations directory.
      </action>
      <action dev="NKB" type="update" context="code">
         All resources in skins/common/images|scripts are used if the
         corresponding resource is not found in the skin being used.
         Moved under these dirs the images and the scripts that were placed by
         default under resources/images or copied in each skin, and added a
         temporary sitemap rule to route the request of the images to the new
         location.
      </action>
      <action dev="NKB" type="update" context="code">
          Moved the images of fresh-site to the src/content/xdocs directory,
          for the new layout that has been decided on forrest-dev.
      </action>
      <action dev="NKB" type="add" context="code">
          Now images are generated from the xdocs content dir as if they
          were in the resources/images dir. The latter will be phased out.
      </action>
      <action dev="NKB" type="fix" context="code">
          Fixed the handling of images and resources in the resources.xmap
          pipeline, to cater for the new system that does not copy docs prior
          to rendering.
      </action>
      <action dev="NKB" type="add" context="code">
          Added a new property to forrest.properties
           (project.raw-content-dir=${project.content-dir}/content)
           to define where raw files are to be served from.
           Also removed the internal property real-content.dir that was
           used internally for this and replaced it with a raw-content.dir
           property.
      </action>
      <action dev="NKB" type="update" context="code">
          Major update to inner working of the krysalis-site skin:
          - removed all use of the spacer.gif image
          - replaced all visual enhancement icons with css icons
          - fixed CSS and html validation
          - reduced final output size,
          - removed all font tag usage in favor of css
          - added aural (speech) style in css
          - reduced usage of nested tables
          - refactored main xhtml stylesheet to be more clear and maintainable
          - refactored css to have a single small place where to define the skin colors
          - changed icons to original icons (made by me and not gotten from elsewhere)
          - removed unused icons.
          - made location of minitoc configurable as "page", "menu", or "both"
      </action>
      <action dev="NKB" type="update" context="code">
          Removed duplicated copying of files during the creation of the
          distro. Now the command-line context dir is like the webapp context dir.
          This reduces Forrest build time from 53 to 19 seconds on my system.
      </action>
      <action dev="NKB" type="fix" context="code"
        due-to="Sebastian Bergmann"  due-to-email="sb@sebastian-bergmann.de">
          Fixed bug in the autodownload support for skins that was preventing
          custom skins in the project source dir from working.
      </action>
      <action dev="JJP" type="update" context="code">
          Added support for docbook version 4.1.2. Allows importing files
          from various editors (Open office, Abiword).
      </action>
      <action dev="JJP" type="fix" context="code">
          Added default translation for menu on fresh-site so it is used
          when the user locale can not be found.
          Synchronized some I18n labels after a modification on fresh-site.
      </action>
      <action dev="JJP" type="add" context="code"
        due-to="Jan Materne"  due-to-email="Jan.Materne@rzf.fin-nrw.de">
          Patch facility to be used by any contributor (From Ant's project).
          To use it run "build.[sh|bat] patch".
      </action>
      <action dev="JJP" type="update" context="code"
        due-to="Jan Materne"  due-to-email="Jan.Materne@rzf.fin-nrw.de">
          Added German Translation for menu in fresh-site example seed.
      </action>
      <action dev="NKB" type="fix" context="code"
        due-to="Eric BURGHARD"  due-to-email="eburghar@free.fr">
          Patched directory2book.xsl to be able to serve raw documents from the
          side menu (e.g. pdf); previously it always generated .html links.
      </action>
      <action dev="NKB" type="add" context="code">
        Skins can now be packaged, downloaded and automatically installed.
        See <link href="site:skin-package">documentation</link>.
      </action>
      <action dev="JJP" type="update" context="code"
        due-to="Eric Burghard" due-to-email="eburghar@free.fr">
        Added creation of TOC support on PDF files.
        Improved so it uses value from skinconfig.xml.
        Improve algoritm to define font size for section/subsection/...
      </action>
      <action dev="JJP" type="add" context="code" fixes-bug="FOR-9">
       First I18n integration for menus in forrest.
      </action>
      <action dev="JJP" type="update" context="code">
        In the generated "changes" document, add "version_" to section@id
        as required by document-v12.
        Sort action types order to "add","remove","update","fix".
      </action>
      <action dev="JJP" type="fix" context="build">
        The 'validate-site' build target will validate the intermediate xdocs.
      </action>
      <action dev="JJP" type="add" context="code" fixes-bug="FOR-9"
        due-to="Ramón Prades" due-to-email="rprades@porcelanosa.com">
        Integrate Lucene on Forrest. Check the bug report for more info.
      </action>
      <action dev="JJP" type="add" context="code" fixes-bug="FOR-56">
        Added XSP support.
        For old sitemap.xmap add this tag:
        &lt;map:generator name="serverpages"
        src="org.apache.cocoon.generation.ServerPagesGenerator"/>
      </action>
    </release>
    <release version="0.5.1" date="2003-10-06">
      <action dev="JT" type="fix" context="code" fixes-bug="FOR-66, FOR-62">
        Upgrade to Cocoon 2.1.2, which fixes a bug that caused some
        pages in a site not to be rendered from the command-line, and
        has some cosmetic improvements.
      </action>
      <action dev="JT" type="fix" context="code">
        In skinconf.xml, made project-description optional to keep
        compatibility with 0.4.
      </action>
      <action dev="JT" type="add" context="code" fixes-bug="FOR-67">
        Added obfuscate-mail-links skinconf.xml option, on by default.
      </action>
      <action dev="JT" type="fix" context="code" fixes-bug="FOR-65">
        Fix forrest-site tables bug that broke Opera
      </action>
      <action dev="JT" type="fix" context="build">
        forrest.antproxy.xml script now properly fails when Cocoon fails
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed URLs for comma-separated bug keys in status.xml
      </action>
      <action dev="JT" type="fix" context="code" fixes-bug="FOR-47, FOR-48">
        Fix bugs in forrest.bat|sh scripts encountered when used in
        odd environments (perl and Win9x).
      </action>
      <action dev="JT" type="fix" context="code">
        The 'forrest' command no longer sources /etc/antrc and
        ~/.antrc, which solves problems on some *nix distributions.
      </action>
    </release>
    <release version="0.5" date="2003-09-13">
      <action dev="JT" type="add" context="docs">
        Added new document to facilitate
        upgrading to v0.5
      </action>
      <action dev="SN" type="add" context="code">
        Added @label support for note and warning elements.
      </action>
      <action dev="DC" type="fix" context="code">
        Fixed java.lang.reflect.InvocationTargetException caused by catalog DTD
        HTTP lookup. The build had an extra and older resolver.jar
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-31">
        Fix character return on line feed for fresh-site on the zip distribution
      </action>
      <action dev="JJP" type="fix" context="code">
         New property "bugtracking-url" to allow a bug tracking systems
         other than bugzilla.
      </action>
      <action dev="JJP" type="fix" context="code"
        due-to="Eirik Bjørsnøs"  due-to-email="bjorsnos@stud.ntnu.no">
         Added a "forrest clean" task that removes the project build directory.
      </action>
      <action dev="JT" type="update" context="code">
        In the forrest-site skin and derivatives, display the author and version at the
        bottom of the page, as krysalis-site does.  Also added parsing for CVS Revision
        tags, so <code>&lt;version>$Revision: 1.288 $&lt;/version></code> can be used.
      </action>
      <action dev="JT" type="add" context="code">
        Added ability to have version-specific overridden sitemaps.  For
        example, src/documentation/sitemap-0.5.xmap will be used by Forrest 0.5
        in preference to any others present in the same directory.  This means a
        site with overridden sitemaps can build with Cocoon versions expecting
        different sitemap formats.
      </action>
      <action dev="JJP" type="update" context="code"
        due-to="Dave Brondsema" due-to-email="dave@brondsema.net">
        Added email template for html content in common skin.
      </action>
      <action dev="JJP" type="fix" context="code"
        due-to="Eirik Bjørsnøs"  due-to-email="bjorsnos@stud.ntnu.no">
         Support for version, type and notice on html format.
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-34">
        Style information on the common skin.
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-46"
        due-to="Ross Gardler" due-to-email="ross@saafe.org">
        build directory created in wrong directories.
      </action>
      <action dev="JJP" type="fix" context="code">
        On fresh-site:
        Synchronize size for group and project logo.
        Added description on site.xml elements so it displays tooltip.
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-43">
       Remove errors for fopx:bookmarks element.
      </action>
      <action dev="JJP" type="update" context="code" fixes-bug="FOR-23">
        Add description to {group, project} logo.
      </action>
      <action dev="JT" type="update" context="code">
        Switched off skinconf.rnc validation to promote better forwards-compat.
      </action>
      <action dev="JT" type="update" context="code">
        Upgraded to Cocoon 30/08/2003, now with ability to exclude URLs from
        being processed, in cli.xconf.
      </action>
      <action dev="DC" type="update" context="code" fixes-bug="FOR-20"
        due-to="Ralf Hauser" due-to-email="hauser@acm.org">
        Add "title" attribute to menu item links using the "description"
        attribute from entries in site.xml or book.xml
      </action>
      <action dev="DC" type="update" context="code"
        due-to="Ramón Prades" due-to-email="rprades@porcelanosa.com">
        The generated Tables of Contents can be configured to show a certain
        number of section levels. Default is two levels. Level 0 means show
        no ToC at all. See the fresh-site skinconf.xml for example usage.
      </action>
      <action dev="JT" type="update" context="code">
        New 'expand-dtd' target for generating monolithic DTDs suitable for use
        in catalog-ignorant XML editors such as IDEA.
      </action>
      <action dev="JJP" type="fix" context="code"
        due-to="J.Pietschmann"  due-to-email="pietsch@apache.org">
        Allow images to scale on pdf output.
      </action>
      <action dev="JJP" type="add" context="code"
        due-to="Joerg Heinicke"  due-to-email="joerg.heinicke@gmx.de">
        Comma separated bugs have a link to bugzilla systems.
      </action>
      <action dev="JJP" type="fix" context="code"
        due-to="Ringo de Smet"  due-to-email="DeSmet_Ringo@emc.com">
        Docbook table header is shifted one column.
      </action>
      <action dev="NKB" type="fix" context="code">
        ihtml now works again. Had to add a jtidy configuration that prevented it to output
        tidies html to the pipeline, thus making the stylesheet unusable. Also had to fix
        the sitemap schema.
      </action>
      <action dev="JJP" type="fix" context="code">
        Cleanup maps:components definitions on sub-maps.
        Remove indent attr from the xsl:output as it is define on serializer.
        Move xsl:output for *2document.xsl to "xml-document" serializer.
      </action>
      <action dev="JJP" type="fix" context="code" fixes-bug="FOR-51"
        due-to="Eirik Bjørsnøs"  due-to-email="bjorsnos@stud.ntnu.no">
        abstract element was ignored for html output.
      </action>
      <action dev="JJP" type="fix" context="code"
        due-to="Ramón Prades" due-to-email="rprades@porcelanosa.com">
        Unescape strings, so they display properly on the trail for all skins.
      </action>
      <action dev="JJP" type="fix" fixes-bug="FOR-49" context="code"
        due-to="Dave Brondsema" due-to-email="dave@brondsema.net">
        Use sync task to clean the tmp directory for xdocs.
      </action>
      <action dev="NKB" type="add" context="code">
        Now the Krysalis skin has javascript-collapsable menus.
      </action>
      <action dev="JT" type="update" context="code">
        site.xml changes now picked up without requiring a reload of the webapp.
      </action>
      <action dev="JT" type="update" context="code">
        Updated to Cocoon 20/7/03, and use the new command-line (cli.xconf), which
        makes Forrest static rendering more than twice as fast as before.
      </action>
      <action dev="NKB" type="update" context="code" due-to="Frederic Robesyn"
         due-to-email="rofre@swing.be">
        New Icons.
      </action>
      <action dev="JJP" type="add" context="code" due-to="Dave Brondsema"
         due-to-email="dave@brondsema.net">
         Added a text2document.xsl stylesheet. Convert to unix format so it stop
         EOL character. Simplify so it does not use chaperon format.
         format.
       </action>
      <action dev="JT" type="fix" context="code">
        Stopped the rewriting of extensions.
      </action>
      <action dev="JT" type="update" context="code">
        Updated Cocoon to -D "2003/06/22 12:00". This fixes a bug where files
        with unknown extensions were written with 'null' appended to their
        filename.
      </action>
      <action dev="JT" type="update" context="code">
        Allow any sort of content inside <code>resources/</code>, which will be
        made available to the sitemap but not automatically copied to the
        generated site output.
      </action>
      <action dev="JT" type="update" context="code">
        Add a flag for email obfuscation, and turn it off by default.
      </action>
      <action dev="NKB" type="fix" context="code">
        Fixed bug that showed the krysalis-site skin in IE browsers from
        a remote site to start with a font size of 100.
        Also made the font size script kick in at the start of the
        page rendering, as before it resized only after all the page
        was loaded, which was not nice to say the least.
      </action>
      <action dev="JT" type="add" context="code">
        Added alternative menu/tab selection algorithm, that uses tab attributes
        in site.xml instead of relying on physical site structure (directories).
      </action>
      <action dev="JT" type="fix" context="code">
        In PDFs, section titles are no longer numbered/reduced in size indefinitely.
      </action>
      <action dev="JT" type="update" context="code">
        Upgraded FOP from 0.20.4 to 0.20.5.
      </action>
      <action dev="JT" type="update" context="code">
        Upgraded Cocoon to M2.
      </action>
      <action dev="JT" type="fix" context="code">
        Make FAQ 'Questions' section more legible, and avoid duplicate numbering
        in FAQ PDF.
      </action>
      <action dev="JT" type="fix" context="code">
        Links to subdirectories no longer blow up the command-line rendering.
      </action>
      <action dev="JT" type="update" context="code">
        The 'backcopy' command will now copy all types of custom content
        (*.xmap, skinconf.xml, xdocs, images, stylesheets, DTDs).
      </action>
      <action dev="JT" type="update" context="code">
        Add a @indexfile attribute to tabs.xml, so that the user can specify
        which file the tab links to.
      </action>
      <action dev="JT" type="fix" context="code">
        Enable link rewriting for *.ehtml files.
      </action>
      <action dev="JT" type="fix" context="code">
        Enable link rewriting for images and figures (@src attribute).
      </action>
      <action dev="JT" type="update" context="code">
        Add &lt;elaborate> to the FAQ &lt;question> element, which lets one
        provide some background (elaboration) in the FAQ body without cluttering
        the FAQ list.
      </action>
      <action dev="JT" type="update" context="code">
        Allow plain text (instead of just block-level elements) in the FAQ's
        &lt;answer> element.
      </action>
      <action dev="JT" type="add" context="code">
        Added a <code>forrest.maxmemory</code> property specifying the maximum
        amount of memory allocated to the JVM. Useful for rendering large PDFs.
        Added <code>forrest.jvmargs</code> property for other JVM options.
      </action>
      <action dev="JT" type="fix" context="code" due-to="Stefan Bodewig"
        due-to-email="bodewig@apache.org">
        Get breadcrumbs working in Mac IE 5, and don't capitalize the first
        letter of each link in the forrest-site skin.
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed bug where absolute paths to images were created in the
        <code>build/site</code> directory.
      </action>
      <action dev="JT" type="fix" context="code">
        Get the Wiki syntax support working again.
      </action>
      <action dev="JT" type="update" context="code">
        Created new document-v12 DTD module, containing all DTD improvements
        made since 0.4 was released, and use it to define new v12 versions of
        all DTDs (document, howto, faq, etc).  The doc-v12 DTD removes many
        restrictions in the DTD that were found to be unnecessary, and is closer
        to the HTML content model.  A list of changes can be found in <link
          href="site:document-v12">the doc-v12 sample page</link>.
      </action>
      <action dev="SN" type="fix" context="code">
        Fixed rendering of images in PDF for images not located in the
        resources/images dir.
      </action>
      <action dev="JT" type="fix" context="code">
        Add automatic (doctype-triggered) handling of todo and changes XML
        files, regardless of file name or location in the directory tree.  The
        root changes.html and todo.html files are still generated from
        status.xml.
      </action>
      <action dev="NKB" type="update" context="code">
        On the ForrestBar, added a community menu, made 'AskSam' a resources
        submenu, moved the search part to the right.
      </action>
      <action dev="JT" type="fix" context="code">
        In <code>skins/common/xslt/html/tab2menu.xsl</code>, renamed template
        'unselected-tab-href' to 'calculate-tab-href', potentially breaking 3rd
        party skins.
      </action>
      <action dev="JT" type="fix" context="code">
        Fix menu bug where links with #fragment identifiers wouldn't display.
      </action>
      <action dev="JT" type="fix" context="code">
        Get images in PDFs working with FOP 0.20.x.  This requires the user to
        download jimi.jar from <link
          href="http://java.sun.com/products/jimi/">Sun</link> and place it in
        the <code>lib/core</code> (src distro) or <code>WEB-INF/lib</code>
        (binary distro) directory.
      </action>
      <action dev="NKB" type="fix" context="code">
       On krysalis skin: fixed print css, also using text instead of
       logos and adding the footer, and changed link colors to blues and
       red for active links.
      </action>
      <action dev="NKB" type="update" context="code">
       On krysalis skin: fixed left navigation bar icons and sizing using divs
       instead of list elements, made all links underlined,
       added space to the bottom of the page text, and changed font
       increase-decrease links to buttons.
      </action>
      <action dev="NKB" type="add" context="code">
       On krysalis skin: users can select font size, reworked left-bar inclusion
       of page section titles, made them only one level deep, moved buttons after
       the left navbar, added publish date on top right navbar.
       For both Forrest and krysalis skins, added single background pixel line below
       unselected tabs and made selected tab more prominent.
      </action>
      <action dev="JT" type="fix" context="code" due-to="Juan Jose Pablos"
        due-to-email="cheche@che-che.com">
        Fixed <code>java.lang.NoClassDefFoundError:
          javax/servlet/ServletInputStream</code> error.
      </action>
      <action dev="NKB" type="update" context="code">
        Enabled multiple output links on each page (print - pdf - xml)
        They can be enabled by adding the relative disable-*-link elements
        and setting them to false.
      </action>
      <action dev="JT" type="fix" context="code">
        Allow users to determine which URLs Forrest should ignore, by overriding
        <code>stylesheets/filterlinks.xsl</code> (and other stylesheets in that
        directory).
      </action>
      <action dev="JT" type="update" context="code">
        Upgraded to 2003-03-11 version of Cocoon
      </action>
      <action dev="JT" type="fix" context="code">
        Docbook stylesheet improvements.
      </action>
      <action dev="NKB" type="update" context="code">
        ForrestBar is now
        <link href="http://www.mozilla.org/projects/phoenix/">Phoenix</link> compatible.
      </action>
      <action dev="NKB" type="update" context="code">
        Added links for both possible local forrests (port 8080 and 8888),
        and make them configurable in properties.xml.
        Thanks to Mark Vovsi for pointing it out.
      </action>
      <action dev="JT" type="fix" context="code">
        Fix a bug with forrest.antproxy.xml introduced in 0.4, which caused
        unresolved '${project.home}' variables.
      </action>
<!-- NKB Temporarily commented out, needs fix
      <action dev="NKB" type="add" context="code">
        Added the printer-friendly and xml-source links to the page.
        Included new icons for it in the process.
      </action>
      -->
      <action dev="NKB" type="update" context="code">
        Refactored the "transform-to-document" sitemap resource to do the
        the xinclude,  linkrewriter, and idgen steps.
      </action>
      <action dev="NKB" type="add" context="code">
        Added XInclude capability  to the documents. Remember to
        disable validations for files with xincludes as the xinclude is not
        performed during validation.
      </action>
      <action dev="NKB" type="add" context="code">
        Added DocBook 4.2 and simplified DocBook 1.0 to the schemas and
        to the validation catalogue.
        Added Docbook and simplified Docbook rendering capability for documents.
      </action>
    </release>
    <release version="0.4" date="2003-02-12">
      <action dev="JT" type="fix" context="code">
        Use meaningful fragment identifiers in krysalis-skin.
       </action>
      <action dev="JT" type="fix" context="code">
        Correctly ignore @role='pdf' credits in HTML
      </action>
      <action dev="NKB" type="fix" context="code">
        krysalis-site skin now works better with multi-level menus.
      </action>
      <action dev="NKB" type="update" context="code">
        Added the CSS validation logo, fixed all skins' CSS to validate,
        minor fixes due to the switch to full HTML-loose DTD.
      </action>
      <action dev="JT" type="fix" context="code">
        Normalize space in acronym titles.
      </action>
      <action dev="MP" type="fix" context="code">
        Make the forrestbot shell script work under Cygwin.
      </action>
      <action dev="JT" type="fix" context="code">
        Got skins working in the forrestbot.
      </action>
      <action dev="JT" type="add" context="code">
        Added a minimal template skin.
      </action>
      <action dev="NKB" type="fix" context="code" due-to="Berin Loritsch"
        due-to-email="bloritsch@apache.org">
        The problem with starting a new forked JVM is that all
        properties get lost.  This makes it able to use one forrest.properties
        for all multiple projects, and just create the docs from there.
      </action>
      <action dev="JT" type="fix" context="code" due-to="Bernhard Brandmair"
        due-to-email="Bernhard.Brandmair@integral.com">
        The menu is now limited to only pages in the current subdirectory and
        below.
      </action>
      <action dev="NKB" type="fix" context="code" due-to="Cathy Zura"
        due-to-email="czura@optonline.net">
        Added the cwiki stylesheets that were missing and an example in the
        fresh site seed.
      </action>
      <action dev="NKB" type="update" context="code">
        Make the forrest-site and krysalis-site skins more printer friendly by
        using CSS media type to hide navigations. the avalon-tigris skin already
        works well, the forrest-site one still needs tweaking.
      </action>
      <action dev="NKB" type="update" context="code">
        Use full loose DTD specification for html pages.
        This also makes the avalon-tigris skin show the same in Mozilla and IE.
      </action>
      <action dev="NKB" type="update" context="code">
        Switched all loglevels to ERROR.
      </action>
      <action dev="NKB" type="update" context="docs">
        Added page for ForrestBar on the site with a simple link and an autoinstall link
        to the forrestbar.xpi generated by Gump every day.
      </action>
      <action dev="JT" type="fix" context="code">
        Correctly serve swf files.
      </action>
      <action dev="JT" type="fix" context="code">
        Fix <code>site:</code> and <code>ext:</code> rewriting in book.xml,
        ihtml, ehtml and cwiki files in subdirectories.
      </action>
    </release>
    <release version="0.3" date="2003-01-30">
      <action dev="JT" type="fix" context="code">
        If <code>build/webapp/content/xdocs/*</code> is more recent than
        <code>src/*</code> equivalent, <code>forrest webapp</code> won't clobber
        it.  A new <code>forrest backcopy</code> command will copy
        <code>build/webapp/content/xdocs</code> content back to
        <code>src/documentation/content/xdocs</code>.
      </action>
      <action dev="JT" type="fix" context="code"><code>forrest-site</code> skin is now HTML 4.0.1 compliant.  The
        compliance validator logo can be switched off with a
        <code>skinconf.xml</code> element.
      </action>
      <action dev="JT" type="fix" context="code">
        Indirectly referenced files in skins (e.g. images in
        CSS<code>url()</code>'s) are now copied across to the rendered site.
        Previously, we relied on spidering to cover the URI space, which has
        proved insufficient.
      </action>
      <action dev="JT" type="update" context="code">
        Lots of FAQ improvements:
        -Improved URI space by using <code>@id</code> attributes as the
            #fragment-identifier for &lt;faq&gt; and &lt;part&gt; elements.
        -Number FAQ entries and categories
        -Added back-links from FAQ entries to the menu
        -Process tags in &lt;question&gt; in menu entries
        -Indent FAQ text
        -FAQ sample added to seed project
        Thanks to Joerg Pietschmann and Ralf Hauser for the suggestions.
      </action>
      <action dev="NKB" type="update" context="code" due-to="Stefan Michels"
        due-to-email="stephan@apache.org">
        On avalon-tigris skin it's now possible to add a mysite.css file
        to customize the style. An example that can be used is from
        chaperon.sf.net.
        Also added a rounded corner to paragraphs, and many minor fixes.
      </action>
      <action dev="NKB" type="update" context="code">
        Fixed the annoying link highlighting on the krysalis skin
        due to the border. Removed the border, now it highlights fine.
      </action>
      <action dev="JT" type="add" context="code">
        Added &lt;acronym&gt; tag.
      </action>
      <action dev="JT" type="add" context="code">
        Added a means to override the check for existing content:
        <code>forrest seed -Dskip.contentcheck=yes</code>
        Thanks to Tom Klaasen.
      </action>
      <action dev="NKB" type="add" context="code">
        Added the possibility to use svg files instead png images.
        That is, if an image is found in the images dir that is svg and
        the browsers requests a png with the same name, the png is created
        from the svg automatically with batik.
      </action>
      <action dev="NKB" type="add" context="code">
        Added the possibility to use wiki files in xdocs instead of xml files.
        They must have a .cwiki extension, and follow the chaperon wiki format ATM.
      </action>
      <action dev="NKB" type="update" context="code">
        Updated part of the editor so that it now can save files in wiki format.
        Still needs more work.
      </action>
      <action dev="NKB" type="update" context="code">
        Updated Batik Block so that now PNGs can be created correctly from SVG.
      </action>
      <action dev="NKB" type="add" context="code">
        Added "Edit Page" button to edit the current page in Composer.
        Still needs an icon.
      </action>
      <action dev="NKB" type="add" context="code">
        Added the possibility to use html files in xdocs instead of xml files.
        They must have an .ihtml extension.
      </action>
      <action dev="JT" type="fix" context="code">
        HTML fragment identifiers for sections are now meaningfully named, based
        on the section title, rather than <code>document-id()</code>-generated
        characters.
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed site regeneration bugs where changing the skin in
        <code>forrest.properties</code> had no effect after the first build.
      </action>
      <action dev="JT" type="add" context="code">
        Added copyright statement to PDF footer (10pt, light-grey text).  if a
        skinconf.xml 'credit' element has a role='pdf' attribute, this text will
        be used instead. Thanks to Keiron Liddle.
      </action>
      <action dev="JT" type="fix" context="code">
        Now all files in <code>src/documentation/content</code> (except xdocs)
        and <code>src/documentation/resources/images</code> are copied across
        when Forrest generates a static site.  This fixes the problem when an
        unparseable file links to another, and Cocoon can't crawl (and hence
        copy) the linked-to file.  An example of this are CSS
        <code>url('foo.png')</code> image refs (so krysalis-site will now work
        properly).  Also, large batches of pregenerated files like Javadocs will
        now be copied across instead of individually traversed.
      </action>
      <action dev="JT" type="add" context="code">
        New <code>site.xml</code> file in content/xdocs.  This is used to
        implement &lt;link href="site:internalURI"&gt; 'semantic' links,
        &lt;link href="ext:externalURI"&gt; aliases to external links, and
        renders <code>book.xml</code> files obsolete.  See <link
          href="site:linking">Menus and Linking</link> for more info.
      </action>
      <action dev="DC" type="update" context="code">
       Updated some documentation, especially Forrestbot Introduction
      </action>
      <action dev="NKB" type="fix" context="code">
        Now files present in the content dir are correctly linked and
        copied verbatim by the CLI. The wellknown files are given with the
        correct mime-type, and links in html and xml are followed.
      </action>
      <action dev="JT" type="update" context="code">
        Update to 2002-12-26 Cocoon.
      </action>
      <action dev="NKB" type="update" context="code">
        Tweaked ForrestBar, added a sub-project menu for Jakarta, fixed
        download link and added submenu for tools and gump.
      </action>
      <action dev="NKB" type="update" context="code">
        Added rss capability to changes generation.
      </action>
      <action dev="NKB" type="update" context="code">
        Added latest krysalis-site skin, using common templates where possible.
        There is a changes2rss stylesheet that still needs sitemap changes to run.
      </action>
      <action dev="NKB" type="update" context="code">
        Now even the selected tab retains a link, to be able to easily select
        the main page of that tab even if it is "current".
      </action>
      <action dev="JT" type="fix" context="code" due-to="Nick Chalko"
        due-to-email="nick@chalko.com">
        Fixed a bug in the search form where there was no space between search
        term and 'site:' term.  Search form also no longer requires Javascript.
      </action>
      <action dev="JT" type="update" context="code">
        Allow special handling of tab hrefs with #anchor references in them.  By
        default, such menu links are always clickable.
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed a bug where the no menu entry is 'selected' when in subdirectories.
      </action>
      <action dev="NKB" type="update" context="code">
        Updated avalon-tigris skin by merging what was in CVS here and
        what was used in Avalon with its Cocoon-generated site.
        The visual effect is the same to the current framework and Exalibur
        Avalon sites.
      </action>
      <action dev="NKB" type="fix" context="code">
        Now error reporting in CLI runs should work and show the cause of the error;
        before it was just reporting [broken link].
      </action>
      <action dev="NKB" type="update" context="code">
        Updated latest Cocoon jars: chain metamodule name set to "forrest",
        and it is used instead of the default one.
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed a bug where multiple menu entries are highlighted if the filenames
        share a common prefix.
      </action>
      <action dev="DC" type="add" context="build">
        Allow configuration of a project local-catalog and the entity resolver
        verbosity level, via forrest.properties configuration. This replaces
        tokens in the default cocoon.xconf
      </action>
      <action dev="JT" type="fix" context="code" due-to="Omar Belhaj"
        due-to-email="belhaj@online.no">
        Fixed a bug in forrest.bat, which would fail if run from a different
        drive to that Forrest was installed in.
      </action>
      <action dev="JT" type="fix" context="code">
        Fix bug where the webapp would break due to missing XML jars under JDK
        1.2/1.3.
      </action>
      <action dev="JT" type="fix" context="code">
        Moved credit and host logos to bottom left corner on forrest-site skin.
      </action>
      <action dev="JT" type="fix" context="build">
        Make the seed project use the correct 'built with Apache Forrest' logo
        instead of Cocoon + Centipede logos.
      </action>
      <action dev="JT" type="update" context="code">
        Rewrite skins to share a common block of XSLT, which is used via
        &lt;xsl:import&gt;. This should make skin maintenance much easier.
      </action>
      <action dev="JT" type="remove" context="code">
        Removed the 'basic' skin, to be shortly replaced with something much more
        maintainable.
      </action>
<!-- action dev="JT" type="remove" context="code" issue-ref="skin_images" -->
      <action dev="JT" type="remove" context="code" >
        Removed some images (built-with-cocoon.gif, centipede-logo-small.gif)
        from the skins, and moved them to
        <code>src/documentation/resources/images</code>, as they are
        Forrest-specific.
      </action>
      <action dev="NKB" type="update" context="docs">
        Added enhancements to status.xml to comply with the needs for a complete status file,
        like other "STATUS" text files at Apache.
        Stylesheets not yet done.
      </action>
      <action dev="NKB" type="update" context="code">
        Added buttons for nightly Gump runs and local forrest. Corrected and completed
        existing interface, and made buttons flat (the bar is slimmer too).
        We need icons for the new buttons.
      </action>
    </release>
    <release version="0.2" date="2002-11-16">
      <action dev="DC" type="fix" context="code">
        Fixed bug where validation of xdocs was not descending into
        sub-directories.
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed bug where changes to the breadcrumb links in skinconf.xml were
        ignored until the Forrest binary was rebuilt, or the project
        <code>build/tmp/</code> deleted.
      </action>
      <action dev="JT" type="fix" context="code">
        Webapp now works under JDK 1.3 (parsers weren't being copied)
      </action>
    </release>
    <release version="0.2rc1" date="2002-11-13">
      <action dev="SN" type="add" context="code" due-to="Bruno Dumon"><link href="site:cap">SourceAction</link> or the so-called
        'content aware pipelines' enables conditional processing of XML
        documents based on their grammar, being indicated by their DTD,
        XML Schema PI, root element, or a processing instruction (PI)
        in the prolog of the document.
      </action>
      <action dev="NKB" type="update" context="code">
        Added a convert dir in the resources with stylesheets and buildfile
        to help convert Anakia and Maven-based sites.
      </action>
<!--
      <action dev="NKB" type="update" context="code">
        Now Forrest will look for xdocs in the content dir first, and fallback to
        the legacy xdocs dir.
      </action>
      -->
      <action dev="JT" type="add" context="build">
        Validate project sitemaps and choice of skin
      </action>
      <action dev="DC" type="add" context="code">
        Validation of important core configuration files at build-time using
        RELAX NG.
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed selected menu link (meant to be inactive and yellow)
      </action>
      <action dev="JT" type="add" context="code">
        Now an id attribute on any XML element below &lt;body&gt; will be rendered
        as an anchor which can be linked to.
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed webapp redirect problems under Tomcat and (sometimes) under Jetty.
      </action>
      <action type="add" context="code" dev="NKB">
        Added alpha system for editing content in the webapp.
        To try it do "forrest run" and point the browser to http://localhost:8888/edit/  .
      </action>
      <action dev="JT" type="add" context="code" due-to="Peter Donald"
        due-to-email="peter@apache.org">
        Added avalon-tigris skin.
      </action>
      <action dev="JT" type="remove" context="code">
        Removed unmaintained skins: avalon-site, jakarta-site, xml-apache-site,
      </action>
      <action dev="NKB" type="update" context="code">
        Removed the dependency that the default "site" target had on clean-site.
        It means that running  "forrest" will not delete the current files in ./build/site/** .
      </action>
      <action dev="NKB" type="update" context="code">
        Now Cocoon serves a file directly if the filename matches
        the one in ./src/documentation/contents/** .
      </action>
      <action dev="NKB" type="update" context="code">
        Put the internal matches in a separate pipeline with internal-only="true".
      </action>
      <action dev="NKB" type="fix" context="code">
        Now site builds do not delete files in build/site that are included in the
        Ant list of default excludes, like CVS info.
      </action>
      <action dev="NKB" type="add" context="build">
        Included Jetty in the distro.
        type "forrest run" to have the ./build/webapp dir contents be run
        in a local web server, starting from http://localhost:8888/index.html
      </action>
      <action dev="JT" type="add" context="code" due-to="Kevin Ross"
        due-to-email="Kevin.Ross@iVerticalLeap.com">
        Added a docbook2document.xsl stylesheet to library/xslt.
      </action>
      <action dev="JT" type="add" context="code">
        XML validation is now fully configurable through a hierarchical set of
        <code>forrest.validation.*{includes,excludes,failonerror}</code>
        properties.
      </action>
      <action dev="JT" type="add" context="code">
        Validate XSLTs in user skins and <code>resources/stylesheets</code>
        directories.
      </action>
      <action dev="DC" type="add" context="docs">
        Added new document <link href="site:compliance">Standards Compliance</link>
        Thanks to Robert Koberg.
      </action>
      <action dev="DC" type="add" context="build">
        Added Jing "RELAX NG validator in Java" and initial grammar for
        skinconf.xml files. These config files now get validated during the build.
      </action>
      <action dev="JT" type="add" context="code">
        Enhanced forrest-site skin's tabs.  Any URL (not just directories) can now
        be tabbed with a new 'href' attribute. There is an improved 'longest match'
        algorithm for deciding which tab is on which is more robust than the old
        one.
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed a bug where having a tabs.xml link to a file not otherwise mentioned
        in book.xml caused a broken link.  See
        <link
          href="http://marc.theaimsgroup.com/?t=103607092100004">forrest-dev
          discussion</link>
      </action>
      <action dev="JT" type="fix" context="docs">
        Fixed all broken links in the Forrest site.
      </action>
      <action dev="JT" type="fix" context="docs">
        Simplified the sitemap-stylesheet contract.  Instead of 'dir' and
        'resource' parameters with varying meaning, there is just one 'path'
        parameter.
      </action>
      <action dev="JT" type="add" context="docs">
        Allow user to specify what XML files to validate via
        <code>forrest.validate.{includes,excludes}</code> properties.
      </action>
      <action dev="JT" type="fix" context="docs">
        Fixed broken PDFs in most subdirectories.
      </action>
      <action dev="JT" type="add" context="code">
        Added a subdirectory to the template site and fixed all broken links.
      </action>
      <action dev="JT" type="add" context="code">
        XML doc files are now validated before rendering with the 'validate'
        target.  Uses OASIS catalogs provided by Forrest, optionally augmented by
        user project catalogs.
      </action>
      <action dev="JT" type="fix" context="code">
        The distribution no longer requires Ant to be preinstalled.  Now, nothing
        but a Java installation is needed.
      </action>
      <action dev="JT" type="fix" context="build">
        Building Forrest no longer requires a network connection (for downloading
        Centipede).  It is buildable by typing 'ant' or with the provided build
        scripts.
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed ClassNotFoundException when running on JDK1.4.x
      </action>
      <action dev="JT" type="fix" context="code">
        Allow <code>xml:space='preserve'</code> attribute on &lt;p&gt; element, which preserves
        space without the changed font and block display that &lt;code&gt; uses.
      </action>
      <action dev="JT" type="fix" context="code">
        Fixed a bug where the log files weren't being created. Thanks to Vladimir
        Bossicard for reporting.
      </action>
      <action dev="JT" type="add" context="code">
        User projects can now override the default cocoon.xconf and logkit.xconf files,
        by placing these files in src/documentation/conf
      </action>
      <action dev="JT" type="fix" context="docs">
        PDFs for faq, changes and todo now work.
      </action>
      <action dev="JT" type="fix" context="build">
        "Change History" images (update.jpg, add.jpg etc) are now provided by
        default by Forrest (in images/), and need not be supplied by user projects.
      </action>
      <action dev="JT" type="add" context="build">
        User projects can now add custom classes and jars to Forrest doc builds.
        Useful for custom sitemap components, or overriding Forrest-provided jars.
      </action>
      <action dev="JT" type="update" context="build">
        The locations where Forrest expects doc files to be is now configurable via
        properties, that can be set in forrest.properties.
      </action>
      <action dev="JT" type="update" context="build">
        User projects may now specify their own sitemap, overriding the
        Forrest-provided one.
      </action>
      <action dev="JT" type="fix" context="docs">
        Made forrest-site skin fully generic, usable with any project. Skins are
        configured through an external 'skinconf.xml' file, specified by the
        project.
      </action>
      <action dev="JT" type="fix" context="docs">
        Fixed bug where multiple copies of the same image where generated, one for
        each directory. Now all image links are page-relative, leading to a single
        copy.
      </action>
      <action dev="JT" type="fix" context="docs">
        Fixed tab links, which were previously hardcoded and forrest-specific. They
        are now page-relative. tabs.xml file entries no longer have to end in
        '/'.
      </action>
      <action dev="DC" type="add" context="docs">
        Added new document <link href="site:your-project">Your Project
          - getting started with using Forrest</link>
      </action>
      <action dev="NKB" type="add" context="docs">
        Added to the &quot;forrest-site&quot; skin the ability to split source code
        larger than 80 chars in two or more lines.
      </action>
      <action dev="DC" type="add" context="docs" due-to="Bert Van Kets">
        Replace the &quot;forrest-site&quot; skin with the new &quot;bert&quot;
        skin.
      </action>
      <action dev="SN" type="add" context="build" due-to="Marc Portier" due-to-email="mpo@outerthought.org">
        Added the forrestbot - infrastructure and configuration for remote project building.
      </action>
      <action dev="NKB" type="add" context="docs" due-to="Leo Simons">
        Added breadcrumb trail script from the Avalon site skin.
      </action>
      <action dev="NKB" type="update" context="build">
        Updated Cocoon to 2.1-dev to use xsltc and new CLI status messages.
        Logs are in the <code>build/work/WEB-INF/logs</code> directory and the
        list of broken links is in the <code>build</code> directory.
      </action>
      <action dev="SN" type="add" context="code">
        added NekoDTD-based DTD documentation using a custom Cocoon Generator
      </action>
      <action dev="NKB" type="add" context="code"><link href="http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=102471820523388">draft forrest toolbar for Mozilla</link>
      </action>
      <action dev="SN" type="add" due-to="Marc Portier" due-to-email="mpo@outerthought.org" context="code">
        Initial import of <link href="site:libre-intro">Libre</link>
        facility - replacement for */book.xml
      </action>
      <action dev="SN" type="add" context="build">
        Added a draft DTD for the Gump Descriptor forrest.xgump
      </action>
      <action dev="NKB" type="add" context="build">
        Forrest website is being automatically built and published to krysalis.org
      </action>
      <action dev="BK" type="add" context="design">
        Designed a new skin for the Forrest documents. Particular attention to
        cross-browser issues.
      </action>
      <action dev="DC" type="add" context="docs">
        Added initial &quot;Dream List&quot; by harvesting statements from the
        forrest-dev mail list.
      </action>
      <action dev="NKB" type="add" context="build">
        Added simple xsl stylesheet for forrest.xgump.
        In IE6 and Mozilla 6 it renders using this, in older ones it uses the
        more simplifies CSS version.
      </action>
      <action dev="NKB" type="add" context="build">
        Added Forrest to Gump runs.
      </action>
      <action dev="NKB" type="add" context="docs">
        Added preliminary version of a scarab-like skin.
      </action>
      <action dev="NKB" type="add" context="build">
        Added simple css stylesheet for forrest.xgump.
        In IE and Mozilla 6 it renders.
      </action>
      <action dev="NKB" type="add" context="docs">
        Fixed links in Forrest home page and added: contributing, mailing list,
        list archives, who we are.
      </action>
      <action dev="NKB" type="update" context="build">
        Updated Centipede stuff to latest changes:
        - added lib/endorsed dir for endorsed jars that are put in global calsspath
        - changed the build scripts to not make direct reference to jar files
        - added "examples" dir in src and creation of examples jar in buils
        - added "testmodule" target to be run before committing stuff
        - added "gump" build to be run by Gump
      </action>
      <action dev="NKB" type="add" context="build">
        Merged forrest needed info in forrest.xgump.
      </action>
      <action dev="NKB" type="update" context="build">
        Updated project descriptor: now it should be usable by Gump.
        Added basic Forrest descriptor.
      </action>
      <action dev="NKB" type="add" context="code">
        Refactored site generation stuff to use skins; still need to integrate with xforrest descriptor.
        Added jakarta-site, xml-apache-site, cocoon-printer skins.
      </action>
      <action dev="SN" type="add" context="build">
        Imported Centipede as a build system.
      </action>
      <action dev="DC" type="update" due-to="Steven Noels" due-to-email="stevenn@outerthought.org" context="docs">
        Ensure that initial DTDs are valid and that the initial XML instances can be
        validated using these DTDs and OASIS Catalogs.
      </action>
      <action dev="SM" type="add" context="admin">
        Initial Import
      </action>
    </release>
  </changes>
<!-- ===================================================================== -->
<!-- TODO                                                                  -->
<!-- ===================================================================== -->
  <todo>
    <actions priority="high">
      <action type="fix" context="code" dev="open">
<!-- Please leave this action at the top -->
        Please see our Jira
        <link href="site:bugs">issue tracker</link> for tasks to be done.
        Note that the Todo list below is old. We need someone to move those
        tasks over to the issue tracker.
      </action>
      <action type="fix" context="code" dev="open">
        Rework the menu generation system to make it more flexible.  See thread
        <link
          href="http://marc.theaimsgroup.com/?w=2&amp;r=1&amp;s=Fixing+menus&amp;q=t">Fixing
          menus</link>
      </action>
      <action type="fix" context="code" dev="open">
        Define an 'object model' for Forrest sites, in the form of a Cocoon
        pipeline, that defines
        - The directory structure of a site
        - Site metadata (what currently lives in skinconf.xml + gump.xml
         stuff)
        - Perhaps site.xml metadata for pages?

        This info can then be made public to the sitemap (via XMLFileModule
        attributes) and the stylesheets (through
        <code>document(cocoon:/...)</code> calls or inlined with source XML).
        </action>
      <action type="fix" context="code" dev="NKB">
          Finalise the project-definition DTDs, like status.xml and module.xml;
          try to come up with a common format with others on community.at.apache.org.
        </action>
    </actions>
    <actions priority="medium">
      <action type="fix" context="code" dev="NKB">
          Finish the RSS feed for status.xml.
          Aggregate status.xml and project.xml to have all needed project data.
        </action>
      <action type="fix" context="docs" dev="open">
          Add stylesheets to render the enhanced status.xml file contents.
        </action>
      <action type="fix" context="code" dev="JT">
          In skinconf.xml, change 'disable-search' to 'enable-search'.
        </action>
      <action type="fix" context="code" dev="NKB">
          Enhance the initial forrest toolbar for Mozilla.
          See email discussion <link href="http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=102471820523388">draft forrest toolbar for Mozilla</link>.
        </action>
      <action type="fix" context="code" dev="open">
          Fix things so docs can be edited in src/*, and have the changes appear
          immediately in the webapp.  Involves creating/using an InputModule for
          passing 'forrest.skin' and other properties to the sitemap, so we can
          avoid the @skin@ hack, and a bit of forrest.build.xml hacking.  There
          are some @tokens@ in a forrest-site CSS file that also need some sort
          of in-place modification.  Perhaps a @token@-to-value Transformer could
          be the same ${variable}-to-value Transformer mentioned in the RT [3].
        </action>
      <action type="fix" context="code" dev="open">
          Act on <link href="http://marc.theaimsgroup.com/?t=104099660500001&amp;r=1&amp;w=2">'Entities in XML docs' RT</link>.
          I can implement Stefano's
          suggested solution quite easily, but is such limited functionality
          worth the cost of introducing a proprietary ${variable} syntax? Maybe..
          Best short-term alternative seems to be using the XNI XInclude
          processor for pre-validation inclusion.
        </action>
      <action type="fix" context="docs" dev="open">
          A lot of the info on the website is outdated.
        </action>
      <action type="fix" context="docs" dev="open">
          Using metadata
          from site.xml, it would at least be possible to indicate how old the
          doc is, and perhaps indicate its relevance from a small controlled
          vocabulary.
        </action>
      <action type="fix" context="design" dev="open">
          Develop a mechanism for supporting legacy URLs.
          See email discussion -
          <link href="http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=102390892524750">redirects with static sites</link>
      </action>
      <action type="fix" context="code" dev="open">
          Fix up and integrate the Forrest Maven plugin.
        </action>
    </actions>
    <actions priority="low">
      <action type="fix" context="code" dev="open">
          Ensure that PHP-like stuff can be embedded easily in Forrest files and
          document it.
        </action>
      <action type="fix" context="code" dev="open">
          Continue the development of the <link
            href="site:libre-intro">Libre</link> facility - replacement for
          */book.xml
        </action>
      <action type="fix" context="docs" dev="open">
          Start a community doc where we list tools such as "code".
        </action>
      <action type="fix" context="code" dev="open">
          Migrate to a decent schema language, primarily so that we can use
          namespaces in XML docs, allowing things like XInclude,
          <link href="http://www.xml.com/pub/a/2002/10/30/rdf-friendly.html">in-line metadata</link>,
          in-line SVG, Jelly snippets, or anything else users can make a
          Transformer for.
        </action>
      <action type="fix" context="code" dev="open">
          Streamline the process of adding support for new schemas.  Ideally we'd
          have an auto-download system, e.g. 'forrest-update docbook' would fetch
          and install the Docbook DTDs, create catalog entries, sitemap mods etc.
        </action>
      <action type="fix" context="code" dev="NKB">
          Make a CSS Generator and a stylesheet to serialize it to text.
        </action>
      <action type="fix" context="docs" dev="open">
          Add a document about authoring in XML for beginners..
        </action>
    </actions>
  </todo>
<!--
  <wi4shlist>
    <action context="..." dev="...">...</action>
  </wishlist>
  -->
<!-- ===================================================================== -->
<!-- ISSUES                                                                -->
<!-- ===================================================================== -->
<!-- FIXME: This neeeds to be added to DTD or better removed
  <issues>
    <pending>
     <issue date="...">
       <ref>http://...</ref>
       <ref>./src/...</ref>
       <descr>...</descr>
     </issue>
    </pending>

    <voting>
     <issue date="20021204">
       <descr>Make all DTD removals to necessarily need a version change.</descr>
       <ref>http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=103897161523879&amp;w=2</ref>
       <ref>http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=103899964318989&amp;w=2</ref>
       <votes>
         <vote person-id="NKB" vote="+1"/>
         <vote person-id="JT" vote="+1"/>
       </votes>
     </issue>

    </voting >

    <resolved>
    <issue date="...">
       <votes>
         <vote person-id="..." vote=""/>
         ...
       <votes>
       <ref>http://...</ref>
       <ref>./src/...</ref>
       <descr>...</descr>
    </issue>
    </resolved >

    <compatibility-breaks>
      <issue id="skin_properties_substitution_removed" date="2003-10-23">
        <synopsis>
          Skins using the old deprecated Ant @tag@ substitution method will
          no longer work.
        </synopsis>
        <affected date="2002-11-05">
          All users of this skins that use the depracated Ant @tag@ substitution method.
          All Forrest skins are not affected.
        </affected>
        <description>
          <p>
            The deprecated way of using skinconf.xml values in the skins is
            removed, as we are moving to a build system that copies as little
            files as possible. Since the new method does not involve copying,
            since the old one did, and since it has been already deprecated for
            at least a release, it has been removed.
          </p>
        </description>
        <fix>
          Use skinconf.xml with the document() function in the XSL. See the
          Forrest-provided skins for guidance.
        </fix>
      </issue>
      <issue id="skin_krysalis_minitoc" date="2003-10-14">
        <synopsis>
          Sites using the krysalis-site skin will not render the menu minitoc
          by default.
        </synopsis>
        <affected date="2002-11-05">
          All users of this skin.
        </affected>
        <description>
          <p>
            Made location of minitoc configurable as "page", "menu", or "both".
          </p>
        </description>
        <fix>
          Add &lt;toc location="menu"&gt; to restore previous behaviour.
        </fix>
      </issue>
      <issue id="skin_images" date="2002-11-17">
        <synopsis>
          Images removed from default Forrest <code>forrest-site</code>
          and <code>avalon-tigris</code> skins
        </synopsis>
        <affected date="2002-11-05">
          Users of these skins who may use the deleted images in a
          project-specific <code>skinconf.xml</code> file.  Many earlier users of
          Forrest fall into this category, as these images were in the default
          skinconf.xml in pre-0.2 versions of Forrest.
        </affected>
        <description>
          <p>
            Removed these files, as they were Forrest-site-specific and not used
            directly in skins:
          </p>
          <source>
            src/resources/skins/avalon-tigris/images/ant_logo_small.gif
            src/resources/skins/avalon-tigris/images/built-with-cocoon.gif
            src/resources/skins/avalon-tigris/images/centipede-logo-small.gif
            src/resources/skins/avalon-tigris/images/add.gif
            src/resources/skins/avalon-tigris/images/remove.gif
            src/resources/skins/avalon-tigris/images/update.gif
            src/resources/skins/basic/images/ant_logo_medium.gif
            src/resources/skins/basic/images/built-with-cocoon.gif
            src/resources/skins/basic/images/krysalis-compatible.jpg
            src/resources/skins/forrest-site/images/built-with-cocoon.gif
            src/resources/skins/forrest-site/images/centipede-logo-small.gif
          </source>
        </description>
        <fix>
          If your project's skinconf.xml uses
          <code>skin/images/built-with-cocoon.gif</code>,
          <code>skin/images/centipede-logo-small.gif</code> or
          <code>skin/images/ant_logo_small.gif</code>,
          please:
          <ul>
            <li>
              Copy the referenced images into your project's
              <code>src/documentation/resources/images</code> directory, or
              wherever the <code>project.images-dir</code> property points.
            </li>
            <li>
              Change the skinconf.xml reference from <code>skin/images</code> to
              <code>images</code>.
            </li>
          </ul>
          <p>
            The removal of {add,remove,update}.jpg images should have no effect.
          </p>
        </fix>
      </issue>


      <issue id="skin_images" date="2003-03-18">
        <synopsis>
          The pdf link on the document pages now appears only if
          explicitly stated in the skinconf.xml file.
        </synopsis>
        <affected date="2003-03-18">
          All users that use and want to keep the pdf version of each page.
        </affected>
        <description>
          <p>
            Added mandatory 'disable-pdf-link' element in skinconf.xml
          </p>
        </description>
        <fix>
          To keep pdf links on each page, add a 'disable-pdf-link'
          in skinconf.xml set to false, as for other similar links
          (consistent behaviour). To make the file validate, please use
          the page DTD contained in the forrest distro in
          ./src/resources/conf/skinconf.xml
        </fix>
      </issue>
    </compatibility-breaks>
  </issues>
  -->
</status>
