PieCrust 1.0 RC
The past month has been pretty busy, between my next secret project, my day job, and of course fixing PieCrust bugs. But somehow among this chaos seems to be emerging a release candidate for PieCrust 1.0. And it’s only fitting that I announce this on Pi Day!
As always, for a complete list of changes, I’ll redirect you to the changelog. But for the highlights, please read on.
Big thanks go to the few people who contributed patches to the PieCrust code, and to the many who reported bugs and had the patience to help me fix them.
Breaking changes
First, the breaking changes. There are a bit more than I’d like, but most of them should not be a problem to 99% of users:
- Chef’s command line interface has changed: global options now need to be passed first, before the command name. So for example, if you want debug output when baking, you need to type 
chef --debug bake. - The 
pagination.postsiterator can’t be modified anymore (i.e. calls toskiporlimitorfilterwill fail). You can use theblog.postsiterator instead to do anything custom. - The 
xmldateTwig filter has been renamed toatomdate. - There was a bug with the monthly blog archives (accessed with 
blog.months), where they would be incorrectly ordered chronologically. They are now ordered reverse-chronologically, like every other list of posts. - The 
baker/trailing_slashis nowsite/trailing_slash, since PieCrust will also generate links with a trailing slash in the preview server, and not just during the bake, when that setting is enabled. The old setting is still available, though. - The 
assettemplate variable is renamedassets. The old name is still available. - Specifying a link to a multi-tag listing page is now done with the array syntax: 
{{pctagurl(['tag1', 'tag2'])}}. The previous syntax quickly broke down as soon as somebody decided to have tags with slashes in their name 🙂 
All those changes should give you an error message that’s easy to understand, or have backwards compatibility in place with a warning telling you about the change. Look out for those.
Sass, Compass and YUI Compressor
Previously available as plugins, the Sass, Compass and YUI Compressor file processors are now part of the core. There were enough people mentioning those tools, especially Compass, that it made sense to include them by default.
The Sass processor is very similar to the one previously available in the plugin. In the site configuration, you can specify include paths with sass/load_paths, output style with sass/style, or any custom option to pass to the Sass tool with sass/options.
Compass support, however, has changed quite a bit, and should be now a lot better:
- You enable it by setting 
compass/use_compasstotrue. This will prevent the default Sass processor to run on your.scssfiles. - If 
.sassor.scssfiles are found in the website, thecompasstool will be run at the end of the bake. It will by default use anyconfig.rbfound at the root of the site. You can otherwise specify where your Compass config is withcompass/config_path, or ask PieCrust to auto-generate it for you withcompass/auto_configtotrue. - It may be a good idea to add your config file to the 
baker/skip_patternslist, so that it’s not copied to the output directory. 
To enable the YUI Compressor to run on anything that outputs CSS, specify the path to the .jar file with yui/compressor/jar.
Linking feature now official
For a while, there was a link template variable that let you access other pages in the content tree. It was however never really official since I was still iterating on the design.
It’s now official, and available through the siblings template variable. It will return the pages and directories next to the current page.
To return the whole family tree starting from the current page, you can use family. It’s like a subset of site.pages.
Auto-format extensions
Another popular request is the ability to use different file extensions for pages and posts, like .md for Markdown content or .textile for Textile content.
This is now possible with site/auto_formats. This is a list that maps an extension to a format name:
site:
    auto_formats:
        md: markdown
        mdown: markdown
Here I’m mapping *.md and *.mdown to the Markdown format. Files found with those extensions will be treated as if they were .html files, but will also have their format set to markdown.
Feed preparation
If you write a blog, you most probably want to have an RSS feed. You can have one prepared for you with: chef prepare feed myfeed.xml. It will create a new page that has most of what you want by default. You can then go and tweak it if you want, of course.
Miscellaneous
A few other important changes:
- All libraries (including Twig, Markdown or Textile) have been upgraded to their latest versions.
 - It is now possible to specify 
posts_filterson a tag or cateogory page (_tag.htmlor_category.html). 
