AGAVI CHANGELOG (1.0.x)
=======================

1.0.8 (June 28, 2015)
---------------------

CHG: Update timezone database to 2015e (#1553) (David, Dominik)

FIX: Fix closing tag `h2` in WelcomeSuccess (#1508) (Robert Schulze)
FIX: AgaviTemplateLayer possibly overwrites given parameters with defaults (#1490) (Steffen Gransow)
FIX: AgaviArrayPathDefinition::unsetValue() triggers a warning on empty paths (#1488) (Ionuț Matei)
FIX: Various fixes to the shiny exception template (#1478) (Thomas Bachem)
FIX: Use the Composer autoloader when running tests (#1473) (Dominik, Leon Weidauer)
FIX: Some tests fail when date.timezone is not set (#1474) (Dominik, Leon Weidauer)
FIX: The NumberFormatter tests fail with recent ICU versions (#1469) (Dominik)


1.0.7 (December 22, 2011)
-------------------------

ADD: Configurable context for AgaviFlowTestCase (#1465) (David)

CHG: Redesign welcome page (#1464) (David)


1.0.7 RC2 (December 14, 2011)
-----------------------------

CHG: Add missing interfaces to default compile.xml (#1462) (David)
CHG: Guarantee order of form population and give preferential treatment to automatically re-populated forms (#1461) (David)
CHG: Update singular and plural rules in AgaviInflector (#1460) (David)

FIX: Inflector does not handle uncountable words as part of strings (#1459) (David)
FIX: Fatal errors with PHPUnit 3.6 (#1457) (David)


1.0.7 RC1 (November 20, 2011)
-----------------------------

ADD: Optional argument for AgaviTesting::dispatch() to trigger exit with status code (#1444) (David)
ADD: Pass through "configuration" command line option to PHPUnit (#1439) (David)
ADD: Configuration option for character encoding in AgaviPhpTalRenderer (#1428) (David)

CHG: AgaviConsoleRequest should not populate $_FILES superglobal when processing STDIN content (#1448) (David)
CHG: Return test result from AgaviTesting::dispatch() (#1445) (David)
CHG: Remove function_exists check for spl_object_hash (#1441) (David)
CHG: Remove function_exists check for get_magic_quotes_gpc (#1440) (David)
CHG: Update timezone database to 2011n (#1430) (David)
CHG: Rephrase exception message about missing XSL extension to be more descriptive (#1426) (David)
CHG: Do not call getCredentials() if Controller is not "secure" (#1400) (David)

FIX: AgavConsoleRequest creates array instead of AgaviUploadedFile for STDIN contents (#1447) (David)
FIX: AgaviSmartyRenderer fails to detect Smarty version 3.1 or later (#1438) (David)
FIX: AgaviSqlsrvDatabase does not assign resource property (#1443) (David)
FIX: AgaviPdoDatabase does not assign resource property (#1442) (David)
FIX: Several database adapters don't clean up connection and resource properties on shutdown (#1433) (David)
FIX: Doctrine database adapter won't trigger connect() on getResource() call (#1434) (David)
FIX: Doctrine2 database adapters won't trigger connect() on getResource() call (#1432) (David)
FIX: AgaviViewTestCase calls undefined method (#1424) (David, Markus Lervik)
FIX: Exporting and value casting behavior swapped in AgaviBooleanValidator (#1422) (Dominik)


1.0.6 (July 23, 2011)
---------------------

YAY: No changes over 1.0.6 RC1 :)


1.0.6 RC1 (July 11, 2011)
-------------------------

ADD: Doctrine 2 support (#1329) (David)
ADD: Support for configuration of Doctrine query/result caching (#1267) (David, TANAKA Koichi)
ADD: Make Doctrine connection event listener class configurable (#1399) (David)
ADD: AgaviViewTestCase::assertNotHasLayer() (#1278) (David)
ADD: Smarty 3 support in AgaviSmartyRenderer (#1328) (David)
ADD: Renderer for Twig (#1330) (David)
ADD: AgaviSqlsrvSessionStorage (#1392) (David)

CHG: Update timezone database to 2011h (#1396) (David)
CHG: Expand configuration directives in all routing attributes (#1383) (David, Thomas Bachem)
CHG: Factor out error message formatting in AgaviSqlsrvDatabase (#1393) (David)
CHG: Move Sample App WSDL serving into web context (#1390) (David)

FIX: AgaviConfigCache tests failing on Windows (#1391) (David)


1.0.5 (June 16, 2011)
---------------------

CHG: Use trigger_error() instead of die() in minimum PHP version check (#1387) (David)
CHG: Support PHPUnit 3.5 and drop compatibility with PHPUnit 3.4 (#1331) (David, Markus Lervik)

FIX: AgaviLoggingConfigHandler does not check for existence of declared classes, layouts or appenders (#1386) (David)
FIX: PEAR package declares Phing 2.3.1 or later as a dependency, but minimum required Phing version is 2.4.0 (#1388) (David)
FIX: _common.xsl copies namespace declarations without prefix (#1384) (David)


1.0.5 RC1 (June 6, 2011)
------------------------

ADD: Support for protocol-relative URL generation (#1224) (David, Steffen Gransow)
ADD: Support Thrift socket timeout in AgaviScribeLoggerAppender (#1351) (Dominik)
ADD: Add plaintext exception output to top and bottom of shiny.php (#1350) (David)
ADD: Zend_Cloud_DocumentService database adapter (#1349) (David)
ADD: Support for X-Forwarded-Proto style HTTPS indicators (#1345) (David)

CHG: Deprecate support for Propel versions before 1.3 in AgaviPropelDatabase (#1378) (David)
CHG: Deprecate AgaviCreoleSessionStorage (#1377) (David)
CHG: Deprecate AgaviCreoleDatabase (#1376) (David)
CHG: Prevent usage of SET NAMES for MySQL connections in AgaviMysqliDatabase (#1364) (David, Anthony Ferrara)
CHG: Prevent usage of SET NAMES for MySQL connections in AgaviMysqlDatabase (#1363) (David, Anthony Ferrara)
CHG: Prevent usage of SET NAMES for MySQL connections in AgaviPdoDatabase (#1362) (David, Anthony Ferrara)
CHG: Disable DirectorySlash in default .htaccess file (#1360) (David)
CHG: Update timezone database to 2011g (#1359) (David)
CHG: Add fail-safe to AgaviToolkit::clearCache() (#1357) (David)
CHG: AgaviSecurityUser::hasCredentials() should use AgaviSecurityUser::hasCredential() for complex lookups (#1356) (David)
CHG: Ignore .gitignore and .gitkeep in cache folder (#1346) (David)
CHG: Make AgaviFormPopulationFilter parsing more lenient (#1307) (David)

FIX: Exception in AgaviMysqlSessionStorage::sessionWrite() if no data modified on update (#1374) (David)
FIX: Exception in AgaviPdoSessionStorage::sessionWrite() with MySQL if no data modified on update (#1361) (David)
FIX: Inconsistent whitespace in code templates (#1373) (David)
FIX: FormPopulationFilter doesn't work with encodings other than UTF-8 (#1372) (David)
FIX: Undefined variable notice in AgaviView (#1370) (David)
FIX: Undefined variable notice in AgaviXmlConfigSchematronProcessor (#1369) (David)
FIX: Undefined variable notice in AgaviPostgresqlSessionStorage (#1368) (David)
FIX: Undefined variable notice in AgaviMysqlDatabase (#1367) (David)
FIX: Undefined variable notice in AgaviMysqliDatabase (#1366) (David)
FIX: Incorrect evaluation of escape sequences in AgaviLdmlConfigHandler (#1365) (David)
FIX: AgaviTranslationManager::getDefaultLocale returns null (#1348) (David)
FIX: AgaviException::buildParamList has escaping issues (#1344) (David)
FIX: Issues with FPF and HTML5 elements (#1292) (David)


1.0.4 (December 19, 2010)
-------------------------

ADD: Refine #1283 to allow extraction of multiple subpatterns in regex validator (#1335) (David)

CHG: Overhaul default .htaccess file (#1336) (David)

FIX: Non-string values for "export" parameter cause fatal error in AgaviValidator (#1337) (David)


1.0.4 RC1 (December 13, 2010)
-----------------------------

ADD: Render PHP 5.3 linked exceptions (#1308) (David)
ADD: AgaviScribeLoggerAppender (#1305) (David)
ADD: AgaviJsonLoggerLayout (#1304) (David)
ADD: Configuration options for AgaviPassthruLoggerLayout (#1303) (David)
ADD: AgaviXsltRenderer (#1299) (David)
ADD: Add Japanese translation for sample app (#1298, #1319) (TANAKA Koichi)
ADD: Allow configuration of prefix for route generation through options (#1285) (David)
ADD: Allow extraction of subpatterns in regex validator (#1283) (David)
ADD: Create an AgaviBooleanValidator (#1196) (Felix)
ADD: Windows Azure Session Storage (#1266) (David)
ADD: Support for IIS7 (#1265) (David)
ADD: Database adapter for ext/sqlsrv (#1264) (David)

CHG: Update timezone database to 2010o (#1332) (David)
CHG: Unbundle PHPUnit and move dependency to PEAR (#1158) (David)
CHG: Change Tango Icon Theme license information (#1309) (David)
CHG: Update ISO Schematron to version 2010-04-21 (#1306) (David)
CHG: Rename internal AgaviLoggerMessage parameters (#1302) (David)
CHG: Make AgaviConfig non-final (#1300) (David)
CHG: Build target "public-create" should overwrite existing files (#1288) (David)
CHG: Move check for default output type to end of config file compilation (#1286) (David)
CHG: Add packages and package-release Phing targets (#1276) (Simon)
CHG: Change package-pear Phing target to auto-generate tarball (#1275) (Simon)
CHG: Eliminate use of create_function() in AgaviTranslationManager::getLocaleIdentifier() (#1274) (David)
CHG: Make charset configuration and init queries event based in AgaviDoctrineDatabase (#1272) (David)
CHG: Optionally use readline wrapper for agavi script (#1271) (Simon, David)
CHG: Restore default Phing ANSI colors for Mac OS X Snow Leopard (#1270) (David)

FIX: Custom taskdef in project build.xml breaks script (#1280) (Noah)
FIX: AgaviNumberValidator fails with swedish locale for negative numbers (#1293) (David)
FIX: Phing 2.4.4 causes fatal error (#1333) (David)
FIX: AgaviExecutionFilter throws PHP warning if cache group value is not a scalar (#1314) (David)
FIX: Query string arguments in incoming URL cannot be unset using null when generating current route (#1294) (David)
FIX: AgaviException::buildParamList breaks multibyte string parameter (#1315) (David)
FIX: RbacSecurityUser doesn't handle users without roles properly (#1325) (David)
FIX: AgaviValidationReportQuery::getErrors() does only return first error message of each incident (#1321) (David)
FIX: Sample app Accept-Language header parsing is broken (#1324) (David)
FIX: Statically forcing the URL scheme to https in AgaviWebRequest is not possible (#1281) (David)
FIX: Regression: Invalid XHTML in shiny exception template when first line in stack frame is HTML (#1284) (David)
FIX: PHP 5.2.6 bug breaks FPF (#1279) (David)
FIX: AgaviGettextTranslator doesn't reset plural form function when switching locales (#1273) (David)


1.0.3 (April 16, 2010)
----------------------

ADD: Make DOMDocument::saveXML() options configurable (#1262) (David)

CHG: Update timezone database to 2010h (#1261) (David)

FIX: AgaviSeleniumTestCase extends non-existent PHPUnit_Framework_SeleniumTestCase (#1260) (David)
FIX: Sample app incompatible with PHP 5.2 (#1258) (David)
FIX: Regression: AgaviDecimalFormatter fraction error (#1257) (David)


1.0.3 RC1 (March 22, 2010)
--------------------------

ADD: Allow exporting of values in AgaviNumberValidator (#1160)

CHG: Update timezone database to 2010f (#1255) (David)
CHG: Make AgaviDecimalFormatter::parse() behavior more lenient and consistent with ICU's NumberFormatter (#1254)
CHG: AgaviNumberValidator should cast to desired type (#1250) (David)
CHG: Allow validation of non-string values in AgaviNumberValidator (#1249) (David)
CHG: Standard production exception templates should log errors (#1239) (David)
CHG: Refactor exception rendering (#1242) (David)
CHG: Allow "extension" parameter to be an array in file validators (#1235) (David)
CHG: File extension comparison should be case-insensitive in file validators (#1234) (David)
CHG: Require Phing 2.4 or newer (#1232) (David)

FIX: Integer over/underflow problem in AgaviDecimalFormatter::parse() (#1253) (David)
FIX: Integer over/underflow problem in AgaviNumberValidator (#1252) (David)
FIX: AgaviNumberValidator mutates value on error (#1251) (David)
FIX: XML config namespace copying broken on PHP 5.2.12/5.3.2 (#1244) (David)
FIX: Relative path passed to AgaviConfigCache::checkConfig() may result in misleading exception message (#1220) (David)
FIX: AgaviToolkit::isPathAbsolute accepts invalid values (#1204) (David)
FIX: AgaviLoggerAppender::write() lacks type hint (#1221) (David)
FIX: AgaviStringValidator trimming fails on newlines (#1243) (David)
FIX: Build script generates exception templates with non .php extension (#1179) (David)
FIX: AgaviWebRouting::gen(null) returns url without sid even if use_trans_sid is true (#1238) (David)
FIX: Implied route matches are repeated in generated urls where route is redefined (#1209) (David)
FIX: Regression: Form Population Filter strips value attribute from button inputs (#1236) (David)
FIX: Shiny exception template may produce invalid XHTML (#1240) (David)
FIX: Project build.xml not used with Phing 2.4.0+ (#1231) (Felix)
FIX: AgaviTranslationManager::getDefaultLocale() is broken and throws a notice (#1229) (Dominik)
FIX: AgaviWebRouting::gen(null) fails when multiple chars are defined as separators in arg_separator.input (#1227) (David)
FIX: Generated action cache configs have caching enabled by default (#1223) (David)


1.0.2 (January 27, 2010)
------------------------

CHG: Update timezone database to 2010b (#1219) (David)
CHG: Update ISO Schematron to version 2010-01-25 (#1217) (David)

FIX: Build system is incompatible with Phing 2.4.0 (#1216) (David)
FIX: Form Population Filter doesn't filter out empty error messages (#1214) (David)


1.0.2 RC4 (January 19, 2010)
----------------------------

ADD: Support for HTML 5 forms (#1213) (David)
ADD: Support for Doctrine 1.2 (#1210) (David)
ADD: Include error type and code when reporting libxml errors (#1202) (David)

CHG: Update timezone database to 2009u (#1207) (David)
CHG: Move error suppression operator for XML validation calls to wrapper methods (#1201) (David)

FIX: ICU Bug 6814 (#1211) (David)
FIX: AgaviTimeZoneDataParser doesn't support "-" as a time value (#1208) (David)
FIX: Several method existence checks don't deal with visibility (#1205) (David)
FIX: Configuration parameter whitespace handling is inconsistent (#1203) (David)
FIX: Regression: single Propel init query is lost during initialization (#1194) (David)
FIX: Regression: support for Propel 1.3 is broken (#1195) (David)


1.0.2 RC3 (December 8, 2009)
----------------------------

ADD: Support for Propel 1.4 (#1181) (David)

CHG: Use printf rather than echo in bin/agavi (#1191) (David)
CHG: Update to PHPUnit 3.4.3 (#1184) (David)
CHG: Update timezone database to 2009s (#1188) (David)
CHG: Make HTTP Content-Type response header charset detection in AgaviFormPopulationFilter more robust (#1187) (David)

FIX: Validation drops first element in multi-dimensional array exports (#1189) (Dominik)
FIX: AgaviToolkit::literalize incorrectly returns null for certain input values (#1190) (David)
FIX: HTML meta tag charset detection in AgaviFormPopulationFilter never matches strings without quotation marks (#1185) (David)
FIX: FormPopulationFilter raises warning with old PCRE versions (#1183) (David)
FIX: AgaviWebResponse throws notice if "http_headers" parameter is not an array (#1186) (David)
FIX: Duplicate error message if agavi console script cannot determine Phing version (#1180) (David)


1.0.2 RC2 (November 6, 2009)
----------------------------

CHG: Update to PHPUnit 3.4.2 (#1178) (David)
CHG: Change generated timezone files to have version info, not timestamp, in header comments (#1177) (David)
CHG: Update timezone database to 2009q (#1176) (David)

FIX: AgaviAttributeHolder::removeAttribute() does not return values by reference if array key access is used (#1175) (David)
FIX: AgaviParameterHolder::removeParameter() causes notice for invalid keys when calling with by-ref assignment (#1174) (David)
FIX: agavi.bat-dist lacks double quotes for PHP and Agavi path assignments (#1172) (David)
FIX: AgaviConfigParser::convertEncoding() performs case-sensitive comparison of encoding (#1162) (David)
FIX: AgaviConfigParser::convertEncoding() produces notice when throwing exception (#1161) (David)
FIX: Shiny exception template prepends file paths with an underscore (#1156) (David)
FIX: agavi.php erroneously always assumes it is a symlink if project.directory is empty (#1155) (Felix)


1.0.2 RC1 (September 13, 2009)
------------------------------

ADD: Accept optional argument identifier in AgaviValidator::getArgument() (#1142) (David)
ADD: Support for PHPTAL 1.2 (#1141) (David)
ADD: Allow optional strict comparison in AgaviEqualsValidator (#1128) (David, Dennis Meckel)
ADD: Allow optional strict comparison of elements in AgaviInarrayValidator (#1107) (David)

CHG: Update timezone database to 2009m (#1154) (David)
CHG: Update old tests to use bundled PHPUnit (#1153) (Felix)
CHG: Update to PHPUnit 3.4.0RC3 (#1152) (Felix)
CHG: Refactor renderers to perform engine creation in separate methods (#1139) (David)
CHG: Improve AgaviDatabaseConfigHandler error message in case no database connections are configured (#1138) (David)
CHG: Support PHP namespaces in configuration schemas (#1133) (David)
CHG: Validator shortcut "arraylength" should default to minimum of one element (#1123) (David)
CHG: Backport any necessary ICU changes and fixes (#858) (Dominik)
CHG: Remove unnecessary use of create_function() in AgaviInarrayValidator (#1112) (David)
CHG: Update ISO Schematron to version 2009-05-18 (#1103) (David)
CHG: Routing callback parameters should be set before initialize method is called (#1105) (David)

FIX: AgaviValidationReportQuery::getResult() possibly throws a notices when used with byValidator queries (#1151) (Dominik)
FIX: AgaviLdmlConfigHandler does not compile /ldml/numbers/symbols/minusSign (#1149) (David)
FIX: AgaviConfigCache::writeCacheFile() permission error handling is broken (#1148) (David)
FIX: AgaviVirtualArrayPath::get() ignores position argument (#1143) (Kirila)
FIX: agavi.sh does not allow parameters with spaces (#1137) (Felix)
FIX: AgaviNumberValidator does not allow "double" as type name (#1135) (David)
FIX: AgaviNumberValidator mutates invalid input if translation is used for parsing (#1136) (David)
FIX: XML Schema type "identifier" is broken (#1132) (David)
FIX: AgaviArrayPathDefinition is not included prior to framework startup (#1127) (David)
FIX: Numeric keys are reindexed, not merged, in AgaviConfig::fromArray() (#1126) (David)
FIX: Numeric keys are reindexed, not merged, in AgaviParameterHolder::setParameters() (#1125) (David)
FIX: Numeric keys are reindexed, not merged, in AgaviAttributeHolder::setParameters() (#1124) (David)
FIX: AgaviArraylengthValidator doesn't work with files (#1122) (David)
FIX: AgaviValidationManager::clear() doesn't clear validation errors (#1104) (David)
FIX: Validation xsd and doc block comments have references to the removed 'affects' parameter (#1101) (Dominik)
FIX: AgaviTranslationManager::_n() and _c() ignore custom locale independent format (#1099) (Dominik)
FIX: Configuration system does not permit identifiers to be one character in length (#1098) (Noah)
FIX: Multiple settings blocks and settings prefixes are not allowed in module configs (#1096) (David)


1.0.1 (May 1, 2009)
-------------------

CHG: Update timezone database to 2009g (#1093) (David)


1.0.1 RC2 (April 24, 2009)
--------------------------

CHG: Harden workaround for PHP bug 47206 (#1092) (David)
CHG: Return removed namespace from AgaviAttributeHolder::removeAttributeNamespace() (#1088) (David)
CHG: Update timezone database to 2009f (#1086) (David)
CHG: Allow omission of empty argument tag when using arguments base (#1085) (David)
CHG: Pass current execution container to caching callbacks in execution filter (#1079) (David)

FIX: Minimal output_types.xml code template does not define "slot" layout (#1087) (David)
FIX: Arrays that failed validation are not purged from request data (#1084) (David)
FIX: Memory leak in AgaviTranslationManager::getLocaleIdentifier() (#1083) (David)
FIX: SOAP support's document/literal wrapped marshalling cannot handle multi-part return values (#1081) (David)


1.0.1 RC1 (March 26, 2009)
--------------------------

ADD: Allow configuration directives as caching group values (#1059) (David)

CHG: Update to PHPUnit 3.4.0beta2 (#1076) (David)
CHG: Allow control over exporting behavior in combination with argument bases (#1074) (Dominik, David)
CHG: Harmonize handling of dots and slashes in action, view and model names (#1071) (David)
CHG: Update timezone database to 2009d (#1070) (David)
CHG: Generated WSDLs should not have namespace attribute on soap:body elements if service is document/literal (#1061) (David)

FIX: Exporting parameters from validators with an argument base causes fatal error (#1073) (David, Dominik)
FIX: Fatal error in AgaviArrayPathDefinition::setValue() in combination with arrays (#1075) (David)
FIX: Race conditions in AgaviConfigCache::writeCacheFile() may produce corrupt files (#1072) (Dominik)
FIX: Build templates for ProjectBaseView and output_types.xml use different name for slot layout (#1067) (Noah)
FIX: SOAP support's document/literal wrapped marshalling cannot handle certain empty structs (#1065) (David)
FIX: SOAP support's document/literal wrapped marshalling incorrectly wraps SoapFault objects (#1064) (David)
FIX: Form Population Filter inserts markup container for validation errors even if there are no messages to insert (#1060) (David)
FIX: Regression: changes to extra parameters in AgaviRoutingCallback::onGenerate() have no effect (#1057) (Dominik)
FIX: Regression: extra parameters added by AgaviRoutingCallback::onGenerate() are not added to routing string as e.g. query params (#1056) (Dominik)
FIX: Execution filter may run into fatal error if no caching rules are defined for an output type, and the action is cached (#1055) (David)


1.0.0 (February 25, 2009)
-------------------------

ADD: Project configuration system's public-create should ask for the environment to bootstrap (#1053) (David)

CHG: AgaviReturnArrayConfigHandler should throw exception if config file is not in legacy 0.11 XML namespace (#1054) (David)

FIX: Project configuration system script does not accept multiple property definitions (#1052) (Noah)


1.0.0 RC2 (February 23, 2009)
-----------------------------

ADD: Allow passing of an explicit Validation Report object to Form Population Filter (#1050) (David)

CHG: Improve best practices in generated projects (#1049) (David, Noah)
CHG: Make route patterns mandatory again (#1047) (David)

FIX: Regression: routing callbacks cannot modify options (#1051) (David)
FIX: Default View code template sets wrong title attribute (#1048) (David)


1.0.0 RC1 (February 16, 2009)
-----------------------------

ADD: Add AgaviArrayPathDefintion::flatten() method (#1042) (Dominik)

CHG: Make route patterns optional (#1046) (David)
CHG: Update timezone database to 2009b (#1043) (David)
CHG: Regex validator should export the validated data (#1041) (Felix)
CHG: Add workaround for PHP bug 47206 (#1038) (David)

FIX: AgaviTranslationManager::$translators and $supplementalData are not initialized as empty array (#1045) (David)
FIX: Certain libxml versions cause some config handlers to randomly produce invalid results due to corrupt XPath result sets (#1039) (David)
FIX: Regression: empty arguments that weren't validated remain in request data (#1044) (David)
FIX: Identity template in _common.xsl performs verbatim copies of elements (#1040) (David)
FIX: Regression: AgaviSoapController::dispatch() signature is incompatible with that of AgaviController::dispatch() (#1037) (David)
FIX: Regression: Sample App SOAP, XMLRPC and Console interfaces are broken (#1036) (David)


1.0.0 beta9 (February 10, 2009)
-------------------------------

ADD: Allow setting of session_cache_expire(), session_cache_limiter() and session_module_name() through configuration (#1035) (David)
ADD: Implement a basic system for testing Agavi applications and internal components, THIS IS EXPERIMENTAL! (#1021) (Felix, David)
ADD: Introduce special AgaviUncacheableException for cache group callbacks (#1032) (David)
ADD: Implement new validation report query API (#1022) (Dominik, David)
ADD: Allow routing callbacks to return an AgaviResponse (#1028) (David)

CHG: Rename "messageIndex" in AgaviValidationError to "name" (#1030) (David)
CHG: Explicitly call onNotMatched() method on a routing callback if its onMatched() method returned false (#1027) (David)
CHG: Restore state right after a routing callback returned false from onMatched() rather than at the end of the callback execution loop (#1026) (David)
CHG: Throw exception if Apache's SERVER_SOFTWARE env var contains insufficient version information (#1029) (David)

FIX: Regression: Fatal error in AgaviRouting with use_translation off (#1031) (David)
FIX: Regression: Locale and Request Method are not restored to previous value after a matching route's callback(s) caused the match to ultimately fail (#1024) (David)
FIX: Regression: invalid Locale or Output Type names in routes trigger premature exceptions (#1023) (David)
FIX: Use of undefined variable $request in AgaviWebRouting::execute() (#1025) (David)


1.0.0 beta8 (February 4, 2009)
------------------------------

SEC: CVE-2009-0417: Cross-site scripting vulnerability in handling of incoming URLs (#1019) (David)

ADD: AgaviController::dispatch() should accept an AgaviExecutionContainer as optional second argument (#1012) (David)
ADD: Allow relative min and max values using strtotime syntax in AgaviDateTimeValidator (#1018) (Dominik)
ADD: Support for arbitrary HTTP POST Content Types (#1015) (David)
ADD: Automatically decode HTTP PUT payload into request parameters for application/x-www-form-urlencoded Content-Type in AgaviWebRequest (#1016) (David)
ADD: Support for anti-stampede callbacks in Execution Filter (#744) (David)
ADD: AgaviResponse::hasContent() (#1007) (David)
ADD: Complete support for multiple SOAP services in the same application (#1001) (David)
ADD: AgaviException::render() should send shell exit code (#990) (David)
ADD: Command line support (request/response/routing) (#480) (David)
ADD: Optionally set 'secure' flag on response cookies automatically (#982) (David)
ADD: Optionally set 'secure' flag on session cookies automatically (#981) (David)
ADD: Add AgaviWebRequest::isHttps() convenience method (#980) (David)
ADD: Allow setting of session save path in AgaviSessionStorage (#979) (David)

CHG: Throw named error if "required" condition is not satisfied in validators (#1020) (Dominik)
CHG: Add extension points to XML schema definitions where feasible (#515) (David, Noah)
CHG: Change configuration system to support only XML (#519) (David, Noah)
CHG: AgaviTimezone::createCustomTimeZone() should throw exceptions for unparseable TZ strings (#958) (David)
CHG: Rewrite Routing (#448) (Dominik, David, Felix)
CHG: Make populating of module and action names into request data configurable and remove overwriting behavior (#812) (David)
CHG: Polish the Sample App (#998) (David)
CHG: Update timezone database to 2009a (#1013) (David)
CHG: Steamline date formatting and parsing behaviors when using timezones (#964) (Dominik, David, Felix)
CHG: Rename AgaviTranslationManager::getCurrentTimeZone() to getDefaultTimeZone() (#994) (David)
CHG: Remove unused property AgaviOperatorValidator::$errors (#987) (David)
CHG: Allow arbitrary number of fractional seconds for parsing date formats (#977) (Dominik)

FIX: Content-Type and Content-Length request headers are treated incorrectly (#1017) (David)
FIX: AgaviWebRequest HTTP PUT support ignores Content-Type header (#1014) (David)
FIX: Project configuration system does not reflect user-specified template extension in configuration (#1003) (Noah)
FIX: Project configuration system does not copy all templates according to user-specified extension (#1002) (Noah)
FIX: Several date classes are lacking type hints in method signatures (#997) (Dominik)
FIX: FPF does not insert error messages or classes for submit buttons (#1011) (David)
FIX: Shiny exception template produces invalid XHTML (#1009) (David)
FIX: Sample App's and code templates' SecureSuccessView responds with a 401 HTTP status code instead of 403 (#1010) (David)
FIX: [EXPLETIVE] Fucking Debian fucking ruined their fucking PHP package once again, and now we need to waste fucking time to fucking fix it (#1008)
FIX: AgaviSoapController does not handle some SoapServer/SoapClient options properly (#1006) (David)
FIX: Marshalling of document/literal wrapped SOAP responses is broken (#1004) (David)
FIX: Infinite loop is infinite (#1000) (David)
FIX: Default compile.xml and Sample app's Disabled module module.xml are still in old configuration format (#999) (David)
FIX: AgaviCalendar::setTimeInMillis() doesn't explicitly cast value to float (#996) (David)
FIX: Build system does not always identify modules correctly (#924) (Noah)
FIX: The AgaviDateTimeValidator doesn't check input value types for unix and unix_milliseconds formats
FIX: AgaviConfigCache::loadConfigHandlers() may trigger "cannot redeclare class" fatal error (#989) (David)
FIX: Caching generates invalid group values in some cases (#988) (David)
FIX: Validation marks fields that weren't processed due to unsatisfied dependencies as sucessful (#984) (Dominik, David)
FIX: Form Population Filter reveals errors from validators with severities "silent" and "info" (#986) (David)
FIX: Validators with argument arrays might not perform dependency checks (#985) (David, Dominik)
FIX: AgaviValidationErrror::__construct() does not check type of arguments (#983) (Dominik)
FIX: The Milliseconds 1-99 are missing the leading 0 when a date is formatted (#978) (Dominik)
FIX: Module setting values are not literalized (#976) (David)


1.0.0 beta7 (January 11, 2009)
------------------------------

ADD: AgaviDateTimeValidator should accept input as UnixTimestamp and as TimeInMillis (#974) (Dominik)
ADD: Add option to control Propel 1.3 instance pooling (#960) (Felix)
ADD: AgaviArraylengthValidator (#948) (Dominik)
ADD: Allow optional marshalling of document/literal wrapped request and response elements (#940) (Felix, David)

CHG: Harden path string handling in AgaviArrayPathDefinition (#973) (David, Dominik)
CHG: Change magic_quotes_gpc handling to require PHP 5.2.8 and use the fixes introduced there (#953) (David)
CHG: Rename AgaviException::printStackTrace() (#949) (David)
CHG: Re-throw exception instead of printing stack trace and info in exception templates when display_errors is off (#952) (David)
CHG: Refactor AgaviConfigCache::callHandler() to be more modular and testable (#929) (Felix)
CHG: Refactor AgaviToolkit::stringBase() (#935) (Felix)
CHG: Add configuration file path to header comments in compiled files if possible (#938) (David)
CHG: Add +FollowSymLinks to .htaccess code templates and samples (#893) (David)

FIX: Init queries are not run correctly for Propel 1.3 (#975) (David)
FIX: AgaviWebResponse sends Content-Length header with value 0 even if 'send_redirect_content' option is enabled (#972) (David)
FIX: Using the timezone option in a locale string passed to _d() can possibly change the timezone of the given calendar object (#962) (Dominik)
FIX: AgaviValidationValidatorResult missing from autoload.xml (#969) (Veikko)
FIX: Caching does not support customized view name schemes (#970) (David)
FIX: AgaviTranslationManager::createCalendar() forgets TZ offset when called with DateTime object (#957) (Dominik)
FIX: Missing variable declaration in AgaviGettextTranslator (#968) (Dominik)
FIX: AgaviWebRequestDataHolder method implementations are all over the place (#955) (David)
FIX: Request data is not cleared if default View is run in absence of suitable Controller::execute*() method (#967) (David)
FIX: Slot container created inside a forward container retains "is_forward" parameter (#966) (David)
FIX: AgaviValidationManager::getFailedFields() calls invalid method (#963) (Dominik)
FIX: Access to global request data holder is not locked during AgaviAction::getDefaultViewName() (#954) (David)
FIX: The class name of AgaviAndoperatorValidator and AgaviNotoperatorValidator don't match the coding guidelines (#951) (David)
FIX: Several validators might raise notices or break altogether on incorrect argument types (#946) (Dominik)
FIX: AgaviValidator::getKeysInCurrentBase triggers a warning if the current validator base is no array (#947) (Dominik)
FIX: FPF error insertion fails if XPath expression yields more than one location in the document (#943) (David)
FIX: Arguments are unable to be named in validators configuration (#942) (Noah)
FIX: Possible to run any action by passing module/action parameters to invalid URL (#934) (David)
FIX: Pattern delimiter is not passed to several preg_quote calls (#939) (David)
FIX: Off-by-one error in AgaviToolkit::stringBase() (#936) (Felix)
FIX: AgaviPropelDatabase::connect() doesn't honor datasource parameter (#937) (David, Sven Kretschmann)
FIX: AgaviConfigCache::getCacheName() possibly creating ambiguous cache names (#932) (Felix)
FIX: AgaviConfigCache::getCacheName() path escaping problems (#931) (Felix)
FIX: Invalid CSS in project wizard's WelcomeSuccess template (#928) (TANAKA Koichi, David)
FIX: Converting an AgaviCalendar with a custom unnamed Timezone an DateTime object fails (#922) (Dominik)


1.0.0 beta6 (November 12, 2008)
-------------------------------

ADD: Optionally allow sending of response content when redirecting in AgaviWebResponse (#916) (David)

CHG: Assume "strict" validation mode directly inside AgaviValidationManager in addition to code templates and remove "conditional" default for development environments (#919) (David)
CHG: Add more best practices to code templates (#910) (David)
CHG: Use standard layouts etc for system actions instead of hand-built renderers and layers in code templates (#911) (David)
CHG: Always merge slot response metadata even if response content is null (#917) (David)
CHG: Update timezone database to 2008i (#912) (David)
CHG: Add standard warning about broken libxml versions (#909) (David)
CHG: Update timezone database to 2008h (#896) (David)

FIX: logging.xml and output_types.xml handlers have variable name escaping problems (#921) (David)
FIX: AgaviXmlConfigParser::transformProcessingInstructions() is broken completely (#918) (David)
FIX: Wrong urls when passing host and port to WebRouting::gen() (#902) (Felix)
FIX: build.xml is missing reset of code templates dir to default before copying dist.htaccess (#914) (David)
FIX: Filename patterns are escaped incorrectly in config_handlers.xml (#913) (Noah)
FIX: Build system fails to find or generate default action (#899) (Noah)
FIX: Config handlers definition loading sequence may cause exceptions with debug mode off (#905) (Dominik)
FIX: Less aggressive inclusion of per module config handlers, they are only loaded at first module initialization (#906) (Felix)
FIX: Regression: xml:base attributes left behind by XIncludes cause config validations to fail (#895) (Noah)
FIX: Regression: nested XIncludes cause segfaults in PHP 5.2.5 and lower (#894) (Noah)
FIX: Build system output is unreadable in Windows PowerShell (#891) (Noah)
FIX: AgaviSoapResponse::searchSoapHeader() compares namespaces incorrectly (#892) (David)
FIX: Calling AgaviValidationReport::getSucceededArguments() on virgin report object causes "Invalid argument supplied for foreach()" warning (#890) (David)


1.0.0 beta5 (October 20, 2008)
------------------------------

ADD: Allow for a fallback directory for template resolution in the project configuration system (#876) (Noah)

FIX: Validator config handler might produce undefined variable notices and subsequent errors with nested validators (#888) (David)
FIX: AgaviDatabase::getName() always returns false (#887) (David)
FIX: Validation config handler is broken for nested validators (#886) (David)


1.0.0 beta4 (October 19, 2008)
------------------------------

ADD: Add support for new validation configs to build system and introduce best practices (#882) (David)
ADD: Allow specifying of doctrine template implementations (#864) (David, TANAKA Koichi)

CHG: Clean up the Phing components of the project configuration system (#875) (Noah)
CHG: Change Form Population Filter to use validation system's ability to more accurately handle different sources of input (#786) (David)
CHG: Validation system needs to be able to tell two fields of same names, but from different sources, apart (#785) (Dominik)
CHG: Update logging.xml in Sample app and code templates and add "log" dir to Sample app (#879) (David)
CHG: Change singular/plural handling in AgaviXmlConfigDomElement convenience methods (#878) (David)

FIX: Build system output is unreadable in Terminal.app on Mac OS X Leopard (#885) (David)
FIX: Project configuration system depends on Phing >= 2.3.0, but should depend on >= 2.3.1 (#884) (Noah)
FIX: Build system does not create app/log folder in new projects (#881) (David, Noah)
FIX: Parameters are not merged in config_handlers.xml (#880) (David)
FIX: XInclude failure leads to corrupt exception error message (#877) (David)
FIX: Configuration files with old-style handlers are never validated (#870) (David)
FIX: Default autoload.xml is missing AgaviMysqliDatabase entry (#868) (David)
FIX: Per-module config_handlers.xml will cause "unsupported operand types" fatal error with debug mode off (#867) (David)
FIX: SOAP and XMLRPC test scripts in sample app are broken (#866) (David)
FIX: AgaviXmlConfigDomElement::hasChild() does not pass on $namespaceUri argument (#865) (David)
FIX: Certain validator names will cause a fatal error (#863) (David)


1.0.0 beta3 (September 21, 2008)
--------------------------------

ADD: Build system support for per-module config_handlers.xml (#855) (Noah)
ADD: Build system support for models in subdirectories (#851) (Noah)
ADD: Support for cache group callbacks (#854) (David)
ADD: Allow runtime configuration of Smarty via parameters in AgaviSmartyRenderer (#846) (David, TANAKA Koichi)
ADD: AgaviTidyFilter (#845) (David)
ADD: Allow convenience array index access in AgaviAttributeHolder (#843) (David)
ADD: Caching group element with array value support (#809) (David)
ADD: Allow customization of the way Actions, Views etc. are laid out in the filesystem (#668) (David)
ADD: AgaviXmlConfigDomElement::hasAgaviParameters() (#841) (David)

CHG: Update zoneinfo database to 2008f (#860) (David)
CHG: Improve sample app SearchEngineSpamAction to use ID and optionally name (#859) (David)
CHG: Factor out creation of frequently used classes from factories.xml to separate method (#857) (David)
CHG: Update ISO Schematron to latest release (#844) (Noah)
CHG: AgaviSmartyRenderer should not set a Smarty plugins dir (#848) (David)
CHG: Redesign module.xml completely to allow arbitrary settings (#834) (David)

FIX: Sample app SearchEngineSpamAction works with invalid product names (#861) (David)
FIX: Regression in AgaviXmlConfigDomElement::getAgaviParameters() (#856) (Noah)
FIX: XML namespace declarations are not carried over when transforming or merging configs (#853) (David)
FIX: AgaviXmlConfigParser does not copy <configurations> attributes when merging Agavi config files (#852) (David)
FIX: RELAX NG list definitions for "context" and "environment" attributes of <configuration> element allow only one value (#850) (David)
FIX: AgaviXmlrpcepiphpResponse::setHttpStatusCode() is not implemented but gets called in sample app Error404SuccessView (#849) (David)
FIX: System actions' templates are always copied to the first module (#805) (Noah)
FIX: Empty redirect in response may cause uninitialized string offset notice (#847) (David)
FIX: AgaviParameterHolder::removeParameter() does not try literal key lookup first (#842) (David)
FIX: module.xml must not be per-context (#839) (David)
FIX: AgaviXmlConfigDomElement::getIterator() uses incorrect XPath expressions (#840) (David)
FIX: AgaviXmlConfigXsltProcessor::transformToDoc() does not throw exceptions on runtime warnings (#837) (David)
FIX: AgaviXmlConfigXsltProcessor::transformToDoc() does not check parent return value (#836) (David)
FIX: Undefined variable notice when file for requested action does not exist (#835) (Felix)


1.0.0 beta2 (August 31, 2008)
-----------------------------

ADD: Add config option to run arbitrary SQL commands after connecting to a database (#646) (David)
ADD: Allow per-module config_handlers.xml (#826) (Felix)
ADD: Allow action-style subdirectory dot notation for models (#631) (Felix)
ADD: Allow ignoring of (X)HTML parse errors in FPF (#613) (David)
ADD: Allow skipping of template auto-assigns (#605) (David)
ADD: Set current Context instance on Doctrine connections (#800, #808) (David)

CHG: Sanity checks in AgaviExecutionContainer::set*Name() need refactoring (#780) (Felix)
CHG: Throw out legacy naming schemes support and support autoloading of Actions, Views and Models (#829) (Felix)
CHG: Add module initialization method and use it where appropriate (#825) (Felix)
CHG: Do not remove module autoload definitions after action execution (#824) (Felix)
CHG: Refactor AgaviExecutionContainer::execute, AgaviController::dispatch and AgaviSecurityFilter::dispatch to have forwards in separate methods (#827) (Felix)
CHG: Improve AgaviInflector performance (#823) (Thomas Bachem, David)
CHG: Change the Pricefinder Model in the Sample App to have a more useful name (#819) (Felix)
CHG: Make AgaviContext implementation configurable (#815) (David)
CHG: Enhance HTTP status code validation for AgaviWebResponse::setRedirect() (#804) (David)

FIX: AgaviEqualsValidator's docs do not match the actual validation process (#833) (Dominik)
FIX: Invalid argument name in AgaviValidationManager::hasError() (#832) (David)
FIX: Phing 2.2.0 is a dependency, but 2.3.0 is required for new build system (#828) (David)
FIX: The gettext translator doesn't interpret the plural forms like the original gettext implementation (#821) (Dominik)
FIX: AgaviView::initialize() incorrectly assigns container's response to a property (#813) (David)
FIX: Some config handlers use PHP-5.3-reserved-word "NAMESPACE" as constant (#810) (David, Benjamin Börngen-Schmidt)
FIX: src/config/xsl/routing.xsl is missing (#811) (David)


1.0.0 beta1 (August 10, 2008)
-----------------------------

ADD: Implement Schematron support (#761) (David, Noah)
ADD: XSL Transformations done by XML Config Parser should have some information available in template parameters (#710) (David, Noah)
ADD: Add extension points to XML schema definitions where feasible (#515) (David, Noah)
ADD: Update SOAP support to make use of functionality introduced in #710 (#795) (David)
ADD: Allow additional types for second argument of AgaviLoggerManager::log() (#634) (David)
ADD: AgaviMysqliDatabase (#601) (Blake Matheny, David)

CHG: Move XML validation to RelaxNG and Schematron (#462) (Noah, David)
CHG: Change configuration system to support only XML (#519) (David, Noah)
CHG: Change default for assigning of "inner" content to $slots template array to disabled (#794) (David)
CHG: Rewrite the project build system and throw out the old one (#689) (Noah)
CHG: Refactor internal "system action" handling and fowarding (#769) (David)
CHG: Bump minimum required PHP version to 5.2.0 (#738) (David)
CHG: Remove direct association of validator instances and request methods (#767) (David)
CHG: Make request method per-container (#667) (David)
CHG: Deprecate core.use_routing in favor of a routing config parameter (#683) (David)
CHG: Moved AgaviWebRequest::getSourceValue() to AgaviRequest (#686) (David)
CHG: Deprecated AgaviSecureWebRequest (#676) (David)
CHG: Deprecated AgaviAdodbDatabase (#662) (David)

FIX: Security filters cannot perform checks in addition to isSecure() (#671) (David)

