* Removed some lines of obsolete code
* Reduced layout functionality to 1 (one!) layout per site as a first step to eliminate future obstacles of backwards compatibility
* Fixed Images.main_action for layout images
* Aggregated functionality of layout export in one method (Layout.export_action)
* Extended functionality of layout import to every layout (ie. any comptabile layout can be imported to any site)
* Fixed some minor bugs
* Set application's charset to UTF8
* Added Layout.getFile() method returning the layout's directory as helma.File
* Simplified Layout.getSkinPath() method (still work in progress)
* Replaced occurrences of Site.language with Site.locale
* Modified some wording
* Added slight b/w compatibility fix in Story.macro_filter() method
* Added timex factor in Story.getDelta() method to prevent counting edits as site updates in-beteen 10 minutes
* Moved site-related aspect hooks to Site prototype of compatibility module
* Removed obsolete conversion code in compatibility module (has moved to updater app)
* Re-included spacer_macro() method in compat. module
* Temporarily overwrote HopObject.renderSkin() method to debug skin rendering process
* Replaced individual legacy macros of Layout prototype by appropriate code in onUnhandledMacro() method (compat.)
* Reflect legacy macros of Layout prototype in value() method of compat. module
* Added and improved compatibility methods
* Implemented support for renamed prototypes in updater app (still needs to be applied for database, too)
* Slightly elaborated on what happens when a site or a user is blocked
* Fixed some permission issues
* Removed some more obsolete skin files
* Re-introduced Root.search_action() method with minimal output
* Switched search method from GET to POST
* Added User.logout() method
* Fixed User.require() method (check for TRUSTED constant was missing)
* Removed obsolete rescue methods
* Moved contents of many individual skin files as subskins in the corresponding prototype skin file
* Moved commentform_macro of Story prototype into compatibility module
* Implemented support for web hooks
* Added default_hook_action() method to Root
* Renamed webHookEnabled to webHookMode in Root prototype
* Moved currently obsolete module code, macros and skins to compatibility module
* Disabled notification of updates (probably forever)
* Added encoding="form" parameter to most of the macros using the request handler
* Renamed commentsMode to commentMode (comments_mode to comment_mode in DB)
* Reactivated notifications in a simplified manner
* Throw an error in global sendMail() method if arguments are not sufficient
* Added HopObject.notify() method
* Added HopObject.kind_macro() method (provides the constructor's name in lowercase)
* Added Messages.skin containing subskins suited for e-mail output
* Removed obsolete skin files
* Added reset_action() method for resetting a user's password to Members prototype
* Added require() method to Membership prototype; wrapped static require() method around it
* Added Membership.notify() method which does all the member-related notification stuff
* Send notification on membership removal
* Fixed contact form in Membership prototype
* Dropped e-mail property from Site prototype (users can be contacted via Membership.contact_action(), Root prototype has extra e-mail property)
* Added missing getPermission() method to User prototype, always requiring a privileged user
Switched to Rome for RSS generation:
* Added necessary JAR files (new subdirectory "lib")
* Removed obsolete skin files
* Added basic skins for XSL transformation
* rss.xml of Root prototype is now equal to the one of Site; site updates have been moved to updates.xml
* Fixed _children.filter in Archive
* Added missing permission checks
* Modified global defineConstants() method to return the getter function instead of automatically defining it with given argument
* Added HopObject.macro_macro() method to display userland macro code
* Removed colorpicker (will be replaced by third-party library)
* Removed obsolete global constants and functions
* Overhauled and tested global userland macros like story_macro(), image_macro() etc.
* Implemented global list_macro() to replace any special listFoobar_macro() methods
* Moved global autoLogin() method into User prototype
* Overhauled global randomize_macro()
* Renamed global evalURL() method to validateUrl() as well as evalEmail() to validateEmail()
* Re-added accidentally removed subskins to Members.skin
* Fixed some skin names which were changed recently
* Remove delete_action() from Membership
* Fixed foreign key of images collection in Membership
* Removed global username_macro() and replaced it with appropriate membership macros
* Moved contents of systemscripts.skin into javascript.skin in Root prototype
* Removed main_css_action(), main_js_action() and sitecounter_macro() methods from Root
* Added accessname to sites collection in Root
* Upgraded jQuery to version 1.2.1
* Replaced call for global history_macro() with corresponding list_macro() call
* Renamed "public" collection of Stories prototype to "featured"
* Moved a lot of styles from Root's style.skin to the one in Site
* Added comments collection to Site
* Moved embed.skin as subskin #embed into Site.skin
* Fixed some minor issues in Story.js (removed check for creator before setting the story's mode)
* Defined cookie names as constants of User which can be overriden via app.properties userCookie and hashCookie
* Moved a lot of code into compatibility module
* Changed order of filters in collection handlers (member items go first, all items last)
* Fixed global file_macro and image_macro methods
* Reactivated Images.Default
* Added Layout.value_macro to allow per request definitions of variables for the CSS stylesheet (still experimental)
* Finally removed PropertyMgr (replaced by Metadata)
* Renamed a bunch of collections, mountpoints and variables
* Reduced commentsMode options to "enabled" and "disabled" in Site prototype
* Renamed "shared" mode to "restricted" in Site prototype
* Moved a lot of stuff into the compatibility module