We've released Bolt 1.2: A recommended update for all Bolt users, with new features, improvements and bugfixes galore. This release contains no security-related fixes.

To upgrade an existing install, or to setup a new one, just follow the instructions. When you do an upgrade, you will not overwrite your modified settings with the upgrade. You should still make a backup before doing an upgrade, though. Get the latest .tgz or .zip, or browse the folder with the distributions. If you're upgrading, see the note below the changelog.

Major improvements and changes in this release, since Bolt 1.1.4:

Bolt now supports custom routing . This means you'll have much more freedom in what the URLs of your Bolt site look like. Before version 1.2, all links to content looked like /{contenttype}/{slug} . With Bolt 1.2, you can have pages that have links like /about-us or /contact , or you can have your weblog at /blog/2013-09-13/lorem-ipsum .

. This means you'll have much more freedom in what the URLs of your Bolt site look like. Before version 1.2, all links to content looked like . With Bolt 1.2, you can have pages that have links like or , or you can have your weblog at . There's a new search functionality . You can search through one, multiple or all contenttypes at once. The results themselves are weighted, so better results float to the top (basically, title-like fields and fields that are used for slugs are assumed to be most relevant for the results. You can also add a ' searchable: false ' to any contenttype, to exclude that specific contenttype from search altogether.

. You can search through one, multiple or all contenttypes at once. The results themselves are weighted, so better results float to the top (basically, title-like fields and fields that are used for slugs are assumed to be most relevant for the results. You can also add a ' ' to any contenttype, to exclude that specific contenttype from search altogether. You can now have required fields in your contenttypes, and they can also have (frontend) validation. Using this, you can make sure fields are filled out by the editors and that they have a specific format or maximum length. See this page in the documentation for details.

in your contenttypes, and they can also have (frontend) validation. Using this, you can make sure fields are filled out by the editors and that they have a specific format or maximum length. See this page in the documentation for details. The configuration that is stored in the .yml files in app/config/ is now accessible as a proper object throughout the entirity of the code, including extensions. This used to be a giant multi-dimensional array, which became very clunky. An additional benefit if this is that it's quite a bit faster: The config files are read, parsed and cached. Bolt automatically detects changes in the files, to reload them only if needed. The automatic check for required changes in the database are only done when needed.

that is stored in the files in is now accessible as a proper object throughout the entirity of the code, including extensions. This used to be a giant multi-dimensional array, which became very clunky. An additional benefit if this is that it's quite a bit faster: The config files are read, parsed and cached. Bolt automatically detects changes in the files, to reload them only if needed. The automatic check for required changes in the database are only done when needed. Speaking about the configuration files: You can now move the entire app/config/ folder outside of your webroot. There are already several ways we prevent access to these files, but this is an extra level of protection for these files that might contain sensitive information.

folder outside of your webroot. There are already several ways we prevent access to these files, but this is an extra level of protection for these files that might contain sensitive information. We've added a Redirector extension . Using this extension, you can forward (old) links to the correct content in your Bolt site with a proper 301-redirect. It supports wildcards and input restrictions for quick and simple forwarding. This extension was developed by Mike Anthony at Foundry Code.

. Using this extension, you can forward (old) links to the correct content in your Bolt site with a proper 301-redirect. It supports wildcards and input restrictions for quick and simple forwarding. This extension was developed by Mike Anthony at Foundry Code. You can now manually edit the slugs, if you don't like the slug that's automatically generated by Bolt. See screenshot:

![](/files/2013-09/Screen Shot 2013-09-13 at 12.26.56 PM.png)

![](/files/2013-09/Screen Shot 2013-09-13 at 12.26.56 PM.png) Added support for the PHP 5.4 builtin web server .

. You can now have multiple imagelists in a single contenttype. The imagelists themselves can also hold a lot more images now.

in a single contenttype. The imagelists themselves can also hold a lot more images now. We've added a Google Plus One extension , courtesy of Till Klocke.

, courtesy of Till Klocke. We've made a few improvements for performance . Especially pages on the frontend of your websites render a lot faster now. In content-heavy sites the difference can be as much as 500%, but in most cases the speedup is 200 to 300 percent. See the screenshot below for a before/after comparison of both the Bolt backend as well as a typical rendered page:



. Especially pages on the frontend of your websites render a lot faster now. In content-heavy sites the difference can be as much as 500%, but in most cases the speedup is 200 to 300 percent. See the screenshot below for a before/after comparison of both the Bolt backend as well as a typical rendered page: Many improvements were made to the SimpleForms extension. We're debating a name change, because by now it can handle a lot of different forms.

Updated doctrine to version 2.4.0 final.

Updated Underscore.js to 1.5.2.

Updated Moment.js to version 2.2.1

All Symfony components are updated to 2.3.3.

Updated jQuery to version 1.10.2.

Bugfix: Fixed some issues with Pagers.

Bugfix: Don't remove relations, when editing the 'receiving' end.

Bugfix: Fix path settings for windows servers.

Don't prefill dates if they're not set.

Fix: record.previous() and record.next() are working again.

and are working again. Fix: Make sure we don't store empty slugs. Also better checking to prevent duplicate slugs.

Added functionality for extensions to add items to the menu in the Dashboard under 'settings'.

Fix issue where checkboxes with ' default: 1 ' are not stored when unchecked.

' are not stored when unchecked. Change: We've changed the login screen, to be more user-friendly.

Change: We've refactored {<span>% setcontent %</span>} . The behaviour in templates is the same, but the code is better structured.

Note for upgrading:

Because 'config' is now an object, instead of an array, it needs to be addressed differently. If you used config settings in your templates, you will have to update these. For example, the default templates used to say:

{<span>{ app.config.general.sitename }</span>}

which should now be changed to:

{<span>{ app.config.get('general/sitename') }</span>}

If you have custom code in an extension, you should refactor the array-access to use the get() function. Before:

$app['config']['general']['foo']['bar']

should become:

$app['config']->get('general/foo/bar');