Today we proudly released Grav 1.2 along with the 1.3 of the Admin plugin. This marks our first major release since v1.1 was released in July last year. We've been busy though! Over the past 8 months or so we had 17 releases of the Grav core, and 14 releases of the Admin plugin. In fact, even though Grav only reached 1.0 status a little over a year ago, it was in beta for a year and a half before that, and has actually seen 101 releases since its inception.
Grav 1.2 is more of an incremental release than 1.1, and I will outline how we are changing the handling of our [version numbers in more detail below]. However, let's recap some of the new additions to Grav since the last major 1.1 release.
Grav 1.2 Features (since Grav 1.1.0)
- Force SSL. The ability to force SSL site-wide or per-page via configuration
- Support for PHP's built-in webserver. Running Grav with PHP alone is now possible.
- RTL languages. RTL languages and support for direction have been added to to the Core.
- Custom Base URL. This allows overriding the base URL that is usually determined automatically
- Direct Install. The ability to install packages directly without relying on GPM
- Ability to override output format. This lets you set the output format to
JSONetc more simply
- Added a new
hashcache check. Depending on your site, this might be faster than the default
- Cached JSON file support. This allows Grav to store data in cached JSON files.
- Improved Retina image support. Now supporting derivatives and custom sizes.
- More Twig functions and filters. We've steadily added more useful functions and features.
- Stream support in markdown images/links. Now you can use
theme://streams directly in your markdown
- Various new system events. More events have been added to improve plugin capabilities.
never_cache_twigpage option. This allows better functionality in Modular and other page-level twig-based pages.
- New theme helpers. Several new Twig variables and functions have been added to ease theme development.
- Collection Merging. You can now merge multiple collections into a single collection.
Admin Plugin 1.3 Features (since Admin 1.2.0)
- Refactored Page ordering. Page ordering is simpler and more robust.
- Custom avatar support. Now you can use your own avatar, not just gravatar-based.
- New Permissions field. Simplifies the process of setting user permissions.
- Various new Admin events. More events have been added to improve plugin capabilities.
- New flex-based Tabs system. Tabs can handle longer text and automatically adjust to fit space available.
- Toolbox including Direct Install. You can now direct install via the Admin. More useful tools will be added here.
- Re-install option. Plugins and Themes can be reinstalled if required.
- Touch-friendly Range field. The range field has been rewritten to support mobile devices.
- Make use of parent's child type. Now creating a new page will use the parent's child type option if set.
- Page Media availability. You can now add page media without having to save the page file as long as the folder exists.
- Better off-line capabilities. Now you can enjoy the Admin without an Internet connection.
- Ability to turn off ALL notifications. Now you can disable all notifications resulting in zero Ajax calls.
Upgrading to Grav v1.2 is an absolute doddle! If you already have the Admin plugin installed, you simple click the Update Grav Now button to upgrade Grav Core itself, and then the Update button in the Maintenance section (or individually in the Plugins and Themes sections) to upgrade all Plugins and Themes.
If you don't have the Admin plugin installed, you can use Grav's built-in package manager to update to the latest version of the Grav Core:
$ bin/gpm self-upgrade
This will download the 'update' package and install it automatically. After this you should also check for any updates to Plugins and Themes and install those as required:
$ bin/gpm update
Concerning Version Numbers
The Grav project uses semantic versioning that results in version numbers such as (e.g.
1.2.13-rc.3). The basics of how this version number works, is that the first number (
1) is the major version, and typically changes when you add or change major portions of the code-base potentially resulting in backwards compatibility issues. The second number (
2), is the minor version that is incremented when you add or change backwards compatible functionality. And lastly the the third number (
13) is the patch version which is incremented when there is minor bug fixes. There are also support for optional pre-release tags like
-rc.3 which can indicate beta or release candidate releases.
Up to this point we've not done a great job of sticking to this paradigm as accurately as we should be. We have been saving the minor version for somewhat major milestones, and using the patch version number to release a mix of bug fixes as well as new functionality.
We're going to remedy this going forward. There will be more minor releases whenever new and backwards compatible functionality is added, and we will be reserving the patch releases for purely bug fix or improvements. We've taken nearly a year and two years to get from
1.2, but in the future these minor releases, will be more frequent but contain less changes between them.