1.3 - 2019-06-17 - Add TUWF::Validate module for generic data structure validation - Add tuwf->compile() and tuwf->validate() interfaces for input validation - Add 'custom_validations' setting - Add setting to write emails to the log file instead of mailing them - Add (undocumented) TUWF::Validate::Interop module for JSON coercion, HTML5 validation patterns and Elm code generation. - Fix logging of JSON request body on error 1.2 - 2018-02-18 - Add tuwf() exported function as alias to $self or $TUWF::OBJ - Add TUWF::get/put/post/etc() as better alternative to TUWF::register() - Add TUWF::hook() as better alternative to (pre|post)_request_handler - Add capture() to access route captures - Add standandlone HTTP dev server (requires HTTP::Server::Simple) - Add pass() and done() methods to prematurely abort the current handler - Add 'import_modules' setting - TUWF::Request: Add reqJSON() - TUWF::Request: Disallow control characters in HTTP request data - TUWF::Response: Add resJSON() - TUWF::Response: Add resBinary() - TUWF::Response: Add resFile() + mime_types/mime_default settings - TUWF::Response: Allow setting headers before resRedirect() - TUWF::Response: resRedirect() now sets a relative 'Location' HTTP header - TUWF::DB: Add DB query logging and profiling to non-TUWF database functions - TUWF::DB: Add dbVal() - TUWF::XML: Add functional-style DSL - TUWF::XML: Add HTML5 support - TUWF::XML: Add different naming convention support - TUWF::XML: Add 'mkclass' utility function - Improved error pages - Various documentation improvements 1.1 - 2017-11-26 - Disallow exclamation mark in email address validation - Add reqProtocol() method - Add reqFCGI() method - Remove 'X-Powered-By' header - Fix handling of space character in load_recursive() 1.0 - 2015-09-17 - !! Some backwards-imcompatible changes, marked * !! - kv_validate() improvements: - Fix maxcount option - Fix non-array argument to 'func' - Added some default templates: num, int, uint, ascii, email, weburl - * Removed 'min' and 'max' options, these now require the num template - Add 'inherit' option for template definitions - Allow templates to provide default values for 'required', 'default', 'rmwhitespace', 'multi', 'mincount' and 'maxcount' - Add tests - * reqPath() now includes the leading slash - * reqGet(), reqPost(), reqParam(), reqUploadMIME() and reqUploadRaw() now only work in scalar context. - * Add plural versions of the above methods (reqGets() etc) that only work in list context. - Add reqQuery() - Fix warning with Perl 5.22 0.2 - 2012-01-19 - Fixed bug with in-place utf8_decode() in recent Perls - Lowered minimum Perl version to 5.8.0 0.1 - 2011-02-07 - Initial version