Grav 1.3.1

Grav is a modern Web-CMS, implemented in PHP, utilizes flat-file storage, and is optimized for low latency. It uses MD/CommonMark for page structuring, provides a lean but powerful API and plugin hook system, uses Twig for templating, YAML configuration, Doctrine caching. The file store allows simple backups and versioning using any SCM. Grav comes with a feature-rich admin interface and CLI tools are provided.

Tags php cms webcms flat-file markdown yaml
License MITL
State initial

Recent Releases

1.3.121 Jul 2017 21:25 minor bugfix: 1. (#) ordering for Linux + International environments. Check if medium thumbnail exists before resetting. Update Travis' auth token.
1.3.017 Jul 2017 06:05 major feature: 1. (#) an undefined variable ` difference`. broken range slider grav-plugin-admin#1153. natural sort when 100 pages. v1.3.0-rc.5. ## 07/05/2017. 1. (#new). Setting `system.session.timeout` to 0 clears the session when the browser session ends. Created a `` 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. (#) global media files disappearing after a reload. 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. Updated vendor libraries. 1. (#) Don't rebuild metadata every time, only when file does not exist. Restore GravTrait in ConsoleTrait grav-plugin-login#119. Windows routing with built-in server. `process_twig` and `frontmatter.yaml`. Nicetime seconds from now - just now. 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. Improved reliability of `hash` file-check method. 1. (#) Updated to latest Toolbox library to with some blueprints rendering in admin plugin. output handling in RenderProcessor. 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. 1. (#) an saving YAML textarea fields in expert mode. Moved `onOutputRendered()` back into Grav core. v1.3.0
1.2.425 Apr 2017 05:05 minor bugfix: 1. (#improved) Added optional ignores for `Installer::sophisticatedInstall()`. 1. (#) Allow multiple calls to `Themes::initTheme()` without throwing errors. querystrings in root pages with multi-lang enabled. Allow support for `Pages::getList()` with `show_modular` option.
1.2.321 Apr 2017 03:05 minor feature: 1. (#improved) Added new `pwd_regex` and `username_regex` system configuration options to allow format modifications. Allow `user/accounts.yaml` overrides and implemented more robust theme initialization. improved `getList()` method to do more powerful things. Typo in GPM.
1.2.215 Apr 2017 14:45 minor bugfix: 1. (#) For redirects breaking. in direct-install with github-style dependencies.
1.2.111 Apr 2017 06:45 minor feature: 1. (#improved) Added various `ancestor` helper methods in Page and Pages classes. Added new `parents` field and switched Page blueprints to use this. Added `isajaxrequest()` Twig function. Added ability to inline CSS and JS code via Asset manager. Add query string in lighttpd default config. Add `--all-yes` and `--destination` options for `bin/gpm direct-install`. 1. (#) for direct-install of plugins with `languages.yaml`. When determining language from HTTP_ACCEPT_LANGUAGE, also try base language only. a bad method signature causing warning when running tests on `GPMTest` object.
1.2.001 Apr 2017 07:05 major bugfix: 1. (#new) Added file upload for user avatar in user/admin blueprint. 1. (#improved) Analysis Switched to stable composer lib versions. v1.2.0-rc.3. ## 03/22/2017. 1. (#new). Refactored Page re-ordering to handle all siblings at once. Added `language_codes` to Twig init to allow for easy language name/code/native-name lookup. 1. (#improved) Added an _Admin Overrides_ section with option to choose the order of children in Pages Management. 1. (#) loading with improperly named themes (use old broken method first). Simplified modular/twig processing logic and an with system process config. Cleanup package files via GPM install to make them more windows-friendly. for page-level deger override changing the option site-wide. Allow `url()` twig function to pass-through external links. v1.2.0-rc.2. ## 03/17/2017. 1. (#improved). Updated vendor libraries to latest. Added the ability to disable deger on a per-page basis with `deger: false` in page frontmatter. 1. (#) an with theme inheritance and hyphenated base themes. an when trying to use an `@2x` derivative on a non-image media file. v1.2.0-rc.1. ## 03/13/2017. 1. (#new). Added default setting to only allow `direct-installs` from official GPM. Can be configured in `system.yaml`. Added a new `Utils::isValidUrl()` method. Added optional parameter to ` markdown(false)` filter to toggle block/line processing (default true = `block`). Added new `Page::folderExists()` method. 1. (#improved) `Twig::evaluate()` now takes current environment and context into account. Genericized `direct-install` so it can be called via Admin plugin. 1. (#) a minor in Number validation. exception when trying to find user account and there is no `user://accounts` folder. when setting `Page::expires(0)` Admin #1009. Removed ID from `nonce_field()` Twig function causing validation errors Form #115.
1.1.1718 Feb 2017 17:25 minor bugfix: 1. (#) For double extensions getting added during some redirects. Syntax error in PHP 5.3. Move the version check before requiring the autoloaded deps. Whoops displaying error page if there is PHP core warning or error Admin #980.
1.1.1611 Feb 2017 10:25 minor feature: 1. (#new) Exposed the Pages cache ID for use by plugins (e.g. Form) via `Pages::getPagesCacheId()`. Added `Languages::resetFallbackPageExtensions()` regarding. 1. (#improved) Allowed CLI to use non-volatile cache drivers for better integration with CLI and Web caches. Added Gantry5-compatible query information to Caddy configuration. Added some missing docblocks and type-hints. Various code cleanups (return types, missing variables in doclbocks, etc.). 1. (#) blueprints slug validation
1.1.1531 Jan 2017 11:05 minor feature: 1. (#new) Added a new `Collection::merge()` method to allow merging of multiple collections. Added OpenCollective backer/sponsor info to ``. 1. (#improved) Add an additional parameter to GPM::findPackage to avoid throwing an exception, for use in Twig. Skip symlinks if found while clearing cache. 1. (#) an when page collection with header-based `` returns an array. `Response` object to handle `303` redirects when `open_basedir` in effect. Silence `E_WARNING: Zend OPcache API is restricted by "restrict_api" configuration directive`.
1.1.1423 Jan 2017 01:25 minor bugfix: 1. (#) `Page::collection()` returning array and not Collection object when header variable did not exist. Revert `Content-Encoding: identity`, and let you set `cache: allow_webserver_gzip:` option to switch to `identity`.
1.1.1318 Jan 2017 22:45 minor bugfix: 1. (#new) Added new `never_cache_twig` page option in `system.yaml` and frontmatter. Allows dynamic Twig logic in regular and modular Twig templates. 1. (#improved) Several improvements to aid theme development. Added `hash` cache check option and made dropdown more descriptive Admin #923. 1. (#) Cross volume file system operations. With pages folders validation not accepting uppercase letters. Renaming the folder name if the page, in the default language, had a custom slug set in its header. With `Content-Encoding: none`. It should really be `Content-Encoding: identity` instead. Broken `hash` method on page modifications detection. With multi-lang pages not caching independently without unique `.md` file. All ` _GET` parameters missing in Nginx (please update your nginx.conf). in trying to process broken symlink.
1.1.1227 Dec 2016 07:45 minor bugfix: 1. (#) With JSON calls throwing errors due to deger enabled.
1.1.1123 Dec 2016 08:45 minor bugfix: 1. (#improved) Fall back properly to HTML if template type not found. 1. (#) With modular pages folders validation.
1.1.914 Dec 2016 07:05 minor feature: 1. (#new) RC released as stable. 1. (#improved) Better error handling in cache clear. YAML syntax 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. (#) 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 (`! (image.jpg?derivatives= 640,1024,1440 )`). Added stream support for images (`!Sepia Image`). Added stream support for links (`Download 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 1. (#). page collections problem with `@page.modular`. with using a multiple taxonomy filter of which one had no results, thanks to @hughbris. saving permissions in group. 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`. 1. (#improved) Multisite: Create image cache folder if it doesn't exist. Add 2 new language values for French. 1. (#) when we have a meta file without corresponding media. Update class namespace for Admin class. v1.1.9-rc.1. ## 11/09/2016. 1. (#new). Added a `CompiledJsonFile` object to better handle Json files. Added Base32 encode/decode clas
1.1.824 Oct 2016 10:05 minor bugfix: 1. (#) Warning with unset `ssl` option when using GPM.
1.1.620 Oct 2016 12:25 minor feature: 1. (#new) Added ability for Page to override the output format (`html`, `xml`, etc..). 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 orientation on images based on their Exif data, by enabling `system.images.auto__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. 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. Added new `verbosity` levels to `system.error.display` to allow for system error messages. Improved the API for Grav plugins to access the Parsedown parser directly. 1. (#) missing `progress` method in the DirectInstall Command. `Response` class now handles better unsuccessful requests such as 404 and 401. saving of `external` page types admin #789. deleting parent folder of folder with `pa
1.1.512 Sep 2016 14:05 minor bugfix: 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. (#) Quietly skip missing streams in `Cache::clearCache()`. in calling page.summary when no content is present in a page.
1.1.408 Sep 2016 14:25 minor feature: 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. 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. Added randomization to `safe_email` Twig filter for greater security. Allow `Utils::setDotNotation` to merge data, rather than just set. Moved default `Image::filter()` to the `save` action to ensure they are applied last. Improved the `Truncator` code to be more reliable. Moved media blueprints out of core (now in Admin plugin). 1. (#) Removed 307 redirect code option as it is not well supported. with folders with name `*.md` are not confused with pages. an when filtering collections causing null key. for invalid HTML when rendering GIF and Vector media. Use pages.markdown.extra in the user's system.yaml. for `Memcached` connection.
1.1.316 Aug 2016 11:05 minor bugfix: 1. (#) For lightbox media function throwing error.
1.1.212 Aug 2016 07:25 minor bugfix: 1. (#new) Allow forcing SSL by setting `system.force_ssl` (Force SSL in the Admin System Config). 1. (#improved) Improved `authorize` Twig extension to accept a nested array of authorizations. 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. Added support for dumping exceptions in the Deger. 1. (#) `Folder::delete` method to recursively remove files and folders and causing Upgrade to fail. hyphenize the session name. If no parent is set and siblings collection is called, return a new and empty collection grav-plugin-sitemap//22. Prevent exception being thrown when calling the Collator constructor failed in a Windows environment with the Intl PHP Extension enabled. for markdown images not properly rendering `id` attribute.
1.1.119 Jul 2016 20:25 minor bugfix: 1. (#improved) Made `paramsRegex()` static to allow it to be called statically. 1. (#) Backup when using very long site titles with invalid characters grav-plugin-admin#701. a typo in the `webserver-configs/nginx.conf` example.
1.1.015 Jul 2016 11:05 major feature: 1. (#improved) Added support for validation of multiple email in the `type: email` field grav-plugin-email#31. Unified PHP code header styling. Added 6 more languages and updated language codes. set default "releases" option to `stable`. 1. (#) backend validation for file fields marked as required grav-plugin-form#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 - @Vivalldi. Grav served images can now use header caching. 1. (#improved) Take asset modification timestamp into consideration in pipelining - @Sommerregen. 1. (#) Respect `enable_asset_timestamp` settings for pipelined Assets. collections end dates for 32-bit systems. 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. 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` from @mrhein and @rondlite. Updated cache references to include `memecache` and `redis`. Updated composer libraries. 1. (#) `Utils::normalizePath()` that was truncating 0's. 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. New CSS/JS Minify library that does a more reliable job. 1. (#improved) GPM installation of plugins and themes into correct multisite folders. Use `Page::rawRoute()` in blueprints for more reliable mulit-language support. 1. (#) for `zlib.output_compression` as well as `
1.0.1012 Feb 2016 07:45 minor feature: 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. (#) Hide `streams` blueprint from Admin plugin. translations of languages with `---` in YAML files.
1.0.906 Feb 2016 10:05 minor bugfix: 1. (#new) New Unit Testing via Codeception New page-level SSL functionality when using `absolute_urls`. Added `reverse_proxy` config option for 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. (#). default generator metadata. for broken image processing caused by `Uri::convertUrl()` loading JS and CSS from collections #623. stream overriding. Remove the URL extension for home link. permissions when the user has no access level set at all. with user with multiple groups getting denied on first group. an with `Pages()` internal cache lookup not being unique enough. for with `site.redirects` and `site.routes` being an empty list. Markdown Don't process links for special protocols. Whoops
1.0.809 Jan 2016 11:05 minor bugfix: 1. (#new) Added `rotate`, `flip` and `Orientation` image medium methods. 1. (#) Removed IP from Nonce generation. Should be more reliable in a variety of scenarios.
1.0.706 Jan 2016 03:16 minor feature: 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 deger. Added support for APCu and PHP7.0 via new Doctrine Cache release. Added global setting for `twig_first` processing. New configuration options for Session settings #553. 1. (#improved) Use `URI- host()` for session domain. 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 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. (#) an with cache/config checksum not being set on cache load. for page blueprint and theme inheritance Set `ZipBackup` timeout to 10 minutes if possible. case where we only have inline data for CSS or JS #565. `bin/grav sandbox` command to work with new `webserver-config` folder. for markdown attributes on external URLs. where `data:` page header was acting as `publish_date:`. for special characters in URL parameters (e.g. /tag:c++) #541. Stashed changes.
1.0.625 Dec 2015 06:05 minor bugfix: 1. (#new) Set minimum requirements to PHP 5.5.9. Added `saveConfig` to Themes. 1. (#improved) Updated Whoops to new 2.0 version (PHP 7.0 compatbile). Moved sample web server configs into dedicated directory. FastCGI will use Apache's `mod_deflate` if gzip turned off. 1. (#) broken media image operators. Only call extra method of blueprints if blueprints exist. lang prein url twig variables #523. case insensitive HTTPS check #535. Field field validation handles case `multiple` missing.
1.0.521 Dec 2015 06:45 minor feature: 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. (#) 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.
1.0.417 Dec 2015 06:45 minor bugfix: 1. (#) Needed to put default image folder permissions for YAML compatibility.
1.0.212 Dec 2015 14:45 minor bugfix: 1. (#) For timing display in debar.
0.9.4512 Oct 2015 07:05 minor bugfix: 1. (#) a regression resulting in incorrect default language.
0.9.4408 Oct 2015 06:45 minor bugfix: 1. (#new) Added Redis back as a supported cache mechanism. Allow Twig `nicetime` translations. Added `-y` option for 'Yes to all' in `bin/gpm update`. Added CSS `media` attribute to the Assets manager. New German language support. New Czech language support. New French language support. Added `modulus` twig filter. 1. (#improved) URL decode in medium actions to allow complex syntax. Take into account `HTTP_HOST` before `SERVER_NAME` (helpful with Nginx). More friendly cache naming to ease manual management of cache systems. Added default Apache resource for `DirectoryIndex`. 1. (#) GPM failure when offline. `open_basedir` error in `bin/gpm install`. an HHVM error in Truncator. for XSS vulnerability with params. chaining for responsive size derivatives. for saving pages when removing the page title and all other header elements. when saving array fields. for ports being included in `HTTP_HOST`. for Truncator to handle PHP tags gracefully. for locate style lang codes in `getNativeName()`. Urldecode image basenames in markdown.
0.9.4317 Sep 2015 10:05 minor feature: 1. (#new) Added new `AudioMedium` for HTML5 audio. Added ability for Assets to be added and displayed in separate *groups*. New support for responsive image derivative sizes. 1. (#improved) GPM theme install now uses a `copy` method so new files are not lost (e.g. `/css/custom.css`). Code analysis improvements and cleanup. Removed Twig panel from deger (no longer supported in Twig 1.20). Updated composer packages. Prepend active language to `convertUrl()` when used in markdown links. Added some pre/post flight options for installer via blueprints. Hyphenize the site name in the backup filename. 1. (#) broken routable logic. Check for `phpinfo()` method in case it is restricted by hosting provider. for windows when running GPM. for ampersand (` `) causing error in `truncateHtml()` via `Page.summary()`.
0.9.4213 Sep 2015 03:05 minor bugfix: 1. (#) `User.authorise()` to be backwards compabile.
0.9.4003 Sep 2015 19:05 minor feature: Added some new Twig filers: `defined`, `rtrim`, `ltrim`. Admin support for customizable page file name + template override. Better message for incompatible/unsupported Twig template. Improved User blueprints with better help. Switched to composer install rather than update by default. Admin autofocus on page title. `.htaccess` hardening (`.htaccess` `htaccess.txt`). Cache safety checks for missing folders. Fix unescaped `o` character in date formats.
0.9.3930 Aug 2015 04:25 minor bugfix: `` not triggering on homepage. For invalid session name in Opera browser.
0.9.3825 Aug 2015 20:25 minor feature: Added `language` to user blueprint. Added translations to blueprints. New extending logic for blueprints. Blueprints are now loaded with Streams to allow for better overrides. Added new Symfony `dump()` method. Catch YAML header parse exception so site doesn't die. Better `Page.parent()` logic. Improved GPM display layout. Tweaked default page layout. Unset route and slug for improved reliability of route changes. Added requirements to Updated various libraries. Allow use of custom page date field for dateRange collections. Slug with GPM. Unset plaintext password on save. for trailing `/` not matching active children.
0.9.3715 Aug 2015 10:45 minor bugfix: Fixed issue when saving `header.process` in page forms via the admin plugin. Fixed error due to use of `set_time_limit` that might be disabled on some hosts.
0.9.3510 Aug 2015 05:25 bugfix hidden: 1. (#new) Added `body_classes` field. Added `visiblity` toggle and help tooltips on new page form. Added new `Page.unsetRoute()` method to allow admin to regenerate the route. 2. (#improved) User save no longer stores username each time. Page list form field now shows all pages except root. Removed required option from page title. Added configuration settings for running Nginx in sub directory. 3. (#bugfix) Fixed deep translation merging. Fixed broken metadata merging with site defaults. Fixed broken summary field. Fixed broken robots field. Fixed GPM issue when using cURL, throwing an `Undefined offset: 1` exception. Removed duplicate hidden page `type` field.
0.9.3405 Aug 2015 19:05 minor bugfix: Added new `cache_all` system setting + media `cache()` method. Added base languages configuration. Added property language to page to help plugins identify page language. New `Utils::arrayFilterRecursive()` method. Improved Session handling to support site and admin independently. Allow Twig variables to be modified in other events. Blueprint updates in preparation for Admin plugin. Changed `Inflector` from static to object and added multi-language support. Support for admin override of a page's blueprints. Removed unused `use` in `VideoMedium` that was causing error. Array fix in `User.authorise()` method. Fix for typo in `translations_fallback`. Fixed moving page to the root.
0.9.3323 Jul 2015 06:05 bugfix: 1. (#new) Added new `onImageMediumSaved()` event (useful for post-image processing). Added `Vary: Accept-Encoding` option. 2. (#improved) Multilang-safe delimeter position. Refactored Twig classes and added optional umask setting. Removed `pageinit()` timing. `Page- routable()` now takes `published()` state into account. Improved how page extension is set. Support `Language- translate()` method taking string and array. 3. (#bugfix) Fixed `backup` command to include empty folders.
0.9.3217 Jul 2015 09:25 minor bugfix: 1. (#new) Detect users preferred language via `http_accept_language` setting. Added new `translateArray()` language method. 2. (#improved) Support `en` translations by default for plugins themes. Improved default generator tag. Minor language tweaks and. (#bugfix). Fix for session active language and homepage redirects. Ignore root-level page rather than throwing error.
0.9.3113 Jul 2015 18:05 bugfix: 1. (#new) Added xml, json, css and js to valid media file types. 2. (#improved) Better handling of unsupported media type downloads. Improved `bin/grav backup` command to mimic admin plugin location/name. 3. (#bugfix) Critical fix for broken language translations. Fix for Twig markdown filter error. Safety check for download extension.
0.9.3009 Jul 2015 13:45 major feature: BIG NEWS! Extensive Multi-Language support is all new in 0.9.30!. Translation support via Twig filter/function and PHP method. Page specific default route. Page specific route aliases. Canonical URL route support. Added built-in session support. New `Page.rawRoute()` to get a consistent folder-based route to a page. Added option to always redirect to default page on alias URL. Added language safe redirect function for use in core and plugins. Improved `` and `Page.activeChild()` methods to support route aliases. Various spelling corrections in `.php` comments, `.md` and `.yaml` files. `Utils::startsWith()` and `Utils::endsWith()` now support needle arrays. Added a new timer around `pageInitialized` event. Updated jQuery library to v2.1.4. In-page CSS and JS files are now handled properly. Fix for `enable_media_timestamp` not working properly.
0.9.2923 Jun 2015 12:05 bugfix: 1. (#new) New and improved Regex-powered redirect and route alias logic. Added new `onBuildPagesInitialized` event for memory critical or time-consuming plugins. Added a `setSummary()` method for pages. 2. (#improved) Improved `MergeConfig()` logic for more control. Travis skeleton build trigger implemented. Set composer.json versions to stable versions where possible. Disabled `last_modified` and `etag` page headers by default (causing too much page caching). 3. (#bugfix) Preload classes during `bin/gpm selfupgrade` to avoid issues with updated classes. Fix for directory relative _down_ links.
0.9.2817 Jun 2015 06:25 bugfix: 1. (#new) Added method to set raw markdown on a page. Added ability to enabled system and page level `etag` and `last_modified` headers. 2. (#improved) Improved image path processing. Improved query string handling. Optimization to image handling supporting URL encoded filenames. Use global `composer` when available rather than Grv provided one. Use `PHP_BINARY` contant rather than `php` executable. Updated Doctrine Cache library. Updated Symfony libraries. Moved `convertUrl()` method to Uri object. 3. (#bugfix) Fix incorrect slug causing problems with CLI `uninstall`. Fix Twig runtime error with assets pipeline in sufolder installations. Fix for `+` in image filenames. Fix for dot files causing issues with page processing. Fix for Uri path detection on Windows platform. Fix for atlernative media resolutions. Fix for modularTypes key properties.
0.9.2710 May 2015 03:45 cleanup bugfix: 1. (#new) Added new composer CLI command. * Added page-level summary header overrides. * Added `size` back for Media objects. * Refactored Backup command in preparation for admin plugin. * Added a new `parseLinks` method to Plugins class. * Added `starts_with` and `ends_with` Twig filters. 2. (#improved) Opitmized install of vendor libraries for speed improvement. * Improved configuration handling in preparation for admin plugin. * Cache optimization: Don't cache Twig templates when you pass dynamic params. * Moved `Utils::rcopy` to `Folder::rcopy`. * Improved `Folder::doDelete`. * Added check for required Curl in GPM. * Updated included composer.phar to latest version. * Various blueprint fixes for admin plugin. * Various PSR and code cleanup tasks. 3. (#bugfix) Fix issue with Gzip not working with `onShutDown()` event. * Fix for URLs with trailing slashes. * Handle condition where certain errors resulted in blank page. * Fix for issue with theme name equal to base_url and asset pipeline. * Fix to properly nomralize font rewrite path. * Fix for absolute URLs below the current page. * Fix for `..` page references.
0.9.2625 Apr 2015 12:25 bugfix: Fixed issue with homepage routes failing with 'dirname' error.
0.9.2416 Apr 2015 07:05 minor bugfix: Added support for chunked downloads of Assets. Added new `onBeforeDownload()` event. Added new `download()` and `getMimeType()` methods to Utils class. Added configuration option for supported page types. Added assets and media timestamp options. Added page expires configuration option. Fixed issue with Nginx/Gzip and `ob_flush()` throwing error. Fixed assets actions on 'direct media' URLs. Fix for 'direct assets` with any parameters.
0.9.2312 Apr 2015 22:00 bugfix: Fix for broken GPM `selfupgrade` (Grav 0.9.21 and 0.9.22 will need to manually upgrade to this version).
0.9.2108 Apr 2015 13:05 major: Major Media functionality enhancements: SVG, Animated GIF, Video support!. Added ability to configure default image quality in system configuration. Added `sizes` attributes for custom retina image breakpoints. Don't scale @1x retina images. Add filter to Iterator class. Updated various composer packages. Various PSR fixes.
0.9.2025 Mar 2015 22:45 bugfix: Added `addAsyncJs()` and `addDeferJs()` to Assets manager. * Added support for extranal URL redirects. Fix unpredictable asset ordering when set from plugin/system. * Updated `nginx.conf` to ensure system assets are accessible. * Ensure images are served as static files in Nginx. * Updated vendor libraries to latest versions. * Updated included composer.phar to latest version. Fixed issue with markdown links to `#` breaking HTML.
0.9.1901 Mar 2015 22:45 bugfix: Added named assets capability and bundled jQuery into Grav core. Added `first` and `last` to `Iterator` class. Improved page modification routine to skip dot files. Only use files to calculate page modification dates. Broke out Folder iterators into their own classes. Various Sensiolabs Insight fixes. Fixed `Iterator.nth` method.
0.9.1820 Feb 2015 06:45 bugfix: 1. Added ability for GPM `install` to automatically install `_demo` content if found Added ability for themes and plugins to have dependencies required to install via GPM Added ability to override the system timezone rather than relying on server setting only Added new Twig filter `random_string` for generating random id values Added new Twig filter `markdown` for on-the-fly markdown processing Added new Twig filter `absoluteUrl` to convert relative to absolute URLs Added new `processTemplate` method to Twig object for on-the-fly processing of twig template Added `rcopy` and `contains` helper methods in Utils 2. Provied new `param_sep` variable to better support Apache on Windows Moved parsedown configuration into the trait Added optional **deep-copy** option to `mergeConfig` for plugins Updated bundled `composer.phar` package Various Sensiolabs Insight fixes - Silver level now! Various PSR Fixes 3. Fix for windows platforms not displaying installed themes/plugins via GPM Fix page IDs not picking up folder-only pages
0.9.1708 Feb 2015 14:05 bugfix: 1. Added **full HHVM support!** Get your speed on with Facebook's crazy fast PHP JIT compiler 2. More flexible page summary control, Support **CamelCase** plugin and theme class names. Replaces dashes and underscores, Moved summary delimiter into `site.yaml` so it can be configurable, Various PSR fixes 3. Fix for `mergeConfig` not falling back to defaults, Fix for `addInlineCss` and `addInlineJs` Assets not working between Twig tags, Fix for Markdown adding HTML tags into inline CSS and JS.
0.9.1631 Jan 2015 03:15 bugfix: 1. Added **Retina** and **Responsive** image support via Grav media and `srcset` image attribute Added image debug option that overlays responsive resolution Added a new image cache stream 2. Improved the markdown Lightbox functionality to better mimic Twig version Fullsize Lightbox can now have filters applied Added a new `mergeConfig` method to Plugin class to merge system + page header configuration Added a new `disable` method to Plugin class to programatically disable a plugin Updated Parsedown and Parsedown Extra to address bugs Various PSR fixes 3. Fix bug with image dispatch in traditionally _non-routable_ pages Fix for markdown link not working on non-current pages Fix for markdown images not being found on homepage
0.9.1524 Jan 2015 03:15 bugfix: 3. Typo in video mime types Fix for old `markdown_extra` system setting not getting picked up Fix in regex for Markdown links with numeric values in path Fix for broken image routing mechanism that got broken at some point Fix for markdown images/links in pages with page slug override
0.9.1312 Jan 2015 03:15 bugfix: 1. Added new published `true false` state in page headers Added `publish_date` in page headers to automatically publish page Added `unpublish_date` in page headers to automatically unpublish page Added `dateRange` capability for collections Added ability to dynamically control Cache lifetime programatically Added ability to sort by anything in the page header. E.g. `sort: header.taxonomy.year` Added various helper methods to collections: `copy, nonVisible, modular, nonModular, published, nonPublished, nonRoutable` 2. Modified all Collection methods so they can be chained together: ` collection- published- visible` Set default Cache lifetime to default of 1 week - was infinite House-cleaning of some unused methods in Pages object 3. Fix `uninstall` GPM command that was broken in last release Fix for intermitten `undefined index` error when working with Collections Fix for date of some pages being set to incorrect future timestamps
0.9.1208 Jan 2015 05:25 bugfix: 1. Added an all-access robots.txt file for search engines Added new GPM `uninstall` command Added support for **in-page** Twig processing in **modular** pages Added configurable support for `undefined` Twig functions and filters 2. Fallback to default `.html` template if error occurs on non-html pages Added ability to have PSR-1 friendly plugin names Fix to `composer.json` to deter API rate-limit errors Added **non-exception-throwing** handler for undefined methods on `Medium` objects 3. Fix description for `self-upgrade` method of GPM command Fix for incorrect version number when performing GPM `update` Fix for argument description of GPM `install` command Fix for recalcitrant CodeKit mac application
0.9.402 Nov 2014 07:25 minor feature: New improved Debugbar with messages, timing, config, twig information. New exception handling system utilizing Whoops. New logging system utilizing Monolog. Support for auto-detecting environment configuration. New version command for CLI. Integrate Twig dump() calls into Debugbar. Selfupgrade now clears cache on successful upgrade. Selfupgrade now supports files without extensions. Improved error messages when plugin is missing. Improved security in .htaccess. Support CSS/JS/Image assets in vendor/system folders via .htaccess. Add support for system timers. Improved and optimized configuration loading. Automatically disable Debugbar on non-HTML pages. Disable Debugbar by default. More YAML blueprint fixes. Fix potential double // in assets. Load debugger as early as possible.