-
- Refactor Config classes for improved performance!
- Refactor Data classes to use
NestedArrayAccess
instead ofDataMutatorTrait
- Added support for
classes
andid
on medium objects to set CSS values - Data objects: Allow function call chaining
- Data objects: Lazy load blueprints only if needed
- Automatically create unique security salt for each configuration
- Added Hungarian translation
- Added support for User groups
-
- Improved robots.txt to disallow crawling of non-user folders
- Nonces only generated once per action and process
- Added IP into Nonce string calculation
- Nonces now use random string with random salt to improve performance
- Improved list form handling #475
- Vendor library updates
-
- Fixed help output for
bin/plugin
- Fix for nested logic for lists and form parsing #273
- Fix for array form fields and last entry not getting deleted
- Should not be able to set parent to self #308
- Fixed help output for
-
- Added nonce functionality for all admin forms for improved security
- Implemented the ability for Plugins to provide their own CLI commands through
bin/plugin
- Added Croatian translation
- Added missing
umask_fix
property tosystem.yaml
- Added current theme's config to global config. E.g.
config.theme.dropdown_enabled
- Added
append_url_extension
option to system config & page headers - Users have a new
state
property to allow disabling/banning - Added new
Page.relativePagePath()
helper method - Added new
|pad
Twig filter for strings (usesstr_pad()
) - Added
lighttpd.conf
for Lightly web server
-
- Clear previously applied operations when doing a reset on image media
- Password no longer required when editing user
- Improved support for trailing
/
URLs - Improved
.nginx.conf
configuration file - Improved
.htaccess
security - Updated vendor libs
- Updated
composer.phar
- Use streams instead of paths for
clearCache()
- Use PCRE_UTF8 so unicode strings can be regexed in Truncator
- Handle case when login plugin is disabled
- Improved
quality
functionality in media handling - Added some missing translation strings
- Deprecated
bin/grav newuser
in favor ofbin/plugin login new-user
- Moved fallback types to use any valid media type
- Renamed
system.pages.fallback_types
tosystem.media.allowed_fallback_types
- Removed version number in default
generator
meta tag - Disable time limit in case of slow downloads
- Removed default hash in
system.yaml
-
- Fix for media using absolute URLs causing broken links
- Fix theme auto-loading #432
- Don't create empty
<style>
or<script>
scripts if no data - Code cleanups
- Fix undefined variable in Config class
- Fix exception message when label is not set
- Check in
Plugins::get()
to ensure plugins exists - Fixed GZip compression making output buffering work correctly with all servers and browsers
- Fixed date representation in system config
-
- New Page collection options!
@self.parent, @self.siblings, @self.descendants
+ more - Whitelist of file types for fallback route functionality (images by default)
- New Page collection options!
-
- Assets switched from defines to streams
-
- README.md typos fixed
- Fixed issue with routes that have lang string in them (
/en/english
) - Trim strings before validation so whitespace is not satisfy 'required'
-
- Added support for CSS Asset groups
- Added a
wrapped_site
system option for themes/plugins to use - Pass
Page
object as event toonTwigPageVariables()
event hook - New
Data.items()
method to get all items
-
- Missing pipelined remote asset will now fail quietly
- More reliably handle inline JS and CSS to remove only surrounding HTML tags
Medium.meta
returns new Data object so null checks are possible- Improved Medium metadata merging to allow for automatic title/alt/class attributes
- Moved Grav object to global variable rather than template variable (useful for macros)
- German language improvements
- Updated bundled composer
-
- Accept variety of
true
values inUser.authorize()
method - Fix for
Validation
throwing an error if no label set
- Accept variety of
-
- Use native PECL YAML parser if installed for 4X speed boost in parsing YAML files
- Support for inherited theme class
- Added new default language prepend system configuration option
- New
|evaluate
Twig filter to evaluate a string as twig - New system option to ignore all hidden files and folders
- New system option for default redirect code
- Added ability to append specific
[30x]
codes to redirect URLs - Added
url_taxonomy_filters
for page collections - Added
@root
page andrecurse
flag for page collections - Support for multiple page collection types as an array
- Added Dutch language file
- Added Russian language file
- Added
remove
method to User object
-
- Moved hardcoded mimetypes to
media.yaml
to be treated as Page media files - Set
errors: display: false
by default insystem.yaml
- Strip out extra slashes in the URI
- Validate hostname to ensure it is valid
- Ignore more SCM folders in Backups
- Removed
home_redirect
settings fromsystem.yaml
- Added Page
media
as root twig object for consistency - Updated to latest vendor libraries
- Optimizations to Asset pipeline logic for minor speed increase
- Block direct access to a variety of files in
.htaccess
for increased security - Debugbar vendor library update
- Always fallback to english if other translations are not available
- Moved hardcoded mimetypes to
-
- Fix for redirecting external URL with multi-language
- Fix for Asset pipeline not respecting asset groups
- Fix language files with child/parent theme relationships
- Fixed a regression issue resulting in incorrect default language
- Ensure error handler is initialized before URI is processed
- Use default language in Twig if active language is not set
- Fixed issue with
safeEmailFilter()
Twig filter not separating with;
properly - Fixed empty YAML file causing error with native PECL YAML parser
- Fixed
SVG
mimetype - Fixed incorrect
Cache-control: max-age
value format
-
- Added Redis back as a supported cache mechanism
- Allow Twig
nicetime
translations - Added
-y
option for 'Yes to all' inbin/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
beforeSERVER_NAME
(helpful with Nginx) - More friendly cache naming to ease manual management of cache systems
- Added default Apache resource for
DirectoryIndex
-
- Fix GPM failure when offline
- Fix
open_basedir
error inbin/gpm install
- Fix an HHVM error in Truncator
- Fix for XSS vulnerability with params
- Fix chaining for responsive size derivatives
- Fix for saving pages when removing the page title and all other header elements
- Fix when saving array fields
- Fix for ports being included in
HTTP_HOST
- Fix for Truncator to handle PHP tags gracefully
- Fix for locate style lang codes in
getNativeName()
- Urldecode image basenames in markdown
-
- 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
- Added new
-
- 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 debugger (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
- GPM theme install now uses a
-
- Fix broken routable logic
- Check for
phpinfo()
method in case it is restricted by hosting provider - Fixes for windows when running GPM
- Fix for ampersand (
&
) causing error intruncateHtml()
viaPage.summary()
-
- New and improved multibyte-safe TruncateHTML function and filter
- Added support for custom page date format
- Added a
string
Twig filter to render as json_encoded string - Added
authorize
Twig filter - Added support for theme inheritance in the admin
- Support for multiple content collections on a page
- Added configurable files/folders ignores for pages
- Added the ability to set the default PHP locale and override via multi-lang configuration
- Added ability to save as YAML via admin
- Added check for
mbstring
support - Added new
redirect
header for pages
-
- Changed dependencies from
develop
tomaster
- Updated logging to log everything from
debug
level on (waswarning
) - Added missing
accounts/
folder - Default to performing a 301 redirect for URIs with trailing slashes
- Improved Twig error messages
- Allow validating of forms from anywhere such as plugins
- Added logic so modular pages are by default non-routable
- Hide password input in
bin/grav newuser
command
- Changed dependencies from
-
- Fixed
Pages.all()
not returning modular pages - Fix for modular template types not getting found
- Fix for
markdown_extra:
overridingmarkdown:extra:
setting - Fix for multi-site routing
- Fix for multi-lang page name error
- Fixed a redirect loop in
URI
class - Fixed a potential error when
unsupported_inline_types
is empty - Correctly generate 2x retina image
- Typo fixes in page publish/unpublish blueprint
- Fixed
-
- Added some new Twig filters:
defined
,rtrim
,ltrim
- Admin support for customizable page file name + template override
- Added some new Twig filters:
-
- 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
-
- Fixed issue with unescaped
o
character in date formats
- Fixed issue with unescaped
-
- 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
- Added
-
- 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 fixes with GPM
- Unset plaintext password on save
- Fix for trailing
/
not matching active children
-
- 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
- Fixed issue when saving
-
- Added a new
newuser
CLI command to create user accounts - Added
default
blueprint for all templates - Support
user
andsystem
language translation merging
- Added a new
-
- Added isSymlink method in GPM to determine if Grav is symbolically linked or not
- Refactored page recursing
- Updated blueprints to use new toggles
- Updated blueprints to use current date for date format fields
- Updated composer.phar
- Use sessions for admin even when disabled for site
- Use
GRAV_ROOT
in session identifier
-
- 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
- Added
-
- 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
-
- Added new
cache_all
system setting + mediacache()
method - Added base languages configuration
- Added property language to page to help plugins identify page language
- New
Utils::arrayFilterRecursive()
method
- Added new
-
- 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
inVideoMedium
that was causing error - Array fix in
User.authorise()
method - Fix for typo in
translations_fallback
- Fixed moving page to the root
- Removed unused
-
- Added new
onImageMediumSaved()
event (useful for post-image processing) - Added
Vary: Accept-Encoding
option
- Added new
-
- Multilang-safe delimeter position
- Refactored Twig classes and added optional umask setting
- Removed
pageinit()
timing Page->routable()
now takespublished()
state into account- Improved how page extension is set
- Support
Language->translate()
method taking string and array
-
- Fixed
backup
command to include empty folders
- Fixed
-
- Detect users preferred language via
http_accept_language
setting - Added new
translateArray()
language method
- Detect users preferred language via
-
- Support
en
translations by default for plugins & themes - Improved default generator tag
- Minor language tweaks and fixes
- Support
-
- Fix for session active language and homepage redirects
- Ignore root-level page rather than throwing error
-
- 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
-
- 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()
andPage.activeChild()
methods to support route aliases - Various spelling corrections in
.php
comments,.md
and.yaml
files Utils::startsWith()
andUtils::endsWith()
now support needle arrays- Added a new timer around
pageInitialized
event - Updated jQuery library to v2.1.4
- Improved
-
- In-page CSS and JS files are now handled properly
- Fix for
enable_media_timestamp
not working properly
-
- 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
andetag
page headers by default (causing too much page caching)
- Improved
-
- Preload classes during
bin/gpm selfupgrade
to avoid issues with updated classes - Fix for directory relative down links
- Preload classes during
-
- Added method to set raw markdown on a page
- Added ability to enabled system and page level
etag
andlast_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 thanphp
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 alternative media resolutions
- Fix for modularTypes key properties
- Fix incorrect slug causing problems with CLI
-
- 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
andends_with
Twig filters
-
- Optimized 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
toFolder::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 normalize font rewrite path
- Fix for absolute URLs below the current page
- Fix for
..
page references
- Fix issue with Gzip not working with
-
- Added support for E-Tag, Last-Modified, Cache-Control and Page-based expires headers
-
- Refactored media image handling to make it more flexible and support absolute paths
- Refactored page modification check process to make it faster
- User account improvements in preparation for admin plugin
- Protect against timing attacks
- Reset default system expires time to 0 seconds (can override if you need to)
-
- Fix issues with spaces in webroot when using
bin/grav install
- Fix for spaces in relative directory
- Bug fix in collection filtering
- Fix issues with spaces in webroot when using
-
- Added support for chunked downloads of Assets
- Added new
onBeforeDownload()
event - Added new
download()
andgetMimeType()
methods to Utils class - Added configuration option for supported page types
- Added assets and media timestamp options (off by default)
- 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
- Fixed issue with Nginx/Gzip and
-
- Fix for broken GPM
selfupgrade
(Grav 0.9.21 and 0.9.22 will need to manually upgrade to this version)
- Fix for broken GPM
-
- Fix to normalize GRAV_ROOT path for Windows
- Fix to normalize Media image paths for Windows
- Fix for GPM
selfupgrade
when you are on latest version
-
- 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
-
- Added
addAsyncJs()
andaddDeferJs()
to Assets manager - Added support for extranal URL redirects
- Added
-
- 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
- Fixed issue with markdown links to
-
- Added named assets capability and bundled jQuery into Grav core
- Added
first()
andlast()
toIterator
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
- Fixed
-
- Added ability for GPM
install
to automatically install_demo
content if found (w/backup) - 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()
andcontains()
helper methods in Utils
- Added ability for GPM
-
- Provided 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
- Provided new
-
- Fix for windows platforms not displaying installed themes/plugins via GPM
- Fix page IDs not picking up folder-only pages
-
- 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()
andaddInlineJs()
Assets not working between Twig tags - Fix for Markdown adding HTML tags into inline CSS and JS
- Fix for
-
- 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
- Added Retina and Responsive image support via Grav media and
-
- 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 programmatically 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
-
- 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
-
- Added GZip support
- Added multiple configurations via
setup.php
- Added base structure for unit tests
- New
onPageContentRaw()
plugin event that processes before any page processing - Added ability to dynamically set Metadata on page
- Added ability to dynamically configure Markdown processing via Parsedown options
-
- Refactored
page.content()
method to be more flexible and reliable - Various updates and fixes for streams resulting in better multi-site support
- Updated Twig, Parsedown, ParsedownExtra, DoctrineCache libraries
- Refactored Parsedown trait
- Force modular pages to be non-visible in menus
- Moved RewriteBase before Exploits in
.htaccess
- Added standard video formats to Media support
- Added priority for inline assets
- Check for uniqueness when adding multiple inline assets
- Improved support for Twig-based URLs inside Markdown links and images
- Improved Twig
url()
function
- Refactored
-
- Fix for HTML entities quotes in Metadata values
- Fix for
published
setting to have precedent ofpublish_date
andunpublish_date
- Fix for
onShutdown()
events not closing connections properly in php-fpm environments
-
- 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 programmatically
- 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
- Added new published
-
- Modified all Collection methods so they can be chained together:
$collection->published()->visible()
- Set default Cache lifetime to default of 1 week (604800 seconds) - was infinite
- House-cleaning of some unused methods in Pages object
- Modified all Collection methods so they can be chained together:
-
- Fix
uninstall
GPM command that was broken in last release - Fix for intermittent
undefined index
error when working with Collections - Fix for date of some pages being set to incorrect future timestamps
- Fix
-
- 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
-
- Fall back to default
.html
template if error occurs on non-html pages - Added ability to have PSR-1 friendly plugin names (CamelCase, no-dashes)
- Fix to
composer.json
to deter API rate-limit errors - Added non-exception-throwing handler for undefined methods on
Medium
objects
- Fall back to default
-
- 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
- Fix description for
-
- Added support for simple redirects as well as routes
-
- Handle Twig errors more cleanly
-
- Fix for error caused by invalid or missing user agent string
- Fix for directory relative links and URL fragments (#pagelink)
- Fix for relative links with no subfolder in
base_url
-
- Added Facebook-style
nicetime
date Twig filter
- Added Facebook-style
-
- Moved
clear-cache
functionality into Cache object required for Admin plugin
- Moved
-
- Fix for undefined index with previous/next buttons
-
- Added new
@page
collection type - Added
ksort
andcontains
Twig filters - Added
gist
Twig function
- Added new
-
- Refactored Page previous/next/adjacent functionality
- Updated to Symfony 2.6 for yaml/console/event-dispatcher libraries
- More PSR code fixes
-
- Fix for over-escaped apostrophes in YAML
-
- Added configuration option to set default lifetime on cache saves
- Added ability to set HTTP status code from page header
- Implemented simple wild-card custom routing
-
- Fixed elusive double load to fully cache issue (crossing fingers...)
- Ensure Twig tags are treated as block items in markdown
- Removed some older deprecated methods
- Ensure onPageContentProcessed() event only fires when not cached
- More PSR code fixes
-
- Fix issue with miscalculation of blog separator location
===
- Fix issue with miscalculation of blog separator location
-
- Nginx configuration updated
- Added gitter.im badge to README
- Removed
set_time_limit()
and put checks aroundignore_user_abort
- More PSR code fixes
-
- Fix issue with non-valid asset path showing up when they shouldn't
- Fix for JS asset pipeline and scripts that don't end in
;
- Fix for schema-based markdown URLs broken routes (eg
mailto:
)
-
- Moved base_url variables into Grav container
- Forced media sorting to use natural sort order by default
- Various PSR code tidying
- Added filename, extension, thumb to all medium objects
-
- Fix for infinite loop in page.content()
- Fix hostname for configuration overrides
- Fix for cached configuration
- Fix for relative URLs in markdown on installs with no base_url
- Fix for page media images with uppercase extension
-
- Added quality setting to medium for compression configuration of images
- Added new onPageContentProcessed() event that is post-content processing but pre-caching
-
- Added support for AND and OR taxonomy filtering. AND by default (was OR)
- Added specific clearing options for CLI clear-cache command
- Moved environment method to URI so it can be accessible in plugins and themes
- Set Grav's output variable to public so it can be manipulated in onOutputGenerated event
- Updated vendor libraries to latest versions
- Better handing of 'home' in active menu state detection
- Various PSR code tidying
- Improved some error messages and notices
-
- Force route rebuild when configuration changes
- Fix for 'installed undefined' error in CLI versions command
- Do not remove the JSON/Text error handlers
- Fix for supporting inline JS and CSS when Asset pipeline enabled
- Fix for Data URLs in CSS being badly formed
- Fix Markdown links with fragment and query elements
-
- 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
-
- GPM (Grav Package Manager) Added
- Support for multiple Grav configurations
- Dynamic media support via URL
- Added inlineCss and inlineJs support for Assets
-
- YAML caching for increased performance
- Use stream wrapper in pages, plugins and themes
- Switched to RocketTheme toolbox for some core functionality
- Renamed
setup
CLI command tosandbox
- Broke cache types out into multiple directories in the cache folder
- Removed vendor libs from github repository
- Various PSR cleanup of code
- Various Blueprint updates to support upcoming admin plugin
- Added ability to filter page children for normal/modular/all
- Added
sort_by_key
twig filter - Added
visible()
androutable()
filters to page collections - Use session class in shutdown process
- Improvements to modular page loading
- Various code cleanup and optimizations
-
- Fixed file checking not updating the last modified time. For real this time!
- Switched debugger to PRODUCTION mode by default
- Various fixes in URI class for increased reliability
-
- New flexible site and page metadata support including ObjectGraph and Facebook
- New method to get user IP address in URI object
- Added new onShutdown() event that fires after connection is closed for Async features
-
- Skip assets pipeline minify on Windows platforms by default due to PHP issue 47689
- Fixed multiple level menus not highlighting correctly
- Updated some blueprints in preparation for admin plugin
- Fail gracefully when theme does not exist
- Add stream support into ResourceLocator::addPath()
- Separate themes from plugins, add themes:// stream and onTask events
- Added barDump() to Debugger
- Removed stray test page
- Override modified only if a non-markdown file was modified
- Added assets attributes support
- Auto-run composer install when running the Grav CLI
- Vendor folder removed from repository
- Minor configuration performance optimizations
- Minor debugger performance optimizations
-
- Fix url() twig function when Grav isn't installed at root
- Workaround for PHP bug 52065
- Fixed getList() method on Pages object that was not working
- Fix for open_basedir error
- index.php now warns if not running on PHP 5.4
- Removed memcached option (redundant)
- Removed memcache from auto setup, added memcache server configuration option
- Fix broken password validation
- Back to proper PSR-4 Autoloader
-
- Added new
theme://
PHP stream for current theme
- Added new
-
- Default to new
file
modification checking rather thanfolder
- Added support for various markdown link formats to convert to Grav-friendly URLs
- Moved configure() from Theme to Themes class
- Fix autoloading without composer update -o
- Added support for Twig url method
- Minor code cleanup
- Default to new
-
- Fixed issue with page changes not being picked up
- Fixed Minify to provide
@supports
tag compatibility - Fixed ResourceLocator not working with multiple paths
- Fixed issue with Markdown process not stripping LFs
- Restrict file type extensions for added security
- Fixed template inheritance
- Moved Browser class to proper location
-
- Addition of Dependency Injection Container
- Refactored plugins to use Symfony Event Dispatcher
- New Asset Manager to provide unified management of JavaScript and CSS
- Asset Pipelining to provide unification, minify, and optimization of JavaScript and CSS
- Grav Media support directly in Markdown syntax
- Additional Grav Generator meta tag in default themes
- Added support for PHP Stream Wrapper for resource location
- Markdown Extra support
- Browser object for fast browser detection
-
- PSR-4 Autoloader mechanism
- Tracy Debugger new
detect
option to detect running environment - Added new
random
collection sort option - Make media images progressive by default
- Additional URI filtering for improved security
- Safety checks to ensure PHP 5.4.0+
- Move to Slidebars side navigation in default Antimatter theme
- Updates to
.htaccess
including section onRewriteBase
which is needed for some hosting providers
-
- Fixed issue when installing in an apache userdir (~username) folder
- Various mobile CSS issues in default themes
- Various minor bug fixes