+ * Fixed broken markdown Twig tag [#2635](https://github.com/getgrav/grav/issues/2635)
+ * Force Symfony 4.2 in Grav 1.6 to remove a bunch of deprecated messages
+
+# v1.6.14
+## 08/18/2019
+
+1. [](#bugfix)
+ * Actually include fix for `system\router.php` [#2627](https://github.com/getgrav/grav/issues/2627)
+
+# v1.6.13
+## 08/16/2019
+
+1. [](#bugfix)
+ * Regression fix for `system\router.php` [#2627](https://github.com/getgrav/grav/issues/2627)
+
+# v1.6.12
+## 08/14/2019
+
+1. [](#new)
+ * Added support for custom `FormFlash` save locations
+ * Added a new `Utils::arrayLower()` method for lowercasing arrays
+ * Support new GRAV_BASEDIR environment variable [#2541](https://github.com/getgrav/grav/pull/2541)
+ * Allow users to override plugin handler priorities [#2165](https://github.com/getgrav/grav/pull/2165)
+1. [](#improved)
+ * Use new `Utils::getSupportedPageTypes()` to enforce `html,htm` at the front of the list [#2531](https://github.com/getgrav/grav/issues/2531)
+ * Updated vendor libraries
+ * Markdown filter is now page-aware so that it works with modular references [admin#1731](https://github.com/getgrav/grav-plugin-admin/issues/1731)
+ * Check of `GRAV_USER_INSTANCE` constant is already defined [#2621](https://github.com/getgrav/grav/pull/2621)
+1. [](#bugfix)
+ * Fixed some potential issues when `$grav['user']` is not set
+ * Fixed error when calling `Media::add($name, null)`
+ * Fixed `url()` returning wrong path if using stream with grav root path in it, eg: `user-data://shop` when Grav is in `/shop`
+ * Fixed `url()` not returning a path to non-existing file (`user-data://shop` => `/user/data/shop`) if it is set to fail gracefully
+ * Fixed `url()` returning false on unknown streams, such as `ftp://domain.com`, they should be treated as external URL
+ * Fixed Flex User to have permissions to save and delete his own user
+ * Fixed new Flex User creation not being possible because of username could not be given
+ * Fixed fatal error 'Expiration date must be an integer, a DateInterval or null, "double" given' [#2529](https://github.com/getgrav/grav/issues/2529)
+ * Fixed non-existing Flex object having a bad media folder
+ * Fixed collections using `page@.self:` should allow modular pages if requested
+ * Fixed an error when trying to delete a file from non-existing Flex Object
+ * Fixed `FlexObject::exists()` failing sometimes just after the object has been saved
+ * Fixed CSV formatter not encoding strings with `"` and `,` properly
+ * Fixed var order in `Validation.php` [#2610](https://github.com/getgrav/grav/issues/2610)
+
+# v1.6.11
+## 06/21/2019
+
+1. [](#new)
+ * Added `FormTrait::getAllFlashes()` method to get all the available form flash objects for the form
+ * Added creation and update timestamps to `FormFlash` objects
+1. [](#improved)
+ * Added `FormFlashInterface`, changed constructor to take `$config` array
+1. [](#bugfix)
+ * Fixed error in `ImageMedium::url()` if the image cache folder does not exist
+ * Fixed empty form flash name after file upload or form state update
+ * Fixed a bug in `Route::withParam()` method
+ * Fixed issue with `FormFlash` objects when there is no session initialized
+
+# v1.6.10
+## 06/14/2019
+
+1. [](#improved)
+ * Added **page blueprints** to `YamlLinter` CLI and Admin reports
+ * Removed `Gitter` and `Slack` [#2502](https://github.com/getgrav/grav/issues/2502)
+ * Optimizations for Plugin/Theme loading
+ * Generalized markdown classes so they can be used outside of `Page` scope with a custom `Excerpts` class instance
+ * Change minimal port number to 0 (unix socket) [#2452](https://github.com/getgrav/grav/issues/2452)
+1. [](#bugfix)
+ * Force question to install demo content in theme update [#2493](https://github.com/getgrav/grav/issues/2493)
+ * Fixed GPM errors from blueprints not being logged [#2505](https://github.com/getgrav/grav/issues/2505)
+ * Don't error when IP is invalid [#2507](https://github.com/getgrav/grav/issues/2507)
+ * Fixed regression with `bin/plugin` not listing the plugins available (1c725c0)
+ * Fixed bitwise operator in `TwigExtension::exifFunc()` [#2518](https://github.com/getgrav/grav/issues/2518)
+ * Fixed issue with lang prefix incorrectly identifying as admin [#2511](https://github.com/getgrav/grav/issues/2511)
+ * Fixed issue with `U0ils::pathPrefixedBYLanguageCode()` and trailing slash [#2510](https://github.com/getgrav/grav/issues/2511)
+ * Fixed regresssion issue of `Utils::Url()` not returning `false` on failure. Added new optional `fail_gracefully` 3rd attribute to return string that caused failure [#2524](https://github.com/getgrav/grav/issues/2524)
+
+# v1.6.9
+## 05/09/2019
+
+1. [](#new)
+ * Added `Route::withoutParams()` methods
+ * Added `Pages::setCheckMethod()` method to override page configuration in Admin Plugin
+ * Added `Cache::clearCache('invalidate')` parameter for just invalidating the cache without deleting any cached files
+ * Made `UserCollectionInderface` to extend `Countable` to get the count of existing users
+ * Fix for `avatar_url` provided by 3rd party providers
+ * Fixed non standard `lang` code lengths in `Utils` and `Session` detection
+ * Fixed saving a new object in Flex `SimpleStorage`
+ * Fixed exception in `Flex::getDirectories()` if the first parameter is set
+ * Output correct "Last Updated" in `bin/gpm info` command
+ * Checkbox getting interpreted as string, so created new `Validation::filterCheckbox()`
+ * Fixed backwards compatibility to `select` field with `selectize.create` set to true [git-sync#141](https://github.com/trilbymedia/grav-plugin-git-sync/issues/141)
+ * Fixed `YamlFormatter::decode()` to always return array [#2494](https://github.com/getgrav/grav/pull/2494)
+ * Fixed `FormTrait::render()` not providing config variable
+ * Updated `bin/grav clean` to clear `cache/compiled` and `user/config/security.yaml`
+
+# v1.6.7
+## 04/22/2019
+
+1. [](#new)
+ * Added a new `bin/grav yamllinter` CLI command to find YAML Linting issues [#2468](https://github.com/getgrav/grav/issues/2468#issuecomment-485151681)
+1. [](#improved)
+ * Improve `FormTrait` backwards compatibility with existing forms
+ * Added a new `Utils::getSubnet()` function for IPv4/IPv6 parsing [#2465](https://github.com/getgrav/grav/pull/2465)
+1. [](#bugfix)
+ * Remove disabled fields from the form schema
+ * Fix issue when excluding `inlineJs` and `inlineCss` from Assets pipeline [#2468](https://github.com/getgrav/grav/issues/2468)
+ * Fix for manually set position on external URLs [#2470](https://github.com/getgrav/grav/issues/2470)
+
+# v1.6.6
+## 04/17/2019
+
+1. [](#new)
+ * `FormInterface` now implements `RenderInterface`
+ * Added new `FormInterface::getTask()` method which reads the task from `form.task` in the blueprint
+1. [](#improved)
+ * Updated vendor libraries to latest
+1. [](#bugfix)
+ * Rollback `redirect_default_route` logic as it has issues with multi-lang [#2459](https://github.com/getgrav/grav/issues/2459)
+ * Fix potential issue with `|contains` Twig filter on PHP 7.3
+ * Fixed bug in text field filtering: return empty string if value isn't a string or number [#2460](https://github.com/getgrav/grav/issues/2460)
+ * Force Asset `priority` to be an integer and not throw error if invalid string passed [#2461](https://github.com/getgrav/grav/issues/2461)
+ * Fixed bug in text field filtering: return empty string if value isn't a string or number
+ * Fixed `FlexForm` missing getter methods for defining form variables
+
+# v1.6.5
+## 04/15/2019
+
+1. [](#bugfix)
+ * Backwards compatiblity with old `Uri::__toString()` output
+
+# v1.6.4
+## 04/15/2019
+
+1. [](#bugfix)
+ * Improved `redirect_default_route` logic as well as `Uri::toArray()` to take into account `root_path` and `extension`
+ * Rework logic to pull out excluded files from pipeline more reliably [#2445](https://github.com/getgrav/grav/issues/2445)
+ * Better logic in `Utils::normalizePath` to handle externals properly [#2216](https://github.com/getgrav/grav/issues/2216)
+ * Fixed to force all `Page::taxonomy` to be treated as strings [#2446](https://github.com/getgrav/grav/issues/2446)
+ * Fixed issue with `Grav['user']` not being available [form#332](https://github.com/getgrav/grav-plugin-form/issues/332)
+ * Updated rounding logic for `Utils::parseSize()` [#2394](https://github.com/getgrav/grav/issues/2394)
+ * Fixed Flex simple storage not being properly initialized if used with caching
+
+# v1.6.3
+## 04/12/2019
+
+1. [](#new)
+ * Added `Blueprint::addDynamicHandler()` method to allow custom dynamic handlers, for example `custom-options@: getCustomOptions`
+1. [](#bugfix)
+ * Missed a `CacheCommand` reference in `bin/grav` [#2442](https://github.com/getgrav/grav/issues/2442)
+ * Fixed issue with `Utils::normalizePath` messing with external URLs [#2216](https://github.com/getgrav/grav/issues/2216)
+ * Fix for `vUndefined` versions when upgrading
+
+# v1.6.2
+## 04/11/2019
+
+1. [](#bugfix)
+ * Revert renaming of `ClearCacheCommand` to ensure CLI GPM upgrades go smoothly
+
+# v1.6.1
+## 04/11/2019
+
+1. [](#improved)
+ * Improved CSS for the bottom filter bar of DebugBar
+1. [](#bugfix)
+ * Fixed issue with `@import` not being added to top of pipelined css [#2440](https://github.com/getgrav/grav/issues/2440)
+
+# v1.6.0
+## 04/11/2019
+
+1. [](#new)
+ * Set minimum requirements to [PHP 7.1.3](https://getgrav.org/blog/raising-php-requirements-2018)
+ * New `Scheduler` functionality for periodic jobs
+ * New `Backup` functionality with multiple backup profiles and scheduler integration
+ * Refactored `Assets Manager` to be more powerful and flexible
+ * Updated Doctrine Collections to 1.6
+ * Updated Doctrine Cache to 1.8
+ * Updated Symfony Components to 4.2
+ * Added new Cache purge functionality old cache manually via CLI/Admin as well as scheduler integration
+ * Added new `{% throw 404 'Not Found' %}` twig tag (with custom code/message)
+ * Added `Grav\Framework\File` classes for handling YAML, Markdown, JSON, INI and PHP serialized files
+ * Added `Grav\Framework\Collection\AbstractIndexCollection` class
+ * Added `Grav\Framework\Object\ObjectIndex` class
+ * Added `Grav\Framework\Flex` classes
+ * Added support for hiding form fields in blueprints by using dynamic property like `security@: admin.foobar`, `scope@: object` or `scope-ignore@: object` to any field
+ * New experimental **FlexObjects** powered `Users` for increased performance and capability (**disabled** by default)
+ * Added PSR-7 and PSR-15 classes
+ * Added `Grav\Framework\DI\Container` class
+ * Added `Grav\Framework\RequestHandler\RequestHandler` class
+ * Added `Page::httpResponseCode()` and `Page::httpHeaders()` methods
+ * New `$grav['users']` service to allow custom user classes implementing `UserInterface`
+ * Added `LogViewer` helper class and CLI command: `bin/grav logviewer`
+ * Added `select()` and `unselect()` methods to `CollectionInterface` and its base classes
+ * Added `orderBy()` and `limit()` methods to `ObjectCollectionInterface` and its base classes
+ * Added `user-data://` which is a writable stream (`user://data` is not and should be avoided)
+ * Added support for `/action:{$action}` (like task but used without nonce when only receiving data)
+ * Added `onAction.{$action}` event
+ * Added `Grav\Framework\Form\FormFlash` class to contain AJAX uploaded files in more reliable way
+ * Added `Grav\Framework\Form\FormFlashFile` class which implements `UploadedFileInterface` from PSR-7
+ * Added `Grav\Framework\Filesystem\Filesystem` class with methods to manipulate stream URLs
+ * Added new `$grav['filesystem']` service using an instance of the new `Filesystem` object
+ * Added `{% render object layout: 'default' with { variable: true } %}` for Flex objects and collections
+ * Added `$grav->setup()` to simplify CLI and custom access points
+ * Added `CsvFormatter` and `CsvFile` classes
+ * Added new system config option to `pages.hide_empty_folders` if a folder has no valid `.md` file available. Default behavior is `false` for compatibility.
+ * Added new system config option for `languages.pages_fallback_only` forcing only 'fallback' to find page content through supported languages, default behavior is to display any language found if active language is missing
+ * Added `Utils::arrayFlattenDotNotation()` and `Utils::arrayUnflattenDotNotation()` helper methods
+1. [](#improved)
+ * Add the page to onMarkdownInitialized event [#2412](https://github.com/getgrav/grav/issues/2412)
+ * Doctrine filecache is now namespaced with prefix to support purging
+ * Register all page types into `blueprint://pages` stream
+ * Removed `apc` and `xcache` support, made `apc` alias of `apcu`
+ * Support admin and regular translations via the `|t` twig filter and `t()` twig function
+ * Improved Grav Core installer/updater to run installer script
+ * Updated vendor libraries including Symfony `4.2.3`
+ * Renamed old `User` class to `Grav\Common\User\DataUser\User` with multiple improvements and small fixes
+ * `User` class now acts as a compatibility layer to older versions of Grav
+ * Deprecated `new User()`, `User::load()`, `User::find()` and `User::delete()` in favor of `$grav['users']` service
+ * `Media` constructor has now support to not to initialize the media objects
+ * Cleanly handle session corruption due to changing Flex object types
+ * Added `FlexObjectInterface::getDefaultValue()` and `FormInterface::getDefaultValue()`
+ * Added new `onPageContent()` event for every call to `Page::content()`
+ * Added trim support for text input fields `validate: trim: true`
+ * Improved `Grav\Framework\File\Formatter` classes to have abstract parent class and some useful methods
+ * Support negotiated content types set via the Request `Accept:` header
+ * Support negotiated language types set via the Request `Accept-Language:` header
+ * Cleaned up and sorted the Service `idMap`
+ * Updated `Grav` container object to implement PSR-11 `ContainerInterface`
+ * Updated Grav `Processor` classes to implement PSR-15 `MiddlewareInterface`
+ * Make `Data` class to extend `JsonSerializable`
+ * Modified debugger icon to use retina space-dude version
+ * Added missing `Video::preload()` method
+ * Set session name based on `security.salt` rather than `GRAV_ROOT` [#2242](https://github.com/getgrav/grav/issues/2242)
+ * Added option to configure list of `xss_invalid_protocols` in `Security` config [#2250](https://github.com/getgrav/grav/issues/2250)
+ * Smarter `security.salt` checking now we use `security.yaml` for other options
+ * Added apcu autoloader optimization
+ * Additional helper methods in `Language`, `Languages`, and `LanguageCodes` classes
+ * Call `onFatalException` event also on internal PHP errors
+ * Built-in PHP Webserver: log requests before handling them
+ * Added support for syslog and syslog facility logging (default: 'file')
+ * Improved usability of `System` configuration blueprint with side-tabs
+ 1. [](#bugfix)
+ * Fixed issue with `Truncator::truncateWords` and `Truncator::truncateLetters` when string not wrapped in tags [#2432](https://github.com/getgrav/grav/issues/2432)
+ * Fixed `Undefined method closure::fields()` when getting avatar for user, thanks @Romarain [#2422](https://github.com/getgrav/grav/issues/2422)
+ * Fixed cached images not being updated when source image is modified
+ * Fixed deleting last list item in the form
+ * Fixed issue with `Utils::url()` method would append extra `base_url` if URL already included it
+ * Fixed `mkdir(...)` race condition
+ * Fixed `Obtaining write lock failed on file...`
+ * Fixed potential undefined property in `onPageNotFound` event handling
+ * Fixed some potential issues/bugs found by phpstan
+ * Fixed regression in GPM packages casted to Array (ref, getgrav/grav-plugin-admin@e3fc4ce)
+ * Use `array_key_exists` instead of `in_array + array_keys` [#1991](https://github.com/getgrav/grav/pull/1991)
+ * Fixed an issue with `custom_base_url` always causing 404 errors
+ * Improve support for regex redirects with query and params [#1983](https://github.com/getgrav/grav/issues/1983)
+ * Changed collection-based date sorting to `SORT_REGULAR` for better server compatibility [#1910](https://github.com/getgrav/grav/issues/1910)
+ * Fix hardcoded string in modular blueprint [#1933](https://github.com/getgrav/grav/pull/1993)
+
+# v1.4.3
+## 04/12/2018
+
+1. [](#new)
+ * moved Twig `sortArrayByKey` logic into `Utils::` class
+1. [](#improved)
+ * Rolled back Parsedown library to stable `1.6.4` until a better solution for `1.8.0` compatibility can fe found
+ * Updated vendor libraries to latest versions
+1. [](#bugfix)
+ * Fix for bad reference to `ZipArchive` in `GPM::Installer`
+
+# v1.4.2
+## 03/21/2018
+
+1. [](#new)
+ * Added new `|nicefilesize` Twig filter for pretty file (auto converts to bytes, kB, MB, GB, etc)
+ * Added new `regex_filter()` Twig function to values in arrays
+1. [](#improved)
+ * Added bosnian to lang codes [#1917](https://github.com/getgrav/grav/issues/1917)
+ * Improved Zip extraction error codes [#1922](https://github.com/getgrav/grav/issues/1922)
+1. [](#bugfix)
+ * Fixed an issue with Markdown Video and Audio that broke after Parsedown 1.7.0 Security updates [#1924](https://github.com/getgrav/grav/issues/1924)
+ * Fix for case-sensitive page metadata [admin#1370](https://github.com/getgrav/grav-plugin-admin/issues/1370)
+ * Fixed missing composer requirements for the new `Grav\Framework\Uri` classes
+ * Added missing PSR-7 vendor library required for URI additions in Grav 1.4.0
+
+# v1.4.1
+## 03/11/2018
+
+1. [](#bugfix)
+ * Fixed session timing out because of session cookie was not being sent
+ * Added support for 2-Factor Authentication in admin profile
+ * Added `gaussianBlur` media method [#1623](https://github.com/getgrav/grav/pull/1623)
+ * Added new `|chunk_split()`, `|basename`, and `|dirname` Twig filter
+ * Added new `tl` Twig filter/function to support specific translations [#1618](https://github.com/getgrav/grav/issues/1618)
+1. [](#improved)
+ * User `authorization` now requires a check for `authenticated` - REQUIRED: `Login v2.4.0`
+ * Added options to `Page::summary()` to support size without HTML tags [#1554](https://github.com/getgrav/grav/issues/1554)
+ * Forced `natsort` on plugins to ensure consistent plugin load ordering across platforms [#1614](https://github.com/getgrav/grav/issues/1614)
+ * Use new `multilevel` field to handle Asset Collections [#1201](https://github.com/getgrav/grav-plugin-admin/issues/1201)
+ * Added support for redis `password` option [#1620](https://github.com/getgrav/grav/issues/1620)
+ * Use 302 rather than 301 redirects by default [#1619](https://github.com/getgrav/grav/issues/1619)
+ * GPM Installer will try to load alphanumeric version of the class if no standard class found [#1630](https://github.com/getgrav/grav/issues/1630)
+ * Add current page position to `User` class [#1632](https://github.com/getgrav/grav/issues/1632)
+ * Added option to enable case insensitive URLs [#1638](https://github.com/getgrav/grav/issues/1638)
+ * Updated vendor libraries
+ * Updated `travis.yml` to add support for PHP 7.1 as well as 7.0.21 for test suite
+1. [](#bugfix)
+ * Fixed UTF8 multibyte UTF8 character support in `Page::summary()` [#1554](https://github.com/getgrav/grav/issues/1554)
+
+# v1.3.2
+## 08/16/2017
+
+1. [](#new)
+ * Added a new `cache_control` system and page level property [#1591](https://github.com/getgrav/grav/issues/1591)
+ * 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)
+ * Added new `onTwigLoader()` event to enable utilization of loader methods
+ * Added new `Twig::addPath()` and `Twig::prependPath()` methods to wrap loader methods and support namespacing [#1604](https://github.com/getgrav/grav/issues/1604)
+ * Added new `array_key_exists()` Twig function wrapper
+ * Added a new `Collection::intersect()` method [#1605](https://github.com/getgrav/grav/issues/1605)
+1. [](#bugfix)
+ * Allow `session.timeout` field to be set to `0` via blueprints [#1598](https://github.com/getgrav/grav/issues/1598)
+ * Fixed `Data::exists()` and `Data::raw()` functions breaking if `Data::file()` hasn't been called with non-null value
+ * Fixed parent theme auto-loading in child themes of Gantry 5
+
+# v1.3.1
+## 07/19/2017
+
+1. [](#bugfix)
+ * Fix ordering for Linux + International environments [#1574](https://github.com/getgrav/grav/issues/1574)
+ * Check if medium thumbnail exists before resetting
+ * Update Travis' auth token
+
+# v1.3.0
+## 07/16/2017
+
+1. [](#bugfix)
+ * Fixed an undefined variable `$difference` [#1563](https://github.com/getgrav/grav/pull/1563)
+ * Fix broken range slider [grav-plugin-admin#1153](https://github.com/getgrav/grav-plugin-admin/issues/1153)
+ * Fix natural sort when > 100 pages [#1564](https://github.com/getgrav/grav/pull/1564)
+
+# v1.3.0-rc.5
+## 07/05/2017
+
+1. [](#new)
+ * Setting `system.session.timeout` to 0 clears the session when the browser session ends [#1538](https://github.com/getgrav/grav/pull/1538)
+ * Created a `CODE_OF_CONDUCT.md` so everyone knows how to behave :)
+1. [](#improved)
+ * Renamed new `media()` Twig function to `media_directory()` to avoid conflict with Page's `media` object
+1. [](#bugfix)
+ * Fixed global media files disappearing after a reload [#1545](https://github.com/getgrav/grav/issues/1545)
+ * Fix for broken regex redirects/routes via `site.yaml`
+ * Sanitize the error message in the error handler page
+
+# v1.3.0-rc.4
+## 06/22/2017
+
+1. [](#new)
+ * Added `lower` and `upper` Twig filters
+ * Added `pathinfo()` Twig function
+ * Added 165 new thumbnail images for use in `media.yaml`
+1. [](#improved)
+ * 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)
+ * Updated vendor libraries
+1. [](#bugfix)
+ * Don't rebuild metadata every time, only when file does not exist
+ * Restore GravTrait in ConsoleTrait [grav-plugin-login#119](https://github.com/getgrav/grav-plugin-login/issues/119)
+ * Fix Windows routing with built-in server [#1502](https://github.com/getgrav/grav/issues/1502)
+ * Fix [#1504](https://github.com/getgrav/grav/issues/1504) `process_twig` and `frontmatter.yaml`
+ * Nicetime fix: 0 seconds from now -> just now [#1509](https://github.com/getgrav/grav/issues/1509)
+
+# v1.3.0-rc.3
+## 05/22/2017
+
+1. [](#new)
+ * Added new unified `Utils::getPagePathFromToken()` method which is used by various plugins (Admin, Forms, Downloads, etc.)
+1. [](#improved)
+ * Optionally remove unpublished pages from the translated languages, move into untranslated list [#1482](https://github.com/getgrav/grav/pull/1482)
+ * Improved reliability of `hash` file-check method
+1. [](#bugfix)
+ * 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)
+ * Fix output handling in RenderProcessor [#1483](https://github.com/getgrav/grav/pull/1483)
+
+# v1.3.0-rc.2
+## 05/17/2017
+
+1. [](#new)
+ * Added new `media` and `vardump` Twig functions
+1. [](#improved)
+ * Put in various checks to ensure Exif is available before trying to use it
+ * Add timestamp to configuration settings [#1445](https://github.com/getgrav/grav/pull/1445)
+1. [](#bugfix)
+ * Fix an issue saving YAML textarea fields in expert mode [#1480](https://github.com/getgrav/grav/pull/1480)
+ * Moved `onOutputRendered()` back into Grav core
+
+# v1.3.0-rc.1
+## 05/16/2017
+
+1. [](#new)
+ * Added support for a single array field in the forms
+ * Added EXIF support with automatic generation of Page Media metafiles
+ * Added Twig function to get EXIF data on any image file
+ * Added `Pages::baseUrl()`, `Pages::homeUrl()` and `Pages::url()` functions
+ * Added a new `Collection::merge()` method to allow merging of multiple collections [#1258](https://github.com/getgrav/grav/pull/1258)
+ * Added [OpenCollective](https://opencollective.com/grav) backer/sponsor info to `README.md`
+1. [](#improved)
+ * Add an additional parameter to GPM::findPackage to avoid throwing an exception, for use in Twig [#1008](https://github.com/getgrav/grav/issues/1008)
+ * Skip symlinks if found while clearing cache [#1269](https://github.com/getgrav/grav/issues/1269)
+1. [](#bugfix)
+ * Fixed an issue when page collection with header-based `sort.by` returns an array [#1264](https://github.com/getgrav/grav/issues/1264)
+ * Fix `Response` object to handle `303` redirects when `open_basedir` in effect [#1267](https://github.com/getgrav/grav/issues/1267)
+ * Silence `E_WARNING: Zend OPcache API is restricted by "restrict_api" configuration directive`
+
+# v1.1.14
+## 01/18/2017
+
+1. [](#bugfix)
+ * Fixed `Page::collection()` returning array and not Collection object when header variable did not exist
+ * 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)
+
+# v1.1.13
+## 01/17/2017
+
+1. [](#new)
+ * 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)
+1. [](#improved)
+ * Several improvements to aid theme development [#232](https://github.com/getgrav/grav/pull/1232)
+ * Added `hash` cache check option and made dropdown more descriptive [Admin #923](https://github.com/getgrav/grav-plugin-admin/issues/923)
+1. [](#bugfix)
+ * Fixed cross volume file system operations [#635](https://github.com/getgrav/grav/issues/635)
+ * Fix issue with pages folders validation not accepting uppercase letters
+ * Fix renaming the folder name if the page, in the default language, had a custom slug set in its header
+ * Fixed issue with `Content-Encoding: none`. It should really be `Content-Encoding: identity` instead
+ * Fixed broken `hash` method on page modifications detection
+ * Fixed issue with multi-lang pages not caching independently without unique `.md` file [#1211](https://github.com/getgrav/grav/issues/1211)
+ * Fixed all `$_GET` parameters missing in Nginx (please update your nginx.conf) [#1245](https://github.com/getgrav/grav/issues/1245)
+ * Fixed issue in trying to process broken symlink [#1254](https://github.com/getgrav/grav/issues/1254)
+
+# v1.1.12
+## 12/26/2016
+
+1. [](#bugfix)
+ * Fixed issue with JSON calls throwing errors due to debugger enabled [#1227](https://github.com/getgrav/grav/issues/1227)
+
+# v1.1.11
+## 12/22/2016
+
+1. [](#improved)
+ * Fall back properly to HTML if template type not found
+1. [](#bugfix)
+ * Fix issue with modular pages folders validation [#900](https://github.com/getgrav/grav-plugin-admin/issues/900)
+
+# v1.1.10
+## 12/21/2016
+
+1. [](#improved)
+ * 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)
+ * YAML syntax fixes for the future compatibility
+ * Added new parameter `remove` for `onBeforeCacheClear` event
+ * Add support for calling Media object as function to get medium by filename
+1. [](#bugfix)
+ * Added checks before accessing admin reference during `Page::blueprints()` call. Allows to access `page.blueprints` from Twig in the frontend
+
+# v1.1.9-rc.3
+## 12/07/2016
+
+1. [](#new)
+ * Add `ignore_empty` property to be used on array fields, if positive only save options with a value
+ * Use new `permissions` field in user account
+ * Add `range(int start, int end, int step)` twig function to generate an array of numbers between start and end, inclusive
+ * New retina Media image derivatives array support (``) [#1147](https://github.com/getgrav/grav/pull/1147)
+ * Added stream support for images (``)
+ * Added stream support for links (`[Download PDF](user://data/pdf/my.pdf)`)
+ * Added new `onBeforeCacheClear` event to add custom paths to cache clearing process
+1. [](#improved)
+ * Added alias `selfupdate` to the `self-upgrade` `bin/gpm` CLI command
+ * Synced `webserver-configs/htaccess.txt` with `.htaccess`
+ * Use permissions field in group details.
+ * Updated vendor libraries
+ * Added a warning on GPM update to update Grav first if needed [#1194](https://github.com/getgrav/grav/pull/1194)
+ 1. [](#bugfix)
+ * Fix page collections problem with `@page.modular` [#1178](https://github.com/getgrav/grav/pull/1178)
+ * 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)
+ * Fix saving permissions in group
+ * Fixed issue with redirect of a page getting moved to a different location
+
+# v1.1.9-rc.2
+## 11/26/2016
+
+1. [](#new)
+ * Added two new sort order options for pages: `publish_date` and `unpublish_date` [#1173](https://github.com/getgrav/grav/pull/1173))
+1. [](#improved)
+ * Multisite: Create image cache folder if it doesn't exist
+ * Add 2 new language values for French [#1174](https://github.com/getgrav/grav/issues/1174)
+1. [](#bugfix)
+ * Fixed issue when we have a meta file without corresponding media [#1179](https://github.com/getgrav/grav/issues/1179)
+ * Update class namespace for Admin class [Admin #874](https://github.com/getgrav/grav-plugin-admin/issues/874)
+
+# v1.1.9-rc.1
+## 11/09/2016
+
+1. [](#new)
+ * Added a `CompiledJsonFile` object to better handle Json files.
+ * Added Base32 encode/decode class
+ * Added a new `User::find()` method
+1. [](#improved)
+ * Moved `messages` object into core Grav from login plugin
+ * Added `getTaxonomyItemKeys` to the Taxonomy object [#1124](https://github.com/getgrav/grav/issues/1124)
+ * Added a `redirect_me` Twig function [#1124](https://github.com/getgrav/grav/issues/1124)
+ * Added a Caddyfile for newer Caddy versions [#1115](https://github.com/getgrav/grav/issues/1115)
+ * 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)
+1. [](#bugfix)
+ * Fixed an issue with site redirects/routes, not processing with extension (.html, .json, etc.)
+ * Don't truncate HTML if content length is less than summary size [#1125](https://github.com/getgrav/grav/issues/1125)
+ * Return max available number when calling random() on a collection passing an int > available items [#1135](https://github.com/getgrav/grav/issues/1135)
+ * Use correct ratio when applying image filters to image alternatives [#1147](https://github.com/getgrav/grav/issues/1147)
+ * Fixed URI path in multi-site when query parameters were used in front page
+
+# v1.1.8
+## 10/22/2016
+
+1. [](#bugfix)
+ * Fixed warning with unset `ssl` option when using GPM [#1132](https://github.com/getgrav/grav/issues/1132)
+
+# v1.1.7
+## 10/22/2016
+
+1. [](#improved)
+ * Improved the capabilities of Image derivatives [#1107](https://github.com/getgrav/grav/pull/1107)
+1. [](#bugfix)
+ * Only pass verify_peer settings to cURL and fopen if the setting is disabled [#1120](https://github.com/getgrav/grav/issues/1120)
+
+# v1.1.6
+## 10/19/2016
+
+1. [](#new)
+ * Added ability for Page to override the output format (`html`, `xml`, etc..) [#1067](https://github.com/getgrav/grav/issues/1067)
+ * Added `Utils::getExtensionByMime()` and cleaned up `Utils::getMimeByExtension` + tests
+ * Added a `cache.check.method: 'hash'` option in `system.yaml` that checks all files + dates inclusively
+ * Include jQuery 3.x in the Grav assets
+ * Added the option to automatically fix orientation on images based on their Exif data, by enabling `system.images.auto_fix_orientation`.
+1. [](#improved)
+ * Add `batch()` function to Page Collection class
+ * Added new `cache.redis.socket` setting that allow to pass a UNIX socket as redis server
+ * 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))
+ * 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.
+ * InstallCommand can now handle Licenses
+ * Uses more helpful `1x`, `2x`, `3x`, etc names in the Retina derivatives cache files.
+ * Added new method `Plugins::isPluginActiveAdmin()` to check if plugin route is active in Admin plugin
+ * Added new `Cache::setEnabled` and `Cache::getEnabled` to enable outside control of cache
+ * Updated vendor libs including Twig `1.25.0`
+ * Avoid git ignoring any vendor folder in a Grav site subfolder (but still ignore the main `vendor/` folder)
+ * Added an option to get just a route back from `Uri::convertUrl()` function
+ * Added option to control split session [#1096](https://github.com/getgrav/grav/pull/1096)
+ * Added new `verbosity` levels to `system.error.display` to allow for system error messages [#1091](https://github.com/getgrav/grav/pull/1091)
+ * Improved the API for Grav plugins to access the Parsedown parser directly [#1062](https://github.com/getgrav/grav/pull/1062)
+1. [](#bugfix)
+ * Fixed missing `progress` method in the DirectInstall Command
+ * `Response` class now handles better unsuccessful requests such as 404 and 401
+ * Fixed saving of `external` page types [Admin #789](https://github.com/getgrav/grav-plugin-admin/issues/789)
+ * 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)
+ * Fixed an issue with streams in `bin/plugin`
+ * Fixed `jpeg` file format support in Media
+
+# v1.1.5
+## 09/09/2016
+
+1. [](#new)
+ * Added new `bin/gpm direct-install` command to install local and remote zip archives
+1. [](#improved)
+ * Refactored `onPageNotFound` event to fire after `onPageInitialized`
+ * Follow symlinks in `Folder::all()`
+ * Twig variable `base_url` now supports multi-site by path feature
+ * Improved `bin/plugin` to list plugins with commands faster by limiting the depth of recursion
+1. [](#bugfix)
+ * Quietly skip missing streams in `Cache::clearCache()`
+ * Fix issue in calling page.summary when no content is present in a page
+ * Fix for HUGE session timeouts [#1050](https://github.com/getgrav/grav/issues/1050)
+
+# v1.1.4
+## 09/07/2016
+
+1. [](#new)
+ * Added new `tmp` folder at root. Accessible via stream `tmp://`. Can be cleared with `bin/grav clear --tmp-only` as well as `--all`.
+ * Added support for RTL in `LanguageCodes` so you can determine if a language is RTL or not
+ * Ability to set `custom_base_url` in system configuration
+ * Added `override` and `force` options for Streams setup
+1. [](#improved)
+ * Important vendor updates to provide PHP 7.1 beta support!
+ * Added a `Util::arrayFlatten()` static function
+ * Added support for 'external_url' page header to enable easier external URL based menu items
+ * Improved the UI for CLI GPM Index view to use a table
+ * Added `@page.modular` Collection type [#988](https://github.com/getgrav/grav/issues/988)
+ * Added support for `self@`, `page@`, `taxonomy@`, `root@` Collection syntax for cleaner YAML compatibility
+ * 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)
+ * Added randomization to `safe_email` Twig filter for greater security [#998](https://github.com/getgrav/grav/issues/998)
+ * Allow `Utils::setDotNotation` to merge data, rather than just set
+ * Moved default `Image::filter()` to the `save` action to ensure they are applied last [#984](https://github.com/getgrav/grav/issues/984)
+ * Improved the `Truncator` code to be more reliable [#1019](https://github.com/getgrav/grav/issues/1019)
+ * Moved media blueprints out of core (now in Admin plugin)
+1. [](#bugfix)
+ * Removed 307 redirect code option as it is not well supported [#743](https://github.com/getgrav/grav-plugin-admin/issues/743)
+ * Fixed issue with folders with name `*.md` are not confused with pages [#995](https://github.com/getgrav/grav/issues/995)
+ * Fixed an issue when filtering collections causing null key
+ * Fix for invalid HTML when rendering GIF and Vector media [#1001](https://github.com/getgrav/grav/issues/1001)
+ * Use pages.markdown.extra in the user's system.yaml [#1007](https://github.com/getgrav/grav/issues/1007)
+ * Fix for `Memcached` connection [#1020](https://github.com/getgrav/grav/issues/1020)
+
+# v1.1.3
+## 08/14/2016
+
+1. [](#bugfix)
+ * Fix for lightbox media function throwing error [#981](https://github.com/getgrav/grav/issues/981)
+
+# v1.1.2
+## 08/10/2016
+
+1. [](#new)
+ * Allow forcing SSL by setting `system.force_ssl` (Force SSL in the Admin System Config) [#899](https://github.com/getgrav/grav/pull/899)
+1. [](#improved)
+ * Improved `authorize` Twig extension to accept a nested array of authorizations [#948](https://github.com/getgrav/grav/issues/948)
+ * Don't add timestamps on remote assets as it can cause conflicts
+ * Grav now looks at types from `media.yaml` when retrieving page mime types [#966](https://github.com/getgrav/grav/issues/966)
+ * Added support for dumping exceptions in the Debugger
+1. [](#bugfix)
+ * Fixed `Folder::delete` method to recursively remove files and folders and causing Upgrade to fail.
+ * Fix [#952](https://github.com/getgrav/grav/issues/952) hyphenize the session name.
+ * 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)
+ * 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)
+ * Fix for markdown images not properly rendering `id` attribute [#956](https://github.com/getgrav/grav/issues/956)
+
+# v1.1.1
+## 07/16/2016
+
+1. [](#improved)
+ * Made `paramsRegex()` static to allow it to be called statically
+1. [](#bugfix)
+ * Fixed backup when using very long site titles with invalid characters [grav-plugin-admin#701](https://github.com/getgrav/grav-plugin-admin/issues/701)
+ * Fixed a typo in the `webserver-configs/nginx.conf` example
+
+# v1.1.0
+## 07/14/2016
+
+1. [](#improved)
+ * 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)
+ * Unified PHP code header styling
+ * Added 6 more languages and updated language codes
+ * set default "releases" option to `stable`
+1. [](#bugfix)
+ * Fix backend validation for file fields marked as required [grav-plugin-form#78](https://github.com/getgrav/grav-plugin-form/issues/78)
+
+# v1.1.0-rc.3
+## 06/21/2016
+
+1. [](#new)
+ * Add a onPageFallBackUrl event when starting the fallbackUrl() method to allow the Login plugin to protect the page media
+ * Conveniently allow ability to retrieve user information via config object [#913](https://github.com/getgrav/grav/pull/913) - @Vivalldi
+ * Grav served images can now use header caching [#905](https://github.com/getgrav/grav/pull/905)
+1. [](#improved)
+ * Take asset modification timestamp into consideration in pipelining [#917](https://github.com/getgrav/grav/pull/917) - @Sommerregen
+1. [](#bugfix)
+ * Respect `enable_asset_timestamp` settings for pipelined Assets [#906](https://github.com/getgrav/grav/issues/906)
+ * Fixed collections end dates for 32-bit systems [#902](https://github.com/getgrav/grav/issues/902)
+ * Fixed a recent regression (1.1.0-rc1) with parameter separator different than `:`
+
+# v1.1.0-rc.2
+## 06/14/2016
+
+1. [](#new)
+ * 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)
+1. [](#improved)
+ * Pass the exception to the `onFatalException()` event
+ * Updated to latest jQuery 2.2.4 release
+ * Moved list items in `system/config/media.yaml` config into a `types:` key which allows you delete default items.
+ * Updated `webserver-configs/nginx.conf` with `try_files` fix from @mrhein and @rondlite [#743](https://github.com/getgrav/grav/pull/743)
+ * Updated cache references to include `memecache` and `redis` [#887](https://github.com/getgrav/grav/issues/887)
+ * Updated composer libraries
+1. [](#bugfix)
+ * Fixed `Utils::normalizePath()` that was truncating 0's [#882](https://github.com/getgrav/grav/issues/882)
+
+# v1.1.0-rc.1
+## 06/01/2016
+
+1. [](#new)
+ * Added `Utils::getDotNotation()` and `Utils::setDotNotation()` methods + tests
+ * Added support for `xx-XX` locale language lookups in `LanguageCodes` class [#854](https://github.com/getgrav/grav/issues/854)
+ * New CSS/JS Minify library that does a more reliable job [#864](https://github.com/getgrav/grav/issues/864)
+1. [](#improved)
+ * GPM installation of plugins and themes into correct multisite folders [#841](https://github.com/getgrav/grav/issues/841)
+ * Use `Page::rawRoute()` in blueprints for more reliable mulit-language support
+1. [](#bugfix)
+ * Fixes for `zlib.output_compression` as well as `mod_deflate` GZIP compression
+ * Fix for corner-case redirect logic causing infinite loops and out-of-memory errors
+ * Fix for saving fields in expert mode that have no `Validation::typeX()` methods [#626](https://github.com/getgrav/grav-plugin-admin/issues/626)
+ * Detect if user really meant to extend parent blueprint, not another one (fixes old page type blueprints)
+ * Fixed a bug in `Page::relativePagePath()` when `Page::$name` is not defined
+ * Fix for poor handling of params + query element in `Uri::processParams()` [#859](https://github.com/getgrav/grav/issues/859)
+ * Fix for double encoding in markdown links [#860](https://github.com/getgrav/grav/issues/860)
+ * Correctly handle language strings to determine if it's in admin or not [#627](https://github.com/getgrav/grav-plugin-admin/issues/627)
+
+# v1.1.0-beta.5
+## 05/23/2016
+
+1. [](#improved)
+ * Updated jQuery from 2.2.0 to 2.2.3
+ * Set `Uri::ip()` to static by default so it can be used in form fields
+ * Improved `Session` class with flash storage
+ * `Page::getContentMeta()` now supports an optional key.
+1. [](#bugfix)
+ * Fixed "Invalid slug set in YAML frontmatter" when setting `Page::slug()` with empty string [#580](https://github.com/getgrav/grav-plugin-admin/issues/580)
+ * Only `.gitignore` Grav's vendor folder
+ * Fix trying to remove Grav with `GPM uninstall` of a plugin with Grav dependency
+ * Fix Page Type blueprints not being able to extend their parents
+ * `filterFile` validation method always returns an array of files, behaving like `multiple="multiple"`
+ * Fixed [#835](https://github.com/getgrav/grav-plugin-admin/issues/835) check for empty image file first to prevent getimagesize() fatal error
+ * Avoid throwing an error when Grav's Gzip and mod_deflate are enabled at the same time on a non php-fpm setup
+
+# v1.1.0-beta.4
+## 05/09/2016
+
+1. [](#bugfix)
+ * Drop dependencies calculations if plugin is installed via symlink
+ * Drop Grav from dependencies calculations
+ * Send slug name as part of installed packages
+ * Fix for summary entities not being properly decoded [#825](https://github.com/getgrav/grav/issues/825)
+
+
+# v1.1.0-beta.3
+## 05/04/2016
+
+1. [](#improved)
+ * Pass the Page type when calling `onBlueprintCreated`
+ * Changed `Page::cachePageContent()` form **private** to **public** so a page can be recached via plugin
+1. [](#bugfix)
+ * Fixed handling of `{'loading':'async'}` with Assets Pipeline
+ * Fix for new modular page modal `Page` field requiring a value [#529](https://github.com/getgrav/grav-plugin-admin/issues/529)
+ * Fix for broken `bin/gpm version` command
+ * Fix handling "grav" as a dependency
+ * Fix when installing multiple packages and one is the dependency of another, don't try to install it twice
+ * Fix using name instead of the slug to determine a package folder. Broke for packages whose name was 2+ words
+
+# v1.1.0-beta.2
+## 04/27/2016
+
+1. [](#new)
+ * Added new `Plugin::getBlueprint()` and `Theme::getBlueprint()` method
+ * Allow **page blueprints** to be added via Plugins.
+1. [](#improved)
+ * Moved to new `data-*@` format in blueprints
+ * Updated composer-based libraries
+ * Moved some hard-coded `CACHE_DIR` references to use locator
+ * Set `twig.debug: true` by default
+1. [](#bugfix)
+ * Fixed issue with link rewrites and local assets pipeline with `absolute_urls: true`
+ * Fix ordering issue with accented letters [#784](https://github.com/getgrav/grav/issues/784)
+ * Fix issue with Assets pipeline and missing newlines causing invalid JavaScript
+
+# v1.1.0-beta.1
+## 04/20/2016
+
+1. [](#new)
+ * **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.
+ * **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.
+ * **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.
+ * **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`.
+ * **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.
+ * **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.
+ * **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.
+ * **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.
+ * **Validation Rules**: You can now define a custom blueprint-level validation rule and assign this rule to a form field.
+ * **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.
+ * **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.
+ * **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.
+ * **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.
+ * 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)
+ * Added multipart downloads, resumable downloads, download throttling, and video streaming in the `Utils::download()` method.
+ * Added optional config to allow Twig processing in page frontmatter - [#788](https://github.com/getgrav/grav/pull/788)
+ * Added the ability to provide blueprints via a plugin (previously limited to Themes only).
+ * Added Developer CLI Tools to easily create a new theme or plugin
+ * Allow authentication for proxies - [#698](https://github.com/getgrav/grav/pull/698)
+ * Allow to override the default Parsedown behavior - [#747](https://github.com/getgrav/grav/pull/747)
+ * Added an option to allow to exclude external files from the pipeline, and to render the pipeline before/after excluded files
+ * Added the possibility to store translations of themes in separate files inside the `languages` folder
+ * 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
+ * Added a shortcut for pages.find() alias
+1. [](#improved)
+ * Now supporting hostnames with localhost environments for better vhost support/development
+ * 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.
+ * If multilanguage is active, include the Intl Twig Extension to allow translating dates automatically (http://twig.sensiolabs.org/doc/extensions/intl.html)
+ * 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)
+ * Caddyfile and Lighttpd config files updated
+ * Removed `node_modules` folder from backups to make them faster
+ * Display error when `bin/grav install` hasn't been run instead of throwing exception. Prevents "white page" errors if error display is off
+ * 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
+ * Added more tests to our testing suite
+ * Added x-ua-compatible to http_equiv metadata processing
+ * 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)
+ * Added `webm` and `ogv` video types to the default media types list.
+1. [](#bugfix)
+ * Fix Zend Opcache `opcache.validate_timestamps=0` not detecting changes in compiled yaml and twig files
+ * 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)
+ * Fix for non-pipeline assets getting lost when pipeline is cached to filesystem
+ * Fix for double encoding resulting from Markdown Extra
+ * Fix for a remote link breaking all CSS rewrites for pipeline
+ * Fix an issue with Retina alternatives not clearing properly between repeat uses
+ * Fix for non standard http/s external markdown links - [#738](https://github.com/getgrav/grav/issues/738)
+ * Fix for `find()` calling redirects via `dispatch()` causing infinite loops - [#781](https://github.com/getgrav/grav/issues/781)
+
+# v1.0.10
+## 02/11/2016
+
+1. [](#new)
+ * Added new `Page::contentMeta()` mechanism to store content-level meta data alongside content
+ * Added Japanese language translation
+1. [](#improved)
+ * Updated some vendor libraries
+1. [](#bugfix)
+ * Hide `streams` blueprint from Admin plugin
+ * Fix translations of languages with `---` in YAML files
+
+# v1.0.9
+## 02/05/2016
+
+1. [](#new)
+ * New **Unit Testing** via Codeception http://codeception.com/
+ * New **page-level SSL** functionality when using `absolute_urls`
+ * Added `reverse_proxy` config option for issues with non-standard ports
+ * Added `proxy_url` config option to support GPM behind proxy servers #639
+ * New `Pages::parentsRawRoutes()` method
+ * Enhanced `bin/gpm info` CLI command with Changelog support #559
+ * Ability to add empty *Folder* via admin plugin
+ * Added latest `jQuery 2.2.0` library to core
+ * Added translations from Crowdin
+1. [](#improved)
+ * [BC] Metadata now supports only flat arrays. To use open graph metas and the likes (ie, 'og:title'), simply specify it in the key.
+ * Refactored `Uri::convertUrl()` method to be more reliable + tests created
+ * Date for last update of a modular sub-page sets modified date of modular page itself
+ * Split configuration up into two steps
+ * Moved Grav-based `base_uri` variables into `Uri::init()`
+ * Refactored init in `URI` to better support testing
+ * Allow `twig_vars` to be exposed earlier and merged later
+ * Avoid setting empty metadata
+ * Accept single group access as a string rather than requiring an array
+ * Return `$this` in Page constructor and init to allow chaining
+ * Added `ext-*` PHP requirements to `composer.json`
+ * Use Whoops 2.0 library while supporting old style
+ * Removed redundant old default-hash fallback mechanisms
+ * Commented out default redirects and routes in `site.yaml`
+ * Added `/tests` folder to deny's of all `webserver-configs/*` files
+ * Various PS and code style fixes
+1. [](#bugfix)
+ * Fix default generator metadata
+ * Fix for broken image processing caused by `Uri::convertUrl()` bugs
+ * Fix loading JS and CSS from collections #623
+ * Fix stream overriding
+ * Remove the URL extension for home link
+ * Fix permissions when the user has no access level set at all
+ * Fix issue with user with multiple groups getting denied on first group
+ * Fixed an issue with `Pages()` internal cache lookup not being unique enough
+ * Fix for bug with `site.redirects` and `site.routes` being an empty list
+ * [Markdown] Don't process links for **special protocols**
+ * [Whoops] serve JSON errors when request is JSON
+
+
+# v1.0.8
+## 01/08/2016
+
+1. [](#new)
+ * Added `rotate`, `flip` and `fixOrientation` image medium methods
+1. [](#bugfix)
+ * Removed IP from Nonce generation. Should be more reliable in a variety of scenarios
+
+# v1.0.7
+## 01/07/2016
+
+1. [](#new)
+ * Added `composer create-project` as an additional installation method #585
+ * New optional system config setting to strip home from page routs and urls #561
+ * Added Greek, Finnish, Norwegian, Polish, Portuguese, and Romanian languages
+ * Added new `Page->topParent()` method to return top most parent of a page
+ * Added plugins configuration tab to debugger
+ * Added support for APCu and PHP7.0 via new Doctrine Cache release
+ * Added global setting for `twig_first` processing (false by default)
+ * New configuration options for Session settings #553
+1. [](#improved)
+ * Switched to SSL for GPM calls
+ * Use `URI->host()` for session domain
+ * Add support for `open_basedir` when installing packages via GPM
+ * Improved `Utils::generateNonceString()` method to handle reverse proxies
+ * Optimized core thumbnails saving 38% in file size
+ * Added new `bin/gpm index --installed-only` option
+ * Improved GPM errors to provider more helpful diagnostic of issues
+ * Removed old hardcoded PHP version references
+ * Moved `onPageContentProcessed()` event so it's fired more reliably
+ * Maintain md5 keys during sorting of Assets #566
+ * Update to Caddyfile for Caddy web server
+1. [](#bugfix)
+ * Fixed an issue with cache/config checksum not being set on cache load
+ * Fix for page blueprint and theme inheritance issue #534
+ * Set `ZipBackup` timeout to 10 minutes if possible
+ * Fix case where we only have inline data for CSS or JS #565
+ * Fix `bin/grav sandbox` command to work with new `webserver-config` folder
+ * Fix for markdown attributes on external URLs
+ * Fixed issue where `data:` page header was acting as `publish_date:`
+ * Fix for special characters in URL parameters (e.g. /tag:c++) #541
+ * Safety check for an array of nonces to only use the first one
+
+# v1.0.6
+## 12/22/2015
+
+1. [](#new)
+ * Set minimum requirements to [PHP 5.5.9](http://bit.ly/1Jt9OXO)
+ * Added `saveConfig` to Themes
+1. [](#improved)
+ * Updated Whoops to new 2.0 version (PHP 7.0 compatible)
+ * Moved sample web server configs into dedicated directory
+ * FastCGI will use Apache's `mod_deflate` if gzip turned off
+1. [](#bugfix)
+ * Fix broken media image operators
+ * Only call extra method of blueprints if blueprints exist
+ * Fix lang prefix in url twig variables #523
+ * Fix case insensitive HTTPS check #535
+ * Field field validation handles case `multiple` missing
+
+# v1.0.5
+## 12/18/2015
+
+1. [](#new)
+ * Add ability to extend markdown with plugins
+ * Added support for plugins to have individual language files
+ * Added `7z` to media formats
+ * Use Grav's fork of Parsedown until PR is merged
+ * New function to persist plugin configuration to disk
+ * GPM `selfupgrade` will now check PHP version requirements
+1. [](#improved)
+ * If the field allows multiple files, return array
+ * Handle non-array values in file validation
+1. [](#bugfix)
+ * Fix when looping `fields` param in a `list` field
+ * Properly convert commas to spaces for media attributes
+ * Forcing Travis VM to HI timezone to address future files in zip file
+
+# v1.0.4
+## 12/12/2015
+
+1. [](#bugfix)
+ * Needed to put default image folder permissions for YAML compatibility
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@getgrav.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
+:+1::tada: First, thanks for getting involved with Grav! :tada::+1:
+
+Please take a moment to review this document in order to make the contribution
+process easy and effective for everyone involved.
+
+Following these guidelines helps to communicate that you respect the time of
+the developers managing and developing this open source project. In return,
+they should reciprocate that respect in addressing your issue or assessing
+patches and features.
+
+## Grav, Plugins, Themes and Skeletons
+
+Grav is a large open source project — it's made up of over 100 repositories. When you initially consider contributing to Grav, you might be unsure about which of those 200 repositories implements the functionality you want to change or report a bug for.
+
+[https://github.com/getgrav/grav](https://github.com/getgrav/grav) is the main Grav repository. The core of Grav is provided by this repo.
+
+[https://github.com/getgrav/grav-plugin-admin](https://github.com/getgrav/grav-plugin-admin) is the Admin Plugin repository.
+
+Every Plugin and Theme has its own repository. If you have a problem you think is specific to a Theme or Plugin, please report it in its corresponding repository. Please read the Plugin or Theme documentation to ensure the problem is not addressed there already.
+
+Every Skeleton also has its own repository, so if an issue is not specific to a theme or plugin but rather to its usage in the skeleton, report it in the skeleton repository.
+
+## Using the issue tracker
+
+The issue tracker is the preferred channel for [bug reports](#bugs),
+[features requests](#features) and [submitting pull
+requests](#pull-requests), but please respect the following restrictions:
+
+* Please **do not** use the issue tracker for support requests. Use
+ [the Forum](http://getgrav.org/forum) or [the Chat](https://chat.getgrav.org/).
+
+
+<a name="bugs"></a>
+## Bug reports
+
+A bug is a _demonstrable problem_ that is caused by the code in the repository.
+Good bug reports are extremely helpful - thank you!
+
+Guidelines for bug reports:
+
+1. **Check you satisfy the Grav requirements** — [http://learn.getgrav.org/basics/requirements](http://learn.getgrav.org/basics/requirements)
+
+2. **Check this happens on a clean Grav install** — check if the issue happens on any Grav site, or just with a specific configuration of plugins / theme
+
+3. **Use the GitHub issue search** — check if the issue has already been
+ reported.
+
+4. **Check if the issue is already being solved in a PR** — check the open Pull Requests to see if one already solves the problem you're having
+
+5. **Check if the issue has been fixed** — try to reproduce it using the
+ latest `develop` branch in the repository.
+
+6. **Isolate the problem** — create a [reduced test
+ case](http://css-tricks.com/reduced-test-cases/) and provide a step-by-step instruction set on how to recreate the problem. Include code samples, page snippets or yaml configurations if needed.
+
+7. **Check the problem on Grav 1.1** — if you're using Grav 1.0, latest stable release, please also check if you can replicate the issue on Grav 1.1 RC as many bugs are already solved in the next Grav release.
+
+A good bug report shouldn't leave others needing to chase you up for more
+information. Please try to be as detailed as possible in your report.
+
+- What is your environment? Is it localhost, OSX, Linux, on a remote server? Same happening locally and or the server, or just locally or just on Linux?
+
+- What steps will reproduce the issue? What browser(s) and OS experience the problem?
+
+- What would you expect to be the outcome?
+
+- Did the problem start happening recently (e.g. after updating to a new version of Grav) or was this always a problem?
+
+- If the problem started happening recently, can you reproduce the problem in an older version of Grav? What's the most recent version in which the problem doesn't happen? You can download older versions of Grav from the releases page on Github.
+
+- Can you reliably reproduce the issue? If not, provide details about how often the problem happens and under which conditions it normally happens.
+
+
+All these details will help contributors to fix any potential bugs.
+
+Important: [include Code Samples in triple backticks](https://help.github.com/articles/github-flavored-markdown/#fenced-code-blocks) so that Github will provide a proper indentation. [Add the language name after the backticks](https://help.github.com/articles/github-flavored-markdown/#syntax-highlighting) to add syntax highlighting to the code snippets.
+
+Example:
+
+> Short and descriptive example bug report title
+>
+> A summary of the issue and the browser/OS environment in which it occurs. If
+> suitable, include the steps required to reproduce the bug.
+>
+> 1. This is the first step
+> 2. This is the second step
+> 3. Further steps, etc.
+>>
+> Any other information you want to share that is relevant to the issue being
+> reported. This might include the lines of code that you have identified as
+> causing the bug, and potential solutions (and your opinions on their
+> merits).
+
+
+<a name="features"></a>
+## Feature requests
+
+Feature requests are welcome. But take a moment to find out whether your idea
+fits with the scope and aims of the project. It's up to *you* to make a strong
+case to convince the project's developers of the merits of this feature. Please
+provide as much detail and context as possible.
+
+
+<a name="pull-requests"></a>
+## Pull requests
+
+Good pull requests - patches, improvements, new features - are a fantastic
+help. They should remain focused in scope and avoid containing unrelated
+commits.
+
+**Please ask first** in [the Forum](http://getgrav.org/forum) or [the Chat](https://chat.getgrav.org/)
+before embarking on any significant pull request (e.g.
+implementing features, refactoring code..),
+otherwise you risk spending a lot of time working on something that the
+project's developers might not want to merge into the project.
+
+Please adhere to the coding conventions used throughout the project (indentation,
+accurate comments, etc.) and any other requirements.
+
+See [Using Pull Request](https://help.github.com/articles/using-pull-requests/) and [Fork a Repo](https://help.github.com/articles/fork-a-repo/) if you're not familiar with Pull Requests.
+
+Any pull request should be based on the `develop` branch. We will not consider pull requests made to master.
+
+**IMPORTANT**: By submitting a patch, you agree to allow the project owner to
+license your work under the same license as that used by the project.
+
+<a name="translations"></a>
+### Translations
+Translations for Grav core and the Admin plugin are managed through Crowdin:
+
+- Admin: https://crowdin.com/project/grav-admin
+- Core: https://crowdin.com/project/grav-core
+
+Please do not post translations PRs for core or admin translations on GitHub, with the exception of fixes for the english language.
+
+All other plugins and themes translations are handled directly in their GitHub repository, and the string are usually found in the `languages.yaml` file at the root of each project.
+Grav is a **Fast**, **Simple**, and **Flexible**, file-based Web-platform. There is **Zero** installation required. Just extract the ZIP archive, and you are already up and running. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful **Package Management System** to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself.
+
+The underlying architecture of Grav is designed to use well-established and _best-in-class_ technologies to ensure that Grav is simple to use and easy to extend. Some of these key technologies include:
+
+* [Twig Templating](https://twig.sensiolabs.org/): for powerful control of the user interface
+* [Markdown](https://en.wikipedia.org/wiki/Markdown): for easy content creation
+* [YAML](https://yaml.org): for simple configuration
+* [Parsedown](https://parsedown.org/): for fast Markdown and Markdown Extra support
+* [Doctrine Cache](https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html): layer for performance
+* [Pimple Dependency Injection Container](https://pimple.sensiolabs.org/): for extensibility and maintainability
+* [Symfony Event Dispatcher](https://symfony.com/doc/current/components/event_dispatcher/introduction.html): for plugin event handling
+* [Symfony Console](https://symfony.com/doc/current/components/console/introduction.html): for CLI interface
+* [Gregwar Image Library](https://github.com/Gregwar/Image): for dynamic image manipulation
+
+# Requirements
+
+- PHP 7.1.3 or higher. Check the [required modules list](https://learn.getgrav.org/basics/requirements#php-requirements)
+- Check the [Apache](https://learn.getgrav.org/basics/requirements#apache-requirements) or [IIS](https://learn.getgrav.org/basics/requirements#iis-requirements) requirements
+
+# QuickStart
+
+These are the options to get Grav:
+
+### Downloading a Grav Package
+
+You can download a **ready-built** package from the [Downloads page on https://getgrav.org](https://getgrav.org/downloads)
+
+### With Composer
+
+You can create a new project with the latest **stable** Grav release with the following command:
+1. Clone the Grav repository from [https://github.com/getgrav/grav]() to a folder in the webroot of your server, e.g. `~/webroot/grav`. Launch a **terminal** or **console** and navigate to the webroot folder:
+ ```
+ $ cd ~/webroot
+ $ git clone https://github.com/getgrav/grav.git
+ ```
+
+2. Install the **plugin** and **theme dependencies** by using the [Grav CLI application](https://learn.getgrav.org/advanced/grav-cli) `bin/grav`:
+ ```
+ $ cd ~/webroot/grav
+ $ bin/grav install
+ ```
+
+Check out the [install procedures](https://learn.getgrav.org/basics/installation) for more information.
+
+# Adding Functionality
+
+You can download [plugins](https://getgrav.org/downloads/plugins) or [themes](https://getgrav.org/downloads/themes) manually from the appropriate tab on the [Downloads page on https://getgrav.org](https://getgrav.org/downloads), but the preferred solution is to use the [Grav Package Manager](https://learn.getgrav.org/advanced/grav-gpm) or `GPM`:
+
+```
+$ bin/gpm index
+```
+
+This will display all the available plugins and then you can install one or more with:
+
+```
+$ bin/gpm install <plugin/theme>
+```
+
+# Updating
+
+To update Grav you should use the [Grav Package Manager](https://learn.getgrav.org/advanced/grav-gpm) or `GPM`:
+
+```
+$ bin/gpm selfupgrade
+```
+
+To update plugins and themes:
+
+```
+$ bin/gpm update
+```
+
+
+# Contributing
+We appreciate any contribution to Grav, whether it is related to bugs, grammar, or simply a suggestion or improvement! Please refer to the [Contributing guide](CONTRIBUTING.md) for more guidance on this topic.
+
+## Security issues
+If you discover a possible security issue related to Grav or one of its plugins, please email the core team at contact@getgrav.org and we'll address it as soon as possible.
+
+# Getting Started
+
+* [What is Grav?](https://learn.getgrav.org/basics/what-is-grav)
+* [Install](https://learn.getgrav.org/basics/installation) Grav in few seconds
+* Understand the [Configuration](https://learn.getgrav.org/basics/grav-configuration)
+* Take a peek at our available free [Skeletons](https://getgrav.org/downloads/skeletons)
+* If you have questions, jump on our [Discord Chat Server](https://chat.getgrav.org)!
+* Have fun!
+
+# Exploring More
+
+* Have a look at our [Basic Tutorial](https://learn.getgrav.org/basics/basic-tutorial)
+* Dive into more [advanced](https://learn.getgrav.org/advanced) functions
+* Learn about the [Grav CLI](https://learn.getgrav.org/cli-console/grav-cli)
+* Review examples in the [Grav Cookbook](https://learn.getgrav.org/cookbook)
+* More [Awesome Grav Stuff](https://github.com/getgrav/awesome-grav)
+
+# Backers
+Support Grav with a monthly donation to help us continue development. [[Become a backer](https://opencollective.com/grav#backer)]
+ "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.",
+ "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.",
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ die("PHP webserver requires a router to run Grav, please use: <pre>php -S {$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']} system/router.php</pre>");
+}
+
+// Ensure vendor libraries exist
+$autoload = __DIR__ . '/vendor/autoload.php';
+if (!is_file($autoload)) {
+ die('Please run: <i>bin/grav install</i>');
+}
+
+// Register the auto-loader.
+$loader = require $autoload;
+
+use Grav\Common\Grav;
+use RocketTheme\Toolbox\Event\Event;
+
+// Set timezone to default, falls back to system if php.ini not set
+ enable_media_timestamp: false # Enable media timestamps
+ unsupported_inline_types: [] # Array of supported media types to try to display inline
+ allowed_fallback_types: [] # Array of allowed media types of files found if accessed via Page route
+ auto_metadata_exif: false # Automatically create metadata files from Exif data where possible
+
+session:
+ enabled: true # Enable Session support
+ initialize: true # Initialize session from Grav (if false, plugin needs to start the session)
+ timeout: 1800 # Timeout in seconds
+ name: grav-site # Name prefix of the session cookie. Use alphanumeric, dashes or underscores only. Do not use dots in the session name
+ uniqueness: path # Should sessions be `path` based or `security.salt` based
+ secure: false # Set session secure. If true, indicates that communication for this cookie must be over an encrypted transmission. Enable this only on sites that run exclusively on HTTPS
+ httponly: true # Set session HTTP only. If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed.
+ split: true # Sessions should be independent between site and plugins (such as admin)
+ path:
+
+gpm:
+ releases: stable # Set to either 'stable' or 'testing'
+ proxy_url: # Configure a manual proxy URL for GPM (eg 127.0.0.1:3128)
+ method: 'auto' # Either 'curl', 'fopen' or 'auto'. 'auto' will try fopen first and if not available cURL
+ verify_peer: true # Sometimes on some systems (Windows most commonly) GPM is unable to connect because the SSL certificate cannot be verified. Disabling this setting might help.
+ official_gpm_only: true # By default GPM direct-install will only allow URLs via the official GPM proxy to ensure security
+
+accounts:
+ type: data # Account type: data or flex
+ storage: file # Flex storage type: file or folder