123 |
- 1547825685
- s:352795:"{"version":"1.5.6","date":"2018-12-14T22:08:22Z","assets":{"grav-admin":{"name":"grav-admin-v1.5.6.zip","type":"application\/octet-stream","size":9946613,"download":"https:\/\/getgrav.org\/download\/core\/grav-admin\/1.5.6"},"grav-update":{"name":"grav-update-v1.5.6.zip","type":"application\/octet-stream","size":3594244,"download":"https:\/\/getgrav.org\/download\/core\/grav-update\/1.5.6"},"grav":{"name":"grav-v1.5.6.zip","type":"application\/octet-stream","size":5750123,"download":"https:\/\/getgrav.org\/download\/core\/grav\/1.5.6"}},"url":"https:\/\/github.com\/getgrav\/grav\/releases\/tag\/1.5.6","min_php":"5.6.4","changelog":{"1.5.6":{"date":"12\/14\/2018","content":"1. [](#improved)\n * Updated InitializeProcessor.php to use lang-safe redirect [#2268](https:\/\/github.com\/getgrav\/grav\/pull\/2268)\n * Improved user serialization to use less memory in the session","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Updated InitializeProcessor.php to use lang-safe redirect <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2268\">#2268<\/a><\/li>\n<li>Improved user serialization to use less memory in the session<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Updated InitializeProcessor.php to use lang-safe redirect #2268\nImproved user serialization to use less memory in the session"},"1.5.5":{"date":"11\/12\/2018","content":"1. [](#new)\n * Register theme prefixes as namespaces in Twig [#2210](https:\/\/github.com\/getgrav\/grav\/pull\/2210)\n1. [](#improved)\n * Propogate error code between 400 and 600 for production sites [#2181](https:\/\/github.com\/getgrav\/grav\/pull\/2181)\n1. [](#bugfix)\n * Remove hardcoded `302` when redirecting trailing slash [#2155](https:\/\/github.com\/getgrav\/grav\/pull\/2155)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Register theme prefixes as namespaces in Twig <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2210\">#2210<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Propogate error code between 400 and 600 for production sites <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2181\">#2181<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Remove hardcoded <code>302<\/code> when redirecting trailing slash <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2155\">#2155<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Register theme prefixes as namespaces in Twig #2210\n\n\n\nPropogate error code between 400 and 600 for production sites #2181\n\n\n\nRemove hardcoded 302 when redirecting trailing slash #2155"},"1.5.4":{"date":"11\/05\/2018","content":"1. [](#improved)\n * Updated default page `index.md` with some consistency fixes [#2245](https:\/\/github.com\/getgrav\/grav\/pull\/2245)\n1. [](#bugfix)\n * Fixed fatal error if calling `$session->invalidate()` when there's no active session\n * Fixed typo in media.yaml for `webm` extension [#2220](https:\/\/github.com\/getgrav\/grav\/pull\/2220)\n * Fixed markdown processing for telephone links [#2235](https:\/\/github.com\/getgrav\/grav\/pull\/2235)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Updated default page <code>index.md<\/code> with some consistency fixes <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2245\">#2245<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed fatal error if calling <code>$session->invalidate()<\/code> when there's no active session<\/li>\n<li>Fixed typo in media.yaml for <code>webm<\/code> extension <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2220\">#2220<\/a><\/li>\n<li>Fixed markdown processing for telephone links <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2235\">#2235<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Updated default page index.md with some consistency fixes #2245\n\n\n\nFixed fatal error if calling $session->invalidate() when there's no active session\nFixed typo in media.yaml for webm extension #2220\nFixed markdown processing for telephone links #2235"},"1.5.3":{"date":"10\/08\/2018","content":"1. [](#new)\n * Added `Utils::getMimeByFilename()`, `Utils::getMimeByLocalFile()` and `Utils::checkFilename()` methods\n * Added configurable dangerous upload extensions in `security.yaml`\n1. [](#improved)\n * Updated vendor libraries to latest","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <code>Utils::getMimeByFilename()<\/code>, <code>Utils::getMimeByLocalFile()<\/code> and <code>Utils::checkFilename()<\/code> methods<\/li>\n<li>Added configurable dangerous upload extensions in <code>security.yaml<\/code><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Updated vendor libraries to latest<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added Utils::getMimeByFilename(), Utils::getMimeByLocalFile() and Utils::checkFilename() methods\nAdded configurable dangerous upload extensions in security.yaml\n\n\n\nUpdated vendor libraries to latest"},"1.5.2":{"date":"10\/01\/2018","content":"1. [](#new)\n * Added new `Security` class for Grav security functionality including XSS checks\n * Added new `bin\/grav security` command to scan for security issues\n * Added new `xss()` Twig function to allow for XSS checks on strings and arrays\n * Added `onHttpPostFilter` event to allow plugins to globally clean up XSS in the forms and tasks\n * Added `Deprecated` tab to DebugBar to catch future incompatibilities with later Grav versions\n * Added deprecation notices for features which will be removed in Grav 2.0\n1. [](#improved)\n * Updated vendor libraries to latest\n1. [](#bugfix)\n * Allow `$page->slug()` to be called before `$page->init()` without breaking the page\n * Fix for `Page::translatedLanguages()` to use routes always [#2163](https:\/\/github.com\/getgrav\/grav\/issues\/2163)\n * Fixed `nicetime()` twig function\n * Allow twig tags `{% script %}`, `{% style %}` and `{% switch %}` to be placed outside of blocks\n * Session expires in 30 mins independent from config settings [login#178](https:\/\/github.com\/getgrav\/grav-plugin-login\/issues\/178)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>Security<\/code> class for Grav security functionality including XSS checks<\/li>\n<li>Added new <code>bin\/grav security<\/code> command to scan for security issues<\/li>\n<li>Added new <code>xss()<\/code> Twig function to allow for XSS checks on strings and arrays<\/li>\n<li>Added <code>onHttpPostFilter<\/code> event to allow plugins to globally clean up XSS in the forms and tasks<\/li>\n<li>Added <code>Deprecated<\/code> tab to DebugBar to catch future incompatibilities with later Grav versions<\/li>\n<li>Added deprecation notices for features which will be removed in Grav 2.0<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Updated vendor libraries to latest<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Allow <code>$page->slug()<\/code> to be called before <code>$page->init()<\/code> without breaking the page<\/li>\n<li>Fix for <code>Page::translatedLanguages()<\/code> to use routes always <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/2163\">#2163<\/a><\/li>\n<li>Fixed <code>nicetime()<\/code> twig function<\/li>\n<li>Allow twig tags <code>{% script %}<\/code>, <code>{% style %}<\/code> and <code>{% switch %}<\/code> to be placed outside of blocks<\/li>\n<li>Session expires in 30 mins independent from config settings <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-login\/issues\/178\">login#178<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new Security class for Grav security functionality including XSS checks\nAdded new bin\/grav security command to scan for security issues\nAdded new xss() Twig function to allow for XSS checks on strings and arrays\nAdded onHttpPostFilter event to allow plugins to globally clean up XSS in the forms and tasks\nAdded Deprecated tab to DebugBar to catch future incompatibilities with later Grav versions\nAdded deprecation notices for features which will be removed in Grav 2.0\n\n\n\nUpdated vendor libraries to latest\n\n\n\nAllow $page->slug() to be called before $page->init() without breaking the page\nFix for Page::translatedLanguages() to use routes always #2163\nFixed nicetime() twig function\nAllow twig tags {% script %}, {% style %} and {% switch %} to be placed outside of blocks\nSession expires in 30 mins independent from config settings login#178"},"1.5.1":{"date":"08\/23\/2018","content":"1. [](#new)\n * Added static `Grav\\Common\\Yaml` class which should be used instead of `Symfony\\Component\\Yaml\\Yaml`\n1. [](#improved)\n * Updated deprecated Twig code so it works in both in Twig 1.34+ and Twig 2.4+\n * Switched to new Grav Yaml class to support Native + Fallback YAML libraries\n1. [](#bugfix)\n * Broken handling of user folder in Grav URI object [#2151](https:\/\/github.com\/getgrav\/grav\/issues\/2151)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added static <code>Grav\\Common\\Yaml<\/code> class which should be used instead of <code>Symfony\\Component\\Yaml\\Yaml<\/code><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Updated deprecated Twig code so it works in both in Twig 1.34+ and Twig 2.4+<\/li>\n<li>Switched to new Grav Yaml class to support Native + Fallback YAML libraries<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Broken handling of user folder in Grav URI object <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/2151\">#2151<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added static Grav\\Common\\Yaml class which should be used instead of Symfony\\Component\\Yaml\\Yaml\n\n\n\nUpdated deprecated Twig code so it works in both in Twig 1.34+ and Twig 2.4+\nSwitched to new Grav Yaml class to support Native + Fallback YAML libraries\n\n\n\nBroken handling of user folder in Grav URI object #2151"},"1.5.0":{"date":"08\/17\/2018","content":"1. [](#new)\n * Set minimum requirements to [PHP 5.6.4](https:\/\/getgrav.org\/blog\/raising-php-requirements-2018)\n * Updated Doctrine Collections to 1.4\n * Updated Symfony Components to 3.4 (with compatibility mode to fall back to Symfony YAML 2.8)\n * Added `Uri::method()` to get current HTTP method (GET\/POST etc)\n * `FormatterInterface`: Added `getSupportedFileExtensions()` and `getDefaultFileExtension()` methods\n * Added option to disable `SimpleCache` key validation\n * Added support for multiple repo locations for `bin\/grav install` command\n * Added twig filters for casting values: `|string`, `|int`, `|bool`, `|float`, `|array`\n * Made `ObjectCollection::matching()` criteria expressions to behave more like in Twig\n * Criteria: Added support for `LENGTH()`, `LOWER()`, `UPPER()`, `LTRIM()`, `RTRIM()` and `TRIM()`\n * Added `Grav\\Framework\\File\\Formatter` classes for encoding\/decoding YAML, Markdown, JSON, INI and PHP serialized strings\n * Added `Grav\\Framework\\Session` class to replace `RocketTheme\\Toolbox\\Session\\Session`\n * Added `Grav\\Common\\Media` interfaces and trait; use those in `Page` and `Media` classes\n * Added `Grav\\Common\\Page` interface to allow custom page types in the future\n * Added setting to disable sessions from the site [#2013](https:\/\/github.com\/getgrav\/grav\/issues\/2013)\n * Added new `strict_mode` settings in `system.yaml` for compatibility\n1. [](#improved)\n * Improved `Utils::url()` to support query strings\n * Display better exception message if Grav fails to initialize\n * Added `muted` and `playsinline` support to videos [#2124](https:\/\/github.com\/getgrav\/grav\/pull\/2124)\n * Added `MediaTrait::clearMediaCache()` to allow cache to be cleared\n * Added `MediaTrait::getMediaCache()` to allow custom caching\n * Improved session handling, allow all session configuration options in `system.session.options`\n1. [](#bugfix)\n * Fix broken form nonce logic [#2121](https:\/\/github.com\/getgrav\/grav\/pull\/2121)\n * Fixed issue with uppercase extensions and fallback media URLs [#2133](https:\/\/github.com\/getgrav\/grav\/issues\/2133)\n * Fixed theme inheritance issue with `camel-case` that includes numbers [#2134](https:\/\/github.com\/getgrav\/grav\/issues\/2134)\n * Typo in demo typography page [#2136](https:\/\/github.com\/getgrav\/grav\/pull\/2136)\n * Fix for incorrect plugin order in debugger panel\n * Made `|markdown` filter HTML safe\n * Fixed bug in `ContentBlock` serialization\n * Fixed `Route::withQueryParam()` to accept array values\n * Fixed typo in truncate function [#1943](https:\/\/github.com\/getgrav\/grav\/issues\/1943)\n * Fixed blueprint field validation: Allow numeric inputs in text fields","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Set minimum requirements to <a href=\"https:\/\/getgrav.org\/blog\/raising-php-requirements-2018\">PHP 5.6.4<\/a><\/li>\n<li>Updated Doctrine Collections to 1.4<\/li>\n<li>Updated Symfony Components to 3.4 (with compatibility mode to fall back to Symfony YAML 2.8)<\/li>\n<li>Added <code>Uri::method()<\/code> to get current HTTP method (GET\/POST etc)<\/li>\n<li><code>FormatterInterface<\/code>: Added <code>getSupportedFileExtensions()<\/code> and <code>getDefaultFileExtension()<\/code> methods<\/li>\n<li>Added option to disable <code>SimpleCache<\/code> key validation<\/li>\n<li>Added support for multiple repo locations for <code>bin\/grav install<\/code> command<\/li>\n<li>Added twig filters for casting values: <code>|string<\/code>, <code>|int<\/code>, <code>|bool<\/code>, <code>|float<\/code>, <code>|array<\/code><\/li>\n<li>Made <code>ObjectCollection::matching()<\/code> criteria expressions to behave more like in Twig<\/li>\n<li>Criteria: Added support for <code>LENGTH()<\/code>, <code>LOWER()<\/code>, <code>UPPER()<\/code>, <code>LTRIM()<\/code>, <code>RTRIM()<\/code> and <code>TRIM()<\/code><\/li>\n<li>Added <code>Grav\\Framework\\File\\Formatter<\/code> classes for encoding\/decoding YAML, Markdown, JSON, INI and PHP serialized strings<\/li>\n<li>Added <code>Grav\\Framework\\Session<\/code> class to replace <code>RocketTheme\\Toolbox\\Session\\Session<\/code><\/li>\n<li>Added <code>Grav\\Common\\Media<\/code> interfaces and trait; use those in <code>Page<\/code> and <code>Media<\/code> classes<\/li>\n<li>Added <code>Grav\\Common\\Page<\/code> interface to allow custom page types in the future<\/li>\n<li>Added setting to disable sessions from the site <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/2013\">#2013<\/a><\/li>\n<li>Added new <code>strict_mode<\/code> settings in <code>system.yaml<\/code> for compatibility<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved <code>Utils::url()<\/code> to support query strings<\/li>\n<li>Display better exception message if Grav fails to initialize<\/li>\n<li>Added <code>muted<\/code> and <code>playsinline<\/code> support to videos <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2124\">#2124<\/a><\/li>\n<li>Added <code>MediaTrait::clearMediaCache()<\/code> to allow cache to be cleared<\/li>\n<li>Added <code>MediaTrait::getMediaCache()<\/code> to allow custom caching<\/li>\n<li>Improved session handling, allow all session configuration options in <code>system.session.options<\/code><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix broken form nonce logic <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2121\">#2121<\/a><\/li>\n<li>Fixed issue with uppercase extensions and fallback media URLs <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/2133\">#2133<\/a><\/li>\n<li>Fixed theme inheritance issue with <code>camel-case<\/code> that includes numbers <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/2134\">#2134<\/a><\/li>\n<li>Typo in demo typography page <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2136\">#2136<\/a><\/li>\n<li>Fix for incorrect plugin order in debugger panel<\/li>\n<li>Made <code>|markdown<\/code> filter HTML safe<\/li>\n<li>Fixed bug in <code>ContentBlock<\/code> serialization<\/li>\n<li>Fixed <code>Route::withQueryParam()<\/code> to accept array values<\/li>\n<li>Fixed typo in truncate function <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1943\">#1943<\/a><\/li>\n<li>Fixed blueprint field validation: Allow numeric inputs in text fields<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Set minimum requirements to PHP 5.6.4\nUpdated Doctrine Collections to 1.4\nUpdated Symfony Components to 3.4 (with compatibility mode to fall back to Symfony YAML 2.8)\nAdded Uri::method() to get current HTTP method (GET\/POST etc)\nFormatterInterface: Added getSupportedFileExtensions() and getDefaultFileExtension() methods\nAdded option to disable SimpleCache key validation\nAdded support for multiple repo locations for bin\/grav install command\nAdded twig filters for casting values: |string, |int, |bool, |float, |array\nMade ObjectCollection::matching() criteria expressions to behave more like in Twig\nCriteria: Added support for LENGTH(), LOWER(), UPPER(), LTRIM(), RTRIM() and TRIM()\nAdded Grav\\Framework\\File\\Formatter classes for encoding\/decoding YAML, Markdown, JSON, INI and PHP serialized strings\nAdded Grav\\Framework\\Session class to replace RocketTheme\\Toolbox\\Session\\Session\nAdded Grav\\Common\\Media interfaces and trait; use those in Page and Media classes\nAdded Grav\\Common\\Page interface to allow custom page types in the future\nAdded setting to disable sessions from the site #2013\nAdded new strict_mode settings in system.yaml for compatibility\n\n\n\nImproved Utils::url() to support query strings\nDisplay better exception message if Grav fails to initialize\nAdded muted and playsinline support to videos #2124\nAdded MediaTrait::clearMediaCache() to allow cache to be cleared\nAdded MediaTrait::getMediaCache() to allow custom caching\nImproved session handling, allow all session configuration options in system.session.options\n\n\n\nFix broken form nonce logic #2121\nFixed issue with uppercase extensions and fallback media URLs #2133\nFixed theme inheritance issue with camel-case that includes numbers #2134\nTypo in demo typography page #2136\nFix for incorrect plugin order in debugger panel\nMade |markdown filter HTML safe\nFixed bug in ContentBlock serialization\nFixed Route::withQueryParam() to accept array values\nFixed typo in truncate function #1943\nFixed blueprint field validation: Allow numeric inputs in text fields"},"1.4.8":{"date":"07\/31\/2018","content":"1. [](#improved)\n * Add Grav version to debug bar messages tab [#2106](https:\/\/github.com\/getgrav\/grav\/pull\/2106)\n * Add Nginx config for ddev project to `webserver-configs` [#2117](https:\/\/github.com\/getgrav\/grav\/pull\/2117)\n * Vendor library updates\n1. [](#bugfix)\n * Don't allow `null` to be set as Page content","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Add Grav version to debug bar messages tab <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2106\">#2106<\/a><\/li>\n<li>Add Nginx config for ddev project to <code>webserver-configs<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2117\">#2117<\/a><\/li>\n<li>Vendor library updates<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Don't allow <code>null<\/code> to be set as Page content<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Add Grav version to debug bar messages tab #2106\nAdd Nginx config for ddev project to webserver-configs #2117\nVendor library updates\n\n\n\nDon't allow null to be set as Page content"},"1.4.7":{"date":"07\/13\/2018","content":"1. [](#improved)\n * Use `getFilename` instead of `getBasename` [#2087](https:\/\/github.com\/getgrav\/grav\/issues\/2087)\n1. [](#bugfix)\n * Fix for modular page preview [#2066](https:\/\/github.com\/getgrav\/grav\/issues\/2066)\n * `Page::routeCanonical()` should be string not array [#2069](https:\/\/github.com\/getgrav\/grav\/issues\/2069)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Use <code>getFilename<\/code> instead of <code>getBasename<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/2087\">#2087<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for modular page preview <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/2066\">#2066<\/a><\/li>\n<li><code>Page::routeCanonical()<\/code> should be string not array <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/2069\">#2069<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Use getFilename instead of getBasename #2087\n\n\n\nFix for modular page preview #2066\nPage::routeCanonical() should be string not array #2069"},"1.4.6":{"date":"06\/20\/2018","content":"1. [](#improved)\n * Manually re-added the improved SSL off-loading that was lost with Grav v1.4.0 merge [#1888](https:\/\/github.com\/getgrav\/grav\/pull\/1888)\n * Handle multibyte strings in `truncateLetters()` [#2007](https:\/\/github.com\/getgrav\/grav\/pull\/2007)\n * Updated robots.txt to include `\/user\/images\/` folder [#2043](https:\/\/github.com\/getgrav\/grav\/pull\/2043)\n * Add getter methods for original and action to the Page object [#2005](https:\/\/github.com\/getgrav\/grav\/pull\/2005)\n * Modular template extension follows the master page extension [#2044](https:\/\/github.com\/getgrav\/grav\/pull\/2044)\n * Vendor library updates\n1. [](#bugfix)\n * Handle `errors.display` system property better in admin plugin [admin#1452](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1452)\n * Fix classes on non-http based protocol links [#2034](https:\/\/github.com\/getgrav\/grav\/issues\/2034)\n * Fixed crash on IIS (Windows) with open_basedir in effect [#2053](https:\/\/github.com\/getgrav\/grav\/issues\/2053)\n * Fixed incorrect routing with setup.php based base [#1892](https:\/\/github.com\/getgrav\/grav\/issues\/1892)\n * Fixed image resource memory deallocation [#2045](https:\/\/github.com\/getgrav\/grav\/pull\/2045)\n * Fixed issue with Errors `display:` option not handling integers properly [admin#1452](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1452)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Manually re-added the improved SSL off-loading that was lost with Grav v1.4.0 merge <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1888\">#1888<\/a><\/li>\n<li>Handle multibyte strings in <code>truncateLetters()<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2007\">#2007<\/a><\/li>\n<li>Updated robots.txt to include <code>\/user\/images\/<\/code> folder <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2043\">#2043<\/a><\/li>\n<li>Add getter methods for original and action to the Page object <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2005\">#2005<\/a><\/li>\n<li>Modular template extension follows the master page extension <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2044\">#2044<\/a><\/li>\n<li>Vendor library updates<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Handle <code>errors.display<\/code> system property better in admin plugin <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1452\">admin#1452<\/a><\/li>\n<li>Fix classes on non-http based protocol links <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/2034\">#2034<\/a><\/li>\n<li>Fixed crash on IIS (Windows) with open_basedir in effect <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/2053\">#2053<\/a><\/li>\n<li>Fixed incorrect routing with setup.php based base <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1892\">#1892<\/a><\/li>\n<li>Fixed image resource memory deallocation <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2045\">#2045<\/a><\/li>\n<li>Fixed issue with Errors <code>display:<\/code> option not handling integers properly <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1452\">admin#1452<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Manually re-added the improved SSL off-loading that was lost with Grav v1.4.0 merge #1888\nHandle multibyte strings in truncateLetters() #2007\nUpdated robots.txt to include \/user\/images\/ folder #2043\nAdd getter methods for original and action to the Page object #2005\nModular template extension follows the master page extension #2044\nVendor library updates\n\n\n\nHandle errors.display system property better in admin plugin admin#1452\nFix classes on non-http based protocol links #2034\nFixed crash on IIS (Windows) with open_basedir in effect #2053\nFixed incorrect routing with setup.php based base #1892\nFixed image resource memory deallocation #2045\nFixed issue with Errors display: option not handling integers properly admin#1452"},"1.4.5":{"date":"05\/15\/2018","content":"1. [](#bugfix)\n * Fixed an issue with some users getting **2FA** prompt after upgrade [admin#1442](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1442)\n * Do not crash when generating URLs with arrays as parameters [#2018](https:\/\/github.com\/getgrav\/grav\/pull\/2018)\n * Utils::truncateHTML removes whitespace when generating summaries [#2004](https:\/\/github.com\/getgrav\/grav\/pull\/2004)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed an issue with some users getting <strong>2FA<\/strong> prompt after upgrade <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1442\">admin#1442<\/a><\/li>\n<li>Do not crash when generating URLs with arrays as parameters <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2018\">#2018<\/a><\/li>\n<li>Utils::truncateHTML removes whitespace when generating summaries <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/2004\">#2004<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed an issue with some users getting 2FA prompt after upgrade admin#1442\nDo not crash when generating URLs with arrays as parameters #2018\nUtils::truncateHTML removes whitespace when generating summaries #2004"},"1.4.4":{"date":"05\/11\/2018","content":"1. [](#new)\n * Added support for `Uri::post()` and `Uri::getConentType()`\n * Added a new `Medium:thumbnailExists()` function [#1966](https:\/\/github.com\/getgrav\/grav\/issues\/1966)\n * Added `authorized` support for 2FA\n1. [](#improved)\n * Added default configuration for images [#1979](https:\/\/github.com\/getgrav\/grav\/pull\/1979)\n * Added dedicated PHPUnit assertions [#1990](https:\/\/github.com\/getgrav\/grav\/pull\/1990)\n1. [](#bugfix)\n * Use `array_key_exists` instead of `in_array + array_keys` [#1991](https:\/\/github.com\/getgrav\/grav\/pull\/1991)\n * Fixed an issue with `custom_base_url` always causing 404 errors\n * Improve support for regex redirects with query and params [#1983](https:\/\/github.com\/getgrav\/grav\/issues\/1983)\n * Changed collection-based date sorting to `SORT_REGULAR` for better server compatibility [#1910](https:\/\/github.com\/getgrav\/grav\/issues\/1910)\n * Fix hardcoded string in modular blueprint [#1933](https:\/\/github.com\/getgrav\/grav\/pull\/1993)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added support for <code>Uri::post()<\/code> and <code>Uri::getConentType()<\/code><\/li>\n<li>Added a new <code>Medium:thumbnailExists()<\/code> function <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1966\">#1966<\/a><\/li>\n<li>Added <code>authorized<\/code> support for 2FA<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Added default configuration for images <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1979\">#1979<\/a><\/li>\n<li>Added dedicated PHPUnit assertions <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1990\">#1990<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Use <code>array_key_exists<\/code> instead of <code>in_array + array_keys<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1991\">#1991<\/a><\/li>\n<li>Fixed an issue with <code>custom_base_url<\/code> always causing 404 errors<\/li>\n<li>Improve support for regex redirects with query and params <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1983\">#1983<\/a><\/li>\n<li>Changed collection-based date sorting to <code>SORT_REGULAR<\/code> for better server compatibility <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1910\">#1910<\/a><\/li>\n<li>Fix hardcoded string in modular blueprint <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1993\">#1933<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added support for Uri::post() and Uri::getConentType()\nAdded a new Medium:thumbnailExists() function #1966\nAdded authorized support for 2FA\n\n\n\nAdded default configuration for images #1979\nAdded dedicated PHPUnit assertions #1990\n\n\n\nUse array_key_exists instead of in_array + array_keys #1991\nFixed an issue with custom_base_url always causing 404 errors\nImprove support for regex redirects with query and params #1983\nChanged collection-based date sorting to SORT_REGULAR for better server compatibility #1910\nFix hardcoded string in modular blueprint #1933"},"1.4.3":{"date":"04\/12\/2018","content":"1. [](#new)\n * moved Twig `sortArrayByKey` logic into `Utils::` class\n1. [](#improved)\n * Rolled back Parsedown library to stable `1.6.4` until a better solution for `1.8.0` compatibility can fe found\n * Updated vendor libraries to latest versions\n1. [](#bugfix)\n * Fix for bad reference to `ZipArchive` in `GPM::Installer`","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>moved Twig <code>sortArrayByKey<\/code> logic into <code>Utils::<\/code> class<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Rolled back Parsedown library to stable <code>1.6.4<\/code> until a better solution for <code>1.8.0<\/code> compatibility can fe found<\/li>\n<li>Updated vendor libraries to latest versions<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for bad reference to <code>ZipArchive<\/code> in <code>GPM::Installer<\/code><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"moved Twig sortArrayByKey logic into Utils:: class\n\n\n\nRolled back Parsedown library to stable 1.6.4 until a better solution for 1.8.0 compatibility can fe found\nUpdated vendor libraries to latest versions\n\n\n\nFix for bad reference to ZipArchive in GPM::Installer"},"1.4.2":{"date":"03\/21\/2018","content":"1. [](#new)\n * Added new `|nicefilesize` Twig filter for pretty file (auto converts to bytes, kB, MB, GB, etc)\n * Added new `regex_filter()` Twig function to values in arrays\n1. [](#improved)\n * Added bosnian to lang codes [#1917](\ufeffhttps:\/\/github.com\/getgrav\/grav\/issues\/1917)\n * Improved Zip extraction error codes [#1922](\ufeffhttps:\/\/github.com\/getgrav\/grav\/issues\/1922)\n1. [](#bugfix)\n * Fixed an issue with Markdown Video and Audio that broke after Parsedown 1.7.0 Security updates [#1924](\ufeffhttps:\/\/github.com\/getgrav\/grav\/issues\/1924)\n * Fix for case-sensitive page metadata [admin#1370](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1370)\n * Fixed missing composer requirements for the new `Grav\\Framework\\Uri` classes\n * Added missing PSR-7 vendor library required for URI additions in Grav 1.4.0","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>|nicefilesize<\/code> Twig filter for pretty file (auto converts to bytes, kB, MB, GB, etc)<\/li>\n<li>Added new <code>regex_filter()<\/code> Twig function to values in arrays<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Added bosnian to lang codes <a href=\"\ufeffhttps:\/\/github.com\/getgrav\/grav\/issues\/1917\">#1917<\/a><\/li>\n<li>Improved Zip extraction error codes <a href=\"\ufeffhttps:\/\/github.com\/getgrav\/grav\/issues\/1922\">#1922<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed an issue with Markdown Video and Audio that broke after Parsedown 1.7.0 Security updates <a href=\"\ufeffhttps:\/\/github.com\/getgrav\/grav\/issues\/1924\">#1924<\/a><\/li>\n<li>Fix for case-sensitive page metadata <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1370\">admin#1370<\/a><\/li>\n<li>Fixed missing composer requirements for the new <code>Grav\\Framework\\Uri<\/code> classes<\/li>\n<li>Added missing PSR-7 vendor library required for URI additions in Grav 1.4.0<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new |nicefilesize Twig filter for pretty file (auto converts to bytes, kB, MB, GB, etc)\nAdded new regex_filter() Twig function to values in arrays\n\n\n\nAdded bosnian to lang codes #1917\nImproved Zip extraction error codes #1922\n\n\n\nFixed an issue with Markdown Video and Audio that broke after Parsedown 1.7.0 Security updates #1924\nFix for case-sensitive page metadata admin#1370\nFixed missing composer requirements for the new Grav\\Framework\\Uri classes\nAdded missing PSR-7 vendor library required for URI additions in Grav 1.4.0"},"1.4.1":{"date":"03\/11\/2018","content":"1. [](#bugfix)\n * Fixed session timing out because of session cookie was not being sent","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed session timing out because of session cookie was not being sent<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed session timing out because of session cookie was not being sent"},"1.4.0":{"date":"03\/09\/2018","content":"1. [](#new)\n * Added `Grav\\Framework\\Uri` classes extending PSR-7 `HTTP message UriInterface` implementation\n * Added `Grav\\Framework\\Route` classes to allow route\/link manipulation\n * Added `$grav['uri]->getCurrentUri()` method to get `Grav\\Framework\\Uri\\Uri` instance for the current URL\n * Added `$grav['uri]->getCurrentRoute()` method to get `Grav\\Framework\\Route\\Route` instance for the current URL\n * Added ability to have `php` version dependencies in GPM assets\n * Added new `{% switch %}` twig tag for more elegant if statements\n * Added new `{% markdown %}` twig tag\n * Added **Route Overrides** to the default page blueprint\n * Added new `Collection::toExtendedArray()` method that's particularly useful for Json output of data\n * Added new `|yaml_encode` and `|yaml_decode` Twig filter to convert to and from YAML\n * Added new `read_file()` Twig function to allow you to load and display a file in Twig (Supports streams and regular paths)\n * Added a new `Medium::exists()` method to check for file existence\n * Moved Twig `urlFunc()` to `Utils::url()` as its so darn handy\n * Transferred overall copyright from RocketTheme, LLC, to Trilby Media LLC\n * Added `theme_var`, `header_var` and `body_class` Twig functions for themes\n * Added `Grav\\Framework\\Cache` classes providing PSR-16 `Simple Cache` implementation\n * Added `Grav\\Framework\\ContentBlock` classes for nested HTML blocks with CSS\/JS assets\n * Added `Grav\\Framework\\Object` classes for creating collections of objects\n * Added `|nicenumber` Twig filter\n * Added `{% try %} ... {% catch %} Error: {{ e.message }} {% endcatch %}` tag to allow basic exception handling inside Twig\n * Added `{% script %}` and `{% style %}` tags for Twig templates\n * Deprecated GravTrait\n1. [](#improved)\n * Improved `Session` initialization\n * Added ability to set a `theme_var()` option in page frontmatter\n * Force clearing PHP `clearstatcache` and `opcache-reset` on `Cache::clear()`\n * Better `Page.collection()` filtering support including ability to have non-published pages in collections\n * Stopped Chrome from auto-completing admin user profile form [#1847](https:\/\/github.com\/getgrav\/grav\/issues\/1847)\n * Support for empty `switch` field like a `checkbox`\n * Made `modular` blueprint more flexible\n * Code optimizations to `Utils` class [#1830](https:\/\/github.com\/getgrav\/grav\/pull\/1830)\n * Objects: Add protected function `getElement()` to get serialized value for a single property\n * `ObjectPropertyTrait`: Added protected functions `isPropertyLoaded()`, `offsetLoad()`, `offsetPrepare()` and `offsetSerialize()`\n * `Grav\\Framework\\Cache`: Allow unlimited TTL\n * Optimizations & refactoring to the test suite [#1779](https:\/\/github.com\/getgrav\/grav\/pull\/1779)\n * Slight modification of Whoops error colors\n * Added new configuration option `system.session.initialize` to delay session initialization if needed by a plugin\n * Updated vendor libraries to latest versions\n * Removed constructor from `ObjectInterface`\n * Make it possible to include debug bar also into non-HTML responses\n * Updated built-in JQuery to latest 3.3.1\n1. [](#bugfix)\n * Fixed issue with image alt tag always getting empted out unless set in markdown\n * Fixed issue with remote PHP version determination for Grav updates [#1883](https:\/\/github.com\/getgrav\/grav\/issues\/1883)\n * Fixed issue with _illegal scheme offset_ in `Uri::convertUrl()` [page-inject#8](https:\/\/github.com\/getgrav\/grav-plugin-page-inject\/issues\/8)\n * Properly validate YAML blueprint fields so admin can save as proper YAML now [addresses many issues]\n * Fixed OpenGraph metatags so only Twitter uses `name=`, and all others use `property=` [#1849](https:\/\/github.com\/getgrav\/grav\/issues\/1849)\n * Fixed an issue with `evaluate()` and `evaluate_twig()` Twig functions that throws invalid template error\n * Fixed issue with `|sort_by_key` twig filter if the input was null or not an array\n * Date ordering should always be numeric [#1810](https:\/\/github.com\/getgrav\/grav\/issues\/1810)\n * Fix for base paths containing special characters [#1799](https:\/\/github.com\/getgrav\/grav\/issues\/1799)\n * Fix for session cookies in paths containing special characters\n * Fix for `vundefined` error for version numbers in GPM [form#222](https:\/\/github.com\/getgrav\/grav-plugin-form\/issues\/222)\n * Fixed `BadMethodCallException` thrown in GPM updates [#1784](https:\/\/github.com\/getgrav\/grav\/issues\/1784)\n * NOTE: Parsedown security release now escapes `&` to `&` in Markdown links","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <code>Grav\\Framework\\Uri<\/code> classes extending PSR-7 <code>HTTP message UriInterface<\/code> implementation<\/li>\n<li>Added <code>Grav\\Framework\\Route<\/code> classes to allow route\/link manipulation<\/li>\n<li>Added <code>$grav['uri]->getCurrentUri()<\/code> method to get <code>Grav\\Framework\\Uri\\Uri<\/code> instance for the current URL<\/li>\n<li>Added <code>$grav['uri]->getCurrentRoute()<\/code> method to get <code>Grav\\Framework\\Route\\Route<\/code> instance for the current URL<\/li>\n<li>Added ability to have <code>php<\/code> version dependencies in GPM assets<\/li>\n<li>Added new <code>{% switch %}<\/code> twig tag for more elegant if statements<\/li>\n<li>Added new <code>{% markdown %}<\/code> twig tag<\/li>\n<li>Added <strong>Route Overrides<\/strong> to the default page blueprint<\/li>\n<li>Added new <code>Collection::toExtendedArray()<\/code> method that's particularly useful for Json output of data<\/li>\n<li>Added new <code>|yaml_encode<\/code> and <code>|yaml_decode<\/code> Twig filter to convert to and from YAML<\/li>\n<li>Added new <code>read_file()<\/code> Twig function to allow you to load and display a file in Twig (Supports streams and regular paths)<\/li>\n<li>Added a new <code>Medium::exists()<\/code> method to check for file existence<\/li>\n<li>Moved Twig <code>urlFunc()<\/code> to <code>Utils::url()<\/code> as its so darn handy<\/li>\n<li>Transferred overall copyright from RocketTheme, LLC, to Trilby Media LLC<\/li>\n<li>Added <code>theme_var<\/code>, <code>header_var<\/code> and <code>body_class<\/code> Twig functions for themes<\/li>\n<li>Added <code>Grav\\Framework\\Cache<\/code> classes providing PSR-16 <code>Simple Cache<\/code> implementation<\/li>\n<li>Added <code>Grav\\Framework\\ContentBlock<\/code> classes for nested HTML blocks with CSS\/JS assets<\/li>\n<li>Added <code>Grav\\Framework\\Object<\/code> classes for creating collections of objects<\/li>\n<li>Added <code>|nicenumber<\/code> Twig filter<\/li>\n<li>Added <code>{% try %} ... {% catch %} Error: {{ e.message }} {% endcatch %}<\/code> tag to allow basic exception handling inside Twig<\/li>\n<li>Added <code>{% script %}<\/code> and <code>{% style %}<\/code> tags for Twig templates<\/li>\n<li>Deprecated GravTrait<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved <code>Session<\/code> initialization<\/li>\n<li>Added ability to set a <code>theme_var()<\/code> option in page frontmatter<\/li>\n<li>Force clearing PHP <code>clearstatcache<\/code> and <code>opcache-reset<\/code> on <code>Cache::clear()<\/code><\/li>\n<li>Better <code>Page.collection()<\/code> filtering support including ability to have non-published pages in collections<\/li>\n<li>Stopped Chrome from auto-completing admin user profile form <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1847\">#1847<\/a><\/li>\n<li>Support for empty <code>switch<\/code> field like a <code>checkbox<\/code><\/li>\n<li>Made <code>modular<\/code> blueprint more flexible<\/li>\n<li>Code optimizations to <code>Utils<\/code> class <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1830\">#1830<\/a><\/li>\n<li>Objects: Add protected function <code>getElement()<\/code> to get serialized value for a single property<\/li>\n<li><code>ObjectPropertyTrait<\/code>: Added protected functions <code>isPropertyLoaded()<\/code>, <code>offsetLoad()<\/code>, <code>offsetPrepare()<\/code> and <code>offsetSerialize()<\/code><\/li>\n<li><code>Grav\\Framework\\Cache<\/code>: Allow unlimited TTL<\/li>\n<li>Optimizations & refactoring to the test suite <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1779\">#1779<\/a><\/li>\n<li>Slight modification of Whoops error colors<\/li>\n<li>Added new configuration option <code>system.session.initialize<\/code> to delay session initialization if needed by a plugin<\/li>\n<li>Updated vendor libraries to latest versions<\/li>\n<li>Removed constructor from <code>ObjectInterface<\/code><\/li>\n<li>Make it possible to include debug bar also into non-HTML responses<\/li>\n<li>Updated built-in JQuery to latest 3.3.1<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue with image alt tag always getting empted out unless set in markdown<\/li>\n<li>Fixed issue with remote PHP version determination for Grav updates <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1883\">#1883<\/a><\/li>\n<li>Fixed issue with <em>illegal scheme offset<\/em> in <code>Uri::convertUrl()<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-page-inject\/issues\/8\">page-inject#8<\/a><\/li>\n<li>Properly validate YAML blueprint fields so admin can save as proper YAML now [addresses many issues]<\/li>\n<li>Fixed OpenGraph metatags so only Twitter uses <code>name=<\/code>, and all others use <code>property=<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1849\">#1849<\/a><\/li>\n<li>Fixed an issue with <code>evaluate()<\/code> and <code>evaluate_twig()<\/code> Twig functions that throws invalid template error<\/li>\n<li>Fixed issue with <code>|sort_by_key<\/code> twig filter if the input was null or not an array<\/li>\n<li>Date ordering should always be numeric <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1810\">#1810<\/a><\/li>\n<li>Fix for base paths containing special characters <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1799\">#1799<\/a><\/li>\n<li>Fix for session cookies in paths containing special characters<\/li>\n<li>Fix for <code>vundefined<\/code> error for version numbers in GPM <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-form\/issues\/222\">form#222<\/a><\/li>\n<li>Fixed <code>BadMethodCallException<\/code> thrown in GPM updates <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1784\">#1784<\/a><\/li>\n<li>NOTE: Parsedown security release now escapes <code>&<\/code> to <code>&amp;<\/code> in Markdown links<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added Grav\\Framework\\Uri classes extending PSR-7 HTTP message UriInterface implementation\nAdded Grav\\Framework\\Route classes to allow route\/link manipulation\nAdded $grav['uri]->getCurrentUri() method to get Grav\\Framework\\Uri\\Uri instance for the current URL\nAdded $grav['uri]->getCurrentRoute() method to get Grav\\Framework\\Route\\Route instance for the current URL\nAdded ability to have php version dependencies in GPM assets\nAdded new {% switch %} twig tag for more elegant if statements\nAdded new {% markdown %} twig tag\nAdded Route Overrides to the default page blueprint\nAdded new Collection::toExtendedArray() method that's particularly useful for Json output of data\nAdded new |yaml_encode and |yaml_decode Twig filter to convert to and from YAML\nAdded new read_file() Twig function to allow you to load and display a file in Twig (Supports streams and regular paths)\nAdded a new Medium::exists() method to check for file existence\nMoved Twig urlFunc() to Utils::url() as its so darn handy\nTransferred overall copyright from RocketTheme, LLC, to Trilby Media LLC\nAdded theme_var, header_var and body_class Twig functions for themes\nAdded Grav\\Framework\\Cache classes providing PSR-16 Simple Cache implementation\nAdded Grav\\Framework\\ContentBlock classes for nested HTML blocks with CSS\/JS assets\nAdded Grav\\Framework\\Object classes for creating collections of objects\nAdded |nicenumber Twig filter\nAdded {% try %} ... {% catch %} Error: {{ e.message }} {% endcatch %} tag to allow basic exception handling inside Twig\nAdded {% script %} and {% style %} tags for Twig templates\nDeprecated GravTrait\n\n\n\nImproved Session initialization\nAdded ability to set a theme_var() option in page frontmatter\nForce clearing PHP clearstatcache and opcache-reset on Cache::clear()\nBetter Page.collection() filtering support including ability to have non-published pages in collections\nStopped Chrome from auto-completing admin user profile form #1847\nSupport for empty switch field like a checkbox\nMade modular blueprint more flexible\nCode optimizations to Utils class #1830\nObjects: Add protected function getElement() to get serialized value for a single property\nObjectPropertyTrait: Added protected functions isPropertyLoaded(), offsetLoad(), offsetPrepare() and offsetSerialize()\nGrav\\Framework\\Cache: Allow unlimited TTL\nOptimizations & refactoring to the test suite #1779\nSlight modification of Whoops error colors\nAdded new configuration option system.session.initialize to delay session initialization if needed by a plugin\nUpdated vendor libraries to latest versions\nRemoved constructor from ObjectInterface\nMake it possible to include debug bar also into non-HTML responses\nUpdated built-in JQuery to latest 3.3.1\n\n\n\nFixed issue with image alt tag always getting empted out unless set in markdown\nFixed issue with remote PHP version determination for Grav updates #1883\nFixed issue with illegal scheme offset in Uri::convertUrl() page-inject#8\nProperly validate YAML blueprint fields so admin can save as proper YAML now [addresses many issues]\nFixed OpenGraph metatags so only Twitter uses name=, and all others use property= #1849\nFixed an issue with evaluate() and evaluate_twig() Twig functions that throws invalid template error\nFixed issue with |sort_by_key twig filter if the input was null or not an array\nDate ordering should always be numeric #1810\nFix for base paths containing special characters #1799\nFix for session cookies in paths containing special characters\nFix for vundefined error for version numbers in GPM form#222\nFixed BadMethodCallException thrown in GPM updates #1784\nNOTE: Parsedown security release now escapes & to &amp; in Markdown links"},"1.3.10":{"date":"12\/06\/2017","content":"1. [](#bugfix)\n * Reverted GPM Local pull request as it broken admin [#1742](https:\/\/github.com\/getgrav\/grav\/issues\/1742)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Reverted GPM Local pull request as it broken admin <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1742\">#1742<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Reverted GPM Local pull request as it broken admin #1742"},"1.3.9":{"date":"12\/05\/2017","content":"1. [](#new)\n * Added new core Twig templates for `partials\/metadata.html.twig` and `partials\/messages.html.twig`\n * Added ability to work with GPM locally [#1742](https:\/\/github.com\/getgrav\/grav\/issues\/1742)\n * Added new HTML5 audio controls [#1756](https:\/\/github.com\/getgrav\/grav\/issues\/1756)\n * Added `Medium::copy()` method to create a copy of a medium object\n * Added new `force_lowercase_urls` functionality on routes and slugs\n * Added new `item-list` filter type to remove empty items\n * Added new `setFlashCookieObject()` and `getFlashCookieObject()` methods to `Session` object\n * Added new `intl_enabled` option to disable PHP intl module collation when not needed\n1. [](#bugfix)\n * Fixed an issue with checkbox field validation [form#216](https:\/\/github.com\/getgrav\/grav-plugin-form\/issues\/216)\n * Fixed issue with multibyte Markdown link URLs [#1749](https:\/\/github.com\/getgrav\/grav\/issues\/1749)\n * Fixed issue with multibyte folder names [#1751](https:\/\/github.com\/getgrav\/grav\/issues\/1751)\n * Fixed several issues related to `system.custom_base_url` that were broken [#1736](https:\/\/github.com\/getgrav\/grav\/issues\/1736)\n * Dynamically added pages via `Pages::addPage()` were not firing `onPageProcessed()` event causing forms not to be processed\n * Fixed `Page::active()` and `Page::activeChild()` to work with UTF-8 characters in the URL [#1727](https:\/\/github.com\/getgrav\/grav\/issues\/1727)\n * Fixed typo in `modular.yaml` causing media to be ignored [#1725](https:\/\/github.com\/getgrav\/grav\/issues\/1725)\n * Reverted `case_insensitive_urls` option as it was causing issues with taxonomy [#1733](https:\/\/github.com\/getgrav\/grav\/pull\/1733)\n * Removed an extra `\/` in `CompileFile.php` [#1693](https:\/\/github.com\/getgrav\/grav\/pull\/1693)\n * Uri::Encode user and password to prevent issues in browsers\n * Fixed \"Invalid AJAX response\" When using Built-in PHP Webserver in Windows [#1258](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1258)\n * Remove support for `config.user`, it was broken and bad practise\n * Make sure that `clean cache` uses valid path [#1745](https:\/\/github.com\/getgrav\/grav\/pull\/1745)\n * Fixed token creation issue with `Uri` params like `\/id:3`\n * Fixed CSS Pipeline failing with Google remote fonts if the file was minified [#1261](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1261)\n * Forced `field.multiple: true` to allow use of min\/max options in `checkboxes.validate`","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new core Twig templates for <code>partials\/metadata.html.twig<\/code> and <code>partials\/messages.html.twig<\/code><\/li>\n<li>Added ability to work with GPM locally <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1742\">#1742<\/a><\/li>\n<li>Added new HTML5 audio controls <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1756\">#1756<\/a><\/li>\n<li>Added <code>Medium::copy()<\/code> method to create a copy of a medium object<\/li>\n<li>Added new <code>force_lowercase_urls<\/code> functionality on routes and slugs<\/li>\n<li>Added new <code>item-list<\/code> filter type to remove empty items<\/li>\n<li>Added new <code>setFlashCookieObject()<\/code> and <code>getFlashCookieObject()<\/code> methods to <code>Session<\/code> object<\/li>\n<li>Added new <code>intl_enabled<\/code> option to disable PHP intl module collation when not needed<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed an issue with checkbox field validation <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-form\/issues\/216\">form#216<\/a><\/li>\n<li>Fixed issue with multibyte Markdown link URLs <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1749\">#1749<\/a><\/li>\n<li>Fixed issue with multibyte folder names <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1751\">#1751<\/a><\/li>\n<li>Fixed several issues related to <code>system.custom_base_url<\/code> that were broken <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1736\">#1736<\/a><\/li>\n<li>Dynamically added pages via <code>Pages::addPage()<\/code> were not firing <code>onPageProcessed()<\/code> event causing forms not to be processed<\/li>\n<li>Fixed <code>Page::active()<\/code> and <code>Page::activeChild()<\/code> to work with UTF-8 characters in the URL <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1727\">#1727<\/a><\/li>\n<li>Fixed typo in <code>modular.yaml<\/code> causing media to be ignored <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1725\">#1725<\/a><\/li>\n<li>Reverted <code>case_insensitive_urls<\/code> option as it was causing issues with taxonomy <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1733\">#1733<\/a><\/li>\n<li>Removed an extra <code>\/<\/code> in <code>CompileFile.php<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1693\">#1693<\/a><\/li>\n<li>Uri::Encode user and password to prevent issues in browsers<\/li>\n<li>Fixed "Invalid AJAX response" When using Built-in PHP Webserver in Windows <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1258\">#1258<\/a><\/li>\n<li>Remove support for <code>config.user<\/code>, it was broken and bad practise<\/li>\n<li>Make sure that <code>clean cache<\/code> uses valid path <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1745\">#1745<\/a><\/li>\n<li>Fixed token creation issue with <code>Uri<\/code> params like <code>\/id:3<\/code><\/li>\n<li>Fixed CSS Pipeline failing with Google remote fonts if the file was minified <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1261\">#1261<\/a><\/li>\n<li>Forced <code>field.multiple: true<\/code> to allow use of min\/max options in <code>checkboxes.validate<\/code><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new core Twig templates for partials\/metadata.html.twig and partials\/messages.html.twig\nAdded ability to work with GPM locally #1742\nAdded new HTML5 audio controls #1756\nAdded Medium::copy() method to create a copy of a medium object\nAdded new force_lowercase_urls functionality on routes and slugs\nAdded new item-list filter type to remove empty items\nAdded new setFlashCookieObject() and getFlashCookieObject() methods to Session object\nAdded new intl_enabled option to disable PHP intl module collation when not needed\n\n\n\nFixed an issue with checkbox field validation form#216\nFixed issue with multibyte Markdown link URLs #1749\nFixed issue with multibyte folder names #1751\nFixed several issues related to system.custom_base_url that were broken #1736\nDynamically added pages via Pages::addPage() were not firing onPageProcessed() event causing forms not to be processed\nFixed Page::active() and Page::activeChild() to work with UTF-8 characters in the URL #1727\nFixed typo in modular.yaml causing media to be ignored #1725\nReverted case_insensitive_urls option as it was causing issues with taxonomy #1733\nRemoved an extra \/ in CompileFile.php #1693\nUri::Encode user and password to prevent issues in browsers\nFixed "Invalid AJAX response" When using Built-in PHP Webserver in Windows #1258\nRemove support for config.user, it was broken and bad practise\nMake sure that clean cache uses valid path #1745\nFixed token creation issue with Uri params like \/id:3\nFixed CSS Pipeline failing with Google remote fonts if the file was minified #1261\nForced field.multiple: true to allow use of min\/max options in checkboxes.validate"},"1.3.8":{"date":"10\/26\/2017","content":"1. [](#new)\n * Added Page `media_order` capability to manually order page media via a page header\n1. [](#bugfix)\n * Fixed GPM update issue with filtered slugs [#1711](https:\/\/github.com\/getgrav\/grav\/issues\/1711)\n * Fixed issue with missing image file not throwing 404 properly [#1713](https:\/\/github.com\/getgrav\/grav\/issues\/1713)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added Page <code>media_order<\/code> capability to manually order page media via a page header<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed GPM update issue with filtered slugs <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1711\">#1711<\/a><\/li>\n<li>Fixed issue with missing image file not throwing 404 properly <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1713\">#1713<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added Page media_order capability to manually order page media via a page header\n\n\n\nFixed GPM update issue with filtered slugs #1711\nFixed issue with missing image file not throwing 404 properly #1713"},"1.3.7":{"date":"10\/18\/2017","content":"1. [](#bugfix)\n * Regression Uri: `base_url_absolute` always has the port number [#1690](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1690)\n * Uri: Prefer using REQUEST_SCHEME instead of HTTPS [#1698](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1698)\n * Fixed routing paths with urlencoded spaces and non-latin letters [#1688](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1688)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Regression Uri: <code>base_url_absolute<\/code> always has the port number <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1690\">#1690<\/a><\/li>\n<li>Uri: Prefer using REQUEST_SCHEME instead of HTTPS <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1698\">#1698<\/a><\/li>\n<li>Fixed routing paths with urlencoded spaces and non-latin letters <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1688\">#1688<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Regression Uri: base_url_absolute always has the port number #1690\nUri: Prefer using REQUEST_SCHEME instead of HTTPS #1698\nFixed routing paths with urlencoded spaces and non-latin letters #1688"},"1.3.6":{"date":"10\/12\/2017","content":"1. [](#bugfix)\n * Regression: Ajax error in Nginx [admin#1244](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1244)\n * Remove the `_url=$uri` portion of the the Nginx `try_files` command [admin#1244](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1244)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Regression: Ajax error in Nginx <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1244\">admin#1244<\/a><\/li>\n<li>Remove the <code>_url=$uri<\/code> portion of the the Nginx <code>try_files<\/code> command <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1244\">admin#1244<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Regression: Ajax error in Nginx admin#1244\nRemove the _url=$uri portion of the the Nginx try_files command admin#1244"},"1.3.5":{"date":"10\/11\/2017","content":"1. [](#improved)\n * Refactored `URI` class with numerous bug fixes, and optimizations\n * Override `system.media.upload_limit` with PHP's `post_max_size` or `upload_max_filesize`\n * Updated `bin\/grav clean` command to remove unnecessary vendor files (save some bytes)\n * Added a `http_status_code` Twig function to allow setting HTTP status codes from Twig directly.\n * Deter XSS attacks via URI path\/uri methods (credit:newbthenewbd)\n * Added support for `$uri->toArray()` and `(string)$uri`\n * Added support for `type` on `Asstes::addInlineJs()` [#1683](https:\/\/github.com\/getgrav\/grav\/pull\/1683)\n1. [](#bugfix)\n * Fixed method signature error with `GPM\\InstallCommand::processPackage()` [#1682](https:\/\/github.com\/getgrav\/grav\/pull\/1682)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Refactored <code>URI<\/code> class with numerous bug fixes, and optimizations<\/li>\n<li>Override <code>system.media.upload_limit<\/code> with PHP's <code>post_max_size<\/code> or <code>upload_max_filesize<\/code><\/li>\n<li>Updated <code>bin\/grav clean<\/code> command to remove unnecessary vendor files (save some bytes)<\/li>\n<li>Added a <code>http_status_code<\/code> Twig function to allow setting HTTP status codes from Twig directly.<\/li>\n<li>Deter XSS attacks via URI path\/uri methods (credit:newbthenewbd)<\/li>\n<li>Added support for <code>$uri->toArray()<\/code> and <code>(string)$uri<\/code><\/li>\n<li>Added support for <code>type<\/code> on <code>Asstes::addInlineJs()<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1683\">#1683<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed method signature error with <code>GPM\\InstallCommand::processPackage()<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1682\">#1682<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Refactored URI class with numerous bug fixes, and optimizations\nOverride system.media.upload_limit with PHP's post_max_size or upload_max_filesize\nUpdated bin\/grav clean command to remove unnecessary vendor files (save some bytes)\nAdded a http_status_code Twig function to allow setting HTTP status codes from Twig directly.\nDeter XSS attacks via URI path\/uri methods (credit:newbthenewbd)\nAdded support for $uri->toArray() and (string)$uri\nAdded support for type on Asstes::addInlineJs() #1683\n\n\n\nFixed method signature error with GPM\\InstallCommand::processPackage() #1682"},"1.3.4":{"date":"09\/29\/2017","content":"1. [](#new)\n * Added filter support for Page collections (routable\/visible\/type\/access\/etc.)\n1. [](#improved)\n * Implemented `Composer\\CaBundle` for SSL Certs [#1241](https:\/\/github.com\/getgrav\/grav\/issues\/1241)\n * Refactored the Assets sorting logic\n * Improved language overrides to merge only 'extra' translations [#1514](https:\/\/github.com\/getgrav\/grav\/issues\/1514)\n * Improved support for Assets with query strings [#1451](https:\/\/github.com\/getgrav\/grav\/issues\/1451)\n * Twig extension cleanup\n1. [](#bugfix)\n * Fixed an issue where fallback was not supporting dynamic page generation\n * Fixed issue with Image query string not being fully URL encoded [#1622](https:\/\/github.com\/getgrav\/grav\/issues\/1622)\n * Fixed `Page::summary()` when using delimiter and multibyte UTF8 Characters [#1644](https:\/\/github.com\/getgrav\/grav\/issues\/1644)\n * Fixed missing `.json` thumbnail throwing error when adding media [grav-plugin-admin#1156](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1156)\n * Fixed insecure session cookie initialization [#1656](https:\/\/github.com\/getgrav\/grav\/pull\/1656)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added filter support for Page collections (routable\/visible\/type\/access\/etc.)<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Implemented <code>Composer\\CaBundle<\/code> for SSL Certs <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1241\">#1241<\/a><\/li>\n<li>Refactored the Assets sorting logic<\/li>\n<li>Improved language overrides to merge only 'extra' translations <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1514\">#1514<\/a><\/li>\n<li>Improved support for Assets with query strings <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1451\">#1451<\/a><\/li>\n<li>Twig extension cleanup<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed an issue where fallback was not supporting dynamic page generation<\/li>\n<li>Fixed issue with Image query string not being fully URL encoded <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1622\">#1622<\/a><\/li>\n<li>Fixed <code>Page::summary()<\/code> when using delimiter and multibyte UTF8 Characters <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1644\">#1644<\/a><\/li>\n<li>Fixed missing <code>.json<\/code> thumbnail throwing error when adding media <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1156\">grav-plugin-admin#1156<\/a><\/li>\n<li>Fixed insecure session cookie initialization <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1656\">#1656<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added filter support for Page collections (routable\/visible\/type\/access\/etc.)\n\n\n\nImplemented Composer\\CaBundle for SSL Certs #1241\nRefactored the Assets sorting logic\nImproved language overrides to merge only 'extra' translations #1514\nImproved support for Assets with query strings #1451\nTwig extension cleanup\n\n\n\nFixed an issue where fallback was not supporting dynamic page generation\nFixed issue with Image query string not being fully URL encoded #1622\nFixed Page::summary() when using delimiter and multibyte UTF8 Characters #1644\nFixed missing .json thumbnail throwing error when adding media grav-plugin-admin#1156\nFixed insecure session cookie initialization #1656"},"1.3.3":{"date":"09\/07\/2017","content":"1. [](#new)\n * Added support for 2-Factor Authentication in admin profile\n * Added `gaussianBlur` media method [#1623](https:\/\/github.com\/getgrav\/grav\/pull\/1623)\n * Added new `|chunk_split()`, `|basename`, and `|dirname` Twig filter\n * Added new `tl` Twig filter\/function to support specific translations [#1618](https:\/\/github.com\/getgrav\/grav\/issues\/1618)\n1. [](#improved)\n * User `authorization` now requires a check for `authenticated` - REQUIRED: `Login v2.4.0`\n * Added options to `Page::summary()` to support size without HTML tags [#1554](https:\/\/github.com\/getgrav\/grav\/issues\/1554)\n * Forced `natsort` on plugins to ensure consistent plugin load ordering across platforms [#1614](https:\/\/github.com\/getgrav\/grav\/issues\/1614)\n * Use new `multilevel` field to handle Asset Collections [#1201](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1201)\n * Added support for redis `password` option [#1620](https:\/\/github.com\/getgrav\/grav\/issues\/1620)\n * Use 302 rather than 301 redirects by default [#1619](https:\/\/github.com\/getgrav\/grav\/issues\/1619)\n * GPM Installer will try to load alphanumeric version of the class if no standard class found [#1630](https:\/\/github.com\/getgrav\/grav\/issues\/1630)\n * Add current page position to `User` class [#1632](https:\/\/github.com\/getgrav\/grav\/issues\/1632)\n * Added option to enable case insensitive URLs [#1638](https:\/\/github.com\/getgrav\/grav\/issues\/1638)\n * Updated vendor libraries\n * Updated `travis.yml` to add support for PHP 7.1 as well as 7.0.21 for test suite\n1. [](#bugfix)\n * Fixed UTF8 multibyte UTF8 character support in `Page::summary()` [#1554](https:\/\/github.com\/getgrav\/grav\/issues\/1554)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added support for 2-Factor Authentication in admin profile<\/li>\n<li>Added <code>gaussianBlur<\/code> media method <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1623\">#1623<\/a><\/li>\n<li>Added new <code>|chunk_split()<\/code>, <code>|basename<\/code>, and <code>|dirname<\/code> Twig filter<\/li>\n<li>Added new <code>tl<\/code> Twig filter\/function to support specific translations <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1618\">#1618<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>User <code>authorization<\/code> now requires a check for <code>authenticated<\/code> - REQUIRED: <code>Login v2.4.0<\/code><\/li>\n<li>Added options to <code>Page::summary()<\/code> to support size without HTML tags <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1554\">#1554<\/a><\/li>\n<li>Forced <code>natsort<\/code> on plugins to ensure consistent plugin load ordering across platforms <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1614\">#1614<\/a><\/li>\n<li>Use new <code>multilevel<\/code> field to handle Asset Collections <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1201\">#1201<\/a><\/li>\n<li>Added support for redis <code>password<\/code> option <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1620\">#1620<\/a><\/li>\n<li>Use 302 rather than 301 redirects by default <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1619\">#1619<\/a><\/li>\n<li>GPM Installer will try to load alphanumeric version of the class if no standard class found <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1630\">#1630<\/a><\/li>\n<li>Add current page position to <code>User<\/code> class <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1632\">#1632<\/a><\/li>\n<li>Added option to enable case insensitive URLs <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1638\">#1638<\/a><\/li>\n<li>Updated vendor libraries<\/li>\n<li>Updated <code>travis.yml<\/code> to add support for PHP 7.1 as well as 7.0.21 for test suite<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed UTF8 multibyte UTF8 character support in <code>Page::summary()<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1554\">#1554<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added support for 2-Factor Authentication in admin profile\nAdded gaussianBlur media method #1623\nAdded new |chunk_split(), |basename, and |dirname Twig filter\nAdded new tl Twig filter\/function to support specific translations #1618\n\n\n\nUser authorization now requires a check for authenticated - REQUIRED: Login v2.4.0\nAdded options to Page::summary() to support size without HTML tags #1554\nForced natsort on plugins to ensure consistent plugin load ordering across platforms #1614\nUse new multilevel field to handle Asset Collections #1201\nAdded support for redis password option #1620\nUse 302 rather than 301 redirects by default #1619\nGPM Installer will try to load alphanumeric version of the class if no standard class found #1630\nAdd current page position to User class #1632\nAdded option to enable case insensitive URLs #1638\nUpdated vendor libraries\nUpdated travis.yml to add support for PHP 7.1 as well as 7.0.21 for test suite\n\n\n\nFixed UTF8 multibyte UTF8 character support in Page::summary() #1554"},"1.3.2":{"date":"08\/16\/2017","content":"1. [](#new)\n * Added a new `cache_control` system and page level property [#1591](https:\/\/github.com\/getgrav\/grav\/issues\/1591)\n * Added a new `clear_images_by_default` system property to stop cache clear events from removing processed images [#1481](https:\/\/github.com\/getgrav\/grav\/pull\/1481)\n * Added new `onTwigLoader()` event to enable utilization of loader methods\n * Added new `Twig::addPath()` and `Twig::prependPath()` methods to wrap loader methods and support namespacing [#1604](https:\/\/github.com\/getgrav\/grav\/issues\/1604)\n * Added new `array_key_exists()` Twig function wrapper\n * Added a new `Collection::intersect()` method [#1605](https:\/\/github.com\/getgrav\/grav\/issues\/1605)\n1. [](#bugfix)\n * Allow `session.timeout` field to be set to `0` via blueprints [#1598](https:\/\/github.com\/getgrav\/grav\/issues\/1598)\n * Fixed `Data::exists()` and `Data::raw()` functions breaking if `Data::file()` hasn't been called with non-null value\n * Fixed parent theme auto-loading in child themes of Gantry 5","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added a new <code>cache_control<\/code> system and page level property <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1591\">#1591<\/a><\/li>\n<li>Added a new <code>clear_images_by_default<\/code> system property to stop cache clear events from removing processed images <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1481\">#1481<\/a><\/li>\n<li>Added new <code>onTwigLoader()<\/code> event to enable utilization of loader methods<\/li>\n<li>Added new <code>Twig::addPath()<\/code> and <code>Twig::prependPath()<\/code> methods to wrap loader methods and support namespacing <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1604\">#1604<\/a><\/li>\n<li>Added new <code>array_key_exists()<\/code> Twig function wrapper<\/li>\n<li>Added a new <code>Collection::intersect()<\/code> method <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1605\">#1605<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Allow <code>session.timeout<\/code> field to be set to <code>0<\/code> via blueprints <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1598\">#1598<\/a><\/li>\n<li>Fixed <code>Data::exists()<\/code> and <code>Data::raw()<\/code> functions breaking if <code>Data::file()<\/code> hasn't been called with non-null value<\/li>\n<li>Fixed parent theme auto-loading in child themes of Gantry 5<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added a new cache_control system and page level property #1591\nAdded a new clear_images_by_default system property to stop cache clear events from removing processed images #1481\nAdded new onTwigLoader() event to enable utilization of loader methods\nAdded new Twig::addPath() and Twig::prependPath() methods to wrap loader methods and support namespacing #1604\nAdded new array_key_exists() Twig function wrapper\nAdded a new Collection::intersect() method #1605\n\n\n\nAllow session.timeout field to be set to 0 via blueprints #1598\nFixed Data::exists() and Data::raw() functions breaking if Data::file() hasn't been called with non-null value\nFixed parent theme auto-loading in child themes of Gantry 5"},"1.3.1":{"date":"07\/19\/2017","content":"1. [](#bugfix)\n * Fix ordering for Linux + International environments [#1574](https:\/\/github.com\/getgrav\/grav\/issues\/1574)\n * Check if medium thumbnail exists before resetting\n * Update Travis' auth token","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix ordering for Linux + International environments <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1574\">#1574<\/a><\/li>\n<li>Check if medium thumbnail exists before resetting<\/li>\n<li>Update Travis' auth token<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fix ordering for Linux + International environments #1574\nCheck if medium thumbnail exists before resetting\nUpdate Travis' auth token"},"1.3.0":{"date":"07\/16\/2017","content":"1. [](#bugfix)\n * Fixed an undefined variable `$difference` [#1563](https:\/\/github.com\/getgrav\/grav\/pull\/1563)\n * Fix broken range slider [grav-plugin-admin#1153](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1153)\n * Fix natural sort when > 100 pages [#1564](https:\/\/github.com\/getgrav\/grav\/pull\/1564)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed an undefined variable <code>$difference<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1563\">#1563<\/a><\/li>\n<li>Fix broken range slider <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1153\">grav-plugin-admin#1153<\/a><\/li>\n<li>Fix natural sort when > 100 pages <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1564\">#1564<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed an undefined variable $difference #1563\nFix broken range slider grav-plugin-admin#1153\nFix natural sort when > 100 pages #1564"},"1.3.0-rc.5":{"date":"07\/05\/2017","content":"1. [](#new)\n * Setting `system.session.timeout` to 0 clears the session when the browser session ends [#1538](https:\/\/github.com\/getgrav\/grav\/pull\/1538)\n * Created a `CODE_OF_CONDUCT.md` so everyone knows how to behave :)\n1. [](#improved)\n * Renamed new `media()` Twig function to `media_directory()` to avoid conflict with Page's `media` object\n1. [](#bugfix)\n * Fixed global media files disappearing after a reload [#1545](https:\/\/github.com\/getgrav\/grav\/issues\/1545)\n * Fix for broken regex redirects\/routes via `site.yaml`\n * Sanitize the error message in the error handler page","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Setting <code>system.session.timeout<\/code> to 0 clears the session when the browser session ends <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1538\">#1538<\/a><\/li>\n<li>Created a <code>CODE_OF_CONDUCT.md<\/code> so everyone knows how to behave :)<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Renamed new <code>media()<\/code> Twig function to <code>media_directory()<\/code> to avoid conflict with Page's <code>media<\/code> object<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed global media files disappearing after a reload <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1545\">#1545<\/a><\/li>\n<li>Fix for broken regex redirects\/routes via <code>site.yaml<\/code><\/li>\n<li>Sanitize the error message in the error handler page<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Setting system.session.timeout to 0 clears the session when the browser session ends #1538\nCreated a CODE_OF_CONDUCT.md so everyone knows how to behave :)\n\n\n\nRenamed new media() Twig function to media_directory() to avoid conflict with Page's media object\n\n\n\nFixed global media files disappearing after a reload #1545\nFix for broken regex redirects\/routes via site.yaml\nSanitize the error message in the error handler page"},"1.3.0-rc.4":{"date":"06\/22\/2017","content":"1. [](#new)\n * Added `lower` and `upper` Twig filters\n * Added `pathinfo()` Twig function\n * Added 165 new thumbnail images for use in `media.yaml`\n1. [](#improved)\n * Improved error message when running `bin\/grav install` instead of `bin\/gpm install`, and also when running on a non-skeleton site [#1027](https:\/\/github.com\/getgrav\/grav\/issues\/1027)\n * Updated vendor libraries\n1. [](#bugfix)\n * Don't rebuild metadata every time, only when file does not exist\n * Restore GravTrait in ConsoleTrait [grav-plugin-login#119](https:\/\/github.com\/getgrav\/grav-plugin-login\/issues\/119)\n * Fix Windows routing with built-in server [#1502](https:\/\/github.com\/getgrav\/grav\/issues\/1502)\n * Fix [#1504](https:\/\/github.com\/getgrav\/grav\/issues\/1504) `process_twig` and `frontmatter.yaml`\n * Nicetime fix: 0 seconds from now -> just now [#1509](https:\/\/github.com\/getgrav\/grav\/issues\/1509)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <code>lower<\/code> and <code>upper<\/code> Twig filters<\/li>\n<li>Added <code>pathinfo()<\/code> Twig function<\/li>\n<li>Added 165 new thumbnail images for use in <code>media.yaml<\/code><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved error message when running <code>bin\/grav install<\/code> instead of <code>bin\/gpm install<\/code>, and also when running on a non-skeleton site <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1027\">#1027<\/a><\/li>\n<li>Updated vendor libraries<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Don't rebuild metadata every time, only when file does not exist<\/li>\n<li>Restore GravTrait in ConsoleTrait <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-login\/issues\/119\">grav-plugin-login#119<\/a><\/li>\n<li>Fix Windows routing with built-in server <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1502\">#1502<\/a><\/li>\n<li>Fix <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1504\">#1504<\/a> <code>process_twig<\/code> and <code>frontmatter.yaml<\/code><\/li>\n<li>Nicetime fix: 0 seconds from now -> just now <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1509\">#1509<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added lower and upper Twig filters\nAdded pathinfo() Twig function\nAdded 165 new thumbnail images for use in media.yaml\n\n\n\nImproved error message when running bin\/grav install instead of bin\/gpm install, and also when running on a non-skeleton site #1027\nUpdated vendor libraries\n\n\n\nDon't rebuild metadata every time, only when file does not exist\nRestore GravTrait in ConsoleTrait grav-plugin-login#119\nFix Windows routing with built-in server #1502\nFix #1504 process_twig and frontmatter.yaml\nNicetime fix: 0 seconds from now -> just now #1509"},"1.3.0-rc.3":{"date":"05\/22\/2017","content":"1. [](#new)\n * Added new unified `Utils::getPagePathFromToken()` method which is used by various plugins (Admin, Forms, Downloads, etc.)\n1. [](#improved)\n * Optionally remove unpublished pages from the translated languages, move into untranslated list [#1482](https:\/\/github.com\/getgrav\/grav\/pull\/1482)\n * Improved reliability of `hash` file-check method\n1. [](#bugfix)\n * Updated to latest Toolbox library to fix issue with some blueprints rendering in admin plugin [#1117](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1117)\n * Fix output handling in RenderProcessor [#1483](https:\/\/github.com\/getgrav\/grav\/pull\/1483)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new unified <code>Utils::getPagePathFromToken()<\/code> method which is used by various plugins (Admin, Forms, Downloads, etc.)<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Optionally remove unpublished pages from the translated languages, move into untranslated list <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1482\">#1482<\/a><\/li>\n<li>Improved reliability of <code>hash<\/code> file-check method<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Updated to latest Toolbox library to fix issue with some blueprints rendering in admin plugin <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1117\">#1117<\/a><\/li>\n<li>Fix output handling in RenderProcessor <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1483\">#1483<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new unified Utils::getPagePathFromToken() method which is used by various plugins (Admin, Forms, Downloads, etc.)\n\n\n\nOptionally remove unpublished pages from the translated languages, move into untranslated list #1482\nImproved reliability of hash file-check method\n\n\n\nUpdated to latest Toolbox library to fix issue with some blueprints rendering in admin plugin #1117\nFix output handling in RenderProcessor #1483"},"1.3.0-rc.2":{"date":"05\/17\/2017","content":"1. [](#new)\n * Added new `media` and `vardump` Twig functions\n1. [](#improved)\n * Put in various checks to ensure Exif is available before trying to use it\n * Add timestamp to configuration settings [#1445](https:\/\/github.com\/getgrav\/grav\/pull\/1445)\n1. [](#bugfix)\n * Fix an issue saving YAML textarea fields in expert mode [#1480](https:\/\/github.com\/getgrav\/grav\/pull\/1480)\n * Moved `onOutputRendered()` back into Grav core","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>media<\/code> and <code>vardump<\/code> Twig functions<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Put in various checks to ensure Exif is available before trying to use it<\/li>\n<li>Add timestamp to configuration settings <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1445\">#1445<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix an issue saving YAML textarea fields in expert mode <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1480\">#1480<\/a><\/li>\n<li>Moved <code>onOutputRendered()<\/code> back into Grav core<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new media and vardump Twig functions\n\n\n\nPut in various checks to ensure Exif is available before trying to use it\nAdd timestamp to configuration settings #1445\n\n\n\nFix an issue saving YAML textarea fields in expert mode #1480\nMoved onOutputRendered() back into Grav core"},"1.3.0-rc.1":{"date":"05\/16\/2017","content":"1. [](#new)\n * Added support for a single array field in the forms\n * Added EXIF support with automatic generation of Page Media metafiles\n * Added Twig function to get EXIF data on any image file\n * Added `Pages::baseUrl()`, `Pages::homeUrl()` and `Pages::url()` functions\n * Added `base32_encode`, `base32_decode`, `base64_encode`, `base64_decode` Twig filters\n * Added `Debugger::getCaller()` to figure out where the method was called from\n * Added support for custom output providers like Slim Framework\n * Added `Grav\\Framework\\Collection` classes for creating collections\n1. [](#improved)\n * Add more controls over HTML5 video attributes (autoplay, poster, loop controls) [#1442](https:\/\/github.com\/getgrav\/grav\/pull\/1442)\n * Removed logging statement for invalid slug [#1459](https:\/\/github.com\/getgrav\/grav\/issues\/1459)\n * Groups selection pre-filled in user form\n * Improve error handling in `Folder::move()`\n * Added extra parameter for `Twig::processSite()` to include custom context\n * Updated RocketTheme Toolbox vendor library\n1. [](#bugfix)\n * Fix to force route\/redirect matching from the start of the route by default [#1446](https:\/\/github.com\/getgrav\/grav\/issues\/1446)\n * Edit check for valid slug [#1459](https:\/\/github.com\/getgrav\/grav\/issues\/1459)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added support for a single array field in the forms<\/li>\n<li>Added EXIF support with automatic generation of Page Media metafiles<\/li>\n<li>Added Twig function to get EXIF data on any image file<\/li>\n<li>Added <code>Pages::baseUrl()<\/code>, <code>Pages::homeUrl()<\/code> and <code>Pages::url()<\/code> functions<\/li>\n<li>Added <code>base32_encode<\/code>, <code>base32_decode<\/code>, <code>base64_encode<\/code>, <code>base64_decode<\/code> Twig filters<\/li>\n<li>Added <code>Debugger::getCaller()<\/code> to figure out where the method was called from<\/li>\n<li>Added support for custom output providers like Slim Framework<\/li>\n<li>Added <code>Grav\\Framework\\Collection<\/code> classes for creating collections<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Add more controls over HTML5 video attributes (autoplay, poster, loop controls) <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1442\">#1442<\/a><\/li>\n<li>Removed logging statement for invalid slug <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1459\">#1459<\/a><\/li>\n<li>Groups selection pre-filled in user form<\/li>\n<li>Improve error handling in <code>Folder::move()<\/code><\/li>\n<li>Added extra parameter for <code>Twig::processSite()<\/code> to include custom context<\/li>\n<li>Updated RocketTheme Toolbox vendor library<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix to force route\/redirect matching from the start of the route by default <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1446\">#1446<\/a><\/li>\n<li>Edit check for valid slug <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1459\">#1459<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added support for a single array field in the forms\nAdded EXIF support with automatic generation of Page Media metafiles\nAdded Twig function to get EXIF data on any image file\nAdded Pages::baseUrl(), Pages::homeUrl() and Pages::url() functions\nAdded base32_encode, base32_decode, base64_encode, base64_decode Twig filters\nAdded Debugger::getCaller() to figure out where the method was called from\nAdded support for custom output providers like Slim Framework\nAdded Grav\\Framework\\Collection classes for creating collections\n\n\n\nAdd more controls over HTML5 video attributes (autoplay, poster, loop controls) #1442\nRemoved logging statement for invalid slug #1459\nGroups selection pre-filled in user form\nImprove error handling in Folder::move()\nAdded extra parameter for Twig::processSite() to include custom context\nUpdated RocketTheme Toolbox vendor library\n\n\n\nFix to force route\/redirect matching from the start of the route by default #1446\nEdit check for valid slug #1459"},"1.2.4":{"date":"04\/24\/2017","content":"1. [](#improved)\n * Added optional ignores for `Installer::sophisticatedInstall()` [#1447](https:\/\/github.com\/getgrav\/grav\/issues\/1447)\n1. [](#bugfix)\n * Allow multiple calls to `Themes::initTheme()` without throwing errors\n * Fixed querystrings in root pages with multi-lang enabled [#1436](https:\/\/github.com\/getgrav\/grav\/issues\/1436)\n * Allow support for `Pages::getList()` with `show_modular` option [#1080](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1080)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Added optional ignores for <code>Installer::sophisticatedInstall()<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1447\">#1447<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Allow multiple calls to <code>Themes::initTheme()<\/code> without throwing errors<\/li>\n<li>Fixed querystrings in root pages with multi-lang enabled <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1436\">#1436<\/a><\/li>\n<li>Allow support for <code>Pages::getList()<\/code> with <code>show_modular<\/code> option <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1080\">#1080<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added optional ignores for Installer::sophisticatedInstall() #1447\n\n\n\nAllow multiple calls to Themes::initTheme() without throwing errors\nFixed querystrings in root pages with multi-lang enabled #1436\nAllow support for Pages::getList() with show_modular option #1080"},"1.2.3":{"date":"04\/19\/2017","content":"1. [](#improved)\n * Added new `pwd_regex` and `username_regex` system configuration options to allow format modifications\n * Allow `user\/accounts.yaml` overrides and implemented more robust theme initialization\n * improved `getList()` method to do more powerful things\n * Fix Typo in GPM [#1427](https:\/\/github.com\/getgrav\/grav\/issues\/1427)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Added new <code>pwd_regex<\/code> and <code>username_regex<\/code> system configuration options to allow format modifications<\/li>\n<li>Allow <code>user\/accounts.yaml<\/code> overrides and implemented more robust theme initialization<\/li>\n<li>improved <code>getList()<\/code> method to do more powerful things<\/li>\n<li>Fix Typo in GPM <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1427\">#1427<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new pwd_regex and username_regex system configuration options to allow format modifications\nAllow user\/accounts.yaml overrides and implemented more robust theme initialization\nimproved getList() method to do more powerful things\nFix Typo in GPM #1427"},"1.2.2":{"date":"04\/11\/2017","content":"1. [](#bugfix)\n * Fix for redirects breaking [#1420](https:\/\/github.com\/getgrav\/grav\/issues\/1420)\n * Fix issue in direct-install with github-style dependencies [#1405](https:\/\/github.com\/getgrav\/grav\/issues\/1405)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for redirects breaking <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1420\">#1420<\/a><\/li>\n<li>Fix issue in direct-install with github-style dependencies <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1405\">#1405<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fix for redirects breaking #1420\nFix issue in direct-install with github-style dependencies #1405"},"1.2.1":{"date":"04\/10\/2017","content":"1. [](#improved)\n * Added various `ancestor` helper methods in Page and Pages classes [#1362](https:\/\/github.com\/getgrav\/grav\/pull\/1362)\n * Added new `parents` field and switched Page blueprints to use this\n * Added `isajaxrequest()` Twig function [#1400](https:\/\/github.com\/getgrav\/grav\/issues\/1400)\n * Added ability to inline CSS and JS code via Asset manager [#1377](https:\/\/github.com\/getgrav\/grav\/pull\/1377)\n * Add query string in lighttpd default config [#1393](https:\/\/github.com\/getgrav\/grav\/issues\/1393)\n * Add `--all-yes` and `--destination` options for `bin\/gpm direct-install` [#1397](https:\/\/github.com\/getgrav\/grav\/pull\/1397)\n1. [](#bugfix)\n * Fix for direct-install of plugins with `languages.yaml` [#1396](https:\/\/github.com\/getgrav\/grav\/issues\/1396)\n * When determining language from HTTP_ACCEPT_LANGUAGE, also try base language only [#1402](https:\/\/github.com\/getgrav\/grav\/issues\/1402)\n * Fixed a bad method signature causing warning when running tests on `GPMTest` object","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Added various <code>ancestor<\/code> helper methods in Page and Pages classes <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1362\">#1362<\/a><\/li>\n<li>Added new <code>parents<\/code> field and switched Page blueprints to use this<\/li>\n<li>Added <code>isajaxrequest()<\/code> Twig function <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1400\">#1400<\/a><\/li>\n<li>Added ability to inline CSS and JS code via Asset manager <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1377\">#1377<\/a><\/li>\n<li>Add query string in lighttpd default config <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1393\">#1393<\/a><\/li>\n<li>Add <code>--all-yes<\/code> and <code>--destination<\/code> options for <code>bin\/gpm direct-install<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1397\">#1397<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for direct-install of plugins with <code>languages.yaml<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1396\">#1396<\/a><\/li>\n<li>When determining language from HTTP_ACCEPT_LANGUAGE, also try base language only <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1402\">#1402<\/a><\/li>\n<li>Fixed a bad method signature causing warning when running tests on <code>GPMTest<\/code> object<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added various ancestor helper methods in Page and Pages classes #1362\nAdded new parents field and switched Page blueprints to use this\nAdded isajaxrequest() Twig function #1400\nAdded ability to inline CSS and JS code via Asset manager #1377\nAdd query string in lighttpd default config #1393\nAdd --all-yes and --destination options for bin\/gpm direct-install #1397\n\n\n\nFix for direct-install of plugins with languages.yaml #1396\nWhen determining language from HTTP_ACCEPT_LANGUAGE, also try base language only #1402\nFixed a bad method signature causing warning when running tests on GPMTest object"},"1.2.0":{"date":"03\/31\/2017","content":"1. [](#new)\n * Added file upload for user avatar in user\/admin blueprint\n1. [](#improved)\n * Analysis fixes\n * Switched to stable composer lib versions","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added file upload for user avatar in user\/admin blueprint<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Analysis fixes<\/li>\n<li>Switched to stable composer lib versions<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added file upload for user avatar in user\/admin blueprint\n\n\n\nAnalysis fixes\nSwitched to stable composer lib versions"},"1.2.0-rc.3":{"date":"03\/22\/2017","content":"1. [](#new)\n * Refactored Page re-ordering to handle all siblings at once\n * Added `language_codes` to Twig init to allow for easy language name\/code\/native-name lookup\n1. [](#improved)\n * Added an _Admin Overrides_ section with option to choose the order of children in Pages Management\n1. [](#bugfix)\n * Fixed loading issues with improperly named themes (use old broken method first) [#1373](https:\/\/github.com\/getgrav\/grav\/issues\/1373)\n * Simplified modular\/twig processing logic and fixed an issue with system process config [#1351](https:\/\/github.com\/getgrav\/grav\/issues\/1351)\n * Cleanup package files via GPM install to make them more windows-friendly [#1361](https:\/\/github.com\/getgrav\/grav\/pull\/1361)\n * Fix for page-level debugger override changing the option site-wide\n * Allow `url()` twig function to pass-through external links","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Refactored Page re-ordering to handle all siblings at once<\/li>\n<li>Added <code>language_codes<\/code> to Twig init to allow for easy language name\/code\/native-name lookup<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Added an <em>Admin Overrides<\/em> section with option to choose the order of children in Pages Management<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed loading issues with improperly named themes (use old broken method first) <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1373\">#1373<\/a><\/li>\n<li>Simplified modular\/twig processing logic and fixed an issue with system process config <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1351\">#1351<\/a><\/li>\n<li>Cleanup package files via GPM install to make them more windows-friendly <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1361\">#1361<\/a><\/li>\n<li>Fix for page-level debugger override changing the option site-wide<\/li>\n<li>Allow <code>url()<\/code> twig function to pass-through external links<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Refactored Page re-ordering to handle all siblings at once\nAdded language_codes to Twig init to allow for easy language name\/code\/native-name lookup\n\n\n\nAdded an Admin Overrides section with option to choose the order of children in Pages Management\n\n\n\nFixed loading issues with improperly named themes (use old broken method first) #1373\nSimplified modular\/twig processing logic and fixed an issue with system process config #1351\nCleanup package files via GPM install to make them more windows-friendly #1361\nFix for page-level debugger override changing the option site-wide\nAllow url() twig function to pass-through external links"},"1.2.0-rc.2":{"date":"03\/17\/2017","content":"1. [](#improved)\n * Updated vendor libraries to latest\n * Added the ability to disable debugger on a per-page basis with `debugger: false` in page frontmatter\n1. [](#bugfix)\n * Fixed an issue with theme inheritance and hyphenated base themes [#1353](https:\/\/github.com\/getgrav\/grav\/issues\/1353)\n * Fixed an issue when trying to use an `@2x` derivative on a non-image media file [#1341](https:\/\/github.com\/getgrav\/grav\/issues\/1341)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Updated vendor libraries to latest<\/li>\n<li>Added the ability to disable debugger on a per-page basis with <code>debugger: false<\/code> in page frontmatter<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed an issue with theme inheritance and hyphenated base themes <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1353\">#1353<\/a><\/li>\n<li>Fixed an issue when trying to use an <code>@2x<\/code> derivative on a non-image media file <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1341\">#1341<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Updated vendor libraries to latest\nAdded the ability to disable debugger on a per-page basis with debugger: false in page frontmatter\n\n\n\nFixed an issue with theme inheritance and hyphenated base themes #1353\nFixed an issue when trying to use an @2x derivative on a non-image media file #1341"},"1.2.0-rc.1":{"date":"03\/13\/2017","content":"1. [](#new)\n * Added default setting to only allow `direct-installs` from official GPM. Can be configured in `system.yaml`\n * Added a new `Utils::isValidUrl()` method\n * Added optional parameter to `|markdown(false)` filter to toggle block\/line processing (default|true = `block`)\n * Added new `Page::folderExists()` method\n1. [](#improved)\n * `Twig::evaluate()` now takes current environment and context into account\n * Genericized `direct-install` so it can be called via Admin plugin\n1. [](#bugfix)\n * Fixed a minor bug in Number validation [#1329](https:\/\/github.com\/getgrav\/grav\/issues\/1329)\n * Fixed exception when trying to find user account and there is no `user:\/\/accounts` folder\n * Fixed issue when setting `Page::expires(0)` [Admin #1009](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1009)\n * Removed ID from `nonce_field()` Twig function causing validation errors [Form #115](https:\/\/github.com\/getgrav\/grav-plugin-form\/issues\/115)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added default setting to only allow <code>direct-installs<\/code> from official GPM. Can be configured in <code>system.yaml<\/code><\/li>\n<li>Added a new <code>Utils::isValidUrl()<\/code> method<\/li>\n<li>Added optional parameter to <code>|markdown(false)<\/code> filter to toggle block\/line processing (default|true = <code>block<\/code>)<\/li>\n<li>Added new <code>Page::folderExists()<\/code> method<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li><code>Twig::evaluate()<\/code> now takes current environment and context into account<\/li>\n<li>Genericized <code>direct-install<\/code> so it can be called via Admin plugin<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed a minor bug in Number validation <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1329\">#1329<\/a><\/li>\n<li>Fixed exception when trying to find user account and there is no <code>user:\/\/accounts<\/code> folder<\/li>\n<li>Fixed issue when setting <code>Page::expires(0)<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/1009\">Admin #1009<\/a><\/li>\n<li>Removed ID from <code>nonce_field()<\/code> Twig function causing validation errors <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-form\/issues\/115\">Form #115<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added default setting to only allow direct-installs from official GPM. Can be configured in system.yaml\nAdded a new Utils::isValidUrl() method\nAdded optional parameter to |markdown(false) filter to toggle block\/line processing (default|true = block)\nAdded new Page::folderExists() method\n\n\n\nTwig::evaluate() now takes current environment and context into account\nGenericized direct-install so it can be called via Admin plugin\n\n\n\nFixed a minor bug in Number validation #1329\nFixed exception when trying to find user account and there is no user:\/\/accounts folder\nFixed issue when setting Page::expires(0) Admin #1009\nRemoved ID from nonce_field() Twig function causing validation errors Form #115"},"1.1.17":{"date":"02\/17\/2017","content":"1. [](#bugfix)\n * Fix for double extensions getting added during some redirects [#1307](https:\/\/github.com\/getgrav\/grav\/issues\/1307)\n * Fix syntax error in PHP 5.3. Move the version check before requiring the autoloaded deps\n * Fix Whoops displaying error page if there is PHP core warning or error [Admin #980](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/980)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for double extensions getting added during some redirects <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1307\">#1307<\/a><\/li>\n<li>Fix syntax error in PHP 5.3. Move the version check before requiring the autoloaded deps<\/li>\n<li>Fix Whoops displaying error page if there is PHP core warning or error <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/980\">Admin #980<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fix for double extensions getting added during some redirects #1307\nFix syntax error in PHP 5.3. Move the version check before requiring the autoloaded deps\nFix Whoops displaying error page if there is PHP core warning or error Admin #980"},"1.1.16":{"date":"02\/10\/2017","content":"1. [](#new)\n * Exposed the Pages cache ID for use by plugins (e.g. Form) via `Pages::getPagesCacheId()`\n * Added `Languages::resetFallbackPageExtensions()` regarding [#1276](https:\/\/github.com\/getgrav\/grav\/pull\/1276)\n1. [](#improved)\n * Allowed CLI to use non-volatile cache drivers for better integration with CLI and Web caches\n * Added Gantry5-compatible query information to Caddy configuration\n * Added some missing docblocks and type-hints\n * Various code cleanups (return types, missing variables in doclbocks, etc.)\n1. [](#bugfix)\n * Fix blueprints slug validation [https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/955](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/955)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Exposed the Pages cache ID for use by plugins (e.g. Form) via <code>Pages::getPagesCacheId()<\/code><\/li>\n<li>Added <code>Languages::resetFallbackPageExtensions()<\/code> regarding <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1276\">#1276<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Allowed CLI to use non-volatile cache drivers for better integration with CLI and Web caches<\/li>\n<li>Added Gantry5-compatible query information to Caddy configuration<\/li>\n<li>Added some missing docblocks and type-hints<\/li>\n<li>Various code cleanups (return types, missing variables in doclbocks, etc.)<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix blueprints slug validation <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/955\"><a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/955\">https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/955<\/a><\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Exposed the Pages cache ID for use by plugins (e.g. Form) via Pages::getPagesCacheId()\nAdded Languages::resetFallbackPageExtensions() regarding #1276\n\n\n\nAllowed CLI to use non-volatile cache drivers for better integration with CLI and Web caches\nAdded Gantry5-compatible query information to Caddy configuration\nAdded some missing docblocks and type-hints\nVarious code cleanups (return types, missing variables in doclbocks, etc.)\n\n\n\nFix blueprints slug validation https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/955"},"1.1.15":{"date":"01\/30\/2017","content":"1. [](#new)\n * Added a new `Collection::merge()` method to allow merging of multiple collections [#1258](https:\/\/github.com\/getgrav\/grav\/pull\/1258)\n * Added [OpenCollective](https:\/\/opencollective.com\/grav) backer\/sponsor info to `README.md`\n1. [](#improved)\n * Add an additional parameter to GPM::findPackage to avoid throwing an exception, for use in Twig [#1008](https:\/\/github.com\/getgrav\/grav\/issues\/1008)\n * Skip symlinks if found while clearing cache [#1269](https:\/\/github.com\/getgrav\/grav\/issues\/1269)\n1. [](#bugfix)\n * Fixed an issue when page collection with header-based `sort.by` returns an array [#1264](https:\/\/github.com\/getgrav\/grav\/issues\/1264)\n * Fix `Response` object to handle `303` redirects when `open_basedir` in effect [#1267](https:\/\/github.com\/getgrav\/grav\/issues\/1267)\n * Silence `E_WARNING: Zend OPcache API is restricted by \"restrict_api\" configuration directive`","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added a new <code>Collection::merge()<\/code> method to allow merging of multiple collections <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1258\">#1258<\/a><\/li>\n<li>Added <a href=\"https:\/\/opencollective.com\/grav\">OpenCollective<\/a> backer\/sponsor info to <code>README.md<\/code><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Add an additional parameter to GPM::findPackage to avoid throwing an exception, for use in Twig <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1008\">#1008<\/a><\/li>\n<li>Skip symlinks if found while clearing cache <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1269\">#1269<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed an issue when page collection with header-based <code>sort.by<\/code> returns an array <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1264\">#1264<\/a><\/li>\n<li>Fix <code>Response<\/code> object to handle <code>303<\/code> redirects when <code>open_basedir<\/code> in effect <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1267\">#1267<\/a><\/li>\n<li>Silence <code>E_WARNING: Zend OPcache API is restricted by \"restrict_api\" configuration directive<\/code><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added a new Collection::merge() method to allow merging of multiple collections #1258\nAdded OpenCollective backer\/sponsor info to README.md\n\n\n\nAdd an additional parameter to GPM::findPackage to avoid throwing an exception, for use in Twig #1008\nSkip symlinks if found while clearing cache #1269\n\n\n\nFixed an issue when page collection with header-based sort.by returns an array #1264\nFix Response object to handle 303 redirects when open_basedir in effect #1267\nSilence E_WARNING: Zend OPcache API is restricted by \"restrict_api\" configuration directive"},"1.1.14":{"date":"01\/18\/2017","content":"1. [](#bugfix)\n * Fixed `Page::collection()` returning array and not Collection object when header variable did not exist\n * Revert `Content-Encoding: identity` fix, and let you set `cache: allow_webserver_gzip:` option to switch to `identity` [#548](https:\/\/github.com\/getgrav\/grav\/issues\/548)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed <code>Page::collection()<\/code> returning array and not Collection object when header variable did not exist<\/li>\n<li>Revert <code>Content-Encoding: identity<\/code> fix, and let you set <code>cache: allow_webserver_gzip:<\/code> option to switch to <code>identity<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/548\">#548<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed Page::collection() returning array and not Collection object when header variable did not exist\nRevert Content-Encoding: identity fix, and let you set cache: allow_webserver_gzip: option to switch to identity #548"},"1.1.13":{"date":"01\/17\/2017","content":"1. [](#new)\n * Added new `never_cache_twig` page option in `system.yaml` and frontmatter. Allows dynamic Twig logic in regular and modular Twig templates [#1244](https:\/\/github.com\/getgrav\/grav\/pull\/1244)\n1. [](#improved)\n * Several improvements to aid theme development [#232](https:\/\/github.com\/getgrav\/grav\/pull\/1232)\n * Added `hash` cache check option and made dropdown more descriptive [Admin #923](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/923)\n1. [](#bugfix)\n * Fixed cross volume file system operations [#635](https:\/\/github.com\/getgrav\/grav\/issues\/635)\n * Fix issue with pages folders validation not accepting uppercase letters\n * Fix renaming the folder name if the page, in the default language, had a custom slug set in its header\n * Fixed issue with `Content-Encoding: none`. It should really be `Content-Encoding: identity` instead\n * Fixed broken `hash` method on page modifications detection\n * Fixed issue with multi-lang pages not caching independently without unique `.md` file [#1211](https:\/\/github.com\/getgrav\/grav\/issues\/1211)\n * Fixed all `$_GET` parameters missing in Nginx (please update your nginx.conf) [#1245](https:\/\/github.com\/getgrav\/grav\/issues\/1245)\n * Fixed issue in trying to process broken symlink [#1254](https:\/\/github.com\/getgrav\/grav\/issues\/1254)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>never_cache_twig<\/code> page option in <code>system.yaml<\/code> and frontmatter. Allows dynamic Twig logic in regular and modular Twig templates <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1244\">#1244<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Several improvements to aid theme development <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1232\">#232<\/a><\/li>\n<li>Added <code>hash<\/code> cache check option and made dropdown more descriptive <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/923\">Admin #923<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed cross volume file system operations <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/635\">#635<\/a><\/li>\n<li>Fix issue with pages folders validation not accepting uppercase letters<\/li>\n<li>Fix renaming the folder name if the page, in the default language, had a custom slug set in its header<\/li>\n<li>Fixed issue with <code>Content-Encoding: none<\/code>. It should really be <code>Content-Encoding: identity<\/code> instead<\/li>\n<li>Fixed broken <code>hash<\/code> method on page modifications detection<\/li>\n<li>Fixed issue with multi-lang pages not caching independently without unique <code>.md<\/code> file <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1211\">#1211<\/a><\/li>\n<li>Fixed all <code>$_GET<\/code> parameters missing in Nginx (please update your nginx.conf) <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1245\">#1245<\/a><\/li>\n<li>Fixed issue in trying to process broken symlink <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1254\">#1254<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new never_cache_twig page option in system.yaml and frontmatter. Allows dynamic Twig logic in regular and modular Twig templates #1244\n\n\n\nSeveral improvements to aid theme development #232\nAdded hash cache check option and made dropdown more descriptive Admin #923\n\n\n\nFixed cross volume file system operations #635\nFix issue with pages folders validation not accepting uppercase letters\nFix renaming the folder name if the page, in the default language, had a custom slug set in its header\nFixed issue with Content-Encoding: none. It should really be Content-Encoding: identity instead\nFixed broken hash method on page modifications detection\nFixed issue with multi-lang pages not caching independently without unique .md file #1211\nFixed all $_GET parameters missing in Nginx (please update your nginx.conf) #1245\nFixed issue in trying to process broken symlink #1254"},"1.1.12":{"date":"12\/26\/2016","content":"1. [](#bugfix)\n * Fixed issue with JSON calls throwing errors due to debugger enabled [#1227](https:\/\/github.com\/getgrav\/grav\/issues\/1227)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue with JSON calls throwing errors due to debugger enabled <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1227\">#1227<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed issue with JSON calls throwing errors due to debugger enabled #1227"},"1.1.11":{"date":"12\/22\/2016","content":"1. [](#improved)\n * Fall back properly to HTML if template type not found\n1. [](#bugfix)\n * Fix issue with modular pages folders validation [#900](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/900)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Fall back properly to HTML if template type not found<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix issue with modular pages folders validation <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/900\">#900<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fall back properly to HTML if template type not found\n\n\n\nFix issue with modular pages folders validation #900"},"1.1.10":{"date":"12\/21\/2016","content":"1. [](#improved)\n * Improve detection of home path. Also allow `~\/.grav` on Windows, drop `ConsoleTrait::isWindows()` method, used only for that [#1204](https:\/\/github.com\/getgrav\/grav\/pull\/1204)\n * Reworked PHP CLI router [#1219](https:\/\/github.com\/getgrav\/grav\/pull\/1219)\n * More robust theme\/plugin logic in `bin\/gpm direct-install`\n1. [](#bugfix)\n * Fixed case where extracting a package would cause an error during rename\n * Fix issue with using `Yaml::parse` direcly on a filename, now deprecated\n * Add pattern for frontend validation of folder slugs [#891](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/891)\n * Fix issue with Inflector when translation is disabled [SimpleSearch #87](https:\/\/github.com\/getgrav\/grav-plugin-simplesearch\/issues\/87)\n * Explicitly expose `array_unique` Twig filter [Admin #897](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/897)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improve detection of home path. Also allow <code>~\/.grav<\/code> on Windows, drop <code>ConsoleTrait::isWindows()<\/code> method, used only for that <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1204\">#1204<\/a><\/li>\n<li>Reworked PHP CLI router <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1219\">#1219<\/a><\/li>\n<li>More robust theme\/plugin logic in <code>bin\/gpm direct-install<\/code><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed case where extracting a package would cause an error during rename<\/li>\n<li>Fix issue with using <code>Yaml::parse<\/code> direcly on a filename, now deprecated<\/li>\n<li>Add pattern for frontend validation of folder slugs <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/891\">#891<\/a><\/li>\n<li>Fix issue with Inflector when translation is disabled <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-simplesearch\/issues\/87\">SimpleSearch #87<\/a><\/li>\n<li>Explicitly expose <code>array_unique<\/code> Twig filter <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/897\">Admin #897<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Improve detection of home path. Also allow ~\/.grav on Windows, drop ConsoleTrait::isWindows() method, used only for that #1204\nReworked PHP CLI router #1219\nMore robust theme\/plugin logic in bin\/gpm direct-install\n\n\n\nFixed case where extracting a package would cause an error during rename\nFix issue with using Yaml::parse direcly on a filename, now deprecated\nAdd pattern for frontend validation of folder slugs #891\nFix issue with Inflector when translation is disabled SimpleSearch #87\nExplicitly expose array_unique Twig filter Admin #897"},"1.1.9":{"date":"12\/13\/2016","content":"1. [](#new)\n * RC released as stable\n1. [](#improved)\n * Better error handling in cache clear\n * YAML syntax fixes for the future compatibility\n * Added new parameter `remove` for `onBeforeCacheClear` event\n * Add support for calling Media object as function to get medium by filename\n1. [](#bugfix)\n * Added checks before accessing admin reference during `Page::blueprints()` call. Allows to access `page.blueprints` from Twig in the frontend","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>RC released as stable<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Better error handling in cache clear<\/li>\n<li>YAML syntax fixes for the future compatibility<\/li>\n<li>Added new parameter <code>remove<\/code> for <code>onBeforeCacheClear<\/code> event<\/li>\n<li>Add support for calling Media object as function to get medium by filename<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Added checks before accessing admin reference during <code>Page::blueprints()<\/code> call. Allows to access <code>page.blueprints<\/code> from Twig in the frontend<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"RC released as stable\n\n\n\nBetter error handling in cache clear\nYAML syntax fixes for the future compatibility\nAdded new parameter remove for onBeforeCacheClear event\nAdd support for calling Media object as function to get medium by filename\n\n\n\nAdded checks before accessing admin reference during Page::blueprints() call. Allows to access page.blueprints from Twig in the frontend"},"1.1.9-rc.3":{"date":"12\/07\/2016","content":"1. [](#new)\n * Add `ignore_empty` property to be used on array fields, if positive only save options with a value\n * Use new `permissions` field in user account\n * Add `range(int start, int end, int step)` twig function to generate an array of numbers between start and end, inclusive\n * New retina Media image derivatives array support (`![](image.jpg?derivatives=[640,1024,1440])`) [#1147](https:\/\/github.com\/getgrav\/grav\/pull\/1147)\n * Added stream support for images (`![Sepia Image](image:\/\/image.jpg?sepia)`)\n * Added stream support for links (`[Download PDF](user:\/\/data\/pdf\/my.pdf)`)\n * Added new `onBeforeCacheClear` event to add custom paths to cache clearing process\n1. [](#improved)\n * Added alias `selfupdate` to the `self-upgrade` `bin\/gpm` CLI command\n * Synced `webserver-configs\/htaccess.txt` with `.htaccess`\n * Use permissions field in group details.\n * Updated vendor libraries\n * Added a warning on GPM update to update Grav first if needed [#1194](https:\/\/github.com\/getgrav\/grav\/pull\/1194)\n 1. [](#bugfix)\n * Fix page collections problem with `@page.modular` [#1178](https:\/\/github.com\/getgrav\/grav\/pull\/1178)\n * Fix issue with using a multiple taxonomy filter of which one had no results, thanks to @hughbris [#1184](https:\/\/github.com\/getgrav\/grav\/issues\/1184)\n * Fix saving permissions in group\n * Fixed issue with redirect of a page getting moved to a different location","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Add <code>ignore_empty<\/code> property to be used on array fields, if positive only save options with a value<\/li>\n<li>Use new <code>permissions<\/code> field in user account<\/li>\n<li>Add <code>range(int start, int end, int step)<\/code> twig function to generate an array of numbers between start and end, inclusive<\/li>\n<li>New retina Media image derivatives array support (<code>![](image.jpg?derivatives=[640,1024,1440])<\/code>) <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1147\">#1147<\/a><\/li>\n<li>Added stream support for images (<code>![Sepia Image](image:\/\/image.jpg?sepia)<\/code>)<\/li>\n<li>Added stream support for links (<code>[Download PDF](user:\/\/data\/pdf\/my.pdf)<\/code>)<\/li>\n<li>Added new <code>onBeforeCacheClear<\/code> event to add custom paths to cache clearing process<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Added alias <code>selfupdate<\/code> to the <code>self-upgrade<\/code> <code>bin\/gpm<\/code> CLI command<\/li>\n<li>Synced <code>webserver-configs\/htaccess.txt<\/code> with <code>.htaccess<\/code><\/li>\n<li>Use permissions field in group details.<\/li>\n<li>Updated vendor libraries<\/li>\n<li>Added a warning on GPM update to update Grav first if needed <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1194\">#1194<\/a>\n<ol>\n<li><a href=\"#bugfix\"><\/a><\/li>\n<\/ol><\/li>\n<li>Fix page collections problem with <code>@page.modular<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1178\">#1178<\/a><\/li>\n<li>Fix issue with using a multiple taxonomy filter of which one had no results, thanks to @hughbris <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1184\">#1184<\/a><\/li>\n<li>Fix saving permissions in group<\/li>\n<li>Fixed issue with redirect of a page getting moved to a different location<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Add ignore_empty property to be used on array fields, if positive only save options with a value\nUse new permissions field in user account\nAdd range(int start, int end, int step) twig function to generate an array of numbers between start and end, inclusive\nNew retina Media image derivatives array support (![](image.jpg?derivatives=[640,1024,1440])) #1147\nAdded stream support for images (![Sepia Image](image:\/\/image.jpg?sepia))\nAdded stream support for links ([Download PDF](user:\/\/data\/pdf\/my.pdf))\nAdded new onBeforeCacheClear event to add custom paths to cache clearing process\n\n\n\nAdded alias selfupdate to the self-upgrade bin\/gpm CLI command\nSynced webserver-configs\/htaccess.txt with .htaccess\nUse permissions field in group details.\nUpdated vendor libraries\nAdded a warning on GPM update to update Grav first if needed #1194\n\n\n\nFix page collections problem with @page.modular #1178\nFix issue with using a multiple taxonomy filter of which one had no results, thanks to @hughbris #1184\nFix saving permissions in group\nFixed issue with redirect of a page getting moved to a different location"},"1.1.9-rc.2":{"date":"11\/26\/2016","content":"1. [](#new)\n * Added two new sort order options for pages: `publish_date` and `unpublish_date` [#1173](https:\/\/github.com\/getgrav\/grav\/pull\/1173))\n1. [](#improved)\n * Multisite: Create image cache folder if it doesn't exist\n * Add 2 new language values for French [#1174](https:\/\/github.com\/getgrav\/grav\/issues\/1174)\n1. [](#bugfix)\n * Fixed issue when we have a meta file without corresponding media [#1179](https:\/\/github.com\/getgrav\/grav\/issues\/1179)\n * Update class namespace for Admin class [Admin #874](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/874)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added two new sort order options for pages: <code>publish_date<\/code> and <code>unpublish_date<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1173\">#1173<\/a>)<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Multisite: Create image cache folder if it doesn't exist<\/li>\n<li>Add 2 new language values for French <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1174\">#1174<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue when we have a meta file without corresponding media <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1179\">#1179<\/a><\/li>\n<li>Update class namespace for Admin class <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/874\">Admin #874<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added two new sort order options for pages: publish_date and unpublish_date #1173)\n\n\n\nMultisite: Create image cache folder if it doesn't exist\nAdd 2 new language values for French #1174\n\n\n\nFixed issue when we have a meta file without corresponding media #1179\nUpdate class namespace for Admin class Admin #874"},"1.1.9-rc.1":{"date":"11\/09\/2016","content":"1. [](#new)\n * Added a `CompiledJsonFile` object to better handle Json files.\n * Added Base32 encode\/decode class\n * Added a new `User::find()` method\n1. [](#improved)\n * Moved `messages` object into core Grav from login plugin\n * Added `getTaxonomyItemKeys` to the Taxonomy object [#1124](https:\/\/github.com\/getgrav\/grav\/issues\/1124)\n * Added a `redirect_me` Twig function [#1124](https:\/\/github.com\/getgrav\/grav\/issues\/1124)\n * Added a Caddyfile for newer Caddy versions [#1115](https:\/\/github.com\/getgrav\/grav\/issues\/1115)\n * Allow to override sorting flags for page header-based or default ordering. If the `intl` PHP extension is loaded, only these flags are available: https:\/\/secure.php.net\/manual\/en\/collator.asort.php. Otherwise, you can use the PHP standard sorting flags (https:\/\/secure.php.net\/manual\/en\/array.constants.php) [#1169](https:\/\/github.com\/getgrav\/grav\/issues\/1169)\n1. [](#bugfix)\n * Fixed an issue with site redirects\/routes, not processing with extension (.html, .json, etc.)\n * Don't truncate HTML if content length is less than summary size [#1125](https:\/\/github.com\/getgrav\/grav\/issues\/1125)\n * Return max available number when calling random() on a collection passing an int > available items [#1135](https:\/\/github.com\/getgrav\/grav\/issues\/1135)\n * Use correct ratio when applying image filters to image alternatives [#1147](https:\/\/github.com\/getgrav\/grav\/issues\/1147)\n * Fixed URI path in multi-site when query parameters were used in front page","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added a <code>CompiledJsonFile<\/code> object to better handle Json files.<\/li>\n<li>Added Base32 encode\/decode class<\/li>\n<li>Added a new <code>User::find()<\/code> method<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Moved <code>messages<\/code> object into core Grav from login plugin<\/li>\n<li>Added <code>getTaxonomyItemKeys<\/code> to the Taxonomy object <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1124\">#1124<\/a><\/li>\n<li>Added a <code>redirect_me<\/code> Twig function <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1124\">#1124<\/a><\/li>\n<li>Added a Caddyfile for newer Caddy versions <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1115\">#1115<\/a><\/li>\n<li>Allow to override sorting flags for page header-based or default ordering. If the <code>intl<\/code> PHP extension is loaded, only these flags are available: <a href=\"https:\/\/secure.php.net\/manual\/en\/collator.asort.php\">https:\/\/secure.php.net\/manual\/en\/collator.asort.php<\/a>. Otherwise, you can use the PHP standard sorting flags (<a href=\"https:\/\/secure.php.net\/manual\/en\/array.constants.php\">https:\/\/secure.php.net\/manual\/en\/array.constants.php<\/a>) <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1169\">#1169<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed an issue with site redirects\/routes, not processing with extension (.html, .json, etc.)<\/li>\n<li>Don't truncate HTML if content length is less than summary size <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1125\">#1125<\/a><\/li>\n<li>Return max available number when calling random() on a collection passing an int > available items <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1135\">#1135<\/a><\/li>\n<li>Use correct ratio when applying image filters to image alternatives <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1147\">#1147<\/a><\/li>\n<li>Fixed URI path in multi-site when query parameters were used in front page<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added a CompiledJsonFile object to better handle Json files.\nAdded Base32 encode\/decode class\nAdded a new User::find() method\n\n\n\nMoved messages object into core Grav from login plugin\nAdded getTaxonomyItemKeys to the Taxonomy object #1124\nAdded a redirect_me Twig function #1124\nAdded a Caddyfile for newer Caddy versions #1115\nAllow to override sorting flags for page header-based or default ordering. If the intl PHP extension is loaded, only these flags are available: https:\/\/secure.php.net\/manual\/en\/collator.asort.php. Otherwise, you can use the PHP standard sorting flags (https:\/\/secure.php.net\/manual\/en\/array.constants.php) #1169\n\n\n\nFixed an issue with site redirects\/routes, not processing with extension (.html, .json, etc.)\nDon't truncate HTML if content length is less than summary size #1125\nReturn max available number when calling random() on a collection passing an int > available items #1135\nUse correct ratio when applying image filters to image alternatives #1147\nFixed URI path in multi-site when query parameters were used in front page"},"1.1.8":{"date":"10\/22\/2016","content":"1. [](#bugfix)\n * Fixed warning with unset `ssl` option when using GPM [#1132](https:\/\/github.com\/getgrav\/grav\/issues\/1132)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed warning with unset <code>ssl<\/code> option when using GPM <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1132\">#1132<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed warning with unset ssl option when using GPM #1132"},"1.1.7":{"date":"10\/22\/2016","content":"1. [](#improved)\n * Improved the capabilities of Image derivatives [#1107](https:\/\/github.com\/getgrav\/grav\/pull\/1107)\n1. [](#bugfix)\n * Only pass verify_peer settings to cURL and fopen if the setting is disabled [#1120](https:\/\/github.com\/getgrav\/grav\/issues\/1120)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved the capabilities of Image derivatives <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1107\">#1107<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Only pass verify_peer settings to cURL and fopen if the setting is disabled <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1120\">#1120<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Improved the capabilities of Image derivatives #1107\n\n\n\nOnly pass verify_peer settings to cURL and fopen if the setting is disabled #1120"},"1.1.6":{"date":"10\/19\/2016","content":"1. [](#new)\n * Added ability for Page to override the output format (`html`, `xml`, etc..) [#1067](https:\/\/github.com\/getgrav\/grav\/issues\/1067)\n * Added `Utils::getExtensionByMime()` and cleaned up `Utils::getMimeByExtension` + tests\n * Added a `cache.check.method: 'hash'` option in `system.yaml` that checks all files + dates inclusively\n * Include jQuery 3.x in the Grav assets\n * Added the option to automatically fix orientation on images based on their Exif data, by enabling `system.images.auto_fix_orientation`.\n1. [](#improved)\n * Add `batch()` function to Page Collection class\n * Added new `cache.redis.socket` setting that allow to pass a UNIX socket as redis server\n * It is now possible to opt-out of the SSL verification via the new `system.gpm.verify_peer` setting. This is sometimes necessary when receiving a \"GPM Unable to Connect\" error. More details in ([#1053](https:\/\/github.com\/getgrav\/grav\/issues\/1053))\n * It is now possible to force the use of either `curl` or `fopen` as `Response` connection method, via the new `system.gpm.method` setting. By default this is set to 'auto' and gives priority to 'fopen' first, curl otherwise.\n * InstallCommand can now handle Licenses\n * Uses more helpful `1x`, `2x`, `3x`, etc names in the Retina derivatives cache files.\n * Added new method `Plugins::isPluginActiveAdmin()` to check if plugin route is active in Admin plugin\n * Added new `Cache::setEnabled` and `Cache::getEnabled` to enable outside control of cache\n * Updated vendor libs including Twig `1.25.0`\n * Avoid git ignoring any vendor folder in a Grav site subfolder (but still ignore the main `vendor\/` folder)\n * Added an option to get just a route back from `Uri::convertUrl()` function\n * Added option to control split session [#1096](https:\/\/github.com\/getgrav\/grav\/pull\/1096)\n * Added new `verbosity` levels to `system.error.display` to allow for system error messages [#1091](https:\/\/github.com\/getgrav\/grav\/pull\/1091)\n * Improved the API for Grav plugins to access the Parsedown parser directly [#1062](https:\/\/github.com\/getgrav\/grav\/pull\/1062)\n1. [](#bugfix)\n * Fixed missing `progress` method in the DirectInstall Command\n * `Response` class now handles better unsuccessful requests such as 404 and 401\n * Fixed saving of `external` page types [Admin #789](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/789)\n * Fixed issue deleting parent folder of folder with `param_sep` in the folder name [admin #796](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/796)\n * Fixed an issue with streams in `bin\/plugin`\n * Fixed `jpeg` file format support in Media","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added ability for Page to override the output format (<code>html<\/code>, <code>xml<\/code>, etc..) <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1067\">#1067<\/a><\/li>\n<li>Added <code>Utils::getExtensionByMime()<\/code> and cleaned up <code>Utils::getMimeByExtension<\/code> + tests<\/li>\n<li>Added a <code>cache.check.method: 'hash'<\/code> option in <code>system.yaml<\/code> that checks all files + dates inclusively<\/li>\n<li>Include jQuery 3.x in the Grav assets<\/li>\n<li>Added the option to automatically fix orientation on images based on their Exif data, by enabling <code>system.images.auto_fix_orientation<\/code>.<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Add <code>batch()<\/code> function to Page Collection class<\/li>\n<li>Added new <code>cache.redis.socket<\/code> setting that allow to pass a UNIX socket as redis server<\/li>\n<li>It is now possible to opt-out of the SSL verification via the new <code>system.gpm.verify_peer<\/code> setting. This is sometimes necessary when receiving a "GPM Unable to Connect" error. More details in (<a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1053\">#1053<\/a>)<\/li>\n<li>It is now possible to force the use of either <code>curl<\/code> or <code>fopen<\/code> as <code>Response<\/code> connection method, via the new <code>system.gpm.method<\/code> setting. By default this is set to 'auto' and gives priority to 'fopen' first, curl otherwise.<\/li>\n<li>InstallCommand can now handle Licenses<\/li>\n<li>Uses more helpful <code>1x<\/code>, <code>2x<\/code>, <code>3x<\/code>, etc names in the Retina derivatives cache files.<\/li>\n<li>Added new method <code>Plugins::isPluginActiveAdmin()<\/code> to check if plugin route is active in Admin plugin<\/li>\n<li>Added new <code>Cache::setEnabled<\/code> and <code>Cache::getEnabled<\/code> to enable outside control of cache<\/li>\n<li>Updated vendor libs including Twig <code>1.25.0<\/code><\/li>\n<li>Avoid git ignoring any vendor folder in a Grav site subfolder (but still ignore the main <code>vendor\/<\/code> folder)<\/li>\n<li>Added an option to get just a route back from <code>Uri::convertUrl()<\/code> function<\/li>\n<li>Added option to control split session <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1096\">#1096<\/a><\/li>\n<li>Added new <code>verbosity<\/code> levels to <code>system.error.display<\/code> to allow for system error messages <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1091\">#1091<\/a><\/li>\n<li>Improved the API for Grav plugins to access the Parsedown parser directly <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/1062\">#1062<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed missing <code>progress<\/code> method in the DirectInstall Command<\/li>\n<li><code>Response<\/code> class now handles better unsuccessful requests such as 404 and 401<\/li>\n<li>Fixed saving of <code>external<\/code> page types <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/789\">Admin #789<\/a><\/li>\n<li>Fixed issue deleting parent folder of folder with <code>param_sep<\/code> in the folder name <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/796\">admin #796<\/a><\/li>\n<li>Fixed an issue with streams in <code>bin\/plugin<\/code><\/li>\n<li>Fixed <code>jpeg<\/code> file format support in Media<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added ability for Page to override the output format (html, xml, etc..) #1067\nAdded Utils::getExtensionByMime() and cleaned up Utils::getMimeByExtension + tests\nAdded a cache.check.method: 'hash' option in system.yaml that checks all files + dates inclusively\nInclude jQuery 3.x in the Grav assets\nAdded the option to automatically fix orientation on images based on their Exif data, by enabling system.images.auto_fix_orientation.\n\n\n\nAdd batch() function to Page Collection class\nAdded new cache.redis.socket setting that allow to pass a UNIX socket as redis server\nIt is now possible to opt-out of the SSL verification via the new system.gpm.verify_peer setting. This is sometimes necessary when receiving a "GPM Unable to Connect" error. More details in (#1053)\nIt is now possible to force the use of either curl or fopen as Response connection method, via the new system.gpm.method setting. By default this is set to 'auto' and gives priority to 'fopen' first, curl otherwise.\nInstallCommand can now handle Licenses\nUses more helpful 1x, 2x, 3x, etc names in the Retina derivatives cache files.\nAdded new method Plugins::isPluginActiveAdmin() to check if plugin route is active in Admin plugin\nAdded new Cache::setEnabled and Cache::getEnabled to enable outside control of cache\nUpdated vendor libs including Twig 1.25.0\nAvoid git ignoring any vendor folder in a Grav site subfolder (but still ignore the main vendor\/ folder)\nAdded an option to get just a route back from Uri::convertUrl() function\nAdded option to control split session #1096\nAdded new verbosity levels to system.error.display to allow for system error messages #1091\nImproved the API for Grav plugins to access the Parsedown parser directly #1062\n\n\n\nFixed missing progress method in the DirectInstall Command\nResponse class now handles better unsuccessful requests such as 404 and 401\nFixed saving of external page types Admin #789\nFixed issue deleting parent folder of folder with param_sep in the folder name admin #796\nFixed an issue with streams in bin\/plugin\nFixed jpeg file format support in Media"},"1.1.5":{"date":"09\/09\/2016","content":"1. [](#new)\n * Added new `bin\/gpm direct-install` command to install local and remote zip archives\n1. [](#improved)\n * Refactored `onPageNotFound` event to fire after `onPageInitialized`\n * Follow symlinks in `Folder::all()`\n * Twig variable `base_url` now supports multi-site by path feature\n * Improved `bin\/plugin` to list plugins with commands faster by limiting the depth of recursion\n1. [](#bugfix)\n * Quietly skip missing streams in `Cache::clearCache()`\n * Fix issue in calling page.summary when no content is present in a page\n * Fix for HUGE session timeouts [#1050](https:\/\/github.com\/getgrav\/grav\/issues\/1050)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>bin\/gpm direct-install<\/code> command to install local and remote zip archives<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Refactored <code>onPageNotFound<\/code> event to fire after <code>onPageInitialized<\/code><\/li>\n<li>Follow symlinks in <code>Folder::all()<\/code><\/li>\n<li>Twig variable <code>base_url<\/code> now supports multi-site by path feature<\/li>\n<li>Improved <code>bin\/plugin<\/code> to list plugins with commands faster by limiting the depth of recursion<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Quietly skip missing streams in <code>Cache::clearCache()<\/code><\/li>\n<li>Fix issue in calling page.summary when no content is present in a page<\/li>\n<li>Fix for HUGE session timeouts <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1050\">#1050<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new bin\/gpm direct-install command to install local and remote zip archives\n\n\n\nRefactored onPageNotFound event to fire after onPageInitialized\nFollow symlinks in Folder::all()\nTwig variable base_url now supports multi-site by path feature\nImproved bin\/plugin to list plugins with commands faster by limiting the depth of recursion\n\n\n\nQuietly skip missing streams in Cache::clearCache()\nFix issue in calling page.summary when no content is present in a page\nFix for HUGE session timeouts #1050"},"1.1.4":{"date":"09\/07\/2016","content":"1. [](#new)\n * Added new `tmp` folder at root. Accessible via stream `tmp:\/\/`. Can be cleared with `bin\/grav clear --tmp-only` as well as `--all`.\n * Added support for RTL in `LanguageCodes` so you can determine if a language is RTL or not\n * Ability to set `custom_base_url` in system configuration\n * Added `override` and `force` options for Streams setup\n1. [](#improved)\n * Important vendor updates to provide PHP 7.1 beta support!\n * Added a `Util::arrayFlatten()` static function\n * Added support for 'external_url' page header to enable easier external URL based menu items\n * Improved the UI for CLI GPM Index view to use a table\n * Added `@page.modular` Collection type [#988](https:\/\/github.com\/getgrav\/grav\/issues\/988)\n * Added support for `self@`, `page@`, `taxonomy@`, `root@` Collection syntax for cleaner YAML compatibility\n * Improved GPM commands to allow for `-y` to automate **yes** responses and `-o` for **update** and **selfupgrade** to overwrite installations [#985](https:\/\/github.com\/getgrav\/grav\/issues\/985)\n * Added randomization to `safe_email` Twig filter for greater security [#998](https:\/\/github.com\/getgrav\/grav\/issues\/998)\n * Allow `Utils::setDotNotation` to merge data, rather than just set\n * Moved default `Image::filter()` to the `save` action to ensure they are applied last [#984](https:\/\/github.com\/getgrav\/grav\/issues\/984)\n * Improved the `Truncator` code to be more reliable [#1019](https:\/\/github.com\/getgrav\/grav\/issues\/1019)\n * Moved media blueprints out of core (now in Admin plugin)\n1. [](#bugfix)\n * Removed 307 redirect code option as it is not well supported [#743](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/743)\n * Fixed issue with folders with name `*.md` are not confused with pages [#995](https:\/\/github.com\/getgrav\/grav\/issues\/995)\n * Fixed an issue when filtering collections causing null key\n * Fix for invalid HTML when rendering GIF and Vector media [#1001](https:\/\/github.com\/getgrav\/grav\/issues\/1001)\n * Use pages.markdown.extra in the user's system.yaml [#1007](https:\/\/github.com\/getgrav\/grav\/issues\/1007)\n * Fix for `Memcached` connection [#1020](https:\/\/github.com\/getgrav\/grav\/issues\/1020)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>tmp<\/code> folder at root. Accessible via stream <code>tmp:\/\/<\/code>. Can be cleared with <code>bin\/grav clear --tmp-only<\/code> as well as <code>--all<\/code>.<\/li>\n<li>Added support for RTL in <code>LanguageCodes<\/code> so you can determine if a language is RTL or not<\/li>\n<li>Ability to set <code>custom_base_url<\/code> in system configuration<\/li>\n<li>Added <code>override<\/code> and <code>force<\/code> options for Streams setup<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Important vendor updates to provide PHP 7.1 beta support!<\/li>\n<li>Added a <code>Util::arrayFlatten()<\/code> static function<\/li>\n<li>Added support for 'external_url' page header to enable easier external URL based menu items<\/li>\n<li>Improved the UI for CLI GPM Index view to use a table<\/li>\n<li>Added <code>@page.modular<\/code> Collection type <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/988\">#988<\/a><\/li>\n<li>Added support for <code>self@<\/code>, <code>page@<\/code>, <code>taxonomy@<\/code>, <code>root@<\/code> Collection syntax for cleaner YAML compatibility<\/li>\n<li>Improved GPM commands to allow for <code>-y<\/code> to automate <strong>yes<\/strong> responses and <code>-o<\/code> for <strong>update<\/strong> and <strong>selfupgrade<\/strong> to overwrite installations <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/985\">#985<\/a><\/li>\n<li>Added randomization to <code>safe_email<\/code> Twig filter for greater security <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/998\">#998<\/a><\/li>\n<li>Allow <code>Utils::setDotNotation<\/code> to merge data, rather than just set<\/li>\n<li>Moved default <code>Image::filter()<\/code> to the <code>save<\/code> action to ensure they are applied last <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/984\">#984<\/a><\/li>\n<li>Improved the <code>Truncator<\/code> code to be more reliable <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1019\">#1019<\/a><\/li>\n<li>Moved media blueprints out of core (now in Admin plugin)<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Removed 307 redirect code option as it is not well supported <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/743\">#743<\/a><\/li>\n<li>Fixed issue with folders with name <code>*.md<\/code> are not confused with pages <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/995\">#995<\/a><\/li>\n<li>Fixed an issue when filtering collections causing null key<\/li>\n<li>Fix for invalid HTML when rendering GIF and Vector media <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1001\">#1001<\/a><\/li>\n<li>Use pages.markdown.extra in the user's system.yaml <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1007\">#1007<\/a><\/li>\n<li>Fix for <code>Memcached<\/code> connection <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/1020\">#1020<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new tmp folder at root. Accessible via stream tmp:\/\/. Can be cleared with bin\/grav clear --tmp-only as well as --all.\nAdded support for RTL in LanguageCodes so you can determine if a language is RTL or not\nAbility to set custom_base_url in system configuration\nAdded override and force options for Streams setup\n\n\n\nImportant vendor updates to provide PHP 7.1 beta support!\nAdded a Util::arrayFlatten() static function\nAdded support for 'external_url' page header to enable easier external URL based menu items\nImproved the UI for CLI GPM Index view to use a table\nAdded @page.modular Collection type #988\nAdded support for self@, page@, taxonomy@, root@ Collection syntax for cleaner YAML compatibility\nImproved GPM commands to allow for -y to automate yes responses and -o for update and selfupgrade to overwrite installations #985\nAdded randomization to safe_email Twig filter for greater security #998\nAllow Utils::setDotNotation to merge data, rather than just set\nMoved default Image::filter() to the save action to ensure they are applied last #984\nImproved the Truncator code to be more reliable #1019\nMoved media blueprints out of core (now in Admin plugin)\n\n\n\nRemoved 307 redirect code option as it is not well supported #743\nFixed issue with folders with name *.md are not confused with pages #995\nFixed an issue when filtering collections causing null key\nFix for invalid HTML when rendering GIF and Vector media #1001\nUse pages.markdown.extra in the user's system.yaml #1007\nFix for Memcached connection #1020"},"1.1.3":{"date":"08\/14\/2016","content":"1. [](#bugfix)\n * Fix for lightbox media function throwing error [#981](https:\/\/github.com\/getgrav\/grav\/issues\/981)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for lightbox media function throwing error <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/981\">#981<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fix for lightbox media function throwing error #981"},"1.1.2":{"date":"08\/10\/2016","content":"1. [](#new)\n * Allow forcing SSL by setting `system.force_ssl` (Force SSL in the Admin System Config) [#899](https:\/\/github.com\/getgrav\/grav\/pull\/899)\n1. [](#improved)\n * Improved `authorize` Twig extension to accept a nested array of authorizations [#948](https:\/\/github.com\/getgrav\/grav\/issues\/948)\n * Don't add timestamps on remote assets as it can cause conflicts\n * Grav now looks at types from `media.yaml` when retrieving page mime types [#966](https:\/\/github.com\/getgrav\/grav\/issues\/966)\n * Added support for dumping exceptions in the Debugger\n1. [](#bugfix)\n * Fixed `Folder::delete` method to recursively remove files and folders and causing Upgrade to fail.\n * Fix [#952](https:\/\/github.com\/getgrav\/grav\/issues\/952) hyphenize the session name.\n * If no parent is set and siblings collection is called, return a new and empty collection [grav-plugin-sitemap\/issues\/22](https:\/\/github.com\/getgrav\/grav-plugin-sitemap\/issues\/22)\n * Prevent exception being thrown when calling the Collator constructor failed in a Windows environment with the Intl PHP Extension enabled [#961](https:\/\/github.com\/getgrav\/grav\/issues\/961)\n * Fix for markdown images not properly rendering `id` attribute [#956](https:\/\/github.com\/getgrav\/grav\/issues\/956)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Allow forcing SSL by setting <code>system.force_ssl<\/code> (Force SSL in the Admin System Config) <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/899\">#899<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved <code>authorize<\/code> Twig extension to accept a nested array of authorizations <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/948\">#948<\/a><\/li>\n<li>Don't add timestamps on remote assets as it can cause conflicts<\/li>\n<li>Grav now looks at types from <code>media.yaml<\/code> when retrieving page mime types <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/966\">#966<\/a><\/li>\n<li>Added support for dumping exceptions in the Debugger<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed <code>Folder::delete<\/code> method to recursively remove files and folders and causing Upgrade to fail.<\/li>\n<li>Fix <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/952\">#952<\/a> hyphenize the session name.<\/li>\n<li>If no parent is set and siblings collection is called, return a new and empty collection <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-sitemap\/issues\/22\">grav-plugin-sitemap\/issues\/22<\/a><\/li>\n<li>Prevent exception being thrown when calling the Collator constructor failed in a Windows environment with the Intl PHP Extension enabled <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/961\">#961<\/a><\/li>\n<li>Fix for markdown images not properly rendering <code>id<\/code> attribute <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/956\">#956<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Allow forcing SSL by setting system.force_ssl (Force SSL in the Admin System Config) #899\n\n\n\nImproved authorize Twig extension to accept a nested array of authorizations #948\nDon't add timestamps on remote assets as it can cause conflicts\nGrav now looks at types from media.yaml when retrieving page mime types #966\nAdded support for dumping exceptions in the Debugger\n\n\n\nFixed Folder::delete method to recursively remove files and folders and causing Upgrade to fail.\nFix #952 hyphenize the session name.\nIf no parent is set and siblings collection is called, return a new and empty collection grav-plugin-sitemap\/issues\/22\nPrevent exception being thrown when calling the Collator constructor failed in a Windows environment with the Intl PHP Extension enabled #961\nFix for markdown images not properly rendering id attribute #956"},"1.1.1":{"date":"07\/16\/2016","content":"1. [](#improved)\n * Made `paramsRegex()` static to allow it to be called statically\n1. [](#bugfix)\n * Fixed backup when using very long site titles with invalid characters [grav-plugin-admin#701](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/701)\n * Fixed a typo in the `webserver-configs\/nginx.conf` example","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Made <code>paramsRegex()<\/code> static to allow it to be called statically<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed backup when using very long site titles with invalid characters <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/701\">grav-plugin-admin#701<\/a><\/li>\n<li>Fixed a typo in the <code>webserver-configs\/nginx.conf<\/code> example<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Made paramsRegex() static to allow it to be called statically\n\n\n\nFixed backup when using very long site titles with invalid characters grav-plugin-admin#701\nFixed a typo in the webserver-configs\/nginx.conf example"},"1.1.0":{"date":"07\/14\/2016","content":"1. [](#improved)\n * Added support for validation of multiple email in the `type: email` field [grav-plugin-email#31](https:\/\/github.com\/getgrav\/grav-plugin-email\/issues\/31)\n * Unified PHP code header styling\n * Added 6 more languages and updated language codes\n * set default \"releases\" option to `stable`\n1. [](#bugfix)\n * Fix backend validation for file fields marked as required [grav-plugin-form#78](https:\/\/github.com\/getgrav\/grav-plugin-form\/issues\/78)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Added support for validation of multiple email in the <code>type: email<\/code> field <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-email\/issues\/31\">grav-plugin-email#31<\/a><\/li>\n<li>Unified PHP code header styling<\/li>\n<li>Added 6 more languages and updated language codes<\/li>\n<li>set default "releases" option to <code>stable<\/code><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix backend validation for file fields marked as required <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-form\/issues\/78\">grav-plugin-form#78<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added support for validation of multiple email in the type: email field grav-plugin-email#31\nUnified PHP code header styling\nAdded 6 more languages and updated language codes\nset default "releases" option to stable\n\n\n\nFix backend validation for file fields marked as required grav-plugin-form#78"},"1.1.0-rc.3":{"date":"06\/21\/2016","content":"1. [](#new)\n * Add a onPageFallBackUrl event when starting the fallbackUrl() method to allow the Login plugin to protect the page media\n * Conveniently allow ability to retrieve user information via config object [#913](https:\/\/github.com\/getgrav\/grav\/pull\/913) - @Vivalldi\n * Grav served images can now use header caching [#905](https:\/\/github.com\/getgrav\/grav\/pull\/905)\n1. [](#improved)\n * Take asset modification timestamp into consideration in pipelining [#917](https:\/\/github.com\/getgrav\/grav\/pull\/917) - @Sommerregen\n1. [](#bugfix)\n * Respect `enable_asset_timestamp` settings for pipelined Assets [#906](https:\/\/github.com\/getgrav\/grav\/issues\/906)\n * Fixed collections end dates for 32-bit systems [#902](https:\/\/github.com\/getgrav\/grav\/issues\/902)\n * Fixed a recent regression (1.1.0-rc1) with parameter separator different than `:`","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Add a onPageFallBackUrl event when starting the fallbackUrl() method to allow the Login plugin to protect the page media<\/li>\n<li>Conveniently allow ability to retrieve user information via config object <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/913\">#913<\/a> - @Vivalldi<\/li>\n<li>Grav served images can now use header caching <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/905\">#905<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Take asset modification timestamp into consideration in pipelining <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/917\">#917<\/a> - @Sommerregen<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Respect <code>enable_asset_timestamp<\/code> settings for pipelined Assets <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/906\">#906<\/a><\/li>\n<li>Fixed collections end dates for 32-bit systems <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/902\">#902<\/a><\/li>\n<li>Fixed a recent regression (1.1.0-rc1) with parameter separator different than <code>:<\/code><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Add a onPageFallBackUrl event when starting the fallbackUrl() method to allow the Login plugin to protect the page media\nConveniently allow ability to retrieve user information via config object #913 - @Vivalldi\nGrav served images can now use header caching #905\n\n\n\nTake asset modification timestamp into consideration in pipelining #917 - @Sommerregen\n\n\n\nRespect enable_asset_timestamp settings for pipelined Assets #906\nFixed collections end dates for 32-bit systems #902\nFixed a recent regression (1.1.0-rc1) with parameter separator different than :"},"1.1.0-rc.2":{"date":"06\/14\/2016","content":"1. [](#new)\n * Added getters and setters for Assets to allow manipulation of CSS\/JS\/Collection based assets via plugins [#876](https:\/\/github.com\/getgrav\/grav\/issues\/876)\n1. [](#improved)\n * Pass the exception to the `onFatalException()` event\n * Updated to latest jQuery 2.2.4 release\n * Moved list items in `system\/config\/media.yaml` config into a `types:` key which allows you delete default items.\n * Updated `webserver-configs\/nginx.conf` with `try_files` fix from @mrhein and @rondlite [#743](https:\/\/github.com\/getgrav\/grav\/pull\/743)\n * Updated cache references to include `memecache` and `redis` [#887](https:\/\/github.com\/getgrav\/grav\/issues\/887)\n * Updated composer libraries\n1. [](#bugfix)\n * Fixed `Utils::normalizePath()` that was truncating 0's [#882](https:\/\/github.com\/getgrav\/grav\/issues\/882)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added getters and setters for Assets to allow manipulation of CSS\/JS\/Collection based assets via plugins <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/876\">#876<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Pass the exception to the <code>onFatalException()<\/code> event<\/li>\n<li>Updated to latest jQuery 2.2.4 release<\/li>\n<li>Moved list items in <code>system\/config\/media.yaml<\/code> config into a <code>types:<\/code> key which allows you delete default items.<\/li>\n<li>Updated <code>webserver-configs\/nginx.conf<\/code> with <code>try_files<\/code> fix from @mrhein and @rondlite <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/743\">#743<\/a><\/li>\n<li>Updated cache references to include <code>memecache<\/code> and <code>redis<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/887\">#887<\/a><\/li>\n<li>Updated composer libraries<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed <code>Utils::normalizePath()<\/code> that was truncating 0's <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/882\">#882<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added getters and setters for Assets to allow manipulation of CSS\/JS\/Collection based assets via plugins #876\n\n\n\nPass the exception to the onFatalException() event\nUpdated to latest jQuery 2.2.4 release\nMoved list items in system\/config\/media.yaml config into a types: key which allows you delete default items.\nUpdated webserver-configs\/nginx.conf with try_files fix from @mrhein and @rondlite #743\nUpdated cache references to include memecache and redis #887\nUpdated composer libraries\n\n\n\nFixed Utils::normalizePath() that was truncating 0's #882"},"1.1.0-rc.1":{"date":"06\/01\/2016","content":"1. [](#new)\n * Added `Utils::getDotNotation()` and `Utils::setDotNotation()` methods + tests\n * Added support for `xx-XX` locale language lookups in `LanguageCodes` class [#854](https:\/\/github.com\/getgrav\/grav\/issues\/854)\n * New CSS\/JS Minify library that does a more reliable job [#864](https:\/\/github.com\/getgrav\/grav\/issues\/864)\n1. [](#improved)\n * GPM installation of plugins and themes into correct multisite folders [#841](https:\/\/github.com\/getgrav\/grav\/issues\/841)\n * Use `Page::rawRoute()` in blueprints for more reliable mulit-language support\n1. [](#bugfix)\n * Fixes for `zlib.output_compression` as well as `mod_deflate` GZIP compression\n * Fix for corner-case redirect logic causing infinite loops and out-of-memory errors\n * Fix for saving fields in expert mode that have no `Validation::typeX()` methods [#626](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/626)\n * Detect if user really meant to extend parent blueprint, not another one (fixes old page type blueprints)\n * Fixed a bug in `Page::relativePagePath()` when `Page::$name` is not defined\n * Fix for poor handling of params + query element in `Uri::processParams()` [#859](https:\/\/github.com\/getgrav\/grav\/issues\/859)\n * Fix for double encoding in markdown links [#860](https:\/\/github.com\/getgrav\/grav\/issues\/860)\n * Correctly handle language strings to determine if it's in admin or not [#627](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/627)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <code>Utils::getDotNotation()<\/code> and <code>Utils::setDotNotation()<\/code> methods + tests<\/li>\n<li>Added support for <code>xx-XX<\/code> locale language lookups in <code>LanguageCodes<\/code> class <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/854\">#854<\/a><\/li>\n<li>New CSS\/JS Minify library that does a more reliable job <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/864\">#864<\/a><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>GPM installation of plugins and themes into correct multisite folders <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/841\">#841<\/a><\/li>\n<li>Use <code>Page::rawRoute()<\/code> in blueprints for more reliable mulit-language support<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixes for <code>zlib.output_compression<\/code> as well as <code>mod_deflate<\/code> GZIP compression<\/li>\n<li>Fix for corner-case redirect logic causing infinite loops and out-of-memory errors<\/li>\n<li>Fix for saving fields in expert mode that have no <code>Validation::typeX()<\/code> methods <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/626\">#626<\/a><\/li>\n<li>Detect if user really meant to extend parent blueprint, not another one (fixes old page type blueprints)<\/li>\n<li>Fixed a bug in <code>Page::relativePagePath()<\/code> when <code>Page::$name<\/code> is not defined<\/li>\n<li>Fix for poor handling of params + query element in <code>Uri::processParams()<\/code> <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/859\">#859<\/a><\/li>\n<li>Fix for double encoding in markdown links <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/860\">#860<\/a><\/li>\n<li>Correctly handle language strings to determine if it's in admin or not <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/627\">#627<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added Utils::getDotNotation() and Utils::setDotNotation() methods + tests\nAdded support for xx-XX locale language lookups in LanguageCodes class #854\nNew CSS\/JS Minify library that does a more reliable job #864\n\n\n\nGPM installation of plugins and themes into correct multisite folders #841\nUse Page::rawRoute() in blueprints for more reliable mulit-language support\n\n\n\nFixes for zlib.output_compression as well as mod_deflate GZIP compression\nFix for corner-case redirect logic causing infinite loops and out-of-memory errors\nFix for saving fields in expert mode that have no Validation::typeX() methods #626\nDetect if user really meant to extend parent blueprint, not another one (fixes old page type blueprints)\nFixed a bug in Page::relativePagePath() when Page::$name is not defined\nFix for poor handling of params + query element in Uri::processParams() #859\nFix for double encoding in markdown links #860\nCorrectly handle language strings to determine if it's in admin or not #627"},"1.1.0-beta.5":{"date":"05\/23\/2016","content":"1. [](#improved)\n * Updated jQuery from 2.2.0 to 2.2.3\n * Set `Uri::ip()` to static by default so it can be used in form fields\n * Improved `Session` class with flash storage\n * `Page::getContentMeta()` now supports an optional key.\n1. [](#bugfix)\n * Fixed \"Invalid slug set in YAML frontmatter\" when setting `Page::slug()` with empty string [#580](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/580)\n * Only `.gitignore` Grav's vendor folder\n * Fix trying to remove Grav with `GPM uninstall` of a plugin with Grav dependency\n * Fix Page Type blueprints not being able to extend their parents\n * `filterFile` validation method always returns an array of files, behaving like `multiple=\"multiple\"`\n * Fixed [#835](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/835) check for empty image file first to prevent getimagesize() fatal error\n * Avoid throwing an error when Grav's Gzip and mod_deflate are enabled at the same time on a non php-fpm setup","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Updated jQuery from 2.2.0 to 2.2.3<\/li>\n<li>Set <code>Uri::ip()<\/code> to static by default so it can be used in form fields<\/li>\n<li>Improved <code>Session<\/code> class with flash storage<\/li>\n<li><code>Page::getContentMeta()<\/code> now supports an optional key.<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed "Invalid slug set in YAML frontmatter" when setting <code>Page::slug()<\/code> with empty string <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/580\">#580<\/a><\/li>\n<li>Only <code>.gitignore<\/code> Grav's vendor folder<\/li>\n<li>Fix trying to remove Grav with <code>GPM uninstall<\/code> of a plugin with Grav dependency<\/li>\n<li>Fix Page Type blueprints not being able to extend their parents<\/li>\n<li><code>filterFile<\/code> validation method always returns an array of files, behaving like <code>multiple=\"multiple\"<\/code><\/li>\n<li>Fixed <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/835\">#835<\/a> check for empty image file first to prevent getimagesize() fatal error<\/li>\n<li>Avoid throwing an error when Grav's Gzip and mod_deflate are enabled at the same time on a non php-fpm setup<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Updated jQuery from 2.2.0 to 2.2.3\nSet Uri::ip() to static by default so it can be used in form fields\nImproved Session class with flash storage\nPage::getContentMeta() now supports an optional key.\n\n\n\nFixed "Invalid slug set in YAML frontmatter" when setting Page::slug() with empty string #580\nOnly .gitignore Grav's vendor folder\nFix trying to remove Grav with GPM uninstall of a plugin with Grav dependency\nFix Page Type blueprints not being able to extend their parents\nfilterFile validation method always returns an array of files, behaving like multiple=\"multiple\"\nFixed #835 check for empty image file first to prevent getimagesize() fatal error\nAvoid throwing an error when Grav's Gzip and mod_deflate are enabled at the same time on a non php-fpm setup"},"1.1.0-beta.4":{"date":"05\/09\/2016","content":"1. [](#bugfix)\n * Drop dependencies calculations if plugin is installed via symlink\n * Drop Grav from dependencies calculations\n * Send slug name as part of installed packages\n * Fix for summary entities not being properly decoded [#825](https:\/\/github.com\/getgrav\/grav\/issues\/825)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Drop dependencies calculations if plugin is installed via symlink<\/li>\n<li>Drop Grav from dependencies calculations<\/li>\n<li>Send slug name as part of installed packages<\/li>\n<li>Fix for summary entities not being properly decoded <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/825\">#825<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Drop dependencies calculations if plugin is installed via symlink\nDrop Grav from dependencies calculations\nSend slug name as part of installed packages\nFix for summary entities not being properly decoded #825"},"1.1.0-beta.3":{"date":"05\/04\/2016","content":"1. [](#improved)\n * Pass the Page type when calling `onBlueprintCreated`\n * Changed `Page::cachePageContent()` form **private** to **public** so a page can be recached via plugin\n1. [](#bugfix)\n * Fixed handling of `{'loading':'async'}` with Assets Pipeline\n * Fix for new modular page modal `Page` field requiring a value [#529](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/529)\n * Fix for broken `bin\/gpm version` command\n * Fix handling \"grav\" as a dependency\n * Fix when installing multiple packages and one is the dependency of another, don't try to install it twice\n * Fix using name instead of the slug to determine a package folder. Broke for packages whose name was 2+ words","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Pass the Page type when calling <code>onBlueprintCreated<\/code><\/li>\n<li>Changed <code>Page::cachePageContent()<\/code> form <strong>private<\/strong> to <strong>public<\/strong> so a page can be recached via plugin<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed handling of <code>{'loading':'async'}<\/code> with Assets Pipeline<\/li>\n<li>Fix for new modular page modal <code>Page<\/code> field requiring a value <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/529\">#529<\/a><\/li>\n<li>Fix for broken <code>bin\/gpm version<\/code> command<\/li>\n<li>Fix handling "grav" as a dependency<\/li>\n<li>Fix when installing multiple packages and one is the dependency of another, don't try to install it twice<\/li>\n<li>Fix using name instead of the slug to determine a package folder. Broke for packages whose name was 2+ words<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Pass the Page type when calling onBlueprintCreated\nChanged Page::cachePageContent() form private to public so a page can be recached via plugin\n\n\n\nFixed handling of {'loading':'async'} with Assets Pipeline\nFix for new modular page modal Page field requiring a value #529\nFix for broken bin\/gpm version command\nFix handling "grav" as a dependency\nFix when installing multiple packages and one is the dependency of another, don't try to install it twice\nFix using name instead of the slug to determine a package folder. Broke for packages whose name was 2+ words"},"1.1.0-beta.2":{"date":"04\/27\/2016","content":"1. [](#new)\n * Added new `Plugin::getBlueprint()` and `Theme::getBlueprint()` method\n * Allow **page blueprints** to be added via Plugins.\n1. [](#improved)\n * Moved to new `data-*@` format in blueprints\n * Updated composer-based libraries\n * Moved some hard-coded `CACHE_DIR` references to use locator\n * Set `twig.debug: true` by default\n1. [](#bugfix)\n * Fixed issue with link rewrites and local assets pipeline with `absolute_urls: true`\n * Allow Cyrillic slugs [#520](https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/520)\n * Fix ordering issue with accented letters [#784](https:\/\/github.com\/getgrav\/grav\/issues\/784)\n * Fix issue with Assets pipeline and missing newlines causing invalid JavaScript","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>Plugin::getBlueprint()<\/code> and <code>Theme::getBlueprint()<\/code> method<\/li>\n<li>Allow <strong>page blueprints<\/strong> to be added via Plugins.<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Moved to new <code>data-*@<\/code> format in blueprints<\/li>\n<li>Updated composer-based libraries<\/li>\n<li>Moved some hard-coded <code>CACHE_DIR<\/code> references to use locator<\/li>\n<li>Set <code>twig.debug: true<\/code> by default<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue with link rewrites and local assets pipeline with <code>absolute_urls: true<\/code><\/li>\n<li>Allow Cyrillic slugs <a href=\"https:\/\/github.com\/getgrav\/grav-plugin-admin\/issues\/520\">#520<\/a><\/li>\n<li>Fix ordering issue with accented letters <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/784\">#784<\/a><\/li>\n<li>Fix issue with Assets pipeline and missing newlines causing invalid JavaScript<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new Plugin::getBlueprint() and Theme::getBlueprint() method\nAllow page blueprints to be added via Plugins.\n\n\n\nMoved to new data-*@ format in blueprints\nUpdated composer-based libraries\nMoved some hard-coded CACHE_DIR references to use locator\nSet twig.debug: true by default\n\n\n\nFixed issue with link rewrites and local assets pipeline with absolute_urls: true\nAllow Cyrillic slugs #520\nFix ordering issue with accented letters #784\nFix issue with Assets pipeline and missing newlines causing invalid JavaScript"},"1.1.0-beta.1":{"date":"04\/20\/2016","content":"1. [](#new)\n * **Blueprint Improvements**: The main improvements to Grav take the form of a major rewrite of our blueprint functionality. Blueprints are an essential piece of functionality within Grav that helps define configuration fields. These allow us to create a definition of a form field that can be rendered in the administrator plugin and allow the input, validation, and storage of values into the various configuration and page files that power Grav. Grav 1.0 had extensive support for building and extending blueprints, but Grav 1.1 takes this even further and adds improvements to our existing system.\n * **Extending Blueprints**: You could extend forms in Grav 1.0, but now you can use a newer `extends@:` default syntax rather than the previous `'@extends'` string that needed to be quoted in YAML. Also this new format allows for the defining of a `context` which lets you define where to look for the base blueprint. Another new feature is the ability to extend from multiple blueprints.\n * **Embedding\/Importing Blueprints**: One feature that has been requested is the ability to embed or import one blueprint into another blueprint. This allows you to share fields or sub-form between multiple forms. This is accomplished via the `import@` syntax.\n * **Removing Existing Fields and Properties**: Another new feature is the ability to remove completely existing fields or properties from an extended blueprint. This allows the user a lot more flexibility when creating custom forms by simply using the new `unset@: true` syntax. To remove a field property you would use `unset-<property>@: true` in your extended field definition, for example: `unset-options@: true`.\n * **Replacing Existing Fields and Properties**: Similar to removing, you can now replace an existing field or property with the `replace@: true` syntax for the whole field, and `replace-<property>@: true` for a specific property.\n * **Field Ordering**: Probably the most frequently requested blueprint functionality that we have added is the ability to change field ordering. Imagine that you want to extend the default page blueprint but add a new tab. Previously, this meant your tab would be added at the end of the form, but now you can define that you wish the new tab to be added right after the `content` tab. This works for any field too, so you can extend a blueprint and add your own custom fields anywhere you wish! This is accomplished by using the new `ordering@:` syntax with either an existing property name or an integer.\n * **Configuration Properties**: Another useful new feature is the ability to directly access Grav configuration in blueprints with `config-<property>@` syntax. For example you can set a default for a field via `config-default@: site.author.name` which will use the author.name value from the `site.yaml` file as the `default` value for this field.\n * **Function Calls**: The ability to call PHP functions for values has been improved in Grav 1.1 to be more powerful. You can use the `data-<property>@` syntax to call static methods to obtain values. For example: `data-default@: '\\Grav\\Plugin\\Admin::route'`. You can now even pass parameters to these methods.\n * **Validation Rules**: You can now define a custom blueprint-level validation rule and assign this rule to a form field.\n * **Custom Form Field Types**: This advanced new functionality allows you to create a custom field type via a new plugin event called getFormFieldTypes(). This allows you to provide extra functionality or instructions on how to handle the form form field.\n * **GPM Versioning**: A new feature that we have wanted to add to our GPM package management system is the ability to control dependencies by version. We have opted to use a syntax very similar to the Composer Package Manager that is already familiar to most PHP developers. This new versioning system allows you to define specific minimum version requirements of dependent packages within Grav. This should ensure that we have less (hopefully none!) issues when you update one package that also requires a specific minimum version of another package. The admin plugin for example may have an update that requires a specific version of Grav itself.\n * **GPM Testing Channel**: GPM repository now comes with both a `stable` and `testing` channel. A new setting in `system.gpm.releases` allow to switch between the two channels. Developers will be able to decide whether their resource is going to be in a pre-release state or stable. Only users who switch to the **testing** channel will be able to install a pre-release version.\n * **GPM Events**: Packages (plugins and themes) can now add event handlers to hook in the package GPM events: install, update, uninstall. A package can listen for events before and after each of these events, and can execute any PHP code, and optionally halt the procedure or return a message.\n * Refactor of the process chain breaking out `Processors` into individual classes to allow for easier modification and addition. Thanks to toovy for this work. - [#745](https:\/\/github.com\/getgrav\/grav\/pull\/745)\n * Added multipart downloads, resumable downloads, download throttling, and video streaming in the `Utils::download()` method.\n * Added optional config to allow Twig processing in page frontmatter - [#788](https:\/\/github.com\/getgrav\/grav\/pull\/788)\n * Added the ability to provide blueprints via a plugin (previously limited to Themes only).\n * Added Developer CLI Tools to easily create a new theme or plugin\n * Allow authentication for proxies - [#698](https:\/\/github.com\/getgrav\/grav\/pull\/698)\n * Allow to override the default Parsedown behavior - [#747](https:\/\/github.com\/getgrav\/grav\/pull\/747)\n * Added an option to allow to exclude external files from the pipeline, and to render the pipeline before\/after excluded files\n * Added the possibility to store translations of themes in separate files inside the `languages` folder\n * Added a method to the Uri class to return the base relative URL including the language prefix, or the base relative url if multilanguage is not enabled\n * Added a shortcut for pages.find() alias\n1. [](#improved)\n * Now supporting hostnames with localhost environments for better vhost support\/development\n * Refactor hard-coded paths to use PHP Streams that allow a setup file to configure where certain parts of Grav are stored in the physical filesystem.\n * If multilanguage is active, include the Intl Twig Extension to allow translating dates automatically (http:\/\/twig.sensiolabs.org\/doc\/extensions\/intl.html)\n * Allow having local themes with the same name as GPM themes, by adding `gpm: false` to the theme blueprint - [#767](https:\/\/github.com\/getgrav\/grav\/pull\/767)\n * Caddyfile and Lighttpd config files updated\n * Removed `node_modules` folder from backups to make them faster\n * Display error when `bin\/grav install` hasn't been run instead of throwing exception. Prevents \"white page\" errors if error display is off\n * Improved command line flow when installing multiple packages: don't reinstall packages if already installed, ask once if should use symlinks if symlinks are found\n * Added more tests to our testing suite\n * Added x-ua-compatible to http_equiv metadata processing\n * Added ability to have a per-page `frontmatter.yaml` file to set header frontmatter defaults. Especially useful for multilang scenarios - [#775](https:\/\/github.com\/getgrav\/grav\/pull\/775)\n * Removed deprecated `bin\/grav newuser` CLI command. use `bin\/plugin login newuser` instead.\n * Added `webm` and `ogv` video types to the default media types list.\n1. [](#bugfix)\n * Fix Zend Opcache `opcache.validate_timestamps=0` not detecting changes in compiled yaml and twig files\n * Avoid losing params, query and fragment from the URL when auto-redirecting to a language-specific route - [#759](https:\/\/github.com\/getgrav\/grav\/pull\/759)\n * Fix for non-pipeline assets getting lost when pipeline is cached to filesystem\n * Fix for double encoding resulting from Markdown Extra\n * Fix for a remote link breaking all CSS rewrites for pipeline\n * Fix an issue with Retina alternatives not clearing properly between repeat uses\n * Fix for non standard http\/s external markdown links - [#738](https:\/\/github.com\/getgrav\/grav\/issues\/738)\n * Fix for `find()` calling redirects via `dispatch()` causing infinite loops - [#781](https:\/\/github.com\/getgrav\/grav\/issues\/781)","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li><strong>Blueprint Improvements<\/strong>: The main improvements to Grav take the form of a major rewrite of our blueprint functionality. Blueprints are an essential piece of functionality within Grav that helps define configuration fields. These allow us to create a definition of a form field that can be rendered in the administrator plugin and allow the input, validation, and storage of values into the various configuration and page files that power Grav. Grav 1.0 had extensive support for building and extending blueprints, but Grav 1.1 takes this even further and adds improvements to our existing system.<\/li>\n<li><strong>Extending Blueprints<\/strong>: You could extend forms in Grav 1.0, but now you can use a newer <code>extends@:<\/code> default syntax rather than the previous <code>'@extends'<\/code> string that needed to be quoted in YAML. Also this new format allows for the defining of a <code>context<\/code> which lets you define where to look for the base blueprint. Another new feature is the ability to extend from multiple blueprints.<\/li>\n<li><strong>Embedding\/Importing Blueprints<\/strong>: One feature that has been requested is the ability to embed or import one blueprint into another blueprint. This allows you to share fields or sub-form between multiple forms. This is accomplished via the <code>import@<\/code> syntax.<\/li>\n<li><strong>Removing Existing Fields and Properties<\/strong>: Another new feature is the ability to remove completely existing fields or properties from an extended blueprint. This allows the user a lot more flexibility when creating custom forms by simply using the new <code>unset@: true<\/code> syntax. To remove a field property you would use <code>unset-<property>@: true<\/code> in your extended field definition, for example: <code>unset-options@: true<\/code>.<\/li>\n<li><strong>Replacing Existing Fields and Properties<\/strong>: Similar to removing, you can now replace an existing field or property with the <code>replace@: true<\/code> syntax for the whole field, and <code>replace-<property>@: true<\/code> for a specific property.<\/li>\n<li><strong>Field Ordering<\/strong>: Probably the most frequently requested blueprint functionality that we have added is the ability to change field ordering. Imagine that you want to extend the default page blueprint but add a new tab. Previously, this meant your tab would be added at the end of the form, but now you can define that you wish the new tab to be added right after the <code>content<\/code> tab. This works for any field too, so you can extend a blueprint and add your own custom fields anywhere you wish! This is accomplished by using the new <code>ordering@:<\/code> syntax with either an existing property name or an integer.<\/li>\n<li><strong>Configuration Properties<\/strong>: Another useful new feature is the ability to directly access Grav configuration in blueprints with <code>config-<property>@<\/code> syntax. For example you can set a default for a field via <code>config-default@: site.author.name<\/code> which will use the author.name value from the <code>site.yaml<\/code> file as the <code>default<\/code> value for this field.<\/li>\n<li><strong>Function Calls<\/strong>: The ability to call PHP functions for values has been improved in Grav 1.1 to be more powerful. You can use the <code>data-<property>@<\/code> syntax to call static methods to obtain values. For example: <code>data-default@: '\\Grav\\Plugin\\Admin::route'<\/code>. You can now even pass parameters to these methods.<\/li>\n<li><strong>Validation Rules<\/strong>: You can now define a custom blueprint-level validation rule and assign this rule to a form field.<\/li>\n<li><strong>Custom Form Field Types<\/strong>: This advanced new functionality allows you to create a custom field type via a new plugin event called getFormFieldTypes(). This allows you to provide extra functionality or instructions on how to handle the form form field.<\/li>\n<li><strong>GPM Versioning<\/strong>: A new feature that we have wanted to add to our GPM package management system is the ability to control dependencies by version. We have opted to use a syntax very similar to the Composer Package Manager that is already familiar to most PHP developers. This new versioning system allows you to define specific minimum version requirements of dependent packages within Grav. This should ensure that we have less (hopefully none!) issues when you update one package that also requires a specific minimum version of another package. The admin plugin for example may have an update that requires a specific version of Grav itself.<\/li>\n<li><strong>GPM Testing Channel<\/strong>: GPM repository now comes with both a <code>stable<\/code> and <code>testing<\/code> channel. A new setting in <code>system.gpm.releases<\/code> allow to switch between the two channels. Developers will be able to decide whether their resource is going to be in a pre-release state or stable. Only users who switch to the <strong>testing<\/strong> channel will be able to install a pre-release version.<\/li>\n<li><strong>GPM Events<\/strong>: Packages (plugins and themes) can now add event handlers to hook in the package GPM events: install, update, uninstall. A package can listen for events before and after each of these events, and can execute any PHP code, and optionally halt the procedure or return a message.<\/li>\n<li>Refactor of the process chain breaking out <code>Processors<\/code> into individual classes to allow for easier modification and addition. Thanks to toovy for this work. - <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/745\">#745<\/a><\/li>\n<li>Added multipart downloads, resumable downloads, download throttling, and video streaming in the <code>Utils::download()<\/code> method.<\/li>\n<li>Added optional config to allow Twig processing in page frontmatter - <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/788\">#788<\/a><\/li>\n<li>Added the ability to provide blueprints via a plugin (previously limited to Themes only).<\/li>\n<li>Added Developer CLI Tools to easily create a new theme or plugin<\/li>\n<li>Allow authentication for proxies - <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/698\">#698<\/a><\/li>\n<li>Allow to override the default Parsedown behavior - <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/747\">#747<\/a><\/li>\n<li>Added an option to allow to exclude external files from the pipeline, and to render the pipeline before\/after excluded files<\/li>\n<li>Added the possibility to store translations of themes in separate files inside the <code>languages<\/code> folder<\/li>\n<li>Added a method to the Uri class to return the base relative URL including the language prefix, or the base relative url if multilanguage is not enabled<\/li>\n<li>Added a shortcut for pages.find() alias<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Now supporting hostnames with localhost environments for better vhost support\/development<\/li>\n<li>Refactor hard-coded paths to use PHP Streams that allow a setup file to configure where certain parts of Grav are stored in the physical filesystem.<\/li>\n<li>If multilanguage is active, include the Intl Twig Extension to allow translating dates automatically (<a href=\"http:\/\/twig.sensiolabs.org\/doc\/extensions\/intl.html\">http:\/\/twig.sensiolabs.org\/doc\/extensions\/intl.html<\/a>)<\/li>\n<li>Allow having local themes with the same name as GPM themes, by adding <code>gpm: false<\/code> to the theme blueprint - <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/767\">#767<\/a><\/li>\n<li>Caddyfile and Lighttpd config files updated<\/li>\n<li>Removed <code>node_modules<\/code> folder from backups to make them faster<\/li>\n<li>Display error when <code>bin\/grav install<\/code> hasn't been run instead of throwing exception. Prevents "white page" errors if error display is off<\/li>\n<li>Improved command line flow when installing multiple packages: don't reinstall packages if already installed, ask once if should use symlinks if symlinks are found<\/li>\n<li>Added more tests to our testing suite<\/li>\n<li>Added x-ua-compatible to http_equiv metadata processing<\/li>\n<li>Added ability to have a per-page <code>frontmatter.yaml<\/code> file to set header frontmatter defaults. Especially useful for multilang scenarios - <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/775\">#775<\/a><\/li>\n<li>Removed deprecated <code>bin\/grav newuser<\/code> CLI command. use <code>bin\/plugin login newuser<\/code> instead.<\/li>\n<li>Added <code>webm<\/code> and <code>ogv<\/code> video types to the default media types list.<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix Zend Opcache <code>opcache.validate_timestamps=0<\/code> not detecting changes in compiled yaml and twig files<\/li>\n<li>Avoid losing params, query and fragment from the URL when auto-redirecting to a language-specific route - <a href=\"https:\/\/github.com\/getgrav\/grav\/pull\/759\">#759<\/a><\/li>\n<li>Fix for non-pipeline assets getting lost when pipeline is cached to filesystem<\/li>\n<li>Fix for double encoding resulting from Markdown Extra<\/li>\n<li>Fix for a remote link breaking all CSS rewrites for pipeline<\/li>\n<li>Fix an issue with Retina alternatives not clearing properly between repeat uses<\/li>\n<li>Fix for non standard http\/s external markdown links - <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/738\">#738<\/a><\/li>\n<li>Fix for <code>find()<\/code> calling redirects via <code>dispatch()<\/code> causing infinite loops - <a href=\"https:\/\/github.com\/getgrav\/grav\/issues\/781\">#781<\/a><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Blueprint Improvements: The main improvements to Grav take the form of a major rewrite of our blueprint functionality. Blueprints are an essential piece of functionality within Grav that helps define configuration fields. These allow us to create a definition of a form field that can be rendered in the administrator plugin and allow the input, validation, and storage of values into the various configuration and page files that power Grav. Grav 1.0 had extensive support for building and extending blueprints, but Grav 1.1 takes this even further and adds improvements to our existing system.\nExtending Blueprints: You could extend forms in Grav 1.0, but now you can use a newer extends@: default syntax rather than the previous '@extends' string that needed to be quoted in YAML. Also this new format allows for the defining of a context which lets you define where to look for the base blueprint. Another new feature is the ability to extend from multiple blueprints.\nEmbedding\/Importing Blueprints: One feature that has been requested is the ability to embed or import one blueprint into another blueprint. This allows you to share fields or sub-form between multiple forms. This is accomplished via the import@ syntax.\nRemoving Existing Fields and Properties: Another new feature is the ability to remove completely existing fields or properties from an extended blueprint. This allows the user a lot more flexibility when creating custom forms by simply using the new unset@: true syntax. To remove a field property you would use unset-<property>@: true in your extended field definition, for example: unset-options@: true.\nReplacing Existing Fields and Properties: Similar to removing, you can now replace an existing field or property with the replace@: true syntax for the whole field, and replace-<property>@: true for a specific property.\nField Ordering: Probably the most frequently requested blueprint functionality that we have added is the ability to change field ordering. Imagine that you want to extend the default page blueprint but add a new tab. Previously, this meant your tab would be added at the end of the form, but now you can define that you wish the new tab to be added right after the content tab. This works for any field too, so you can extend a blueprint and add your own custom fields anywhere you wish! This is accomplished by using the new ordering@: syntax with either an existing property name or an integer.\nConfiguration Properties: Another useful new feature is the ability to directly access Grav configuration in blueprints with config-<property>@ syntax. For example you can set a default for a field via config-default@: site.author.name which will use the author.name value from the site.yaml file as the default value for this field.\nFunction Calls: The ability to call PHP functions for values has been improved in Grav 1.1 to be more powerful. You can use the data-<property>@ syntax to call static methods to obtain values. For example: data-default@: '\\Grav\\Plugin\\Admin::route'. You can now even pass parameters to these methods.\nValidation Rules: You can now define a custom blueprint-level validation rule and assign this rule to a form field.\nCustom Form Field Types: This advanced new functionality allows you to create a custom field type via a new plugin event called getFormFieldTypes(). This allows you to provide extra functionality or instructions on how to handle the form form field.\nGPM Versioning: A new feature that we have wanted to add to our GPM package management system is the ability to control dependencies by version. We have opted to use a syntax very similar to the Composer Package Manager that is already familiar to most PHP developers. This new versioning system allows you to define specific minimum version requirements of dependent packages within Grav. This should ensure that we have less (hopefully none!) issues when you update one package that also requires a specific minimum version of another package. The admin plugin for example may have an update that requires a specific version of Grav itself.\nGPM Testing Channel: GPM repository now comes with both a stable and testing channel. A new setting in system.gpm.releases allow to switch between the two channels. Developers will be able to decide whether their resource is going to be in a pre-release state or stable. Only users who switch to the testing channel will be able to install a pre-release version.\nGPM Events: Packages (plugins and themes) can now add event handlers to hook in the package GPM events: install, update, uninstall. A package can listen for events before and after each of these events, and can execute any PHP code, and optionally halt the procedure or return a message.\nRefactor of the process chain breaking out Processors into individual classes to allow for easier modification and addition. Thanks to toovy for this work. - #745\nAdded multipart downloads, resumable downloads, download throttling, and video streaming in the Utils::download() method.\nAdded optional config to allow Twig processing in page frontmatter - #788\nAdded the ability to provide blueprints via a plugin (previously limited to Themes only).\nAdded Developer CLI Tools to easily create a new theme or plugin\nAllow authentication for proxies - #698\nAllow to override the default Parsedown behavior - #747\nAdded an option to allow to exclude external files from the pipeline, and to render the pipeline before\/after excluded files\nAdded the possibility to store translations of themes in separate files inside the languages folder\nAdded a method to the Uri class to return the base relative URL including the language prefix, or the base relative url if multilanguage is not enabled\nAdded a shortcut for pages.find() alias\n\n\n\nNow supporting hostnames with localhost environments for better vhost support\/development\nRefactor hard-coded paths to use PHP Streams that allow a setup file to configure where certain parts of Grav are stored in the physical filesystem.\nIf multilanguage is active, include the Intl Twig Extension to allow translating dates automatically (http:\/\/twig.sensiolabs.org\/doc\/extensions\/intl.html)\nAllow having local themes with the same name as GPM themes, by adding gpm: false to the theme blueprint - #767\nCaddyfile and Lighttpd config files updated\nRemoved node_modules folder from backups to make them faster\nDisplay error when bin\/grav install hasn't been run instead of throwing exception. Prevents "white page" errors if error display is off\nImproved command line flow when installing multiple packages: don't reinstall packages if already installed, ask once if should use symlinks if symlinks are found\nAdded more tests to our testing suite\nAdded x-ua-compatible to http_equiv metadata processing\nAdded ability to have a per-page frontmatter.yaml file to set header frontmatter defaults. Especially useful for multilang scenarios - #775\nRemoved deprecated bin\/grav newuser CLI command. use bin\/plugin login newuser instead.\nAdded webm and ogv video types to the default media types list.\n\n\n\nFix Zend Opcache opcache.validate_timestamps=0 not detecting changes in compiled yaml and twig files\nAvoid losing params, query and fragment from the URL when auto-redirecting to a language-specific route - #759\nFix for non-pipeline assets getting lost when pipeline is cached to filesystem\nFix for double encoding resulting from Markdown Extra\nFix for a remote link breaking all CSS rewrites for pipeline\nFix an issue with Retina alternatives not clearing properly between repeat uses\nFix for non standard http\/s external markdown links - #738\nFix for find() calling redirects via dispatch() causing infinite loops - #781"},"1.0.10":{"date":"02\/11\/2016","content":"1. [](#new)\n * Added new `Page::contentMeta()` mechanism to store content-level meta data alongside content\n * Added Japanese language translation\n1. [](#improved)\n * Updated some vendor libraries\n1. [](#bugfix)\n * Hide `streams` blueprint from Admin plugin\n * Fix translations of languages with `---` in YAML files","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>Page::contentMeta()<\/code> mechanism to store content-level meta data alongside content<\/li>\n<li>Added Japanese language translation<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Updated some vendor libraries<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Hide <code>streams<\/code> blueprint from Admin plugin<\/li>\n<li>Fix translations of languages with <code>---<\/code> in YAML files<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new Page::contentMeta() mechanism to store content-level meta data alongside content\nAdded Japanese language translation\n\n\n\nUpdated some vendor libraries\n\n\n\nHide streams blueprint from Admin plugin\nFix translations of languages with --- in YAML files"},"1.0.9":{"date":"02\/05\/2016","content":"1. [](#new)\n * New **Unit Testing** via Codeception http:\/\/codeception.com\/\n * New **page-level SSL** functionality when using `absolute_urls`\n * Added `reverse_proxy` config option for issues with non-standard ports\n * Added `proxy_url` config option to support GPM behind proxy servers #639\n * New `Pages::parentsRawRoutes()` method\n * Enhanced `bin\/gpm info` CLI command with Changelog support #559\n * Ability to add empty *Folder* via admin plugin\n * Added latest `jQuery 2.2.0` library to core\n * Added translations from Crowdin\n1. [](#improved)\n * [BC] Metadata now supports only flat arrays. To use open graph metas and the likes (ie, 'og:title'), simply specify it in the key.\n * Refactored `Uri::convertUrl()` method to be more reliable + tests created\n * Date for last update of a modular sub-page sets modified date of modular page itself\n * Split configuration up into two steps\n * Moved Grav-based `base_uri` variables into `Uri::init()`\n * Refactored init in `URI` to better support testing\n * Allow `twig_vars` to be exposed earlier and merged later\n * Avoid setting empty metadata\n * Accept single group access as a string rather than requiring an array\n * Return `$this` in Page constructor and init to allow chaining\n * Added `ext-*` PHP requirements to `composer.json`\n * Use Whoops 2.0 library while supporting old style\n * Removed redundant old default-hash fallback mechanisms\n * Commented out default redirects and routes in `site.yaml`\n * Added `\/tests` folder to deny's of all `webserver-configs\/*` files\n * Various PS and code style fixes\n1. [](#bugfix)\n * Fix default generator metadata\n * Fix for broken image processing caused by `Uri::convertUrl()` bugs\n * Fix loading JS and CSS from collections #623\n * Fix stream overriding\n * Remove the URL extension for home link\n * Fix permissions when the user has no access level set at all\n * Fix issue with user with multiple groups getting denied on first group\n * Fixed an issue with `Pages()` internal cache lookup not being unique enough\n * Fix for bug with `site.redirects` and `site.routes` being an empty list\n * [Markdown] Don't process links for **special protocols**\n * [Whoops] serve JSON errors when request is JSON","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>New <strong>Unit Testing<\/strong> via Codeception <a href=\"http:\/\/codeception.com\/\">http:\/\/codeception.com\/<\/a><\/li>\n<li>New <strong>page-level SSL<\/strong> functionality when using <code>absolute_urls<\/code><\/li>\n<li>Added <code>reverse_proxy<\/code> config option for issues with non-standard ports<\/li>\n<li>Added <code>proxy_url<\/code> config option to support GPM behind proxy servers #639<\/li>\n<li>New <code>Pages::parentsRawRoutes()<\/code> method<\/li>\n<li>Enhanced <code>bin\/gpm info<\/code> CLI command with Changelog support #559<\/li>\n<li>Ability to add empty <em>Folder<\/em> via admin plugin<\/li>\n<li>Added latest <code>jQuery 2.2.0<\/code> library to core<\/li>\n<li>Added translations from Crowdin<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>[BC] Metadata now supports only flat arrays. To use open graph metas and the likes (ie, 'og:title'), simply specify it in the key.<\/li>\n<li>Refactored <code>Uri::convertUrl()<\/code> method to be more reliable + tests created<\/li>\n<li>Date for last update of a modular sub-page sets modified date of modular page itself<\/li>\n<li>Split configuration up into two steps<\/li>\n<li>Moved Grav-based <code>base_uri<\/code> variables into <code>Uri::init()<\/code><\/li>\n<li>Refactored init in <code>URI<\/code> to better support testing<\/li>\n<li>Allow <code>twig_vars<\/code> to be exposed earlier and merged later<\/li>\n<li>Avoid setting empty metadata<\/li>\n<li>Accept single group access as a string rather than requiring an array<\/li>\n<li>Return <code>$this<\/code> in Page constructor and init to allow chaining<\/li>\n<li>Added <code>ext-*<\/code> PHP requirements to <code>composer.json<\/code><\/li>\n<li>Use Whoops 2.0 library while supporting old style<\/li>\n<li>Removed redundant old default-hash fallback mechanisms<\/li>\n<li>Commented out default redirects and routes in <code>site.yaml<\/code><\/li>\n<li>Added <code>\/tests<\/code> folder to deny's of all <code>webserver-configs\/*<\/code> files<\/li>\n<li>Various PS and code style fixes<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix default generator metadata<\/li>\n<li>Fix for broken image processing caused by <code>Uri::convertUrl()<\/code> bugs<\/li>\n<li>Fix loading JS and CSS from collections #623<\/li>\n<li>Fix stream overriding<\/li>\n<li>Remove the URL extension for home link<\/li>\n<li>Fix permissions when the user has no access level set at all<\/li>\n<li>Fix issue with user with multiple groups getting denied on first group<\/li>\n<li>Fixed an issue with <code>Pages()<\/code> internal cache lookup not being unique enough<\/li>\n<li>Fix for bug with <code>site.redirects<\/code> and <code>site.routes<\/code> being an empty list<\/li>\n<li>[Markdown] Don't process links for <strong>special protocols<\/strong><\/li>\n<li>[Whoops] serve JSON errors when request is JSON<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"New Unit Testing via Codeception http:\/\/codeception.com\/\nNew page-level SSL functionality when using absolute_urls\nAdded reverse_proxy config option for issues with non-standard ports\nAdded proxy_url config option to support GPM behind proxy servers #639\nNew Pages::parentsRawRoutes() method\nEnhanced bin\/gpm info CLI command with Changelog support #559\nAbility to add empty Folder via admin plugin\nAdded latest jQuery 2.2.0 library to core\nAdded translations from Crowdin\n\n\n\n[BC] Metadata now supports only flat arrays. To use open graph metas and the likes (ie, 'og:title'), simply specify it in the key.\nRefactored Uri::convertUrl() method to be more reliable + tests created\nDate for last update of a modular sub-page sets modified date of modular page itself\nSplit configuration up into two steps\nMoved Grav-based base_uri variables into Uri::init()\nRefactored init in URI to better support testing\nAllow twig_vars to be exposed earlier and merged later\nAvoid setting empty metadata\nAccept single group access as a string rather than requiring an array\nReturn $this in Page constructor and init to allow chaining\nAdded ext-* PHP requirements to composer.json\nUse Whoops 2.0 library while supporting old style\nRemoved redundant old default-hash fallback mechanisms\nCommented out default redirects and routes in site.yaml\nAdded \/tests folder to deny's of all webserver-configs\/* files\nVarious PS and code style fixes\n\n\n\nFix default generator metadata\nFix for broken image processing caused by Uri::convertUrl() bugs\nFix loading JS and CSS from collections #623\nFix stream overriding\nRemove the URL extension for home link\nFix permissions when the user has no access level set at all\nFix issue with user with multiple groups getting denied on first group\nFixed an issue with Pages() internal cache lookup not being unique enough\nFix for bug with site.redirects and site.routes being an empty list\n[Markdown] Don't process links for special protocols\n[Whoops] serve JSON errors when request is JSON"},"1.0.8":{"date":"01\/08\/2016","content":"1. [](#new)\n * Added `rotate`, `flip` and `fixOrientation` image medium methods\n1. [](#bugfix)\n * Removed IP from Nonce generation. Should be more reliable in a variety of scenarios","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <code>rotate<\/code>, <code>flip<\/code> and <code>fixOrientation<\/code> image medium methods<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Removed IP from Nonce generation. Should be more reliable in a variety of scenarios<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added rotate, flip and fixOrientation image medium methods\n\n\n\nRemoved IP from Nonce generation. Should be more reliable in a variety of scenarios"},"1.0.7":{"date":"01\/07\/2016","content":"1. [](#new)\n * Added `composer create-project` as an additional installation method #585\n * New optional system config setting to strip home from page routs and urls #561\n * Added Greek, Finnish, Norwegian, Polish, Portuguese, and Romanian languages\n * Added new `Page->topParent()` method to return top most parent of a page\n * Added plugins configuration tab to debugger\n * Added support for APCu and PHP7.0 via new Doctrine Cache release\n * Added global setting for `twig_first` processing (false by default)\n * New configuration options for Session settings #553\n1. [](#improved)\n * Switched to SSL for GPM calls\n * Use `URI->host()` for session domain\n * Add support for `open_basedir` when installing packages via GPM\n * Improved `Utils::generateNonceString()` method to handle reverse proxies\n * Optimized core thumbnails saving 38% in file size\n * Added new `bin\/gpm index --installed-only` option\n * Improved GPM errors to provider more helpful diagnostic of issues\n * Removed old hardcoded PHP version references\n * Moved `onPageContentProcessed()` event so it's fired more reliably\n * Maintain md5 keys during sorting of Assets #566\n * Update to Caddyfile for Caddy web server\n1. [](#bugfix)\n * Fixed an issue with cache\/config checksum not being set on cache load\n * Fix for page blueprint and theme inheritance issue #534\n * Set `ZipBackup` timeout to 10 minutes if possible\n * Fix case where we only have inline data for CSS or JS #565\n * Fix `bin\/grav sandbox` command to work with new `webserver-config` folder\n * Fix for markdown attributes on external URLs\n * Fixed issue where `data:` page header was acting as `publish_date:`\n * Fix for special characters in URL parameters (e.g. \/tag:c++) #541\n * Safety check for an array of nonces to only use the first one","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <code>composer create-project<\/code> as an additional installation method #585<\/li>\n<li>New optional system config setting to strip home from page routs and urls #561<\/li>\n<li>Added Greek, Finnish, Norwegian, Polish, Portuguese, and Romanian languages<\/li>\n<li>Added new <code>Page->topParent()<\/code> method to return top most parent of a page<\/li>\n<li>Added plugins configuration tab to debugger<\/li>\n<li>Added support for APCu and PHP7.0 via new Doctrine Cache release<\/li>\n<li>Added global setting for <code>twig_first<\/code> processing (false by default)<\/li>\n<li>New configuration options for Session settings #553<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Switched to SSL for GPM calls<\/li>\n<li>Use <code>URI->host()<\/code> for session domain<\/li>\n<li>Add support for <code>open_basedir<\/code> when installing packages via GPM<\/li>\n<li>Improved <code>Utils::generateNonceString()<\/code> method to handle reverse proxies<\/li>\n<li>Optimized core thumbnails saving 38% in file size<\/li>\n<li>Added new <code>bin\/gpm index --installed-only<\/code> option<\/li>\n<li>Improved GPM errors to provider more helpful diagnostic of issues<\/li>\n<li>Removed old hardcoded PHP version references<\/li>\n<li>Moved <code>onPageContentProcessed()<\/code> event so it's fired more reliably<\/li>\n<li>Maintain md5 keys during sorting of Assets #566<\/li>\n<li>Update to Caddyfile for Caddy web server<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed an issue with cache\/config checksum not being set on cache load<\/li>\n<li>Fix for page blueprint and theme inheritance issue #534<\/li>\n<li>Set <code>ZipBackup<\/code> timeout to 10 minutes if possible<\/li>\n<li>Fix case where we only have inline data for CSS or JS #565<\/li>\n<li>Fix <code>bin\/grav sandbox<\/code> command to work with new <code>webserver-config<\/code> folder<\/li>\n<li>Fix for markdown attributes on external URLs<\/li>\n<li>Fixed issue where <code>data:<\/code> page header was acting as <code>publish_date:<\/code><\/li>\n<li>Fix for special characters in URL parameters (e.g. \/tag:c++) #541<\/li>\n<li>Safety check for an array of nonces to only use the first one<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added composer create-project as an additional installation method #585\nNew optional system config setting to strip home from page routs and urls #561\nAdded Greek, Finnish, Norwegian, Polish, Portuguese, and Romanian languages\nAdded new Page->topParent() method to return top most parent of a page\nAdded plugins configuration tab to debugger\nAdded support for APCu and PHP7.0 via new Doctrine Cache release\nAdded global setting for twig_first processing (false by default)\nNew configuration options for Session settings #553\n\n\n\nSwitched to SSL for GPM calls\nUse URI->host() for session domain\nAdd support for open_basedir when installing packages via GPM\nImproved Utils::generateNonceString() method to handle reverse proxies\nOptimized core thumbnails saving 38% in file size\nAdded new bin\/gpm index --installed-only option\nImproved GPM errors to provider more helpful diagnostic of issues\nRemoved old hardcoded PHP version references\nMoved onPageContentProcessed() event so it's fired more reliably\nMaintain md5 keys during sorting of Assets #566\nUpdate to Caddyfile for Caddy web server\n\n\n\nFixed an issue with cache\/config checksum not being set on cache load\nFix for page blueprint and theme inheritance issue #534\nSet ZipBackup timeout to 10 minutes if possible\nFix case where we only have inline data for CSS or JS #565\nFix bin\/grav sandbox command to work with new webserver-config folder\nFix for markdown attributes on external URLs\nFixed issue where data: page header was acting as publish_date:\nFix for special characters in URL parameters (e.g. \/tag:c++) #541\nSafety check for an array of nonces to only use the first one"},"1.0.6":{"date":"12\/22\/2015","content":"1. [](#new)\n * Set minimum requirements to [PHP 5.5.9](http:\/\/bit.ly\/1Jt9OXO)\n * Added `saveConfig` to Themes\n1. [](#improved)\n * Updated Whoops to new 2.0 version (PHP 7.0 compatible)\n * Moved sample web server configs into dedicated directory\n * FastCGI will use Apache's `mod_deflate` if gzip turned off\n1. [](#bugfix)\n * Fix broken media image operators\n * Only call extra method of blueprints if blueprints exist\n * Fix lang prefix in url twig variables #523\n * Fix case insensitive HTTPS check #535\n * Field field validation handles case `multiple` missing","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Set minimum requirements to <a href=\"http:\/\/bit.ly\/1Jt9OXO\">PHP 5.5.9<\/a><\/li>\n<li>Added <code>saveConfig<\/code> to Themes<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Updated Whoops to new 2.0 version (PHP 7.0 compatible)<\/li>\n<li>Moved sample web server configs into dedicated directory<\/li>\n<li>FastCGI will use Apache's <code>mod_deflate<\/code> if gzip turned off<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix broken media image operators<\/li>\n<li>Only call extra method of blueprints if blueprints exist<\/li>\n<li>Fix lang prefix in url twig variables #523<\/li>\n<li>Fix case insensitive HTTPS check #535<\/li>\n<li>Field field validation handles case <code>multiple<\/code> missing<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Set minimum requirements to PHP 5.5.9\nAdded saveConfig to Themes\n\n\n\nUpdated Whoops to new 2.0 version (PHP 7.0 compatible)\nMoved sample web server configs into dedicated directory\nFastCGI will use Apache's mod_deflate if gzip turned off\n\n\n\nFix broken media image operators\nOnly call extra method of blueprints if blueprints exist\nFix lang prefix in url twig variables #523\nFix case insensitive HTTPS check #535\nField field validation handles case multiple missing"},"1.0.5":{"date":"12\/18\/2015","content":"1. [](#new)\n * Add ability to extend markdown with plugins\n * Added support for plugins to have individual language files\n * Added `7z` to media formats\n * Use Grav's fork of Parsedown until PR is merged\n * New function to persist plugin configuration to disk\n * GPM `selfupgrade` will now check PHP version requirements\n1. [](#improved)\n * If the field allows multiple files, return array\n * Handle non-array values in file validation\n1. [](#bugfix)\n * Fix when looping `fields` param in a `list` field\n * Properly convert commas to spaces for media attributes\n * Forcing Travis VM to HI timezone to address future files in zip file","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Add ability to extend markdown with plugins<\/li>\n<li>Added support for plugins to have individual language files<\/li>\n<li>Added <code>7z<\/code> to media formats<\/li>\n<li>Use Grav's fork of Parsedown until PR is merged<\/li>\n<li>New function to persist plugin configuration to disk<\/li>\n<li>GPM <code>selfupgrade<\/code> will now check PHP version requirements<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>If the field allows multiple files, return array<\/li>\n<li>Handle non-array values in file validation<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix when looping <code>fields<\/code> param in a <code>list<\/code> field<\/li>\n<li>Properly convert commas to spaces for media attributes<\/li>\n<li>Forcing Travis VM to HI timezone to address future files in zip file<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Add ability to extend markdown with plugins\nAdded support for plugins to have individual language files\nAdded 7z to media formats\nUse Grav's fork of Parsedown until PR is merged\nNew function to persist plugin configuration to disk\nGPM selfupgrade will now check PHP version requirements\n\n\n\nIf the field allows multiple files, return array\nHandle non-array values in file validation\n\n\n\nFix when looping fields param in a list field\nProperly convert commas to spaces for media attributes\nForcing Travis VM to HI timezone to address future files in zip file"},"1.0.4":{"date":"12\/12\/2015","content":"1. [](#bugfix)\n * Needed to put default image folder permissions for YAML compatibility","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Needed to put default image folder permissions for YAML compatibility<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Needed to put default image folder permissions for YAML compatibility"},"1.0.3":{"date":"12\/11\/2015","content":"1. [](#bugfix)\n * Fixed issue when saving config causing incorrect image cache folder perms","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue when saving config causing incorrect image cache folder perms<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed issue when saving config causing incorrect image cache folder perms"},"1.0.2":{"date":"12\/11\/2015","content":"1. [](#bugfix)\n * Fix for timing display in debugbar","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for timing display in debugbar<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fix for timing display in debugbar"},"1.0.1":{"date":"12\/11\/2015","content":"1. [](#improved)\n * Reduced package sizes by removing extra vendor dev bits\n1. [](#bugfix)\n * Fix issue when you enable debugger from admin plugin","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Reduced package sizes by removing extra vendor dev bits<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix issue when you enable debugger from admin plugin<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Reduced package sizes by removing extra vendor dev bits\n\n\n\nFix issue when you enable debugger from admin plugin"},"1.0.0":{"date":"12\/11\/2015","content":"1. [](#new)\n * Add new link attributes via markdown media\n * Added setters to set state of CSS\/JS pipelining\n * Added `user\/accounts` to `.gitignore`\n * Added configurable permissions option for Image cache\n1. [](#improved)\n * Hungarian translation updated\n * Refactored Theme initialization for improved flexibility\n * Wrapped security section of account blueprints in an 'super user' authorize check\n * Minor performance optimizations\n * Updated core page blueprints with markdown preview option\n * Added useful cache info output to Debugbar\n * Added `iconv` polyfill library used by Symfony 2.8\n * Force lowercase of username in a few places for case sensitive filesystems\n1. [](#bugfix)\n * Fix for GPM problems \"Call to a member function set() on null\"\n * Fix for individual asset pipeline values not functioning\n * Fix `Page::copy()` and `Page::move()` to support multiple moves at once\n * Fixed page moving of a page with no content\n * Fix for wrong ordering when moving many pages\n * Escape root path in page medium files to work with special characters\n * Add missing parent constructor to Themes class\n * Fix missing file error in `bin\/grav sandbox` command\n * Fixed changelog differ when upgrading Grav\n * Fixed a logic error in `Validation->validate()`\n * Make `$container` available in `setup.php` to fix multi-site","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Add new link attributes via markdown media<\/li>\n<li>Added setters to set state of CSS\/JS pipelining<\/li>\n<li>Added <code>user\/accounts<\/code> to <code>.gitignore<\/code><\/li>\n<li>Added configurable permissions option for Image cache<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Hungarian translation updated<\/li>\n<li>Refactored Theme initialization for improved flexibility<\/li>\n<li>Wrapped security section of account blueprints in an 'super user' authorize check<\/li>\n<li>Minor performance optimizations<\/li>\n<li>Updated core page blueprints with markdown preview option<\/li>\n<li>Added useful cache info output to Debugbar<\/li>\n<li>Added <code>iconv<\/code> polyfill library used by Symfony 2.8<\/li>\n<li>Force lowercase of username in a few places for case sensitive filesystems<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for GPM problems "Call to a member function set() on null"<\/li>\n<li>Fix for individual asset pipeline values not functioning<\/li>\n<li>Fix <code>Page::copy()<\/code> and <code>Page::move()<\/code> to support multiple moves at once<\/li>\n<li>Fixed page moving of a page with no content<\/li>\n<li>Fix for wrong ordering when moving many pages<\/li>\n<li>Escape root path in page medium files to work with special characters<\/li>\n<li>Add missing parent constructor to Themes class<\/li>\n<li>Fix missing file error in <code>bin\/grav sandbox<\/code> command<\/li>\n<li>Fixed changelog differ when upgrading Grav<\/li>\n<li>Fixed a logic error in <code>Validation->validate()<\/code><\/li>\n<li>Make <code>$container<\/code> available in <code>setup.php<\/code> to fix multi-site<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Add new link attributes via markdown media\nAdded setters to set state of CSS\/JS pipelining\nAdded user\/accounts to .gitignore\nAdded configurable permissions option for Image cache\n\n\n\nHungarian translation updated\nRefactored Theme initialization for improved flexibility\nWrapped security section of account blueprints in an 'super user' authorize check\nMinor performance optimizations\nUpdated core page blueprints with markdown preview option\nAdded useful cache info output to Debugbar\nAdded iconv polyfill library used by Symfony 2.8\nForce lowercase of username in a few places for case sensitive filesystems\n\n\n\nFix for GPM problems "Call to a member function set() on null"\nFix for individual asset pipeline values not functioning\nFix Page::copy() and Page::move() to support multiple moves at once\nFixed page moving of a page with no content\nFix for wrong ordering when moving many pages\nEscape root path in page medium files to work with special characters\nAdd missing parent constructor to Themes class\nFix missing file error in bin\/grav sandbox command\nFixed changelog differ when upgrading Grav\nFixed a logic error in Validation->validate()\nMake $container available in setup.php to fix multi-site"},"1.0.0-rc.6":{"date":"12\/01\/2015","content":"1. [](#new)\n * Refactor Config classes for improved performance!\n * Refactor Data classes to use `NestedArrayAccess` instead of `DataMutatorTrait`\n * Added support for `classes` and `id` on medium objects to set CSS values\n * Data objects: Allow function call chaining\n * Data objects: Lazy load blueprints only if needed\n * Automatically create unique security salt for each configuration\n * Added Hungarian translation\n * Added support for User groups\n1. [](#improved)\n * Improved robots.txt to disallow crawling of non-user folders\n * Nonces only generated once per action and process\n * Added IP into Nonce string calculation\n * Nonces now use random string with random salt to improve performance\n * Improved list form handling #475\n * Vendor library updates\n1. [](#bugfix)\n * Fixed help output for `bin\/plugin`\n * Fix for nested logic for lists and form parsing #273\n * Fix for array form fields and last entry not getting deleted\n * Should not be able to set parent to self #308","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Refactor Config classes for improved performance!<\/li>\n<li>Refactor Data classes to use <code>NestedArrayAccess<\/code> instead of <code>DataMutatorTrait<\/code><\/li>\n<li>Added support for <code>classes<\/code> and <code>id<\/code> on medium objects to set CSS values<\/li>\n<li>Data objects: Allow function call chaining<\/li>\n<li>Data objects: Lazy load blueprints only if needed<\/li>\n<li>Automatically create unique security salt for each configuration<\/li>\n<li>Added Hungarian translation<\/li>\n<li>Added support for User groups<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved robots.txt to disallow crawling of non-user folders<\/li>\n<li>Nonces only generated once per action and process<\/li>\n<li>Added IP into Nonce string calculation<\/li>\n<li>Nonces now use random string with random salt to improve performance<\/li>\n<li>Improved list form handling #475<\/li>\n<li>Vendor library updates<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed help output for <code>bin\/plugin<\/code><\/li>\n<li>Fix for nested logic for lists and form parsing #273<\/li>\n<li>Fix for array form fields and last entry not getting deleted<\/li>\n<li>Should not be able to set parent to self #308<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Refactor Config classes for improved performance!\nRefactor Data classes to use NestedArrayAccess instead of DataMutatorTrait\nAdded support for classes and id on medium objects to set CSS values\nData objects: Allow function call chaining\nData objects: Lazy load blueprints only if needed\nAutomatically create unique security salt for each configuration\nAdded Hungarian translation\nAdded support for User groups\n\n\n\nImproved robots.txt to disallow crawling of non-user folders\nNonces only generated once per action and process\nAdded IP into Nonce string calculation\nNonces now use random string with random salt to improve performance\nImproved list form handling #475\nVendor library updates\n\n\n\nFixed help output for bin\/plugin\nFix for nested logic for lists and form parsing #273\nFix for array form fields and last entry not getting deleted\nShould not be able to set parent to self #308"},"1.0.0-rc.5":{"date":"11\/20\/2015","content":"1. [](#new)\n * Added **nonce** functionality for all admin forms for improved security\n * Implemented the ability for Plugins to provide their own CLI commands through `bin\/plugin`\n * Added Croatian translation\n * Added missing `umask_fix` property to `system.yaml`\n * Added current theme's config to global config. E.g. `config.theme.dropdown_enabled`\n * Added `append_url_extension` option to system config & page headers\n * Users have a new `state` property to allow disabling\/banning\n * Added new `Page.relativePagePath()` helper method\n * Added new `|pad` Twig filter for strings (uses `str_pad()`)\n * Added `lighttpd.conf` for Lightly web server\n1. [](#improved)\n * Clear previously applied operations when doing a reset on image media\n * Password no longer required when editing user\n * Improved support for trailing `\/` URLs\n * Improved `.nginx.conf` configuration file\n * Improved `.htaccess` security\n * Updated vendor libs\n * Updated `composer.phar`\n * Use streams instead of paths for `clearCache()`\n * Use PCRE_UTF8 so unicode strings can be regexed in Truncator\n * Handle case when login plugin is disabled\n * Improved `quality` functionality in media handling\n * Added some missing translation strings\n * Deprecated `bin\/grav newuser` in favor of `bin\/plugin login new-user`\n * Moved fallback types to use any valid media type\n * Renamed `system.pages.fallback_types` to `system.media.allowed_fallback_types`\n * Removed version number in default `generator` meta tag\n * Disable time limit in case of slow downloads\n * Removed default hash in `system.yaml`\n1. [](#bugfix)\n * Fix for media using absolute URLs causing broken links\n * Fix theme auto-loading #432\n * Don't create empty `<style>` or `<script>` scripts if no data\n * Code cleanups\n * Fix undefined variable in Config class\n * Fix exception message when label is not set\n * Check in `Plugins::get()` to ensure plugins exists\n * Fixed GZip compression making output buffering work correctly with all servers and browsers\n * Fixed date representation in system config","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <strong>nonce<\/strong> functionality for all admin forms for improved security<\/li>\n<li>Implemented the ability for Plugins to provide their own CLI commands through <code>bin\/plugin<\/code><\/li>\n<li>Added Croatian translation<\/li>\n<li>Added missing <code>umask_fix<\/code> property to <code>system.yaml<\/code><\/li>\n<li>Added current theme's config to global config. E.g. <code>config.theme.dropdown_enabled<\/code><\/li>\n<li>Added <code>append_url_extension<\/code> option to system config & page headers<\/li>\n<li>Users have a new <code>state<\/code> property to allow disabling\/banning<\/li>\n<li>Added new <code>Page.relativePagePath()<\/code> helper method<\/li>\n<li>Added new <code>|pad<\/code> Twig filter for strings (uses <code>str_pad()<\/code>)<\/li>\n<li>Added <code>lighttpd.conf<\/code> for Lightly web server<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Clear previously applied operations when doing a reset on image media<\/li>\n<li>Password no longer required when editing user<\/li>\n<li>Improved support for trailing <code>\/<\/code> URLs<\/li>\n<li>Improved <code>.nginx.conf<\/code> configuration file<\/li>\n<li>Improved <code>.htaccess<\/code> security<\/li>\n<li>Updated vendor libs<\/li>\n<li>Updated <code>composer.phar<\/code><\/li>\n<li>Use streams instead of paths for <code>clearCache()<\/code><\/li>\n<li>Use PCRE_UTF8 so unicode strings can be regexed in Truncator<\/li>\n<li>Handle case when login plugin is disabled<\/li>\n<li>Improved <code>quality<\/code> functionality in media handling<\/li>\n<li>Added some missing translation strings<\/li>\n<li>Deprecated <code>bin\/grav newuser<\/code> in favor of <code>bin\/plugin login new-user<\/code><\/li>\n<li>Moved fallback types to use any valid media type<\/li>\n<li>Renamed <code>system.pages.fallback_types<\/code> to <code>system.media.allowed_fallback_types<\/code><\/li>\n<li>Removed version number in default <code>generator<\/code> meta tag<\/li>\n<li>Disable time limit in case of slow downloads<\/li>\n<li>Removed default hash in <code>system.yaml<\/code><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for media using absolute URLs causing broken links<\/li>\n<li>Fix theme auto-loading #432<\/li>\n<li>Don't create empty <code><style><\/code> or <code><script><\/code> scripts if no data<\/li>\n<li>Code cleanups<\/li>\n<li>Fix undefined variable in Config class<\/li>\n<li>Fix exception message when label is not set<\/li>\n<li>Check in <code>Plugins::get()<\/code> to ensure plugins exists<\/li>\n<li>Fixed GZip compression making output buffering work correctly with all servers and browsers<\/li>\n<li>Fixed date representation in system config<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added nonce functionality for all admin forms for improved security\nImplemented the ability for Plugins to provide their own CLI commands through bin\/plugin\nAdded Croatian translation\nAdded missing umask_fix property to system.yaml\nAdded current theme's config to global config. E.g. config.theme.dropdown_enabled\nAdded append_url_extension option to system config & page headers\nUsers have a new state property to allow disabling\/banning\nAdded new Page.relativePagePath() helper method\nAdded new |pad Twig filter for strings (uses str_pad())\nAdded lighttpd.conf for Lightly web server\n\n\n\nClear previously applied operations when doing a reset on image media\nPassword no longer required when editing user\nImproved support for trailing \/ URLs\nImproved .nginx.conf configuration file\nImproved .htaccess security\nUpdated vendor libs\nUpdated composer.phar\nUse streams instead of paths for clearCache()\nUse PCRE_UTF8 so unicode strings can be regexed in Truncator\nHandle case when login plugin is disabled\nImproved quality functionality in media handling\nAdded some missing translation strings\nDeprecated bin\/grav newuser in favor of bin\/plugin login new-user\nMoved fallback types to use any valid media type\nRenamed system.pages.fallback_types to system.media.allowed_fallback_types\nRemoved version number in default generator meta tag\nDisable time limit in case of slow downloads\nRemoved default hash in system.yaml\n\n\n\nFix for media using absolute URLs causing broken links\nFix theme auto-loading #432\nDon't create empty <style> or <script> scripts if no data\nCode cleanups\nFix undefined variable in Config class\nFix exception message when label is not set\nCheck in Plugins::get() to ensure plugins exists\nFixed GZip compression making output buffering work correctly with all servers and browsers\nFixed date representation in system config"},"1.0.0-rc.4":{"date":"10\/29\/2015","content":"1. [](#bugfix)\n * Fixed a fatal error if you have a collection with missing or invalid `@page: \/route`","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed a fatal error if you have a collection with missing or invalid <code>@page: \/route<\/code><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed a fatal error if you have a collection with missing or invalid @page: \/route"},"1.0.0-rc.3":{"date":"10\/29\/2015","content":"1. [](#new)\n * New Page collection options! `@self.parent, @self.siblings, @self.descendants` + more\n * White list of file types for fallback route functionality (images by default)\n1. [](#improved)\n * Assets switched from defines to streams\n1. [](#bugfix)\n * README.md typos fixed\n * Fixed issue with routes that have lang string in them (`\/en\/english`)\n * Trim strings before validation so whitespace is not satisfy 'required'","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>New Page collection options! <code>@self.parent, @self.siblings, @self.descendants<\/code> + more<\/li>\n<li>White list of file types for fallback route functionality (images by default)<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Assets switched from defines to streams<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>README.md typos fixed<\/li>\n<li>Fixed issue with routes that have lang string in them (<code>\/en\/english<\/code>)<\/li>\n<li>Trim strings before validation so whitespace is not satisfy 'required'<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"New Page collection options! @self.parent, @self.siblings, @self.descendants + more\nWhite list of file types for fallback route functionality (images by default)\n\n\n\nAssets switched from defines to streams\n\n\n\nREADME.md typos fixed\nFixed issue with routes that have lang string in them (\/en\/english)\nTrim strings before validation so whitespace is not satisfy 'required'"},"1.0.0-rc.2":{"date":"10\/27\/2015","content":"1. [](#new)\n * Added support for CSS Asset groups\n * Added a `wrapped_site` system option for themes\/plugins to use\n * Pass `Page` object as event to `onTwigPageVariables()` event hook\n * New `Data.items()` method to get all items\n1. [](#improved)\n * Missing pipelined remote asset will now fail quietly\n * More reliably handle inline JS and CSS to remove only surrounding HTML tags\n * `Medium.meta` returns new Data object so null checks are possible\n * Improved Medium metadata merging to allow for automatic title\/alt\/class attributes\n * Moved Grav object to global variable rather than template variable (useful for macros)\n * German language improvements\n * Updated bundled composer\n1. [](#bugfix)\n * Accept variety of `true` values in `User.authorize()` method\n * Fix for `Validation` throwing an error if no label set","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added support for CSS Asset groups<\/li>\n<li>Added a <code>wrapped_site<\/code> system option for themes\/plugins to use<\/li>\n<li>Pass <code>Page<\/code> object as event to <code>onTwigPageVariables()<\/code> event hook<\/li>\n<li>New <code>Data.items()<\/code> method to get all items<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Missing pipelined remote asset will now fail quietly<\/li>\n<li>More reliably handle inline JS and CSS to remove only surrounding HTML tags<\/li>\n<li><code>Medium.meta<\/code> returns new Data object so null checks are possible<\/li>\n<li>Improved Medium metadata merging to allow for automatic title\/alt\/class attributes<\/li>\n<li>Moved Grav object to global variable rather than template variable (useful for macros)<\/li>\n<li>German language improvements<\/li>\n<li>Updated bundled composer<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Accept variety of <code>true<\/code> values in <code>User.authorize()<\/code> method<\/li>\n<li>Fix for <code>Validation<\/code> throwing an error if no label set<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added support for CSS Asset groups\nAdded a wrapped_site system option for themes\/plugins to use\nPass Page object as event to onTwigPageVariables() event hook\nNew Data.items() method to get all items\n\n\n\nMissing pipelined remote asset will now fail quietly\nMore reliably handle inline JS and CSS to remove only surrounding HTML tags\nMedium.meta returns new Data object so null checks are possible\nImproved Medium metadata merging to allow for automatic title\/alt\/class attributes\nMoved Grav object to global variable rather than template variable (useful for macros)\nGerman language improvements\nUpdated bundled composer\n\n\n\nAccept variety of true values in User.authorize() method\nFix for Validation throwing an error if no label set"},"1.0.0-rc.1":{"date":"10\/23\/2015","content":"1. [](#new)\n * Use native PECL YAML parser if installed for 4X speed boost in parsing YAML files\n * Support for inherited theme class\n * Added new default language prepend system configuration option\n * New `|evaluate` Twig filter to evaluate a string as twig\n * New system option to ignore all **hidden** files and folders\n * New system option for default redirect code\n * Added ability to append specific `[30x]` codes to redirect URLs\n * Added `url_taxonomy_filters` for page collections\n * Added `@root` page and `recurse` flag for page collections\n * Support for **multiple** page collection types as an array\n * Added Dutch language file\n * Added Russian language file\n * Added `remove` method to User object\n1. [](#improved)\n * Moved hardcoded mimetypes to `media.yaml` to be treated as Page media files\n * Set `errors: display: false` by default in `system.yaml`\n * Strip out extra slashes in the URI\n * Validate hostname to ensure it is valid\n * Ignore more SCM folders in Backups\n * Removed `home_redirect` settings from `system.yaml`\n * Added Page `media` as root twig object for consistency\n * Updated to latest vendor libraries\n * Optimizations to Asset pipeline logic for minor speed increase\n * Block direct access to a variety of files in `.htaccess` for increased security\n * Debugbar vendor library update\n * Always fallback to english if other translations are not available\n1. [](#bugfix)\n * Fix for redirecting external URL with multi-language\n * Fix for Asset pipeline not respecting asset groups\n * Fix language files with child\/parent theme relationships\n * Fixed a regression issue resulting in incorrect default language\n * Ensure error handler is initialized before URI is processed\n * Use default language in Twig if active language is not set\n * Fixed issue with `safeEmailFilter()` Twig filter not separating with `;` properly\n * Fixed empty YAML file causing error with native PECL YAML parser\n * Fixed `SVG` mimetype\n * Fixed incorrect `Cache-control: max-age` value format","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Use native PECL YAML parser if installed for 4X speed boost in parsing YAML files<\/li>\n<li>Support for inherited theme class<\/li>\n<li>Added new default language prepend system configuration option<\/li>\n<li>New <code>|evaluate<\/code> Twig filter to evaluate a string as twig<\/li>\n<li>New system option to ignore all <strong>hidden<\/strong> files and folders<\/li>\n<li>New system option for default redirect code<\/li>\n<li>Added ability to append specific <code>[30x]<\/code> codes to redirect URLs<\/li>\n<li>Added <code>url_taxonomy_filters<\/code> for page collections<\/li>\n<li>Added <code>@root<\/code> page and <code>recurse<\/code> flag for page collections<\/li>\n<li>Support for <strong>multiple<\/strong> page collection types as an array<\/li>\n<li>Added Dutch language file<\/li>\n<li>Added Russian language file<\/li>\n<li>Added <code>remove<\/code> method to User object<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Moved hardcoded mimetypes to <code>media.yaml<\/code> to be treated as Page media files<\/li>\n<li>Set <code>errors: display: false<\/code> by default in <code>system.yaml<\/code><\/li>\n<li>Strip out extra slashes in the URI<\/li>\n<li>Validate hostname to ensure it is valid<\/li>\n<li>Ignore more SCM folders in Backups<\/li>\n<li>Removed <code>home_redirect<\/code> settings from <code>system.yaml<\/code><\/li>\n<li>Added Page <code>media<\/code> as root twig object for consistency<\/li>\n<li>Updated to latest vendor libraries<\/li>\n<li>Optimizations to Asset pipeline logic for minor speed increase<\/li>\n<li>Block direct access to a variety of files in <code>.htaccess<\/code> for increased security<\/li>\n<li>Debugbar vendor library update<\/li>\n<li>Always fallback to english if other translations are not available<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for redirecting external URL with multi-language<\/li>\n<li>Fix for Asset pipeline not respecting asset groups<\/li>\n<li>Fix language files with child\/parent theme relationships<\/li>\n<li>Fixed a regression issue resulting in incorrect default language<\/li>\n<li>Ensure error handler is initialized before URI is processed<\/li>\n<li>Use default language in Twig if active language is not set<\/li>\n<li>Fixed issue with <code>safeEmailFilter()<\/code> Twig filter not separating with <code>;<\/code> properly<\/li>\n<li>Fixed empty YAML file causing error with native PECL YAML parser<\/li>\n<li>Fixed <code>SVG<\/code> mimetype<\/li>\n<li>Fixed incorrect <code>Cache-control: max-age<\/code> value format<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Use native PECL YAML parser if installed for 4X speed boost in parsing YAML files\nSupport for inherited theme class\nAdded new default language prepend system configuration option\nNew |evaluate Twig filter to evaluate a string as twig\nNew system option to ignore all hidden files and folders\nNew system option for default redirect code\nAdded ability to append specific [30x] codes to redirect URLs\nAdded url_taxonomy_filters for page collections\nAdded @root page and recurse flag for page collections\nSupport for multiple page collection types as an array\nAdded Dutch language file\nAdded Russian language file\nAdded remove method to User object\n\n\n\nMoved hardcoded mimetypes to media.yaml to be treated as Page media files\nSet errors: display: false by default in system.yaml\nStrip out extra slashes in the URI\nValidate hostname to ensure it is valid\nIgnore more SCM folders in Backups\nRemoved home_redirect settings from system.yaml\nAdded Page media as root twig object for consistency\nUpdated to latest vendor libraries\nOptimizations to Asset pipeline logic for minor speed increase\nBlock direct access to a variety of files in .htaccess for increased security\nDebugbar vendor library update\nAlways fallback to english if other translations are not available\n\n\n\nFix for redirecting external URL with multi-language\nFix for Asset pipeline not respecting asset groups\nFix language files with child\/parent theme relationships\nFixed a regression issue resulting in incorrect default language\nEnsure error handler is initialized before URI is processed\nUse default language in Twig if active language is not set\nFixed issue with safeEmailFilter() Twig filter not separating with ; properly\nFixed empty YAML file causing error with native PECL YAML parser\nFixed SVG mimetype\nFixed incorrect Cache-control: max-age value format"},"0.9.45":{"date":"10\/08\/2015","content":"1. [](#bugfix)\n * Fixed a regression issue resulting in incorrect default language","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed a regression issue resulting in incorrect default language<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed a regression issue resulting in incorrect default language"},"0.9.44":{"date":"10\/07\/2015","content":"1. [](#new)\n * Added Redis back as a supported cache mechanism\n * Allow Twig `nicetime` translations\n * Added `-y` option for 'Yes to all' in `bin\/gpm update`\n * Added CSS `media` attribute to the Assets manager\n * New German language support\n * New Czech language support\n * New French language support\n * Added `modulus` twig filter\n1. [](#improved)\n * URL decode in medium actions to allow complex syntax\n * Take into account `HTTP_HOST` before `SERVER_NAME` (helpful with Nginx)\n * More friendly cache naming to ease manual management of cache systems\n * Added default Apache resource for `DirectoryIndex`\n1. [](#bugfix)\n * Fix GPM failure when offline\n * Fix `open_basedir` error in `bin\/gpm install`\n * Fix an HHVM error in Truncator\n * Fix for XSS vulnerability with params\n * Fix chaining for responsive size derivatives\n * Fix for saving pages when removing the page title and all other header elements\n * Fix when saving array fields\n * Fix for ports being included in `HTTP_HOST`\n * Fix for Truncator to handle PHP tags gracefully\n * Fix for locate style lang codes in `getNativeName()`\n * Urldecode image basenames in markdown","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added Redis back as a supported cache mechanism<\/li>\n<li>Allow Twig <code>nicetime<\/code> translations<\/li>\n<li>Added <code>-y<\/code> option for 'Yes to all' in <code>bin\/gpm update<\/code><\/li>\n<li>Added CSS <code>media<\/code> attribute to the Assets manager<\/li>\n<li>New German language support<\/li>\n<li>New Czech language support<\/li>\n<li>New French language support<\/li>\n<li>Added <code>modulus<\/code> twig filter<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>URL decode in medium actions to allow complex syntax<\/li>\n<li>Take into account <code>HTTP_HOST<\/code> before <code>SERVER_NAME<\/code> (helpful with Nginx)<\/li>\n<li>More friendly cache naming to ease manual management of cache systems<\/li>\n<li>Added default Apache resource for <code>DirectoryIndex<\/code><\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix GPM failure when offline<\/li>\n<li>Fix <code>open_basedir<\/code> error in <code>bin\/gpm install<\/code><\/li>\n<li>Fix an HHVM error in Truncator<\/li>\n<li>Fix for XSS vulnerability with params<\/li>\n<li>Fix chaining for responsive size derivatives<\/li>\n<li>Fix for saving pages when removing the page title and all other header elements<\/li>\n<li>Fix when saving array fields<\/li>\n<li>Fix for ports being included in <code>HTTP_HOST<\/code><\/li>\n<li>Fix for Truncator to handle PHP tags gracefully<\/li>\n<li>Fix for locate style lang codes in <code>getNativeName()<\/code><\/li>\n<li>Urldecode image basenames in markdown<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added Redis back as a supported cache mechanism\nAllow Twig nicetime translations\nAdded -y option for 'Yes to all' in bin\/gpm update\nAdded CSS media attribute to the Assets manager\nNew German language support\nNew Czech language support\nNew French language support\nAdded modulus twig filter\n\n\n\nURL decode in medium actions to allow complex syntax\nTake into account HTTP_HOST before SERVER_NAME (helpful with Nginx)\nMore friendly cache naming to ease manual management of cache systems\nAdded default Apache resource for DirectoryIndex\n\n\n\nFix GPM failure when offline\nFix open_basedir error in bin\/gpm install\nFix an HHVM error in Truncator\nFix for XSS vulnerability with params\nFix chaining for responsive size derivatives\nFix for saving pages when removing the page title and all other header elements\nFix when saving array fields\nFix for ports being included in HTTP_HOST\nFix for Truncator to handle PHP tags gracefully\nFix for locate style lang codes in getNativeName()\nUrldecode image basenames in markdown"},"0.9.43":{"date":"09\/16\/2015","content":"1. [](#new)\n * Added new `AudioMedium` for HTML5 audio\n * Added ability for Assets to be added and displayed in separate *groups*\n * New support for responsive image derivative sizes\n1. [](#improved)\n * GPM theme install now uses a `copy` method so new files are not lost (e.g. `\/css\/custom.css`)\n * Code analysis improvements and cleanup\n * Removed Twig panel from debugger (no longer supported in Twig 1.20)\n * Updated composer packages\n * Prepend active language to `convertUrl()` when used in markdown links\n * Added some pre\/post flight options for installer via blueprints\n * Hyphenize the site name in the backup filename\n1. [](#bugfix)\n * Fix broken routable logic\n * Check for `phpinfo()` method in case it is restricted by hosting provider\n * Fixes for windows when running GPM\n * Fix for ampersand (`&`) causing error in `truncateHtml()` via `Page.summary()`","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>AudioMedium<\/code> for HTML5 audio<\/li>\n<li>Added ability for Assets to be added and displayed in separate <em>groups<\/em><\/li>\n<li>New support for responsive image derivative sizes<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>GPM theme install now uses a <code>copy<\/code> method so new files are not lost (e.g. <code>\/css\/custom.css<\/code>)<\/li>\n<li>Code analysis improvements and cleanup<\/li>\n<li>Removed Twig panel from debugger (no longer supported in Twig 1.20)<\/li>\n<li>Updated composer packages<\/li>\n<li>Prepend active language to <code>convertUrl()<\/code> when used in markdown links<\/li>\n<li>Added some pre\/post flight options for installer via blueprints<\/li>\n<li>Hyphenize the site name in the backup filename<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix broken routable logic<\/li>\n<li>Check for <code>phpinfo()<\/code> method in case it is restricted by hosting provider<\/li>\n<li>Fixes for windows when running GPM<\/li>\n<li>Fix for ampersand (<code>&<\/code>) causing error in <code>truncateHtml()<\/code> via <code>Page.summary()<\/code><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new AudioMedium for HTML5 audio\nAdded ability for Assets to be added and displayed in separate groups\nNew support for responsive image derivative sizes\n\n\n\nGPM theme install now uses a copy method so new files are not lost (e.g. \/css\/custom.css)\nCode analysis improvements and cleanup\nRemoved Twig panel from debugger (no longer supported in Twig 1.20)\nUpdated composer packages\nPrepend active language to convertUrl() when used in markdown links\nAdded some pre\/post flight options for installer via blueprints\nHyphenize the site name in the backup filename\n\n\n\nFix broken routable logic\nCheck for phpinfo() method in case it is restricted by hosting provider\nFixes for windows when running GPM\nFix for ampersand (&) causing error in truncateHtml() via Page.summary()"},"0.9.42":{"date":"09\/11\/2015","content":"1. [](#bugfix)\n * Fixed `User.authorise()` to be backwards compabile","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed <code>User.authorise()<\/code> to be backwards compabile<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed User.authorise() to be backwards compabile"},"0.9.41":{"date":"09\/11\/2015","content":"1. [](#new)\n * New and improved multibyte-safe TruncateHTML function and filter\n * Added support for custom page date format\n * Added a `string` Twig filter to render as json_encoded string\n * Added `authorize` Twig filter\n * Added support for theme inheritance in the admin\n * Support for multiple content collections on a page\n * Added configurable files\/folders ignores for pages\n * Added the ability to set the default PHP locale and override via multi-lang configuration\n * Added ability to save as YAML via admin\n * Added check for `mbstring` support\n * Added new `redirect` header for pages\n1. [](#improved)\n * Changed dependencies from `develop` to `master`\n * Updated logging to log everything from `debug` level on (was `warning`)\n * Added missing `accounts\/` folder\n * Default to performing a 301 redirect for URIs with trailing slashes\n * Improved Twig error messages\n * Allow validating of forms from anywhere such as plugins\n * Added logic so modular pages are by default non-routable\n * Hide password input in `bin\/grav newuser` command\n1. [](#bugfix)\n * Fixed `Pages.all()` not returning modular pages\n * Fix for modular template types not getting found\n * Fix for `markdown_extra:` overriding `markdown:extra:` setting\n * Fix for multi-site routing\n * Fix for multi-lang page name error\n * Fixed a redirect loop in `URI` class\n * Fixed a potential error when `unsupported_inline_types` is empty\n * Correctly generate 2x retina image\n * Typo fixes in page publish\/unpublish blueprint","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>New and improved multibyte-safe TruncateHTML function and filter<\/li>\n<li>Added support for custom page date format<\/li>\n<li>Added a <code>string<\/code> Twig filter to render as json_encoded string<\/li>\n<li>Added <code>authorize<\/code> Twig filter<\/li>\n<li>Added support for theme inheritance in the admin<\/li>\n<li>Support for multiple content collections on a page<\/li>\n<li>Added configurable files\/folders ignores for pages<\/li>\n<li>Added the ability to set the default PHP locale and override via multi-lang configuration<\/li>\n<li>Added ability to save as YAML via admin<\/li>\n<li>Added check for <code>mbstring<\/code> support<\/li>\n<li>Added new <code>redirect<\/code> header for pages<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Changed dependencies from <code>develop<\/code> to <code>master<\/code><\/li>\n<li>Updated logging to log everything from <code>debug<\/code> level on (was <code>warning<\/code>)<\/li>\n<li>Added missing <code>accounts\/<\/code> folder<\/li>\n<li>Default to performing a 301 redirect for URIs with trailing slashes<\/li>\n<li>Improved Twig error messages<\/li>\n<li>Allow validating of forms from anywhere such as plugins<\/li>\n<li>Added logic so modular pages are by default non-routable<\/li>\n<li>Hide password input in <code>bin\/grav newuser<\/code> command<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed <code>Pages.all()<\/code> not returning modular pages<\/li>\n<li>Fix for modular template types not getting found<\/li>\n<li>Fix for <code>markdown_extra:<\/code> overriding <code>markdown:extra:<\/code> setting<\/li>\n<li>Fix for multi-site routing<\/li>\n<li>Fix for multi-lang page name error<\/li>\n<li>Fixed a redirect loop in <code>URI<\/code> class<\/li>\n<li>Fixed a potential error when <code>unsupported_inline_types<\/code> is empty<\/li>\n<li>Correctly generate 2x retina image<\/li>\n<li>Typo fixes in page publish\/unpublish blueprint<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"New and improved multibyte-safe TruncateHTML function and filter\nAdded support for custom page date format\nAdded a string Twig filter to render as json_encoded string\nAdded authorize Twig filter\nAdded support for theme inheritance in the admin\nSupport for multiple content collections on a page\nAdded configurable files\/folders ignores for pages\nAdded the ability to set the default PHP locale and override via multi-lang configuration\nAdded ability to save as YAML via admin\nAdded check for mbstring support\nAdded new redirect header for pages\n\n\n\nChanged dependencies from develop to master\nUpdated logging to log everything from debug level on (was warning)\nAdded missing accounts\/ folder\nDefault to performing a 301 redirect for URIs with trailing slashes\nImproved Twig error messages\nAllow validating of forms from anywhere such as plugins\nAdded logic so modular pages are by default non-routable\nHide password input in bin\/grav newuser command\n\n\n\nFixed Pages.all() not returning modular pages\nFix for modular template types not getting found\nFix for markdown_extra: overriding markdown:extra: setting\nFix for multi-site routing\nFix for multi-lang page name error\nFixed a redirect loop in URI class\nFixed a potential error when unsupported_inline_types is empty\nCorrectly generate 2x retina image\nTypo fixes in page publish\/unpublish blueprint"},"0.9.40":{"date":"08\/31\/2015","content":"1. [](#new)\n * Added some new Twig filters: `defined`, `rtrim`, `ltrim`\n * Admin support for customizable page file name + template override\n1. [](#improved)\n * Better message for incompatible\/unsupported Twig template\n * Improved User blueprints with better help\n * Switched to composer **install** rather than **update** by default\n * Admin autofocus on page title\n * `.htaccess` hardening (`.htaccess` & `htaccess.txt`)\n * Cache safety checks for missing folders\n1. [](#bugfix)\n * Fixed issue with unescaped `o` character in date formats","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added some new Twig filters: <code>defined<\/code>, <code>rtrim<\/code>, <code>ltrim<\/code><\/li>\n<li>Admin support for customizable page file name + template override<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Better message for incompatible\/unsupported Twig template<\/li>\n<li>Improved User blueprints with better help<\/li>\n<li>Switched to composer <strong>install<\/strong> rather than <strong>update<\/strong> by default<\/li>\n<li>Admin autofocus on page title<\/li>\n<li><code>.htaccess<\/code> hardening (<code>.htaccess<\/code> & <code>htaccess.txt<\/code>)<\/li>\n<li>Cache safety checks for missing folders<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue with unescaped <code>o<\/code> character in date formats<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added some new Twig filters: defined, rtrim, ltrim\nAdmin support for customizable page file name + template override\n\n\n\nBetter message for incompatible\/unsupported Twig template\nImproved User blueprints with better help\nSwitched to composer install rather than update by default\nAdmin autofocus on page title\n.htaccess hardening (.htaccess & htaccess.txt)\nCache safety checks for missing folders\n\n\n\nFixed issue with unescaped o character in date formats"},"0.9.39":{"date":"08\/25\/2015","content":"1. [](#bugfix)\n * `Page.active()` not triggering on **homepage**\n * Fix for invalid session name in Opera browser","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li><code>Page.active()<\/code> not triggering on <strong>homepage<\/strong><\/li>\n<li>Fix for invalid session name in Opera browser<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Page.active() not triggering on homepage\nFix for invalid session name in Opera browser"},"0.9.38":{"date":"08\/24\/2015","content":"1. [](#new)\n * Added `language` to **user** blueprint\n * Added translations to blueprints\n * New extending logic for blueprints\n * Blueprints are now loaded with Streams to allow for better overrides\n * Added new Symfony `dump()` method\n1. [](#improved)\n * Catch YAML header parse exception so site doesn't die\n * Better `Page.parent()` logic\n * Improved GPM display layout\n * Tweaked default page layout\n * Unset route and slug for improved reliability of route changes\n * Added requirements to README.md\n * Updated various libraries\n * Allow use of custom page date field for dateRange collections\n1. [](#bugfix)\n * Slug fixes with GPM\n * Unset plaintext password on save\n * Fix for trailing `\/` not matching active children","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <code>language<\/code> to <strong>user<\/strong> blueprint<\/li>\n<li>Added translations to blueprints<\/li>\n<li>New extending logic for blueprints<\/li>\n<li>Blueprints are now loaded with Streams to allow for better overrides<\/li>\n<li>Added new Symfony <code>dump()<\/code> method<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Catch YAML header parse exception so site doesn't die<\/li>\n<li>Better <code>Page.parent()<\/code> logic<\/li>\n<li>Improved GPM display layout<\/li>\n<li>Tweaked default page layout<\/li>\n<li>Unset route and slug for improved reliability of route changes<\/li>\n<li>Added requirements to README.md<\/li>\n<li>Updated various libraries<\/li>\n<li>Allow use of custom page date field for dateRange collections<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Slug fixes with GPM<\/li>\n<li>Unset plaintext password on save<\/li>\n<li>Fix for trailing <code>\/<\/code> not matching active children<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added language to user blueprint\nAdded translations to blueprints\nNew extending logic for blueprints\nBlueprints are now loaded with Streams to allow for better overrides\nAdded new Symfony dump() method\n\n\n\nCatch YAML header parse exception so site doesn't die\nBetter Page.parent() logic\nImproved GPM display layout\nTweaked default page layout\nUnset route and slug for improved reliability of route changes\nAdded requirements to README.md\nUpdated various libraries\nAllow use of custom page date field for dateRange collections\n\n\n\nSlug fixes with GPM\nUnset plaintext password on save\nFix for trailing \/ not matching active children"},"0.9.37":{"date":"08\/12\/2015","content":"3. [](#bugfix)\n * Fixed issue when saving `header.process` in page forms via the **admin plugin**\n * Fixed error due to use of `set_time_limit` that might be disabled on some hosts","content_html":"<ol start=\"3\">\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue when saving <code>header.process<\/code> in page forms via the <strong>admin plugin<\/strong><\/li>\n<li>Fixed error due to use of <code>set_time_limit<\/code> that might be disabled on some hosts<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed issue when saving header.process in page forms via the admin plugin\nFixed error due to use of set_time_limit that might be disabled on some hosts"},"0.9.36":{"date":"08\/11\/2015","content":"1. [](#new)\n * Added a new `newuser` CLI command to create user accounts\n * Added `default` blueprint for all templates\n * Support `user` and `system` language translation merging\n1. [](#improved)\n * Added isSymlink method in GPM to determine if Grav is symbolically linked or not\n * Refactored page recursing\n * Updated blueprints to use new toggles\n * Updated blueprints to use current date for date format fields\n * Updated composer.phar\n * Use sessions for admin even when disabled for site\n * Use `GRAV_ROOT` in session identifier","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added a new <code>newuser<\/code> CLI command to create user accounts<\/li>\n<li>Added <code>default<\/code> blueprint for all templates<\/li>\n<li>Support <code>user<\/code> and <code>system<\/code> language translation merging<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Added isSymlink method in GPM to determine if Grav is symbolically linked or not<\/li>\n<li>Refactored page recursing<\/li>\n<li>Updated blueprints to use new toggles<\/li>\n<li>Updated blueprints to use current date for date format fields<\/li>\n<li>Updated composer.phar<\/li>\n<li>Use sessions for admin even when disabled for site<\/li>\n<li>Use <code>GRAV_ROOT<\/code> in session identifier<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added a new newuser CLI command to create user accounts\nAdded default blueprint for all templates\nSupport user and system language translation merging\n\n\n\nAdded isSymlink method in GPM to determine if Grav is symbolically linked or not\nRefactored page recursing\nUpdated blueprints to use new toggles\nUpdated blueprints to use current date for date format fields\nUpdated composer.phar\nUse sessions for admin even when disabled for site\nUse GRAV_ROOT in session identifier"},"0.9.35":{"date":"08\/06\/2015","content":"1. [](#new)\n * Added `body_classes` field\n * Added `visiblity` toggle and help tooltips on new page form\n * Added new `Page.unsetRoute()` method to allow admin to regenerate the route\n2. [](#improved)\n * User save no longer stores username each time\n * Page list form field now shows all pages except root\n * Removed required option from page title\n * Added configuration settings for running Nginx in sub directory\n3. [](#bugfix)\n * Fixed deep translation merging\n * Fixed broken **metadata** merging with site defaults\n * Fixed broken **summary** field\n * Fixed broken robots field\n * Fixed GPM issue when using cURL, throwing an `Undefined offset: 1` exception\n * Removed duplicate hidden page `type` field","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <code>body_classes<\/code> field<\/li>\n<li>Added <code>visiblity<\/code> toggle and help tooltips on new page form<\/li>\n<li>Added new <code>Page.unsetRoute()<\/code> method to allow admin to regenerate the route<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>User save no longer stores username each time<\/li>\n<li>Page list form field now shows all pages except root<\/li>\n<li>Removed required option from page title<\/li>\n<li>Added configuration settings for running Nginx in sub directory<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed deep translation merging<\/li>\n<li>Fixed broken <strong>metadata<\/strong> merging with site defaults<\/li>\n<li>Fixed broken <strong>summary<\/strong> field<\/li>\n<li>Fixed broken robots field<\/li>\n<li>Fixed GPM issue when using cURL, throwing an <code>Undefined offset: 1<\/code> exception<\/li>\n<li>Removed duplicate hidden page <code>type<\/code> field<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added body_classes field\nAdded visiblity toggle and help tooltips on new page form\nAdded new Page.unsetRoute() method to allow admin to regenerate the route\n\n\n\nUser save no longer stores username each time\nPage list form field now shows all pages except root\nRemoved required option from page title\nAdded configuration settings for running Nginx in sub directory\n\n\n\nFixed deep translation merging\nFixed broken metadata merging with site defaults\nFixed broken summary field\nFixed broken robots field\nFixed GPM issue when using cURL, throwing an Undefined offset: 1 exception\nRemoved duplicate hidden page type field"},"0.9.34":{"date":"08\/04\/2015","content":"1. [](#new)\n * Added new `cache_all` system setting + media `cache()` method\n * Added base languages configuration\n * Added property language to page to help plugins identify page language\n * New `Utils::arrayFilterRecursive()` method\n2. [](#improved)\n * Improved Session handling to support site and admin independently\n * Allow Twig variables to be modified in other events\n * Blueprint updates in preparation for Admin plugin\n * Changed `Inflector` from static to object and added multi-language support\n * Support for admin override of a page's blueprints\n3. [](#bugfix)\n * Removed unused `use` in `VideoMedium` that was causing error\n * Array fix in `User.authorise()` method\n * Fix for typo in `translations_fallback`\n * Fixed moving page to the root","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>cache_all<\/code> system setting + media <code>cache()<\/code> method<\/li>\n<li>Added base languages configuration<\/li>\n<li>Added property language to page to help plugins identify page language<\/li>\n<li>New <code>Utils::arrayFilterRecursive()<\/code> method<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved Session handling to support site and admin independently<\/li>\n<li>Allow Twig variables to be modified in other events<\/li>\n<li>Blueprint updates in preparation for Admin plugin<\/li>\n<li>Changed <code>Inflector<\/code> from static to object and added multi-language support<\/li>\n<li>Support for admin override of a page's blueprints<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Removed unused <code>use<\/code> in <code>VideoMedium<\/code> that was causing error<\/li>\n<li>Array fix in <code>User.authorise()<\/code> method<\/li>\n<li>Fix for typo in <code>translations_fallback<\/code><\/li>\n<li>Fixed moving page to the root<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new cache_all system setting + media cache() method\nAdded base languages configuration\nAdded property language to page to help plugins identify page language\nNew Utils::arrayFilterRecursive() method\n\n\n\nImproved Session handling to support site and admin independently\nAllow Twig variables to be modified in other events\nBlueprint updates in preparation for Admin plugin\nChanged Inflector from static to object and added multi-language support\nSupport for admin override of a page's blueprints\n\n\n\nRemoved unused use in VideoMedium that was causing error\nArray fix in User.authorise() method\nFix for typo in translations_fallback\nFixed moving page to the root"},"0.9.33":{"date":"07\/21\/2015","content":"1. [](#new)\n * Added new `onImageMediumSaved()` event (useful for post-image processing)\n * Added `Vary: Accept-Encoding` option\n2. [](#improved)\n * Multilang-safe delimiter position\n * Refactored Twig classes and added optional umask setting\n * Removed `pageinit()` timing\n * `Page->routable()` now takes `published()` state into account\n * Improved how page extension is set\n * Support `Language->translate()` method taking string and array\n3. [](#bugfix)\n * Fixed `backup` command to include empty folders","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>onImageMediumSaved()<\/code> event (useful for post-image processing)<\/li>\n<li>Added <code>Vary: Accept-Encoding<\/code> option<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Multilang-safe delimiter position<\/li>\n<li>Refactored Twig classes and added optional umask setting<\/li>\n<li>Removed <code>pageinit()<\/code> timing<\/li>\n<li><code>Page->routable()<\/code> now takes <code>published()<\/code> state into account<\/li>\n<li>Improved how page extension is set<\/li>\n<li>Support <code>Language->translate()<\/code> method taking string and array<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed <code>backup<\/code> command to include empty folders<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new onImageMediumSaved() event (useful for post-image processing)\nAdded Vary: Accept-Encoding option\n\n\n\nMultilang-safe delimiter position\nRefactored Twig classes and added optional umask setting\nRemoved pageinit() timing\nPage->routable() now takes published() state into account\nImproved how page extension is set\nSupport Language->translate() method taking string and array\n\n\n\nFixed backup command to include empty folders"},"0.9.32":{"date":"07\/14\/2015","content":"1. [](#new)\n * Detect users preferred language via `http_accept_language` setting\n * Added new `translateArray()` language method\n2. [](#improved)\n * Support `en` translations by default for plugins & themes\n * Improved default generator tag\n * Minor language tweaks and fixes\n3. [](#bugfix)\n * Fix for session active language and homepage redirects\n * Ignore root-level page rather than throwing error","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Detect users preferred language via <code>http_accept_language<\/code> setting<\/li>\n<li>Added new <code>translateArray()<\/code> language method<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Support <code>en<\/code> translations by default for plugins & themes<\/li>\n<li>Improved default generator tag<\/li>\n<li>Minor language tweaks and fixes<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for session active language and homepage redirects<\/li>\n<li>Ignore root-level page rather than throwing error<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Detect users preferred language via http_accept_language setting\nAdded new translateArray() language method\n\n\n\nSupport en translations by default for plugins & themes\nImproved default generator tag\nMinor language tweaks and fixes\n\n\n\nFix for session active language and homepage redirects\nIgnore root-level page rather than throwing error"},"0.9.31":{"date":"07\/09\/2015","content":"1. [](#new)\n * Added xml, json, css and js to valid media file types\n2. [](#improved)\n * Better handling of unsupported media type downloads\n * Improved `bin\/grav backup` command to mimic admin plugin location\/name\n3. [](#bugfix)\n * Critical fix for broken language translations\n * Fix for Twig markdown filter error\n * Safety check for download extension","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added xml, json, css and js to valid media file types<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Better handling of unsupported media type downloads<\/li>\n<li>Improved <code>bin\/grav backup<\/code> command to mimic admin plugin location\/name<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Critical fix for broken language translations<\/li>\n<li>Fix for Twig markdown filter error<\/li>\n<li>Safety check for download extension<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added xml, json, css and js to valid media file types\n\n\n\nBetter handling of unsupported media type downloads\nImproved bin\/grav backup command to mimic admin plugin location\/name\n\n\n\nCritical fix for broken language translations\nFix for Twig markdown filter error\nSafety check for download extension"},"0.9.30":{"date":"07\/08\/2015","content":"1. [](#new)\n * BIG NEWS! Extensive Multi-Language support is all new in 0.9.30!\n * Translation support via Twig filter\/function and PHP method\n * Page specific default route\n * Page specific route aliases\n * Canonical URL route support\n * Added built-in session support\n * New `Page.rawRoute()` to get a consistent folder-based route to a page\n * Added option to always redirect to default page on alias URL\n * Added language safe redirect function for use in core and plugins\n2. [](#improved)\n * Improved `Page.active()` and `Page.activeChild()` methods to support route aliases\n * Various spelling corrections in `.php` comments, `.md` and `.yaml` files\n * `Utils::startsWith()` and `Utils::endsWith()` now support needle arrays\n * Added a new timer around `pageInitialized` event\n * Updated jQuery library to v2.1.4\n3. [](#bugfix)\n * In-page CSS and JS files are now handled properly\n * Fix for `enable_media_timestamp` not working properly","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>BIG NEWS! Extensive Multi-Language support is all new in 0.9.30!<\/li>\n<li>Translation support via Twig filter\/function and PHP method<\/li>\n<li>Page specific default route<\/li>\n<li>Page specific route aliases<\/li>\n<li>Canonical URL route support<\/li>\n<li>Added built-in session support<\/li>\n<li>New <code>Page.rawRoute()<\/code> to get a consistent folder-based route to a page<\/li>\n<li>Added option to always redirect to default page on alias URL<\/li>\n<li>Added language safe redirect function for use in core and plugins<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved <code>Page.active()<\/code> and <code>Page.activeChild()<\/code> methods to support route aliases<\/li>\n<li>Various spelling corrections in <code>.php<\/code> comments, <code>.md<\/code> and <code>.yaml<\/code> files<\/li>\n<li><code>Utils::startsWith()<\/code> and <code>Utils::endsWith()<\/code> now support needle arrays<\/li>\n<li>Added a new timer around <code>pageInitialized<\/code> event<\/li>\n<li>Updated jQuery library to v2.1.4<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>In-page CSS and JS files are now handled properly<\/li>\n<li>Fix for <code>enable_media_timestamp<\/code> not working properly<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"BIG NEWS! Extensive Multi-Language support is all new in 0.9.30!\nTranslation support via Twig filter\/function and PHP method\nPage specific default route\nPage specific route aliases\nCanonical URL route support\nAdded built-in session support\nNew Page.rawRoute() to get a consistent folder-based route to a page\nAdded option to always redirect to default page on alias URL\nAdded language safe redirect function for use in core and plugins\n\n\n\nImproved Page.active() and Page.activeChild() methods to support route aliases\nVarious spelling corrections in .php comments, .md and .yaml files\nUtils::startsWith() and Utils::endsWith() now support needle arrays\nAdded a new timer around pageInitialized event\nUpdated jQuery library to v2.1.4\n\n\n\nIn-page CSS and JS files are now handled properly\nFix for enable_media_timestamp not working properly"},"0.9.29":{"date":"06\/22\/2015","content":"1. [](#new)\n * New and improved Regex-powered redirect and route alias logic\n * Added new `onBuildPagesInitialized` event for memory critical or time-consuming plugins\n * Added a `setSummary()` method for pages\n2. [](#improved)\n * Improved `MergeConfig()` logic for more control\n * Travis skeleton build trigger implemented\n * Set composer.json versions to stable versions where possible\n * Disabled `last_modified` and `etag` page headers by default (causing too much page caching)\n3. [](#bugfix)\n * Preload classes during `bin\/gpm selfupgrade` to avoid issues with updated classes\n * Fix for directory relative _down_ links","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>New and improved Regex-powered redirect and route alias logic<\/li>\n<li>Added new <code>onBuildPagesInitialized<\/code> event for memory critical or time-consuming plugins<\/li>\n<li>Added a <code>setSummary()<\/code> method for pages<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved <code>MergeConfig()<\/code> logic for more control<\/li>\n<li>Travis skeleton build trigger implemented<\/li>\n<li>Set composer.json versions to stable versions where possible<\/li>\n<li>Disabled <code>last_modified<\/code> and <code>etag<\/code> page headers by default (causing too much page caching)<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Preload classes during <code>bin\/gpm selfupgrade<\/code> to avoid issues with updated classes<\/li>\n<li>Fix for directory relative <em>down<\/em> links<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"New and improved Regex-powered redirect and route alias logic\nAdded new onBuildPagesInitialized event for memory critical or time-consuming plugins\nAdded a setSummary() method for pages\n\n\n\nImproved MergeConfig() logic for more control\nTravis skeleton build trigger implemented\nSet composer.json versions to stable versions where possible\nDisabled last_modified and etag page headers by default (causing too much page caching)\n\n\n\nPreload classes during bin\/gpm selfupgrade to avoid issues with updated classes\nFix for directory relative down links"},"0.9.28":{"date":"06\/16\/2015","content":"1. [](#new)\n * Added method to set raw markdown on a page\n * Added ability to enabled system and page level `etag` and `last_modified` headers\n2. [](#improved)\n * Improved image path processing\n * Improved query string handling\n * Optimization to image handling supporting URL encoded filenames\n * Use global `composer` when available rather than Grv provided one\n * Use `PHP_BINARY` constant rather than `php` executable\n * Updated Doctrine Cache library\n * Updated Symfony libraries\n * Moved `convertUrl()` method to Uri object\n3. [](#bugfix)\n * Fix incorrect slug causing problems with CLI `uninstall`\n * Fix Twig runtime error with assets pipeline in sufolder installations\n * Fix for `+` in image filenames\n * Fix for dot files causing issues with page processing\n * Fix for Uri path detection on Windows platform\n * Fix for alternative media resolutions\n * Fix for modularTypes key properties","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added method to set raw markdown on a page<\/li>\n<li>Added ability to enabled system and page level <code>etag<\/code> and <code>last_modified<\/code> headers<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved image path processing<\/li>\n<li>Improved query string handling<\/li>\n<li>Optimization to image handling supporting URL encoded filenames<\/li>\n<li>Use global <code>composer<\/code> when available rather than Grv provided one<\/li>\n<li>Use <code>PHP_BINARY<\/code> constant rather than <code>php<\/code> executable<\/li>\n<li>Updated Doctrine Cache library<\/li>\n<li>Updated Symfony libraries<\/li>\n<li>Moved <code>convertUrl()<\/code> method to Uri object<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix incorrect slug causing problems with CLI <code>uninstall<\/code><\/li>\n<li>Fix Twig runtime error with assets pipeline in sufolder installations<\/li>\n<li>Fix for <code>+<\/code> in image filenames<\/li>\n<li>Fix for dot files causing issues with page processing<\/li>\n<li>Fix for Uri path detection on Windows platform<\/li>\n<li>Fix for alternative media resolutions<\/li>\n<li>Fix for modularTypes key properties<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added method to set raw markdown on a page\nAdded ability to enabled system and page level etag and last_modified headers\n\n\n\nImproved image path processing\nImproved query string handling\nOptimization to image handling supporting URL encoded filenames\nUse global composer when available rather than Grv provided one\nUse PHP_BINARY constant rather than php executable\nUpdated Doctrine Cache library\nUpdated Symfony libraries\nMoved convertUrl() method to Uri object\n\n\n\nFix incorrect slug causing problems with CLI uninstall\nFix Twig runtime error with assets pipeline in sufolder installations\nFix for + in image filenames\nFix for dot files causing issues with page processing\nFix for Uri path detection on Windows platform\nFix for alternative media resolutions\nFix for modularTypes key properties"},"0.9.27":{"date":"05\/09\/2015","content":"1. [](#new)\n * Added new composer CLI command\n * Added page-level summary header overrides\n * Added `size` back for Media objects\n * Refactored Backup command in preparation for admin plugin\n * Added a new `parseLinks` method to Plugins class\n * Added `starts_with` and `ends_with` Twig filters\n2. [](#improved)\n * Optimized install of vendor libraries for speed improvement\n * Improved configuration handling in preparation for admin plugin\n * Cache optimization: Don't cache Twig templates when you pass dynamic params\n * Moved `Utils::rcopy` to `Folder::rcopy`\n * Improved `Folder::doDelete`\n * Added check for required Curl in GPM\n * Updated included composer.phar to latest version\n * Various blueprint fixes for admin plugin\n * Various PSR and code cleanup tasks\n3. [](#bugfix)\n * Fix issue with Gzip not working with `onShutDown()` event\n * Fix for URLs with trailing slashes\n * Handle condition where certain errors resulted in blank page\n * Fix for issue with theme name equal to base_url and asset pipeline\n * Fix to properly normalize font rewrite path\n * Fix for absolute URLs below the current page\n * Fix for `..` page references","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new composer CLI command<\/li>\n<li>Added page-level summary header overrides<\/li>\n<li>Added <code>size<\/code> back for Media objects<\/li>\n<li>Refactored Backup command in preparation for admin plugin<\/li>\n<li>Added a new <code>parseLinks<\/code> method to Plugins class<\/li>\n<li>Added <code>starts_with<\/code> and <code>ends_with<\/code> Twig filters<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Optimized install of vendor libraries for speed improvement<\/li>\n<li>Improved configuration handling in preparation for admin plugin<\/li>\n<li>Cache optimization: Don't cache Twig templates when you pass dynamic params<\/li>\n<li>Moved <code>Utils::rcopy<\/code> to <code>Folder::rcopy<\/code><\/li>\n<li>Improved <code>Folder::doDelete<\/code><\/li>\n<li>Added check for required Curl in GPM<\/li>\n<li>Updated included composer.phar to latest version<\/li>\n<li>Various blueprint fixes for admin plugin<\/li>\n<li>Various PSR and code cleanup tasks<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix issue with Gzip not working with <code>onShutDown()<\/code> event<\/li>\n<li>Fix for URLs with trailing slashes<\/li>\n<li>Handle condition where certain errors resulted in blank page<\/li>\n<li>Fix for issue with theme name equal to base_url and asset pipeline<\/li>\n<li>Fix to properly normalize font rewrite path<\/li>\n<li>Fix for absolute URLs below the current page<\/li>\n<li>Fix for <code>..<\/code> page references<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new composer CLI command\nAdded page-level summary header overrides\nAdded size back for Media objects\nRefactored Backup command in preparation for admin plugin\nAdded a new parseLinks method to Plugins class\nAdded starts_with and ends_with Twig filters\n\n\n\nOptimized install of vendor libraries for speed improvement\nImproved configuration handling in preparation for admin plugin\nCache optimization: Don't cache Twig templates when you pass dynamic params\nMoved Utils::rcopy to Folder::rcopy\nImproved Folder::doDelete\nAdded check for required Curl in GPM\nUpdated included composer.phar to latest version\nVarious blueprint fixes for admin plugin\nVarious PSR and code cleanup tasks\n\n\n\nFix issue with Gzip not working with onShutDown() event\nFix for URLs with trailing slashes\nHandle condition where certain errors resulted in blank page\nFix for issue with theme name equal to base_url and asset pipeline\nFix to properly normalize font rewrite path\nFix for absolute URLs below the current page\nFix for .. page references"},"0.9.26":{"date":"04\/24\/2015","content":"3. [](#bugfix)\n * Fixed issue with homepage routes failing with 'dirname' error","content_html":"<ol start=\"3\">\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue with homepage routes failing with 'dirname' error<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fixed issue with homepage routes failing with 'dirname' error"},"0.9.25":{"date":"04\/24\/2015","content":"1. [](#new)\n * Added support for E-Tag, Last-Modified, Cache-Control and Page-based expires headers\n2. [](#improved)\n * Refactored media image handling to make it more flexible and support absolute paths\n * Refactored page modification check process to make it faster\n * User account improvements in preparation for admin plugin\n * Protect against timing attacks\n * Reset default system expires time to 0 seconds (can override if you need to)\n3. [](#bugfix)\n * Fix issues with spaces in webroot when using `bin\/grav install`\n * Fix for spaces in relative directory\n * Bug fix in collection filtering","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added support for E-Tag, Last-Modified, Cache-Control and Page-based expires headers<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Refactored media image handling to make it more flexible and support absolute paths<\/li>\n<li>Refactored page modification check process to make it faster<\/li>\n<li>User account improvements in preparation for admin plugin<\/li>\n<li>Protect against timing attacks<\/li>\n<li>Reset default system expires time to 0 seconds (can override if you need to)<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix issues with spaces in webroot when using <code>bin\/grav install<\/code><\/li>\n<li>Fix for spaces in relative directory<\/li>\n<li>Bug fix in collection filtering<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added support for E-Tag, Last-Modified, Cache-Control and Page-based expires headers\n\n\n\nRefactored media image handling to make it more flexible and support absolute paths\nRefactored page modification check process to make it faster\nUser account improvements in preparation for admin plugin\nProtect against timing attacks\nReset default system expires time to 0 seconds (can override if you need to)\n\n\n\nFix issues with spaces in webroot when using bin\/grav install\nFix for spaces in relative directory\nBug fix in collection filtering"},"0.9.24":{"date":"04\/15\/2015","content":"1. [](#new)\n * Added support for chunked downloads of Assets\n * Added new `onBeforeDownload()` event\n * Added new `download()` and `getMimeType()` methods to Utils class\n * Added configuration option for supported page types\n * Added assets and media timestamp options (off by default)\n * Added page expires configuration option\n2. [](#bugfix)\n * Fixed issue with Nginx\/Gzip and `ob_flush()` throwing error\n * Fixed assets actions on 'direct media' URLs\n * Fix for 'direct assets` with any parameters","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added support for chunked downloads of Assets<\/li>\n<li>Added new <code>onBeforeDownload()<\/code> event<\/li>\n<li>Added new <code>download()<\/code> and <code>getMimeType()<\/code> methods to Utils class<\/li>\n<li>Added configuration option for supported page types<\/li>\n<li>Added assets and media timestamp options (off by default)<\/li>\n<li>Added page expires configuration option<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue with Nginx\/Gzip and <code>ob_flush()<\/code> throwing error<\/li>\n<li>Fixed assets actions on 'direct media' URLs<\/li>\n<li>Fix for 'direct assets` with any parameters<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added support for chunked downloads of Assets\nAdded new onBeforeDownload() event\nAdded new download() and getMimeType() methods to Utils class\nAdded configuration option for supported page types\nAdded assets and media timestamp options (off by default)\nAdded page expires configuration option\n\n\n\nFixed issue with Nginx\/Gzip and ob_flush() throwing error\nFixed assets actions on 'direct media' URLs\nFix for 'direct assets` with any parameters"},"0.9.23":{"date":"04\/09\/2015","content":"1. [](#bugfix)\n * Fix for broken GPM `selfupgrade` (Grav 0.9.21 and 0.9.22 will need to manually upgrade to this version)","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for broken GPM <code>selfupgrade<\/code> (Grav 0.9.21 and 0.9.22 will need to manually upgrade to this version)<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fix for broken GPM selfupgrade (Grav 0.9.21 and 0.9.22 will need to manually upgrade to this version)"},"0.9.22":{"date":"04\/08\/2015","content":"1. [](#bugfix)\n * Fix to normalize GRAV_ROOT path for Windows\n * Fix to normalize Media image paths for Windows\n * Fix for GPM `selfupgrade` when you are on latest version","content_html":"<ol>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix to normalize GRAV_ROOT path for Windows<\/li>\n<li>Fix to normalize Media image paths for Windows<\/li>\n<li>Fix for GPM <code>selfupgrade<\/code> when you are on latest version<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Fix to normalize GRAV_ROOT path for Windows\nFix to normalize Media image paths for Windows\nFix for GPM selfupgrade when you are on latest version"},"0.9.21":{"date":"04\/07\/2015","content":"1. [](#new)\n * Major Media functionality enhancements: SVG, Animated GIF, Video support!\n * Added ability to configure default image quality in system configuration\n * Added `sizes` attributes for custom retina image breakpoints\n2. [](#improved)\n * Don't scale @1x retina images\n * Add filter to Iterator class\n * Updated various composer packages\n * Various PSR fixes","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Major Media functionality enhancements: SVG, Animated GIF, Video support!<\/li>\n<li>Added ability to configure default image quality in system configuration<\/li>\n<li>Added <code>sizes<\/code> attributes for custom retina image breakpoints<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Don't scale @1x retina images<\/li>\n<li>Add filter to Iterator class<\/li>\n<li>Updated various composer packages<\/li>\n<li>Various PSR fixes<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Major Media functionality enhancements: SVG, Animated GIF, Video support!\nAdded ability to configure default image quality in system configuration\nAdded sizes attributes for custom retina image breakpoints\n\n\n\nDon't scale @1x retina images\nAdd filter to Iterator class\nUpdated various composer packages\nVarious PSR fixes"},"0.9.20":{"date":"03\/24\/2015","content":"1. [](#new)\n * Added `addAsyncJs()` and `addDeferJs()` to Assets manager\n * Added support for extranal URL redirects\n2. [](#improved)\n * Fix unpredictable asset ordering when set from plugin\/system\n * Updated `nginx.conf` to ensure system assets are accessible\n * Ensure images are served as static files in Nginx\n * Updated vendor libraries to latest versions\n * Updated included composer.phar to latest version\n3. [](#bugfix)\n * Fixed issue with markdown links to `#` breaking HTML","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <code>addAsyncJs()<\/code> and <code>addDeferJs()<\/code> to Assets manager<\/li>\n<li>Added support for extranal URL redirects<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Fix unpredictable asset ordering when set from plugin\/system<\/li>\n<li>Updated <code>nginx.conf<\/code> to ensure system assets are accessible<\/li>\n<li>Ensure images are served as static files in Nginx<\/li>\n<li>Updated vendor libraries to latest versions<\/li>\n<li>Updated included composer.phar to latest version<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue with markdown links to <code>#<\/code> breaking HTML<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added addAsyncJs() and addDeferJs() to Assets manager\nAdded support for extranal URL redirects\n\n\n\nFix unpredictable asset ordering when set from plugin\/system\nUpdated nginx.conf to ensure system assets are accessible\nEnsure images are served as static files in Nginx\nUpdated vendor libraries to latest versions\nUpdated included composer.phar to latest version\n\n\n\nFixed issue with markdown links to # breaking HTML"},"0.9.19":{"date":"02\/28\/2015","content":"1. [](#new)\n * Added named assets capability and bundled jQuery into Grav core\n * Added `first()` and `last()` to `Iterator` class\n2. [](#improved)\n * Improved page modification routine to skip _dot files_\n * Only use files to calculate page modification dates\n * Broke out Folder iterators into their own classes\n * Various Sensiolabs Insight fixes\n3. [](#bugfix)\n * Fixed `Iterator.nth()` method","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added named assets capability and bundled jQuery into Grav core<\/li>\n<li>Added <code>first()<\/code> and <code>last()<\/code> to <code>Iterator<\/code> class<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved page modification routine to skip <em>dot files<\/em><\/li>\n<li>Only use files to calculate page modification dates<\/li>\n<li>Broke out Folder iterators into their own classes<\/li>\n<li>Various Sensiolabs Insight fixes<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed <code>Iterator.nth()<\/code> method<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added named assets capability and bundled jQuery into Grav core\nAdded first() and last() to Iterator class\n\n\n\nImproved page modification routine to skip dot files\nOnly use files to calculate page modification dates\nBroke out Folder iterators into their own classes\nVarious Sensiolabs Insight fixes\n\n\n\nFixed Iterator.nth() method"},"0.9.18":{"date":"02\/19\/2015","content":"1. [](#new)\n * Added ability for GPM `install` to automatically install `_demo` content if found (w\/backup)\n * Added ability for themes and plugins to have dependencies required to install via GPM\n * Added ability to override the system timezone rather than relying on server setting only\n * Added new Twig filter `random_string` for generating random id values\n * Added new Twig filter `markdown` for on-the-fly markdown processing\n * Added new Twig filter `absoluteUrl` to convert relative to absolute URLs\n * Added new `processTemplate()` method to Twig object for on-the-fly processing of twig template\n * Added `rcopy()` and `contains()` helper methods in Utils\n2. [](#improved)\n * Provided new `param_sep` variable to better support Apache on Windows\n * Moved parsedown configuration into the trait\n * Added optional **deep-copy** option to `mergeConfig()` for plugins\n * Updated bundled `composer.phar` package\n * Various Sensiolabs Insight fixes - Silver level now!\n * Various PSR Fixes\n3. [](#bugfix)\n * Fix for windows platforms not displaying installed themes\/plugins via GPM\n * Fix page IDs not picking up folder-only pages","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added ability for GPM <code>install<\/code> to automatically install <code>_demo<\/code> content if found (w\/backup)<\/li>\n<li>Added ability for themes and plugins to have dependencies required to install via GPM<\/li>\n<li>Added ability to override the system timezone rather than relying on server setting only<\/li>\n<li>Added new Twig filter <code>random_string<\/code> for generating random id values<\/li>\n<li>Added new Twig filter <code>markdown<\/code> for on-the-fly markdown processing<\/li>\n<li>Added new Twig filter <code>absoluteUrl<\/code> to convert relative to absolute URLs<\/li>\n<li>Added new <code>processTemplate()<\/code> method to Twig object for on-the-fly processing of twig template<\/li>\n<li>Added <code>rcopy()<\/code> and <code>contains()<\/code> helper methods in Utils<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Provided new <code>param_sep<\/code> variable to better support Apache on Windows<\/li>\n<li>Moved parsedown configuration into the trait<\/li>\n<li>Added optional <strong>deep-copy<\/strong> option to <code>mergeConfig()<\/code> for plugins<\/li>\n<li>Updated bundled <code>composer.phar<\/code> package<\/li>\n<li>Various Sensiolabs Insight fixes - Silver level now!<\/li>\n<li>Various PSR Fixes<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for windows platforms not displaying installed themes\/plugins via GPM<\/li>\n<li>Fix page IDs not picking up folder-only pages<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added ability for GPM install to automatically install _demo content if found (w\/backup)\nAdded ability for themes and plugins to have dependencies required to install via GPM\nAdded ability to override the system timezone rather than relying on server setting only\nAdded new Twig filter random_string for generating random id values\nAdded new Twig filter markdown for on-the-fly markdown processing\nAdded new Twig filter absoluteUrl to convert relative to absolute URLs\nAdded new processTemplate() method to Twig object for on-the-fly processing of twig template\nAdded rcopy() and contains() helper methods in Utils\n\n\n\nProvided new param_sep variable to better support Apache on Windows\nMoved parsedown configuration into the trait\nAdded optional deep-copy option to mergeConfig() for plugins\nUpdated bundled composer.phar package\nVarious Sensiolabs Insight fixes - Silver level now!\nVarious PSR Fixes\n\n\n\nFix for windows platforms not displaying installed themes\/plugins via GPM\nFix page IDs not picking up folder-only pages"},"0.9.17":{"date":"02\/05\/2015","content":"1. [](#new)\n * Added **full HHVM support!** Get your speed on with Facebook's crazy fast PHP JIT compiler\n2. [](#improved)\n * More flexible page summary control\n * Support **CamelCase** plugin and theme class names. Replaces dashes and underscores\n * Moved summary delimiter into `site.yaml` so it can be configurable\n * Various PSR fixes\n3. [](#bugfix)\n * Fix for `mergeConfig()` not falling back to defaults\n * Fix for `addInlineCss()` and `addInlineJs()` Assets not working between Twig tags\n * Fix for Markdown adding HTML tags into inline CSS and JS","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <strong>full HHVM support!<\/strong> Get your speed on with Facebook's crazy fast PHP JIT compiler<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>More flexible page summary control<\/li>\n<li>Support <strong>CamelCase<\/strong> plugin and theme class names. Replaces dashes and underscores<\/li>\n<li>Moved summary delimiter into <code>site.yaml<\/code> so it can be configurable<\/li>\n<li>Various PSR fixes<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for <code>mergeConfig()<\/code> not falling back to defaults<\/li>\n<li>Fix for <code>addInlineCss()<\/code> and <code>addInlineJs()<\/code> Assets not working between Twig tags<\/li>\n<li>Fix for Markdown adding HTML tags into inline CSS and JS<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added full HHVM support! Get your speed on with Facebook's crazy fast PHP JIT compiler\n\n\n\nMore flexible page summary control\nSupport CamelCase plugin and theme class names. Replaces dashes and underscores\nMoved summary delimiter into site.yaml so it can be configurable\nVarious PSR fixes\n\n\n\nFix for mergeConfig() not falling back to defaults\nFix for addInlineCss() and addInlineJs() Assets not working between Twig tags\nFix for Markdown adding HTML tags into inline CSS and JS"},"0.9.16":{"date":"01\/30\/2015","content":"1. [](#new)\n * Added **Retina** and **Responsive** image support via Grav media and `srcset` image attribute\n * Added image debug option that overlays responsive resolution\n * Added a new image cache stream\n2. [](#improved)\n * Improved the markdown Lightbox functionality to better mimic Twig version\n * Fullsize Lightbox can now have filters applied\n * Added a new `mergeConfig()` method to Plugin class to merge system + page header configuration\n * Added a new `disable()` method to Plugin class to programmatically disable a plugin\n * Updated Parsedown and Parsedown Extra to address bugs\n * Various PSR fixes\n3. [](#bugfix)\n * Fix bug with image dispatch in traditionally _non-routable_ pages\n * Fix for markdown link not working on non-current pages\n * Fix for markdown images not being found on homepage","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <strong>Retina<\/strong> and <strong>Responsive<\/strong> image support via Grav media and <code>srcset<\/code> image attribute<\/li>\n<li>Added image debug option that overlays responsive resolution<\/li>\n<li>Added a new image cache stream<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Improved the markdown Lightbox functionality to better mimic Twig version<\/li>\n<li>Fullsize Lightbox can now have filters applied<\/li>\n<li>Added a new <code>mergeConfig()<\/code> method to Plugin class to merge system + page header configuration<\/li>\n<li>Added a new <code>disable()<\/code> method to Plugin class to programmatically disable a plugin<\/li>\n<li>Updated Parsedown and Parsedown Extra to address bugs<\/li>\n<li>Various PSR fixes<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix bug with image dispatch in traditionally <em>non-routable<\/em> pages<\/li>\n<li>Fix for markdown link not working on non-current pages<\/li>\n<li>Fix for markdown images not being found on homepage<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added Retina and Responsive image support via Grav media and srcset image attribute\nAdded image debug option that overlays responsive resolution\nAdded a new image cache stream\n\n\n\nImproved the markdown Lightbox functionality to better mimic Twig version\nFullsize Lightbox can now have filters applied\nAdded a new mergeConfig() method to Plugin class to merge system + page header configuration\nAdded a new disable() method to Plugin class to programmatically disable a plugin\nUpdated Parsedown and Parsedown Extra to address bugs\nVarious PSR fixes\n\n\n\nFix bug with image dispatch in traditionally non-routable pages\nFix for markdown link not working on non-current pages\nFix for markdown images not being found on homepage"},"0.9.15":{"date":"01\/23\/2015","content":"3. [](#bugfix)\n * Typo in video mime types\n * Fix for old `markdown_extra` system setting not getting picked up\n * Fix in regex for Markdown links with numeric values in path\n * Fix for broken image routing mechanism that got broken at some point\n * Fix for markdown images\/links in pages with page slug override","content_html":"<ol start=\"3\">\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Typo in video mime types<\/li>\n<li>Fix for old <code>markdown_extra<\/code> system setting not getting picked up<\/li>\n<li>Fix in regex for Markdown links with numeric values in path<\/li>\n<li>Fix for broken image routing mechanism that got broken at some point<\/li>\n<li>Fix for markdown images\/links in pages with page slug override<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Typo in video mime types\nFix for old markdown_extra system setting not getting picked up\nFix in regex for Markdown links with numeric values in path\nFix for broken image routing mechanism that got broken at some point\nFix for markdown images\/links in pages with page slug override"},"0.9.14":{"date":"01\/23\/2015","content":"1. [](#new)\n * Added **GZip** support\n * Added multiple configurations via `setup.php`\n * Added base structure for unit tests\n * New `onPageContentRaw()` plugin event that processes before any page processing\n * Added ability to dynamically set Metadata on page\n * Added ability to dynamically configure Markdown processing via Parsedown options\n2. [](#improved)\n * Refactored `page.content()` method to be more flexible and reliable\n * Various updates and fixes for streams resulting in better multi-site support\n * Updated Twig, Parsedown, ParsedownExtra, DoctrineCache libraries\n * Refactored Parsedown trait\n * Force modular pages to be non-visible in menus\n * Moved RewriteBase before Exploits in `.htaccess`\n * Added standard video formats to Media support\n * Added priority for inline assets\n * Check for uniqueness when adding multiple inline assets\n * Improved support for Twig-based URLs inside Markdown links and images\n * Improved Twig `url()` function\n3. [](#bugfix)\n * Fix for HTML entities quotes in Metadata values\n * Fix for `published` setting to have precedent of `publish_date` and `unpublish_date`\n * Fix for `onShutdown()` events not closing connections properly in **php-fpm** environments","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added <strong>GZip<\/strong> support<\/li>\n<li>Added multiple configurations via <code>setup.php<\/code><\/li>\n<li>Added base structure for unit tests<\/li>\n<li>New <code>onPageContentRaw()<\/code> plugin event that processes before any page processing<\/li>\n<li>Added ability to dynamically set Metadata on page<\/li>\n<li>Added ability to dynamically configure Markdown processing via Parsedown options<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Refactored <code>page.content()<\/code> method to be more flexible and reliable<\/li>\n<li>Various updates and fixes for streams resulting in better multi-site support<\/li>\n<li>Updated Twig, Parsedown, ParsedownExtra, DoctrineCache libraries<\/li>\n<li>Refactored Parsedown trait<\/li>\n<li>Force modular pages to be non-visible in menus<\/li>\n<li>Moved RewriteBase before Exploits in <code>.htaccess<\/code><\/li>\n<li>Added standard video formats to Media support<\/li>\n<li>Added priority for inline assets<\/li>\n<li>Check for uniqueness when adding multiple inline assets<\/li>\n<li>Improved support for Twig-based URLs inside Markdown links and images<\/li>\n<li>Improved Twig <code>url()<\/code> function<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for HTML entities quotes in Metadata values<\/li>\n<li>Fix for <code>published<\/code> setting to have precedent of <code>publish_date<\/code> and <code>unpublish_date<\/code><\/li>\n<li>Fix for <code>onShutdown()<\/code> events not closing connections properly in <strong>php-fpm<\/strong> environments<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added GZip support\nAdded multiple configurations via setup.php\nAdded base structure for unit tests\nNew onPageContentRaw() plugin event that processes before any page processing\nAdded ability to dynamically set Metadata on page\nAdded ability to dynamically configure Markdown processing via Parsedown options\n\n\n\nRefactored page.content() method to be more flexible and reliable\nVarious updates and fixes for streams resulting in better multi-site support\nUpdated Twig, Parsedown, ParsedownExtra, DoctrineCache libraries\nRefactored Parsedown trait\nForce modular pages to be non-visible in menus\nMoved RewriteBase before Exploits in .htaccess\nAdded standard video formats to Media support\nAdded priority for inline assets\nCheck for uniqueness when adding multiple inline assets\nImproved support for Twig-based URLs inside Markdown links and images\nImproved Twig url() function\n\n\n\nFix for HTML entities quotes in Metadata values\nFix for published setting to have precedent of publish_date and unpublish_date\nFix for onShutdown() events not closing connections properly in php-fpm environments"},"0.9.13":{"date":"01\/09\/2015","content":"1. [](#new)\n * Added new published `true|false` state in page headers\n * Added `publish_date` in page headers to automatically publish page\n * Added `unpublish_date` in page headers to automatically unpublish page\n * Added `dateRange()` capability for collections\n * Added ability to dynamically control Cache lifetime programmatically\n * Added ability to sort by anything in the page header. E.g. `sort: header.taxonomy.year`\n * Added various helper methods to collections: `copy, nonVisible, modular, nonModular, published, nonPublished, nonRoutable`\n2. [](#improved)\n * Modified all Collection methods so they can be chained together: `$collection->published()->visible()`\n * Set default Cache lifetime to default of 1 week (604800 seconds) - was infinite\n * House-cleaning of some unused methods in Pages object\n3. [](#bugfix)\n * Fix `uninstall` GPM command that was broken in last release\n * Fix for intermittent `undefined index` error when working with Collections\n * Fix for date of some pages being set to incorrect future timestamps","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new published <code>true|false<\/code> state in page headers<\/li>\n<li>Added <code>publish_date<\/code> in page headers to automatically publish page<\/li>\n<li>Added <code>unpublish_date<\/code> in page headers to automatically unpublish page<\/li>\n<li>Added <code>dateRange()<\/code> capability for collections<\/li>\n<li>Added ability to dynamically control Cache lifetime programmatically<\/li>\n<li>Added ability to sort by anything in the page header. E.g. <code>sort: header.taxonomy.year<\/code><\/li>\n<li>Added various helper methods to collections: <code>copy, nonVisible, modular, nonModular, published, nonPublished, nonRoutable<\/code><\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Modified all Collection methods so they can be chained together: <code>$collection->published()->visible()<\/code><\/li>\n<li>Set default Cache lifetime to default of 1 week (604800 seconds) - was infinite<\/li>\n<li>House-cleaning of some unused methods in Pages object<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix <code>uninstall<\/code> GPM command that was broken in last release<\/li>\n<li>Fix for intermittent <code>undefined index<\/code> error when working with Collections<\/li>\n<li>Fix for date of some pages being set to incorrect future timestamps<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new published true|false state in page headers\nAdded publish_date in page headers to automatically publish page\nAdded unpublish_date in page headers to automatically unpublish page\nAdded dateRange() capability for collections\nAdded ability to dynamically control Cache lifetime programmatically\nAdded ability to sort by anything in the page header. E.g. sort: header.taxonomy.year\nAdded various helper methods to collections: copy, nonVisible, modular, nonModular, published, nonPublished, nonRoutable\n\n\n\nModified all Collection methods so they can be chained together: $collection->published()->visible()\nSet default Cache lifetime to default of 1 week (604800 seconds) - was infinite\nHouse-cleaning of some unused methods in Pages object\n\n\n\nFix uninstall GPM command that was broken in last release\nFix for intermittent undefined index error when working with Collections\nFix for date of some pages being set to incorrect future timestamps"},"0.9.12":{"date":"01\/06\/2015","content":"1. [](#new)\n * Added an all-access robots.txt file for search engines\n * Added new GPM `uninstall` command\n * Added support for **in-page** Twig processing in **modular** pages\n * Added configurable support for `undefined` Twig functions and filters\n2. [](#improved)\n * Fall back to default `.html` template if error occurs on non-html pages\n * Added ability to have PSR-1 friendly plugin names (CamelCase, no-dashes)\n * Fix to `composer.json` to deter API rate-limit errors\n * Added **non-exception-throwing** handler for undefined methods on `Medium` objects\n3. [](#bugfix)\n * Fix description for `self-upgrade` method of GPM command\n * Fix for incorrect version number when performing GPM `update`\n * Fix for argument description of GPM `install` command\n * Fix for recalcitrant CodeKit mac application","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added an all-access robots.txt file for search engines<\/li>\n<li>Added new GPM <code>uninstall<\/code> command<\/li>\n<li>Added support for <strong>in-page<\/strong> Twig processing in <strong>modular<\/strong> pages<\/li>\n<li>Added configurable support for <code>undefined<\/code> Twig functions and filters<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Fall back to default <code>.html<\/code> template if error occurs on non-html pages<\/li>\n<li>Added ability to have PSR-1 friendly plugin names (CamelCase, no-dashes)<\/li>\n<li>Fix to <code>composer.json<\/code> to deter API rate-limit errors<\/li>\n<li>Added <strong>non-exception-throwing<\/strong> handler for undefined methods on <code>Medium<\/code> objects<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix description for <code>self-upgrade<\/code> method of GPM command<\/li>\n<li>Fix for incorrect version number when performing GPM <code>update<\/code><\/li>\n<li>Fix for argument description of GPM <code>install<\/code> command<\/li>\n<li>Fix for recalcitrant CodeKit mac application<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added an all-access robots.txt file for search engines\nAdded new GPM uninstall command\nAdded support for in-page Twig processing in modular pages\nAdded configurable support for undefined Twig functions and filters\n\n\n\nFall back to default .html template if error occurs on non-html pages\nAdded ability to have PSR-1 friendly plugin names (CamelCase, no-dashes)\nFix to composer.json to deter API rate-limit errors\nAdded non-exception-throwing handler for undefined methods on Medium objects\n\n\n\nFix description for self-upgrade method of GPM command\nFix for incorrect version number when performing GPM update\nFix for argument description of GPM install command\nFix for recalcitrant CodeKit mac application"},"0.9.11":{"date":"12\/21\/2014","content":"1. [](#new)\n * Added support for simple redirects as well as routes\n2. [](#improved)\n * Handle Twig errors more cleanly\n3. [](#bugfix)\n * Fix for error caused by invalid or missing user agent string\n * Fix for directory relative links and URL fragments (#pagelink)\n * Fix for relative links with no subfolder in `base_url`","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added support for simple redirects as well as routes<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Handle Twig errors more cleanly<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for error caused by invalid or missing user agent string<\/li>\n<li>Fix for directory relative links and URL fragments (#pagelink)<\/li>\n<li>Fix for relative links with no subfolder in <code>base_url<\/code><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added support for simple redirects as well as routes\n\n\n\nHandle Twig errors more cleanly\n\n\n\nFix for error caused by invalid or missing user agent string\nFix for directory relative links and URL fragments (#pagelink)\nFix for relative links with no subfolder in base_url"},"0.9.10":{"date":"12\/12\/2014","content":"1. [](#new)\n * Added Facebook-style `nicetime` date Twig filter\n2. [](#improved)\n * Moved `clear-cache` functionality into Cache object required for Admin plugin\n3. [](#bugfix)\n * Fix for undefined index with previous\/next buttons","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added Facebook-style <code>nicetime<\/code> date Twig filter<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Moved <code>clear-cache<\/code> functionality into Cache object required for Admin plugin<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for undefined index with previous\/next buttons<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added Facebook-style nicetime date Twig filter\n\n\n\nMoved clear-cache functionality into Cache object required for Admin plugin\n\n\n\nFix for undefined index with previous\/next buttons"},"0.9.9":{"date":"12\/05\/2014","content":"1. [](#new)\n * Added new `@page` collection type\n * Added `ksort` and `contains` Twig filters\n * Added `gist` Twig function\n2. [](#improved)\n * Refactored Page previous\/next\/adjacent functionality\n * Updated to Symfony 2.6 for yaml\/console\/event-dispatcher libraries\n * More PSR code fixes\n3. [](#bugfix)\n * Fix for over-escaped apostrophes in YAML","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>@page<\/code> collection type<\/li>\n<li>Added <code>ksort<\/code> and <code>contains<\/code> Twig filters<\/li>\n<li>Added <code>gist<\/code> Twig function<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Refactored Page previous\/next\/adjacent functionality<\/li>\n<li>Updated to Symfony 2.6 for yaml\/console\/event-dispatcher libraries<\/li>\n<li>More PSR code fixes<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for over-escaped apostrophes in YAML<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new @page collection type\nAdded ksort and contains Twig filters\nAdded gist Twig function\n\n\n\nRefactored Page previous\/next\/adjacent functionality\nUpdated to Symfony 2.6 for yaml\/console\/event-dispatcher libraries\nMore PSR code fixes\n\n\n\nFix for over-escaped apostrophes in YAML"},"0.9.8":{"date":"12\/01\/2014","content":"1. [](#new)\n * Added configuration option to set default lifetime on cache saves\n * Added ability to set HTTP status code from page header\n * Implemented simple wild-card custom routing\n2. [](#improved)\n * Fixed elusive double load to fully cache issue (crossing fingers...)\n * Ensure Twig tags are treated as block items in markdown\n * Removed some older deprecated methods\n * Ensure onPageContentProcessed() event only fires when not cached\n * More PSR code fixes\n3. [](#bugfix)\n * Fix issue with miscalculation of blog separator location `===`","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added configuration option to set default lifetime on cache saves<\/li>\n<li>Added ability to set HTTP status code from page header<\/li>\n<li>Implemented simple wild-card custom routing<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Fixed elusive double load to fully cache issue (crossing fingers...)<\/li>\n<li>Ensure Twig tags are treated as block items in markdown<\/li>\n<li>Removed some older deprecated methods<\/li>\n<li>Ensure onPageContentProcessed() event only fires when not cached<\/li>\n<li>More PSR code fixes<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix issue with miscalculation of blog separator location <code>===<\/code><\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added configuration option to set default lifetime on cache saves\nAdded ability to set HTTP status code from page header\nImplemented simple wild-card custom routing\n\n\n\nFixed elusive double load to fully cache issue (crossing fingers...)\nEnsure Twig tags are treated as block items in markdown\nRemoved some older deprecated methods\nEnsure onPageContentProcessed() event only fires when not cached\nMore PSR code fixes\n\n\n\nFix issue with miscalculation of blog separator location ==="},"0.9.7":{"date":"11\/24\/2014","content":"1. [](#improved)\n * Nginx configuration updated\n * Added gitter.im badge to README\n * Removed `set_time_limit()` and put checks around `ignore_user_abort`\n * More PSR code fixes\n2. [](#bugfix)\n * Fix issue with non-valid asset path showing up when they shouldn't\n * Fix for JS asset pipeline and scripts that don't end in `;`\n * Fix for schema-based markdown URLs broken routes (eg `mailto:`)","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Nginx configuration updated<\/li>\n<li>Added gitter.im badge to README<\/li>\n<li>Removed <code>set_time_limit()<\/code> and put checks around <code>ignore_user_abort<\/code><\/li>\n<li>More PSR code fixes<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix issue with non-valid asset path showing up when they shouldn't<\/li>\n<li>Fix for JS asset pipeline and scripts that don't end in <code>;<\/code><\/li>\n<li>Fix for schema-based markdown URLs broken routes (eg <code>mailto:<\/code>)<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Nginx configuration updated\nAdded gitter.im badge to README\nRemoved set_time_limit() and put checks around ignore_user_abort\nMore PSR code fixes\n\n\n\nFix issue with non-valid asset path showing up when they shouldn't\nFix for JS asset pipeline and scripts that don't end in ;\nFix for schema-based markdown URLs broken routes (eg mailto:)"},"0.9.6":{"date":"11\/17\/2014","content":"1. [](#improved)\n * Moved base_url variables into Grav container\n * Forced media sorting to use natural sort order by default\n * Various PSR code tidying\n * Added filename, extension, thumb to all medium objects\n2. [](#bugfix)\n * Fix for infinite loop in page.content()\n * Fix hostname for configuration overrides\n * Fix for cached configuration\n * Fix for relative URLs in markdown on installs with no base_url\n * Fix for page media images with uppercase extension","content_html":"<ol>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Moved base_url variables into Grav container<\/li>\n<li>Forced media sorting to use natural sort order by default<\/li>\n<li>Various PSR code tidying<\/li>\n<li>Added filename, extension, thumb to all medium objects<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix for infinite loop in page.content()<\/li>\n<li>Fix hostname for configuration overrides<\/li>\n<li>Fix for cached configuration<\/li>\n<li>Fix for relative URLs in markdown on installs with no base_url<\/li>\n<li>Fix for page media images with uppercase extension<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Moved base_url variables into Grav container\nForced media sorting to use natural sort order by default\nVarious PSR code tidying\nAdded filename, extension, thumb to all medium objects\n\n\n\nFix for infinite loop in page.content()\nFix hostname for configuration overrides\nFix for cached configuration\nFix for relative URLs in markdown on installs with no base_url\nFix for page media images with uppercase extension"},"0.9.5":{"date":"11\/09\/2014","content":"1. [](#new)\n * Added quality setting to medium for compression configuration of images\n * Added new onPageContentProcessed() event that is post-content processing but pre-caching\n2. [](#improved)\n * Added support for AND and OR taxonomy filtering. AND by default (was OR)\n * Added specific clearing options for CLI clear-cache command\n * Moved environment method to URI so it can be accessible in plugins and themes\n * Set Grav's output variable to public so it can be manipulated in onOutputGenerated event\n * Updated vendor libraries to latest versions\n * Better handing of 'home' in active menu state detection\n * Various PSR code tidying\n * Improved some error messages and notices\n3. [](#bugfix)\n * Force route rebuild when configuration changes\n * Fix for 'installed undefined' error in CLI versions command\n * Do not remove the JSON\/Text error handlers\n * Fix for supporting inline JS and CSS when Asset pipeline enabled\n * Fix for Data URLs in CSS being badly formed\n * Fix Markdown links with fragment and query elements","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added quality setting to medium for compression configuration of images<\/li>\n<li>Added new onPageContentProcessed() event that is post-content processing but pre-caching<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Added support for AND and OR taxonomy filtering. AND by default (was OR)<\/li>\n<li>Added specific clearing options for CLI clear-cache command<\/li>\n<li>Moved environment method to URI so it can be accessible in plugins and themes<\/li>\n<li>Set Grav's output variable to public so it can be manipulated in onOutputGenerated event<\/li>\n<li>Updated vendor libraries to latest versions<\/li>\n<li>Better handing of 'home' in active menu state detection<\/li>\n<li>Various PSR code tidying<\/li>\n<li>Improved some error messages and notices<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Force route rebuild when configuration changes<\/li>\n<li>Fix for 'installed undefined' error in CLI versions command<\/li>\n<li>Do not remove the JSON\/Text error handlers<\/li>\n<li>Fix for supporting inline JS and CSS when Asset pipeline enabled<\/li>\n<li>Fix for Data URLs in CSS being badly formed<\/li>\n<li>Fix Markdown links with fragment and query elements<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added quality setting to medium for compression configuration of images\nAdded new onPageContentProcessed() event that is post-content processing but pre-caching\n\n\n\nAdded support for AND and OR taxonomy filtering. AND by default (was OR)\nAdded specific clearing options for CLI clear-cache command\nMoved environment method to URI so it can be accessible in plugins and themes\nSet Grav's output variable to public so it can be manipulated in onOutputGenerated event\nUpdated vendor libraries to latest versions\nBetter handing of 'home' in active menu state detection\nVarious PSR code tidying\nImproved some error messages and notices\n\n\n\nForce route rebuild when configuration changes\nFix for 'installed undefined' error in CLI versions command\nDo not remove the JSON\/Text error handlers\nFix for supporting inline JS and CSS when Asset pipeline enabled\nFix for Data URLs in CSS being badly formed\nFix Markdown links with fragment and query elements"},"0.9.4":{"date":"10\/29\/2014","content":"1. [](#new)\n * New improved Debugbar with messages, timing, config, twig information\n * New exception handling system utilizing Whoops\n * New logging system utilizing Monolog\n * Support for auto-detecting environment configuration\n * New version command for CLI\n * Integrate Twig dump() calls into Debugbar\n2. [](#improved)\n * Selfupgrade now clears cache on successful upgrade\n * Selfupgrade now supports files without extensions\n * Improved error messages when plugin is missing\n * Improved security in .htaccess\n * Support CSS\/JS\/Image assets in vendor\/system folders via .htaccess\n * Add support for system timers\n * Improved and optimized configuration loading\n * Automatically disable Debugbar on non-HTML pages\n * Disable Debugbar by default\n3. [](#bugfix)\n * More YAML blueprint fixes\n * Fix potential double \/\/ in assets\n * Load debugger as early as possible","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>New improved Debugbar with messages, timing, config, twig information<\/li>\n<li>New exception handling system utilizing Whoops<\/li>\n<li>New logging system utilizing Monolog<\/li>\n<li>Support for auto-detecting environment configuration<\/li>\n<li>New version command for CLI<\/li>\n<li>Integrate Twig dump() calls into Debugbar<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Selfupgrade now clears cache on successful upgrade<\/li>\n<li>Selfupgrade now supports files without extensions<\/li>\n<li>Improved error messages when plugin is missing<\/li>\n<li>Improved security in .htaccess<\/li>\n<li>Support CSS\/JS\/Image assets in vendor\/system folders via .htaccess<\/li>\n<li>Add support for system timers<\/li>\n<li>Improved and optimized configuration loading<\/li>\n<li>Automatically disable Debugbar on non-HTML pages<\/li>\n<li>Disable Debugbar by default<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>More YAML blueprint fixes<\/li>\n<li>Fix potential double \/\/ in assets<\/li>\n<li>Load debugger as early as possible<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"New improved Debugbar with messages, timing, config, twig information\nNew exception handling system utilizing Whoops\nNew logging system utilizing Monolog\nSupport for auto-detecting environment configuration\nNew version command for CLI\nIntegrate Twig dump() calls into Debugbar\n\n\n\nSelfupgrade now clears cache on successful upgrade\nSelfupgrade now supports files without extensions\nImproved error messages when plugin is missing\nImproved security in .htaccess\nSupport CSS\/JS\/Image assets in vendor\/system folders via .htaccess\nAdd support for system timers\nImproved and optimized configuration loading\nAutomatically disable Debugbar on non-HTML pages\nDisable Debugbar by default\n\n\n\nMore YAML blueprint fixes\nFix potential double \/\/ in assets\nLoad debugger as early as possible"},"0.9.3":{"date":"10\/09\/2014","content":"1. [](#new)\n * GPM (Grav Package Manager) Added\n * Support for multiple Grav configurations\n * Dynamic media support via URL\n * Added inlineCss and inlineJs support for Assets\n2. [](#improved)\n * YAML caching for increased performance\n * Use stream wrapper in pages, plugins and themes\n * Switched to RocketTheme toolbox for some core functionality\n * Renamed `setup` CLI command to `sandbox`\n * Broke cache types out into multiple directories in the cache folder\n * Removed vendor libs from github repository\n * Various PSR cleanup of code\n * Various Blueprint updates to support upcoming admin plugin\n * Added ability to filter page children for normal\/modular\/all\n * Added `sort_by_key` twig filter\n * Added `visible()` and `routable()` filters to page collections\n * Use session class in shutdown process\n * Improvements to modular page loading\n * Various code cleanup and optimizations\n3. [](#bugfix)\n * Fixed file checking not updating the last modified time. For real this time!\n * Switched debugger to PRODUCTION mode by default\n * Various fixes in URI class for increased reliability","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>GPM (Grav Package Manager) Added<\/li>\n<li>Support for multiple Grav configurations<\/li>\n<li>Dynamic media support via URL<\/li>\n<li>Added inlineCss and inlineJs support for Assets<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>YAML caching for increased performance<\/li>\n<li>Use stream wrapper in pages, plugins and themes<\/li>\n<li>Switched to RocketTheme toolbox for some core functionality<\/li>\n<li>Renamed <code>setup<\/code> CLI command to <code>sandbox<\/code><\/li>\n<li>Broke cache types out into multiple directories in the cache folder<\/li>\n<li>Removed vendor libs from github repository<\/li>\n<li>Various PSR cleanup of code<\/li>\n<li>Various Blueprint updates to support upcoming admin plugin<\/li>\n<li>Added ability to filter page children for normal\/modular\/all<\/li>\n<li>Added <code>sort_by_key<\/code> twig filter<\/li>\n<li>Added <code>visible()<\/code> and <code>routable()<\/code> filters to page collections<\/li>\n<li>Use session class in shutdown process<\/li>\n<li>Improvements to modular page loading<\/li>\n<li>Various code cleanup and optimizations<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed file checking not updating the last modified time. For real this time!<\/li>\n<li>Switched debugger to PRODUCTION mode by default<\/li>\n<li>Various fixes in URI class for increased reliability<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"GPM (Grav Package Manager) Added\nSupport for multiple Grav configurations\nDynamic media support via URL\nAdded inlineCss and inlineJs support for Assets\n\n\n\nYAML caching for increased performance\nUse stream wrapper in pages, plugins and themes\nSwitched to RocketTheme toolbox for some core functionality\nRenamed setup CLI command to sandbox\nBroke cache types out into multiple directories in the cache folder\nRemoved vendor libs from github repository\nVarious PSR cleanup of code\nVarious Blueprint updates to support upcoming admin plugin\nAdded ability to filter page children for normal\/modular\/all\nAdded sort_by_key twig filter\nAdded visible() and routable() filters to page collections\nUse session class in shutdown process\nImprovements to modular page loading\nVarious code cleanup and optimizations\n\n\n\nFixed file checking not updating the last modified time. For real this time!\nSwitched debugger to PRODUCTION mode by default\nVarious fixes in URI class for increased reliability"},"0.9.2":{"date":"09\/15\/2014","content":"1. [](#new)\n * New flexible site and page metadata support including ObjectGraph and Facebook\n * New method to get user IP address in URI object\n * Added new onShutdown() event that fires after connection is closed for Async features\n2. [](#improved)\n * Skip assets pipeline minify on Windows platforms by default due to PHP issue 47689\n * Fixed multiple level menus not highlighting correctly\n * Updated some blueprints in preparation for admin plugin\n * Fail gracefully when theme does not exist\n * Add stream support into ResourceLocator::addPath()\n * Separate themes from plugins, add themes:\/\/ stream and onTask events\n * Added barDump() to Debugger\n * Removed stray test page\n * Override modified only if a non-markdown file was modified\n * Added assets attributes support\n * Auto-run composer install when running the Grav CLI\n * Vendor folder removed from repository\n * Minor configuration performance optimizations\n * Minor debugger performance optimizations\n3. [](#bugfix)\n * Fix url() twig function when Grav isn't installed at root\n * Workaround for PHP bug 52065\n * Fixed getList() method on Pages object that was not working\n * Fix for open_basedir error\n * index.php now warns if not running on PHP 5.4\n * Removed memcached option (redundant)\n * Removed memcache from auto setup, added memcache server configuration option\n * Fix broken password validation\n * Back to proper PSR-4 Autoloader","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>New flexible site and page metadata support including ObjectGraph and Facebook<\/li>\n<li>New method to get user IP address in URI object<\/li>\n<li>Added new onShutdown() event that fires after connection is closed for Async features<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Skip assets pipeline minify on Windows platforms by default due to PHP issue 47689<\/li>\n<li>Fixed multiple level menus not highlighting correctly<\/li>\n<li>Updated some blueprints in preparation for admin plugin<\/li>\n<li>Fail gracefully when theme does not exist<\/li>\n<li>Add stream support into ResourceLocator::addPath()<\/li>\n<li>Separate themes from plugins, add themes:\/\/ stream and onTask events<\/li>\n<li>Added barDump() to Debugger<\/li>\n<li>Removed stray test page<\/li>\n<li>Override modified only if a non-markdown file was modified<\/li>\n<li>Added assets attributes support<\/li>\n<li>Auto-run composer install when running the Grav CLI<\/li>\n<li>Vendor folder removed from repository<\/li>\n<li>Minor configuration performance optimizations<\/li>\n<li>Minor debugger performance optimizations<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fix url() twig function when Grav isn't installed at root<\/li>\n<li>Workaround for PHP bug 52065<\/li>\n<li>Fixed getList() method on Pages object that was not working<\/li>\n<li>Fix for open_basedir error<\/li>\n<li>index.php now warns if not running on PHP 5.4<\/li>\n<li>Removed memcached option (redundant)<\/li>\n<li>Removed memcache from auto setup, added memcache server configuration option<\/li>\n<li>Fix broken password validation<\/li>\n<li>Back to proper PSR-4 Autoloader<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"New flexible site and page metadata support including ObjectGraph and Facebook\nNew method to get user IP address in URI object\nAdded new onShutdown() event that fires after connection is closed for Async features\n\n\n\nSkip assets pipeline minify on Windows platforms by default due to PHP issue 47689\nFixed multiple level menus not highlighting correctly\nUpdated some blueprints in preparation for admin plugin\nFail gracefully when theme does not exist\nAdd stream support into ResourceLocator::addPath()\nSeparate themes from plugins, add themes:\/\/ stream and onTask events\nAdded barDump() to Debugger\nRemoved stray test page\nOverride modified only if a non-markdown file was modified\nAdded assets attributes support\nAuto-run composer install when running the Grav CLI\nVendor folder removed from repository\nMinor configuration performance optimizations\nMinor debugger performance optimizations\n\n\n\nFix url() twig function when Grav isn't installed at root\nWorkaround for PHP bug 52065\nFixed getList() method on Pages object that was not working\nFix for open_basedir error\nindex.php now warns if not running on PHP 5.4\nRemoved memcached option (redundant)\nRemoved memcache from auto setup, added memcache server configuration option\nFix broken password validation\nBack to proper PSR-4 Autoloader"},"0.9.1":{"date":"09\/02\/2014","content":"1. [](#new)\n * Added new `theme:\/\/` PHP stream for current theme\n2. [](#improved)\n * Default to new `file` modification checking rather than `folder`\n * Added support for various markdown link formats to convert to Grav-friendly URLs\n * Moved configure() from Theme to Themes class\n * Fix autoloading without composer update -o\n * Added support for Twig url method\n * Minor code cleanup\n3. [](#bugfix)\n * Fixed issue with page changes not being picked up\n * Fixed Minify to provide `@supports` tag compatibility\n * Fixed ResourceLocator not working with multiple paths\n * Fixed issue with Markdown process not stripping LFs\n * Restrict file type extensions for added security\n * Fixed template inheritance\n * Moved Browser class to proper location","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Added new <code>theme:\/\/<\/code> PHP stream for current theme<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>Default to new <code>file<\/code> modification checking rather than <code>folder<\/code><\/li>\n<li>Added support for various markdown link formats to convert to Grav-friendly URLs<\/li>\n<li>Moved configure() from Theme to Themes class<\/li>\n<li>Fix autoloading without composer update -o<\/li>\n<li>Added support for Twig url method<\/li>\n<li>Minor code cleanup<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue with page changes not being picked up<\/li>\n<li>Fixed Minify to provide <code>@supports<\/code> tag compatibility<\/li>\n<li>Fixed ResourceLocator not working with multiple paths<\/li>\n<li>Fixed issue with Markdown process not stripping LFs<\/li>\n<li>Restrict file type extensions for added security<\/li>\n<li>Fixed template inheritance<\/li>\n<li>Moved Browser class to proper location<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Added new theme:\/\/ PHP stream for current theme\n\n\n\nDefault to new file modification checking rather than folder\nAdded support for various markdown link formats to convert to Grav-friendly URLs\nMoved configure() from Theme to Themes class\nFix autoloading without composer update -o\nAdded support for Twig url method\nMinor code cleanup\n\n\n\nFixed issue with page changes not being picked up\nFixed Minify to provide @supports tag compatibility\nFixed ResourceLocator not working with multiple paths\nFixed issue with Markdown process not stripping LFs\nRestrict file type extensions for added security\nFixed template inheritance\nMoved Browser class to proper location"},"0.9.0":{"date":"08\/25\/2014","content":"1. [](#new)\n * Addition of Dependency Injection Container\n * Refactored plugins to use Symfony Event Dispatcher\n * New Asset Manager to provide unified management of JavaScript and CSS\n * Asset Pipelining to provide unification, minify, and optimization of JavaScript and CSS\n * Grav Media support directly in Markdown syntax\n * Additional Grav Generator meta tag in default themes\n * Added support for PHP Stream Wrapper for resource location\n * Markdown Extra support\n * Browser object for fast browser detection\n2. [](#improved)\n * PSR-4 Autoloader mechanism\n * Tracy Debugger new `detect` option to detect running environment\n * Added new `random` collection sort option\n * Make media images progressive by default\n * Additional URI filtering for improved security\n * Safety checks to ensure PHP 5.4.0+\n * Move to Slidebars side navigation in default Antimatter theme\n * Updates to `.htaccess` including section on `RewriteBase` which is needed for some hosting providers\n3. [](#bugfix)\n * Fixed issue when installing in an apache userdir (~username) folder\n * Various mobile CSS issues in default themes\n * Various minor bug fixes","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Addition of Dependency Injection Container<\/li>\n<li>Refactored plugins to use Symfony Event Dispatcher<\/li>\n<li>New Asset Manager to provide unified management of JavaScript and CSS<\/li>\n<li>Asset Pipelining to provide unification, minify, and optimization of JavaScript and CSS<\/li>\n<li>Grav Media support directly in Markdown syntax<\/li>\n<li>Additional Grav Generator meta tag in default themes<\/li>\n<li>Added support for PHP Stream Wrapper for resource location<\/li>\n<li>Markdown Extra support<\/li>\n<li>Browser object for fast browser detection<\/li>\n<\/ul><\/li>\n<li><a href=\"#improved\"><\/a>\n<ul>\n<li>PSR-4 Autoloader mechanism<\/li>\n<li>Tracy Debugger new <code>detect<\/code> option to detect running environment<\/li>\n<li>Added new <code>random<\/code> collection sort option<\/li>\n<li>Make media images progressive by default<\/li>\n<li>Additional URI filtering for improved security<\/li>\n<li>Safety checks to ensure PHP 5.4.0+<\/li>\n<li>Move to Slidebars side navigation in default Antimatter theme<\/li>\n<li>Updates to <code>.htaccess<\/code> including section on <code>RewriteBase<\/code> which is needed for some hosting providers<\/li>\n<\/ul><\/li>\n<li><a href=\"#bugfix\"><\/a>\n<ul>\n<li>Fixed issue when installing in an apache userdir (~username) folder<\/li>\n<li>Various mobile CSS issues in default themes<\/li>\n<li>Various minor bug fixes<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Addition of Dependency Injection Container\nRefactored plugins to use Symfony Event Dispatcher\nNew Asset Manager to provide unified management of JavaScript and CSS\nAsset Pipelining to provide unification, minify, and optimization of JavaScript and CSS\nGrav Media support directly in Markdown syntax\nAdditional Grav Generator meta tag in default themes\nAdded support for PHP Stream Wrapper for resource location\nMarkdown Extra support\nBrowser object for fast browser detection\n\n\n\nPSR-4 Autoloader mechanism\nTracy Debugger new detect option to detect running environment\nAdded new random collection sort option\nMake media images progressive by default\nAdditional URI filtering for improved security\nSafety checks to ensure PHP 5.4.0+\nMove to Slidebars side navigation in default Antimatter theme\nUpdates to .htaccess including section on RewriteBase which is needed for some hosting providers\n\n\n\nFixed issue when installing in an apache userdir (~username) folder\nVarious mobile CSS issues in default themes\nVarious minor bug fixes"},"0.8.0":{"date":"08\/13\/2014","content":"1. [](#new)\n * Initial Release","content_html":"<ol>\n<li><a href=\"#new\"><\/a>\n<ul>\n<li>Initial Release<\/li>\n<\/ul><\/li>\n<\/ol>","content_plain":"Initial Release"}}}
- ";
|