Changes between versions
========================


0.3
---

User-visible:
  - a WSGI application running Ophelia was added along with a basic
    wsgiref-based server running that application

  - a script for dumping a single Ophelia-generated page to stdout

  - use restructured text format for documentation

  - scripts are now allowed in macro files

  - more informative error pages and logs

  - configuration options changed from CamelCase to lower_case

Bug fixes:
  - Apache-generated directory indexes and PHP pages work now. This needs at
    least version 3.3 of mod_python.

  - actually use the template text passed to StopTraversal as a template

API:
  - renamed modules, moved classes between modules:
      + publisher.Namespace -> util.Namespace
      + template -> input
      + apache -> modpython
      + publisher.PageTemplate* -> pagetemplate.PageTemplate*
      + publisher.Publisher -> request.Request, publisher -> request,
        also renamed script variable __publisher__ -> __request__

  - current template moved from request member (template) to pre-defined
    script and TALES variable __template__

  - request.Redirect exception has an option for replacing the path portion of
    the target URL (saves the client some urlparse acrobatics) and uses the
    original request's complete URI as a default base for the target

  - combined request.StopTraversal exception parameters into one, text

  - added methods insert_template and interpret_template to request, reduced
    load_macros signature to a single relative file name

  - added the next_name request member as a temporary solution for overriding
    the file or directory read during the next traversal step

  - replaced request member file_path by dir_path as that's simpler to use

  - store environment namespace on request as member env instead of the Apache
    request

Code:
  - use zope.pagetemplate instead of fiddling with the TAL engine directly

  - use zope.exceptions instead of log_error to get supplemented tracebacks
    and cleaner code

  - use zope.interface to formally specify the API exposed to user code

  - some clean-up

Organization:
  - made egg name lower case

  - made the ophelia egg require needed parts of Zope by egg dependencies

  - added svn:ignore property

  - set up a zc.buildout environment for a development installation

  - added tests


0.2
---

User-visible:
  - made template and script encodings and the index template name
    configurable from Apache config

  - renamed SitePrefix config variable to "Site"

  - cleaned up pre-defined script variables,
    introduced __publisher__ and __file__

  - made script variables directly usable in templates

  - updated and improved documentation and example site

  - switched configuration to using Location directives to get rid of dummy
    static directories and index.html files

  - added optional redirection of URLs ending with index page to directories

  - added ophelia.tool.feed, providing a download function using the Universal
    feedparser package, and a feed loader for using the feeds downloaded

Bug fixes:
  - correctly compute ETags from unicode content

  - fixed a typo in the example's CSS

  - fixed a missing trailing slash in the site variable and spurious leading
    slashes in the traversal history entries which broke URL synthesis

  - made localized dates with non-ASCII chars in month names usable with
    templates by adding ophelia.util.strftime

  - made the publisher available to functions called from inside templates

API:
  - made ophelia.publisher.Namespace subclass dict

  - turned publisher and file splitter into objects accessible from scripts

  - removed thus obsolete ophelia.oapi module

  - added set_chapter() to navigation tool, removed the zoo of URI builders

  - added Redirect exception

  - renamed methods to get rid of camel case and comply with current PEP 8

  - added ophelia.util with an strftime function that returns unicode

Code:
  - modularized publishing logic

  - straightened out handling of URL and file paths

  - replaced file() calls by open() calls

Organization:
  - added change log

  - moved roadmap from docs to distribution root, added README.txt to root

  - started using setuptools and distributing Ophelia as a Python egg

  - moved opheliatools package to ophelia.tool for minimal namespace impact


0.1
---

initial "works for me" release
