-BSE 0.23 - unreleased
+BSE 0.25 - 01 Aug 2014
+========
+
+Bug fixes:
+
+ - user.pl (BSE::UserReg) now consistently does new-style message
+ handling
+
+ - embedding no longer messes up the variable state for article
+ generation.
+
+ - actually tokenize the !~ template expression operator.
+
+ - audit log mailing now uses the most specific email address supplied
+
+ - page.pl now returns a 404 if the requested page id/alias can't be found
+
+ - the tag owner (eg. articles) tag_ids() method was returning a tag
+ count rather than the tag ids
+
+ - fix date article custom fields
+
+ - fix product custom fields
+
+ - don't strip '-' and '_' from linkAlias in the importer
+
+ - ensure images have unique ids when re-orders
+
+ - correctly validate and report on bad tag values (c46eae4)
+
+ - use quoted-printable where needed for text parts, and always for
+ html parts of mail sent via BSE::ComposeMail (08a49f2d)
+
+ - fix subscriptions (newsletters) (6c8fac02)
+
+ - always fallback to [shop].from for From: email address
+
+ - fix word-wrapping for audit log emails
+
+ - fix encoding of email content
+
+ - select search excerpts that match the search text like the search
+ engine, rather than simple text matching (d325876a)
+
+Enhancements:
+
+ - the article mock objects used for pregen behave more like article
+ objects
+
+ - password strength validation and account lockouts for repeated
+ failed logons.
+
+ - plain text passwords are no longer supported
+
+ - articles/products can now be imported from CSV
+
+ - article/product imports can now be done as "update_only" so that
+ required fields aren't necessary
+
+ - installation now uses install.cfg, which is formatted like bse.cfg
+
+ - added a tool to hash unhashed site user and admin user passwords
+
+ - coupons for the shop
+
+ - global files and image no longer require an identifier
+
+ - when transforming an article title for use in a URL, replace
+ non-alphanumeric characters with '-' instead of '_'.
+
+ - reorder.pl now allows a sort spec of 'shuffle'
+
+ - article/global images can now have tags (a3e0dbc)
+
+ - emails for siteusers are now whitespace validated and trimmed
+ (b5fe5b6c)
+
+ - allow add.pl to run as FastCGI (f5ea58be)
+
+ - SVG support for article/global images
+
+Templates:
+
+ - add top, dynamic, generator, url variables to generated article
+ templates
+
+ - replace variables on the makeIndex html output
+
+ - add a params variable that behaves like the tag
+
+ - expression tags like <:= foo :> now escape as html by default.
+
+ - added an escape() method to scalars.
+
+ - added a shuffle() method to arrays
+
+ - add current to the loop variable used in .for ... in
+
+ - added convience methods image_by_name, image_by_index, file_by_name
+ to article objects
+
+ - added a set_subject() function to BSE::ComposeMail templates
+
+ - added .while and .wrap template directives
+
+ - allow collection_with_tags() to work on all_visible_products()
+
+ - massive formatter re-work
+
+ - allow defaults to be specified for .define (53c28223)
+
+ - allow barewords for pair list keys (53c28223)
+
+ - various preload.tmpl changes
+
+BSE 0.24 - 11 Feb 2013
+========
+
+Bug fixes:
+
+ - clean up access control records for article when the article is
+ deleted
+ https://rt4.develop-help.com/Ticket/Display.html?id=1368
+
+ - lookup the scalecache path and uri consistently, and configure them
+ in the [paths] and [uri] sections. This may break your site if you
+ didn't use the old defaults.
+ https://rt4.develop-help.com/Ticket/Display.html?id=1363
+ https://rt4.develop-help.com/Ticket/Display.html?id=1364
+
+ - remove the local date and money tag definitions from the
+ administrative embedded catalog tags. This will require updates to
+ your embedded catalog template (admin/catalog.tmpl in base BSE).
+
+ - the check_versions.pl code now handles file renames correctly
+
+ - test.cfg is now handled case sensitively so the resulting
+ bse-install.cfg uses the same cases as test.cfg
+
+ - change BSE::UserReg to use dyn_response() instead of show_page() in
+ the few places still using it.
+
+ - define access rights for the pregen actions
+
+ - update price and tier information in the cart when the user logs in
+
+ - several template expression fixes:
+
+ - or is now only an operator when a distinct word in template
+ expressions
+
+ - parse () groups as primary expressions in template expressions
+
+ - fix the list() method for hashes
+
+ - moved [basic].public_files to [uri].public files. RT #1359.
+
+ - fixed example in the SYNOPSIS for BSE::Cache::Memcached
+
+Enhancements:
+
+ - add support for exporting report results as CSV
+
+ - add .iterateover directive to templates
+
+ - add a web UI to the importer
+
+ - added documentation to BSE::UserReg, BSE::Request::Base (the
+ request object)
+
+ - template expression enhancements:
+
+ - added several new scalar methods to template expressions
+
+ - added the set() method to hashes in template expressions
+
+ - added the expand() method to lists template expressions
+
+ - BSE now searches for shipping modules in the library_path.
+
+ - article custom fields can now be configured in [article custom
+ fields] etc
+
+ - the shopping cart is now visible to the new tag system
+
+ - flash notices when the user manipulates the cart
+
+ - unlisted, un-released, expired and unlinked pages are now treated
+ as unavailable:
+
+ - static content is remove if present
+
+ - dynamic access returns a 404 error
+
+ - added FixedIntl shipping module
+
+ - updated the required modules in bse_modules.pl
+
+Templates:
+
+ - admin/catalog.tmpl (maybe named differently) - removed the local
+ date and money tag definitions.
+
+API:
+
+ - admin group creation now provides reasonable defaults
+
+Testing:
+
+ - many internal test code changes
+
+ - update the regen_known_errors make target to match the new test
+ file name
+
+ - add actions test for BSE::UserReg
+
+ - disable debug output for the eway test
+
+BSE 0.23 - 07 Sep 2012
========
Bug fixes: