1.6.1707 Nov 2019 13:25
Added working ETag (304 Not Modified) support based on the final rendered HTML.
Safer file handling + customizable null char replacement in `CsvFormatter::decode()`.
Change of Behavior: `Inflector::hyphenize` will now automatically trim dashes at beginning and end of a string.
Change in Behavior for `Folder::all()` so no longer fails if trying to copy non-existent dot file.
renamed composer `test-plugins` script to `phpstan-plugins` to be more explicit.
PHP 7.1 in FlexMedia.
cache image generation when using cropResize.
`array_merge()` exception with non-array page header metadata.
1.6.1620 Sep 2019 15:05
Flex user creation if file storage is being used.
`Badly encoded JSON data` warning when uploading files.
1.6.1525 Aug 2019 07:45
broken markdown Twig tag.
Force Symfony 4.2 in Grav 1.6 to remove a bunch of deprecated messages.
1.6.1216 Aug 2019 10:05
Added support for custom `FormFlash` save locations.
Added a new `Utils::arrayLower()` method for lowercasing arrays.
Support new GRAV_BASEDIR environment variable.
Allow users to override plugin handler priorities.
Use new `Utils::getSupportedPageTypes()` to enforce `html,htm` at the front of the list.
Updated vendor libraries.
Markdown filter is now page-aware so that it works with modular references admin#1731.
Check of `GRAV_USER_INSTANCE` constant is already defined.
some potential when ` grav 'user' ` is not set.
error when calling `Media::add( name, null)`.
`url()` returning wrong path if using stream with grav root path in it, eg: `user-data://shop` when Grav is in `/shop`.
`url()` not returning a path to non-existing file (`user-data://shop` = `/user/data/shop`) if it is set to fail gracefully.
`url()` returning false on unknown streams, such as `ftp://domain.com`, they should be treated as external URL.
Flex User to have permissions to save and delete his own user.
new Flex User creation not being possible because of username could not be given.
fatal error 'Expiration date must be an integer, a DateInterval or null, "double" given'.
non-existing Flex object having a bad media folder.
collections using `page@.self:` should allow modular pages if requested.
an error when trying to delete a file from non-existing Flex Object.
`FlexObject::exists()` failing sometimes just after the object has been saved.
CSV formatter not encoding strings with `"` and `,` properly.
var order in `Validation.php`.
1.6.1122 Jun 2019 03:25
Added `FormTrait::getAllFlashes()` method to get all the available form flash objects for the form.
Added creation and update timestamps to `FormFlash` objects.
Added `FormFlashInterface`, changed constructor to take ` config` array.
Error in `ImageMedium::url()` if the image cache folder does not exist.
Empty form flash name after file upload or form state update.
a in `Route::withParam()` method.
With `FormFlash` objects when there is no session initialized.
1.6.1015 Jun 2019 03:15
Added page blueprints to `YamlLinter` CLI and Admin reports.
Removed `Gitter` and `Slack`.
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).
Force question to install demo content in theme update.
GPM errors from blueprints not being logged.
Don't error when IP is invalid.
regression with `bin/plugin` not listing the plugins available (1c725c0).
bitwise operator in `TwigExtension::exifFunc()`.
with lang preincorrectly identifying as admin.
with `U0ils::pathPreBYLanguageCode()` and trailing slash.
regresssion of `Utils::Url()` not returning `false` on failure. Added new optional `fail_gracefully` 3rd attribute to return string that caused failure.
1.6.910 May 2019 03:15
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.
Flex admin: added default search options for flex objects.
Flex collection and object now fall back to the default template if template file doesn't exist.
Updated Vendor libraries including Twig 1.40.1.
Updated language files from `https://crowdin.com/project/grav-core`.
` grav 'route' ` from being modified when the route instance gets modified.
Assets options array mixed with standalone priority.
for `avatar_url` provided by 3rd party providers.
non standard `lang` code lengths in `Utils` and `Session` detection.
saving a new object in Flex `SimpleStorage`.
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()`.
backwards compatibility to `select` field with `selectize.create` set to true git-sync#141.
`YamlFormatter::decode()` to always return array.
empty ` grav 'request' - getAttribute('route')- getExtension()`.
1.6.827 Apr 2019 03:15
Added `FlexCollection::filterBy()` method.
Revert `Use Null Coalesce Operator`.
`FormTrait::render()` not providing config variable.
Updated `bin/grav clean` to clear `cache/compiled` and `user/config/security.yaml`.
1.6.723 Apr 2019 03:16
Added a new `bin/grav yamllinter` CLI command to find YAML Linting.
Improve `FormTrait` backwards compatibility with existing forms.
Added a new `Utils::getSubnet()` function for IPv4/IPv6 parsing.
Remove disabled fields from the form schema.
when excluding `inlineJs` and `inlineCss` from Assets pipeline.
for manually set position on external URLs.
1.6.619 Apr 2019 03:15
`FormInterface` now implements `RenderInterface`.
Added new `FormInterface::getTask()` method which reads the task from `form.task` in the blueprint.
Updated vendor libraries to latest.
Rollback `redirect_default_route` logic as it has with multi-lang.
potential with ` contains` Twig filter on PHP 7.3.
in text field filtering: return empty string if value isn't a string or number.
Force Asset `priority` to be an integer and not throw error if invalid string passed.
in text field filtering: return empty string if value isn't a string or number.
`FlexForm` missing getter methods for defining form variables.
1.6.315 Apr 2019 06:25
Added `Blueprint::addDynamicHandler()` method to allow custom dynamic handlers, for example `custom-options@: getCustomOptions`.
Missed a `CacheCommand` reference in `bin/grav`.
With `Utils::normalizePath` messing with external URLs.
For `vUndefined` versions when upgrading.
1.5.921 Mar 2019 03:15
Added new `onPageContent()` event for every call to `Page::content()`.
Updated vendor libraries.
Force Toolbox v1.4.2.
EXIF for streams.
for User avatar not working due to uppercase or spaces in email.
1.5.808 Feb 2019 06:05
Improved `User` unserialize to not to break the object if serialized data is not what expected.
Removed unused parameter.
1.5.726 Jan 2019 03:15
Support for AWS Cloudfront forwarded scheme header.
Set homepage with `https://` protocol.
Preserve accents in fields containing Twig expr. using unicode.
Updated vendor libraries.
Support spaces with filenames in responsive images.
1.5.615 Dec 2018 03:15
Updated InitializeProcessor.php to use lang-safe redirect.
Improved user serialization to use less memory in the session.
1.5.513 Nov 2018 03:15
Register theme preas namespaces in Twig.
Propogate error code between 400 and 600 for production sites.
Remove hardcoded `302` when redirecting trailing slash.
1.5.406 Nov 2018 03:15
Updated default page `index.md` with some consistency.
Fatal error if calling ` session- invalidate()` when there's no active session.
Typo in media.yaml for `webm` extension.
Markdown processing for telephone links.
1.5.309 Oct 2018 03:15
Added `Utils::getMimeByFilename()`, `Utils::getMimeByLocalFile()` and `Utils::checkFilename()` methods.
Added configurable dangerous upload extensions in `security.yaml`.
Updated vendor libraries to latest.
1.5.203 Oct 2018 03:15
Added new `Security` class for Grav security functionality including XSS checks.
Added new `bin/grav security` command to scan for security Added new `xss()` Twig function to allow for XSS checks on strings and arrays.
Added `onHttpPostFilter` event to allow plugins to globally clean up XSS in the forms and tasks.
Added `Deprecated` tab to DeBar to catch future incompatibilities with later Grav versions.
Added deprecation notices for features which will be removed in Grav 2.0.
Updated vendor libraries to latest.
Allow ` page- slug()` to be called before ` page- init()` without breaking the page.
for `Page::translatedLanguages()` to use routes always.
`nicetime()` twig function.
Allow twig tags ` script `, ` style ` and ` switch ` to be placed outside of blocks.
Session expires in 30 mins independent from config settings login#178.
1.5.124 Aug 2018 03:15
Added static `Grav Common Yaml` class which should be used instead of `Symfony Component Yaml Yaml`.
Updated deprecated Twig code so it works in both in Twig 1.34+ and Twig 2.4+.
Switched to new Grav Yaml class to support Native + Fallback YAML libraries.
Broken handling of user folder in Grav URI object.
1.5.018 Aug 2018 03:15
Set minimum requirements to PHP 5.6.4.
Updated Doctrine Collections to 1.4.
Updated Symfony Components to 3.4 (with compatibility mode to fall back to Symfony YAML 2.8).
Added `Uri::method()` to get current HTTP method (GET/POST etc).
`FormatterInterface`: Added `getSupportedFileExtensions()` and `getDefaultFileExtension()` methods.
Added option to disable `SimpleCache` key validation.
Added support for multiple repo locations for `bin/grav install` command.
Added twig filters for casting values: ` string`, ` int`, ` bool`, ` float`, ` array`.
Made `ObjectCollection::matching()` criteria expressions to behave more like in Twig.
Criteria: Added support for `LENGTH()`, `LOWER()`, `UPPER()`, `LTRIM()`, `RTRIM()` and `TRIM()`.
Added `Grav Framework File Formatter` classes for encoding/decoding YAML, Markdown, JSON, INI and PHP serialized strings.
Added `Grav Framework Session` class to replace `RocketTheme Toolbox Session Session`.
Added `Grav Common Media` interfaces and trait; use those in `Page` and `Media` classes.
Added `Grav Common Page` interface to allow custom page types in the future.
Added setting to disable sessions from the site.
Added new `strict_mode` settings in `system.yaml` for compatibility.
Improved `Utils::url()` to support query strings.
Display better exception message if Grav fails to initialize.
Added `muted` and `playsinline` support to videos.
Added `MediaTrait::clearMediaCache()` to allow cache to be cleared.
Added `MediaTrait::getMediaCache()` to allow custom caching.
Improved session handling, allow all session configuration options in `system.session.options`.
broken form nonce logic.
with uppercase extensions and fallback media URLs.
theme inheritance with `camel-case` that includes numbers.
Typo in demo typography page.
for incorrect plugin order in deger panel.
Made ` markdown` filter HTML safe.
1.4.801 Aug 2018 03:15
Add Grav version to debar messages tab.
Add Nginx config for ddev project to `webserver-configs`.
Vendor library updates.
Don't allow `null` to be set as Page content.
1.4.714 Jul 2018 03:15
Use `getFilename` instead of `getBasename`.
For modular page preview.
`Page::routeCanonical()` should be string not array.
1.4.620 Jun 2018 06:45
Manually re-added the improved SSL off-loading that was lost with Grav v1.4.0 merge.
Handle multibyte strings in `truncateLetters()`.
Updated robots.txt to include `/user/images/` folder.
Add getter methods for original and action to the Page object.
Modular template extension follows the master page extension.
Vendor library updates.
Handle `errors.display` system property better in admin plugin admin#1452.
classes on non-http based protocol links.
crash on IIS (Windows) with open_basedir in effect.
incorrect routing with setup.php based base.
1.4.516 May 2018 13:05
an with some users getting 2FA prompt after upgrade admin#1442.
Do not crash when generating URLs with arrays as parameters.
Utils::truncateHTML removes whitespace when generating summaries.
1.4.419 Apr 2018 11:25
Added a new `Medium:thumbnailExists()` function.
an with `custom_base_url` always causing 404 errors.
Improve support for regex redirects with query and params.
Changed collection-based date sorting to `SORT_REGULAR` for better server compatibility.
1.4.313 Apr 2018 07:05
Moved Twig `sortArrayByKey` logic into `Utils::` class.
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.
For bad reference to `ZipArchive` in `GPM::Installer`.
1.4.222 Mar 2018 13:05
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.
Added bosnian to lang codes ( https://github.com/getgrav/grav//1917).
Improved Zip extraction error codes ( https://github.com/getgrav/grav//1922).
an with Markdown Video and Audio that broke after Parsedown 1.7.0 Security updates ( https://github.com/getgrav/grav//1924).
for case-sensitive page metadata admin#1370.
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.
1.4.010 Mar 2018 13:25
Added `Grav Framework Uri` classes extending PSR-7 `HTTP message UriInterface` implementation.
Added `Grav Framework Route` classes to allow route/link manipulation.
Added ` grav 'uri - getCurrentUri()` method to get `Grav Framework Uri Uri` instance for the current URL.
Added ` grav 'uri - getCurrentRoute()` method to get `Grav Framework Route Route` instance for the current URL.
Added ability to have `php` version dependencies in GPM assets.
Added new ` switch ` twig tag for more elegant if statements.
Added new ` markdown ` twig tag.
Added Route Overrides to the default page blueprint.
Added new `Collection::toExtendedArray()` method that's particularly useful for Json output of data.
Added new ` yaml_encode` and ` yaml_decode` Twig filter to convert to and from YAML.
Added new `read_file()` Twig function to allow you to load and display a file in Twig (Supports streams and regular paths).
Added a new `Medium::exists()` method to check for file existence.
Moved Twig `urlFunc()` to `Utils::url()` as its so darn handy.
Transferred overall copyright from RocketTheme, LLC, to Trilby Media LLC.
Added `theme_var`, `header_var` and `body_class` Twig functions for themes.
Added `Grav Framework Cache` classes providing PSR-16 `Simple Cache` implementation.
Added `Grav Framework ContentBlock` classes for nested HTML blocks with CSS/JS assets.
Added `Grav Framework Object` classes for creating collections of objects.
Added ` nicenumber` Twig filter.
Added ` try ... catch Error: e.message endcatch ` tag to allow basic exception handling inside Twig.
Added ` script ` and ` style ` tags for Twig templates.
Improved `Session` initialization.
Added ability to set a `theme_var()` option in page frontmatter.
Force clearing PHP `clearstatcache` and `opcache-reset` on `Cache::clear()`.
Better `Page.collection()` filtering support including ability to have non-published pages in collections.
Stopped Chrome from au
1.3.906 Dec 2017 20:05
Added new core Twig templates for `partials/metadata.html.twig` and `partials/messages.html.twig`.
Added ability to work with GPM locally.
Added new HTML5 audio controls.
Added `Medium::copy()` method to create a copy of a medium object.
Added new `force_lowercase_urls` functionality on routes and slugs.
Added new `item-list` filter type to remove empty items.
Added new `setFlashCookieObject()` and `getFlashCookieObject()` methods to `Session` object.
Added new `intl_enabled` option to disable PHP intl module collation when not needed.
an with checkbox field validation form#216.
with multibyte Markdown link URLs.
with multibyte folder names.
several related to `system.custom_base_url` that were broken.
Dynamically added pages via `Pages::addPage()` were not firing `onPageProcessed()` event causing forms not to be processed.
`Page::active()` and `Page::activeChild()` to work with UTF-8 characters in the URL.
typo in `modular.yaml` causing media to be ignored.
Reverted `case_insensitive_urls` option as it was causing with taxonomy.
Removed an extra `/` in `CompileFile.php`.
Uri::Encode user and password to prevent in browsers.
"Invalid AJAX response" When using Built-in PHP Webserver in Windows.
Remove support for `config.user`, it was broken and bad practise.
Make sure that `clean cache` uses valid path.
token creation with `Uri` params like `/id:3`.
CSS Pipeline failing with Google remote fonts if the file was minified.
Forced `field.multiple: true` to allow use of min/max options in `checkboxes.validate`.
1.3.827 Oct 2017 09:45
Added Page `media_order` capability to manually order page media via a page header.
GPM update with filtered slugs.
with missing image file not throwing 404 properly.
1.3.720 Oct 2017 09:25
Regression Uri: `base_url_absolute` always has the port number.
Uri: Prefer using REQUEST_SCHEME instead of HTTPS.
routing paths with urlencoded spaces and non-latin letters.
1.3.616 Oct 2017 16:45
Regression: Ajax error in Nginx admin#1244.
Remove the `_url= uri` portion of the the Nginx `try_files` command admin#1244.
1.3.512 Oct 2017 13:45
Refactored `URI` class with numerous, and optimizations.
Override `system.media.upload_limit` with PHP's `post_max_size` or `upload_max_filesize`.
Updated `bin/grav clean` command to remove unnecessary vendor files (save some bytes).
Added a `http_status_code` Twig function to allow setting HTTP status codes from Twig directly.
Deter XSS attacks via URI path/uri methods (credit:newbthenewbd).
Added support for ` uri- toArray()` and `(string) uri`.
Added support for `type` on `Asstes::addInlineJs()`.
method signature error with `GPM InstallCommand::processPackage()`.
1.3.430 Sep 2017 23:45
Added filter support for Page collections (routable/visible/type/access/etc.).
Implemented `Composer CaBundle` for SSL Certs.
Refactored the Assets sorting logic.
Improved language overrides to merge only 'extra' translations.
Improved support for Assets with query strings.
Twig extension cleanup.
an where fallback was not supporting dynamic page generation.
with Image query string not being fully URL encoded.
`Page::summary()` when using delimiter and multibyte UTF8 Characters.
missing `.json` thumbnail throwing error when adding media grav-plugin-admin#1156.
insecure session cookie initialization.
1.3.308 Sep 2017 12:05
Added support for 2-Factor Authentication in admin profile.
Added `gaussianBlur` media method.
Added new ` chunk_split()`, ` basename`, and ` dirname` Twig filter.
Added new `tl` Twig filter/function to support specific translations.
User `authorization` now requires a check for `authenticated` - REQUIRED: `Login v2.4.0`.
Added options to `Page::summary()` to support size without HTML tags.
Forced `natsort` on plugins to ensure consistent plugin load ordering across platforms.
Use new `multilevel` field to handle Asset Collections.
Added support for redis `password` option.
Use 302 rather than 301 redirects by default.
GPM Installer will try to load alphanumeric version of the class if no standard class found.
Add current page position to `User` class.
Added option to enable case insensitive URLs.
Updated vendor libraries.
Updated `travis.yml` to add support for PHP 7.1 as well as 7.0.21 for test suite.
UTF8 2 character support in `Page::summary()`.
1.3.217 Aug 2017 16:05
Added a new `cache_control` system and page level property.
Added a new `clear_images_by_default` system property to stop cache clear events from removing processed images.
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.
Added new `array_key_exists()` Twig function wrapper.
Added a new `Collection::intersect()` method (github.com/getgrav/grav//1605).
Allow `session.timetout` field to be set to `0` via blueprints.
`Data::exists()` and `Data::raw()` functions breaking if `Data::file()` hasn't been called with non-null value.
parent theme auto-loading in child themes of Gantry 5.
1.3.121 Jul 2017 21:25
ordering for Linux + International environments.
Check if medium thumbnail exists before resetting.
Update Travis' auth token.
1.3.017 Jul 2017 06:05
an undefined variable ` difference`.
broken range slider grav-plugin-admin#1153.
natural sort when 100 pages.
Setting `system.session.timeout` to 0 clears the session when the browser session ends.
Created a `CODE_OF_CONDUCT.md` so everyone knows how to behave :).
Renamed new `media()` Twig function to `media_directory()` to avoid conflict with Page's `media` object.
global media files disappearing after a reload.
for broken regex redirects/routes via `site.yaml`.
Sanitize the error message in the error handler page.
Added `lower` and `upper` Twig filters.
Added `pathinfo()` Twig function.
Added 165 new thumbnail images for use in `media.yaml`.
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.
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.
Added new unified `Utils::getPagePathFromToken()` method which is used by various plugins (Admin, Forms, Downloads, etc.).
Optionally remove unpublished pages from the translated languages, move into untranslated list.
Improved reliability of `hash` file-check method.
Updated to latest Toolbox library to with some blueprints rendering in admin plugin.
output handling in RenderProcessor.
Added new `media` and `vardump` Twig functions.
Put in various checks to ensure Exif is available before trying to use it.
Add timestamp to configuration settings.
an saving YAML textarea fields in expert mode.
Moved `onOutputRendered()` back into Grav core.
1.2.425 Apr 2017 05:05
Added optional ignores for `Installer::sophisticatedInstall()`.
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
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.111 Apr 2017 06:45
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`.
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
Added file upload for user avatar in user/admin blueprint.
Analysis Switched to stable composer lib versions.
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.
Added an _Admin Overrides_ section with option to choose the order of children in Pages Management.
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.
Updated vendor libraries to latest.
Added the ability to disable deger on a per-page basis with `deger: false` in page frontmatter.
an with theme inheritance and hyphenated base themes.
an when trying to use an `@2x` derivative on a non-image media file.
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.
`Twig::evaluate()` now takes current environment and context into account.
Genericized `direct-install` so it can be called via Admin plugin.
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
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
Exposed the Pages cache ID for use by plugins (e.g. Form) via `Pages::getPagesCacheId()`.
Added `Languages::resetFallbackPageExtensions()` regarding.
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.).
blueprints slug validation https://github.com/getgrav/grav-plugin-admin//955.
1.1.1531 Jan 2017 11:05
Added a new `Collection::merge()` method to allow merging of multiple collections.
Added OpenCollective backer/sponsor info to `README.md`.
Add an additional parameter to GPM::findPackage to avoid throwing an exception, for use in Twig.
Skip symlinks if found while clearing cache.
an when page collection with header-based `sort.by` 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
`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
Added new `never_cache_twig` page option in `system.yaml` and frontmatter. Allows dynamic Twig logic in regular and modular Twig templates.
Several improvements to aid theme development.
Added `hash` cache check option and made dropdown more descriptive Admin #923.
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.1123 Dec 2016 08:45
Fall back properly to HTML if template type not found.
With modular pages folders validation.
1.1.914 Dec 2016 07:05
RC released as stable.
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.
Added checks before accessing admin reference during `Page::blueprints()` call. Allows to access `page.blueprints` from Twig in the frontend.
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.
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
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.
Added two new sort order options for pages: `publish_date` and `unpublish_date`.
Multisite: Create image cache folder if it doesn't exist.
Add 2 new language values for French.
when we have a meta file without corresponding media.
Update class namespace for Admin class.
Added a `CompiledJsonFile` object to better handle Json files.
Added Base32 encode/decode clas
1.1.620 Oct 2016 12:25
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`.
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.
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
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.
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
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.
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).
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.212 Aug 2016 07:25
Allow forcing SSL by setting `system.force_ssl` (Force SSL in the Admin System Config).
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.
`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
Made `paramsRegex()` static to allow it to be called statically.
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
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`.
backend validation for file fields marked as required grav-plugin-form#78.
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.
Take asset modification timestamp into consideration in pipelining - @Sommerregen.
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 `:`.
Added getters and setters for Assets to allow manipulation of CSS/JS/Collection based assets via plugins.
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.
`Utils::normalizePath()` that was truncating 0's.
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.
GPM installation of plugins and themes into correct multisite folders.
Use `Page::rawRoute()` in blueprints for more reliable mulit-language support.
for `zlib.output_compression` as well as `
1.0.1012 Feb 2016 07:45
Added new `Page::contentMeta()` mechanism to store content-level meta data alongside content.
Added Japanese language translation.
Updated some vendor libraries.
Hide `streams` blueprint from Admin plugin.
translations of languages with `---` in YAML files.
1.0.809 Jan 2016 11:05
Added `rotate`, `flip` and `Orientation` image medium methods.
Removed IP from Nonce generation. Should be more reliable in a variety of scenarios.
1.0.706 Jan 2016 03:16
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.
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.
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.
1.0.625 Dec 2015 06:05
Set minimum requirements to PHP 5.5.9.
Added `saveConfig` to Themes.
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.
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
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.
If the field allows multiple files, return array.
Handle non-array values in file validation.
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.
0.9.4408 Oct 2015 06:45
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.
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`.
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
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.
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.
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.4003 Sep 2015 19:05
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.3825 Aug 2015 20:25
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 README.md.
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
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
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.
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.
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
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
Added new `onImageMediumSaved()` event (useful for post-image processing).
Added `Vary: Accept-Encoding` option.
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.
Fixed `backup` command to include empty folders.
0.9.3217 Jul 2015 09:25
Detect users preferred language via `http_accept_language` setting.
Added new `translateArray()` language method.
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
Added xml, json, css and js to valid media file types.
Better handling of unsupported media type downloads.
Improved `bin/grav backup` command to mimic admin plugin location/name.
Critical fix for broken language translations.
Fix for Twig markdown filter error.
Safety check for download extension.
0.9.3009 Jul 2015 13:45
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 `Page.active()` 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
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.
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).
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
Added method to set raw markdown on a page.
Added ability to enabled system and page level `etag` and `last_modified` headers.
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.
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
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.
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.
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.2416 Apr 2015 07:05
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.2108 Apr 2015 13:05
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
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
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
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
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
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
Added **full HHVM support!** Get your speed on with Facebook's crazy fast PHP JIT compiler
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
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
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
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
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
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
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`
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
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.402 Nov 2014 07:25
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.