PieCrust 3.3.0
A powerful static website generator and lightweight CMS.
License: Apache License 2.0
Keywords: python website generator blog portfolio gallery cms


PieCrust is a static website generator and lightweight CMS that's all managed
with text files. No complex setup, databases, or administrative panels.
Simple, beautiful, and yummy.

For more information, along with the complete documentation, visit `the
official website`_.

.. _the official website: http://bolt80.com/piecrust/


|pypi-version| |pypi-downloads| |build-status|

.. |pypi-version| image:: https://img.shields.io/pypi/v/piecrust.svg
   :target: https://pypi.python.org/pypi/piecrust
   :alt: PyPI: the Python Package Index
.. |pypi-downloads| image:: https://img.shields.io/pypi/dm/piecrust.svg
   :target: https://pypi.python.org/pypi/piecrust
   :alt: PyPI: the Python Package Index
.. |build-status| image:: https://img.shields.io/travis/ludovicchabant/PieCrust2/master.svg
   :target: https://travis-ci.org/ludovicchabant/PieCrust2
   :alt: Travis CI: continuous integration status



Quickstart
==========

If you want to quickly give it a spin:

::

    pip install piecrust
    chef init mywebsite
    cd mywebsite
    chef serve

It should create a new empty site in a ``mywebsite`` folder, and start a small
web server to preview it. You can then point your browser to ``localhost:8080``
to see the default home page.

Use ``chef prepare page`` and ``chef prepare post`` to create pages and posts,
and edit those in your favorite text editor.

When you're happy, run ``chef bake`` to generate the final static website,
which you'll find in ``_counter``. At this point you can upload the contents of
``_counter`` to your server.


Changes
=======

Check out the ``CHANGELOG`` file for new features, bug fixes and breaking
changes. You can `see it online here <https://bitbucket.org/ludovicchabant/piecrust2/raw/default/CHANGELOG.rst>`__.


Installation
============

You can install PieCrust like any other package:

::

    pip install piecrust

For more options to get PieCrust on your machine, see the ``INSTALL`` file. You
can `see it online here <https://bitbucket.org/ludovicchabant/piecrust2/raw/default/INSTALL.rst>`__.




#########
CHANGELOG
#########

This is the changelog for PieCrust_.

.. _PieCrust: http://bolt80.com/piecrust/



==================================
1. PieCrust 3.3.0 (2019-10-04)
==================================


1.0 Commands
----------------------

* admin: Improvements to micropub endpoint's photo handling.
* bake: Don't crash if a source doesn't implement related items.
* prepare: Add micro-blogging template.
* sources: Add ability to force a realm on a source.

1.1 Core
----------------------

* config: Add setting for enabling baking or serving posts in the future.
* config: Allow tweaking the configuration of default routes.
* config: Support environment variables in theme directories.
* data: Allow combining different data providers.
* routing: Fix breakages with routing on some versions of Python.
* routing: For some reason, escaping percents isn't happening anymore.

1.3 Project
----------------------

* cm: Add mock to test dependencies.
* cm: Add new pytest cache dirs to hgignore.
* cm: Update dependencies and fix imports of Flask plugins.
* cm: Update dependencies.
* cm: Update gulp/npm stuff.
* cm: Update hgignore.
* cm: Upgrade Jinja2 version.
* tests: Add ability to test different expected outputs based on Python version.
* tests: Fix YAML warning in tests.

1.4 Miscellaneous
----------------------

* copyasset: Add ``copyasset`` command.
* core: Remove deprecation warning about collections.abc.
* core: Remove more YAML deprecation warnings.
* core: Remove yaml deprecation warning.
* less: Fix issues moving the map file on Windows. Again.

==================================
2. PieCrust 3.2.1 (2018-06-05)
==================================


2.0 Commands
----------------------

* bake: Give unique source specs to each taxonomy or blog archive page.
* serve: Fix an issue where false positive matches were rendered as the requested page.

2.1 Core
----------------------

* internal: Cleanup in the paginator's code.

2.3 Project
----------------------

* cm: Regenerate the CHANGELOG.
* tests: Improve servings tests' error reporting.

==================================
3. PieCrust 3.2.0 (2018-05-20)
==================================


3.0 Commands
----------------------

* bake: Disable ``uglifyjs`` and ``cleancss`` by default.
* bake: Optimize cache handling for the baking process.

3.1 Core
----------------------

* templating: Fix Inukshuk ``paginate`` function.

3.3 Project
----------------------

* cm: Regenerate the CHANGELOG.
* cm: Update npm modules.
* tests: Don't use flow style for generated YAML markup.

3.4 Miscellaneous
----------------------

* fix: Correctly invalidate pages that use dirtied sources.
* showrecords: Tiny cosmetic change for the output.
* url: New ``url`` command to get the URL of a page from its path.

==================================
4. PieCrust 3.1.1 (2018-02-28)
==================================


4.0 Commands
----------------------

* chef: Support special tokens in the ``chef/env`` setting.
* prepare: Fix crash when preparing new pages.
* theme: Fix quickstart message formatting.

4.3 Project
----------------------

* cm: Regenerate the CHANGELOG.
* tests: Improve failure reporting, improve CLI tests.

==================================
5. PieCrust 3.1.0 (2018-02-27)
==================================


5.0 Commands
----------------------

* admin: Early version of webmention endpoint.
* admin: Fix another root URL issue for the admin panel.
* admin: Fix possible crash in the edit page.
* admin: Upgrade login screen to new Bootstrap classes.
* bake: Fix bug on Windows where shim scripts of NodeJS tools couldn't run.
* chef: Add new ``chef/env`` config section.
* help: Add new help topics on routes.
* routes: Make help topic names consistent.
* serve: Do some more useful debug logging when serving assets.
* serve: Indicate where to find the admin panel in the console output.
* serve: Only tell about the admin panel if needed.

5.1 Core
----------------------

* config: Report error if a non-asset source has no URL route.
* data: Fix bug with page family data not returning correct ``is_dir`` value.
* data: Let the ``asset`` endpoint load JSON data into the template engine.
* data: Rename JSON-ifier function.
* data: Use the root URL for the debugger assets.
* internal: Disable macOS file-system wrappers.
* internal: PEP8.
* internal: Remove unnecessary imports.
* routing: Fix URL generation bug with ugly URLs and index pages in sub-folders.

5.3 Project
----------------------

* cm: Add pipenv stuff.
* cm: Ignore temp test files.
* cm: Regenerate the CHANGELOG.
* cm: Simpler, better ``Pipfile`` .
* docs: Add more information about the administration panel.
* docs: Add some information about setting up the micropub endpoint.
* tests: Better error reporting for serving tests.
* tests: Fix assetor tests.
* tests: Fix pipeline test after having added new processors.
* tests: Make internal test stuff not get picked up by pytest.

5.4 Miscellaneous
----------------------

* formatter: Fix the regex used to find page segments.
* tasks: Add new ``tasks`` command and infrastructure, with ``mention`` task.

==================================
6. PieCrust 3.0.2 (2018-02-16)
==================================


6.0 Commands
----------------------

* sources: Update prose source to correctly use the new source API.

6.1 Core
----------------------

* data: Fix recently introduced bug with blog data provider.

6.3 Project
----------------------

* cm: Regenerate the CHANGELOG.

6.4 Miscellaneous
----------------------

* page: Let sources like prose override the title.

==================================
7. PieCrust 3.0.1 (2018-02-15)
==================================


7.0 Commands
----------------------

* serve: Fix debug rendering for page iterators.
* serve: Show debug info, report errors when debug info isn't available.
* sources: Fix index page slug for ordered page source.
* sources: Fix some invalid relationship name.

7.1 Core
----------------------

* data: Fix debug rendering of the blog data provider.
* data: Fix debug rendering of the family data.

7.3 Project
----------------------

* cm: Ignore documentation counter.
* cm: Regenerate the CHANGELOG.
* docs: Add information about common file-system sources' configurations.
* docs: Add some information about migrating from v2 to v3.
* docs: Cosmetic improvements to the navigation bar.
* docs: Fix default formatter.
* docs: Make the "code" section show up correctly in navigation.
* docs: Tweak CSS style for block quotes.

==================================
8. PieCrust 3.0.0 (2018-02-13)
==================================


8.0 Commands
----------------------

* admin: Handle multiple photo uploads in the micropub endpoint.
* admin: Make tumbnails when posting photos, commit to SCM.
* admin: Upgrade Bootstrap, switch icons to Open-Iconic, remove Bower.
* bake: Add ``--sources`` argument.
* bake: Add support for Browserify.
* bake: Allow specifying which asset processors to use on a per-source basis.
* bake: Better performance stats, and add callback to preload templates.
* bake: Do template caching in a background job if possible.
* bake: Don't add outputs as dependencies, duh.
* bake: Don't cheat when profiling.
* bake: Don't ignore errors reported on things that are not yet in the records.
* bake: Fix bug with postponed pages due to them using other sources.
* bake: Fix exception verbose reporting for bake worker errors.
* bake: Fix overriding issues between theme and user pages for index pages.
* bake: Fix totally broken page baking caused by previous commit.
* bake: Fix where the Browserify processor outputs things.
* bake: Load pages in parallel again.
* bake: Make ``batch-size`` option work again.
* bake: More detailed stats, and fix a problem with some error reporting.
* bake: Only cache templates for the default template engine.
* bake: Optimize Browserify dependency handling.
* bake: Remove superfluous debug message.
* bake: Simplify output.
* chef: Fix crash for commands run outside of a website.
* serve: Don't spam the output when hitting CTRL+C while processing assets.
* serve: Fix crash when editing ``config.yml`` while serving.
* serve: Fix crash with ``serve --admin`` .
* serve: Fix crash with autoconfig source pages when serving.
* serve: Fix infinite loop in asset processing when a change is detected.
* serve: Fix problems with assets disappearing between servings.
* serve: Re-enable baking assets when running the server.
* serve: Use ``watchdog`` for a more efficient monitoring of assets files.
* sources: Adds support for whitelist filtering to file-system sources.
* sources: Fix ordering and filename confusion in the "ordered" source.
* sources: Improve error message when trying to get children pages on a group.

8.1 Core
----------------------

* data: Add new properties and folder support to the ``family`` data endpoint.
* data: Fix a bug when listing a blog's posts twice on a page.
* data: Make ``family`` properties return lists instead of generators.
* data: Properly order month names in blog archives.
* formatting: Fix Smartypants option for hoedown.
* formatting: Replace ``python-hoedown`` with ``misaka`` .
* internal: Don't profile the Inukshuk engine by default, duh.
* internal: Remove debug logging for the cache class.
* internal: Remove unused parameter.
* templating: Add Inukshuk template engine.

8.3 Project
----------------------

* cm: Add Python 3.6 to Travis-CI.
* cm: Bump Inukshuk to ``0.1.2`` , regenerate ``requirements.txt`` .
* cm: Bump cache version ahead of v3 release.
* cm: Include Bootstrap dependencies in ``package.json`` .
* cm: Regenerate the CHANGELOG.
* cm: Separate ``requirements`` from what ``setup.py`` wants.
* cm: Update Inukshuk for Python 3.4 compatibility.
* cm: Update ``garcon`` 's documentation script to work with latest toolchain.
* cm: Upgrade Jinja2 to ``2.10`` , remove ``dev-requirements.txt`` .
* cm: Upgrade invoke, add hoedown to requirements.
* cm: Upgrade release script.
* docs: Style tweaks.
* docs: Update documentation on sources and pipelines.
* docs: Upgrade to Bootstrap 4 and Sass.
* tests: Add plugin tests.
* tests: Fix determinism bug in linker test.
* tests: Fix path comparison in a test on Windows.
* tests: LOL
* tests: Prevent conflicts in later ``pytest`` versions.

8.4 Miscellaneous
----------------------

* formatters: Remove Hoedown formatter, split it off to a pluging.
* markdown: Use either the ``hoedown`` or ``markdown`` config section.
* sass: Make sure ``load_paths`` are relative to the website's root.

==================================
9. PieCrust 2.1.2 (2017-11-21)
==================================


9.0 Commands
----------------------

* admin: Regenerate FoodTruck assets.
* bake: Big pass on bake performance.
* bake: Fix bugs introduced by bake optimizations, of course.
* bake: Fix crash when trying to report a deployment error.
* plugins: Support multiple customizable plugins directories.
* prepare: Fix a crash when preparing a new post.
* sources: Respect the "abort source use" setting when iterating on a source.

9.1 Core
----------------------

* data: Optimize page data so cheapest accessors are tried first.
* pagination: Fix bad bug where all pages triggered pagination.

9.2 Bugfixes
----------------------

* bug: Fix crash on Python 3.6.

9.3 Project
----------------------

* cm: Fix crashes when page assets deployment fails.
* cm: Generate CHANGELOG from the current branch instead of always master. Fix encoding problems.
* cm: Make the release script commit changed FoodTruck assets if needed.
* cm: Only commit admin assets if they have changed.
* cm: Regenerate the CHANGELOG.
* cm: Regenerate the CHANGELOG.
* cm: Regenerate the CHANGELOG.
* cm: Upgrade Garcon tasks to the latest PyInvoke version.
* tests: Fix non-determinism in linker tests.

9.4 Miscellaneous
----------------------

* fix: Compatibility for Python 3.4.
* showrecords: Sort records by name.

==================================
10. PieCrust 2.1.0 (2017-10-29)
==================================


10.0 Commands
----------------------

* admin: Add a "rebake preview assets" button to the dashboard.
* admin: Add a Micropub endpoint.
* admin: Add icon to publish button.
* admin: Add proper link to touch icon.
* admin: Add touch icons.
* admin: Better micropub request handling.
* admin: Fix bug on the publish view.
* admin: Fix more URL prefix issues, improve publishing.
* admin: Fix old API calls and bugs when creating new pages.
* admin: Fix old API calls and bugs when editing pages.
* admin: Fix some UI spacing on the publishing page.
* admin: Fix the site preview by editing the WSGI environment.
* admin: Get the admin panel working again.
* admin: Improve support for Micropub.
* admin: Lots of fixes for running the admin panel in a WSGI server.
* admin: Make the admin panel work under a non-rooted URL.
* admin: Micropub improvements.
* admin: Move 404 debugging into a separate function.
* admin: Read an optional Flask-app configuration file.
* admin: Remove site switcher UI.
* admin: Show flashed messages on edit and publish pages.
* admin: Show more info from the publishing process.
* admin: The link to the panel's dashboard works when we are not at the root.
* admin: Use URL routes for static assets.
* admin: When there's no post title, make a title from the first few words.
* bake: Add ability to specify pipelines to exclude during the bake.
* bake: Add performance timers for pipeline jobs.
* bake: Correctly setup unbaked entries for taxonomy pages.
* bake: Don't create bake jobs for overriden pages.
* bake: Fix typo in one of the performance timers.
* bake: Keep track of which pages were aborted for using other pages.
* bake: Rename "pass" to "step" and make the page pipeline use different steps.
* bake: Support the ``draft`` setting.
* bake: Use the basic Python queue again.
* chef: Allow multiple config variants to be applied.
* chef: Optimize startup time a little bit.
* chef: Optimize startup time.
* plugins: Add support for "ad-hoc" local plugins.
* plugins: Fix a crash bug when the plugins directory doesn't exist.
* plugins: The command works on an empty site too.
* prepare: Fix old API calls.
* prepare: Make drafts by default.
* publish: Add more options for logging, better feedback when it fails.
* publish: Fix publishers API and add a simple "copy" publisher.
* publish: Fix shell publisher crash, log ``stderr`` too.
* serve: Add ``--admin`` option to run the administration panel.
* serve: Add mime type for mp4 video.
* serve: Admin dashboard improvements.
* serve: Disable Werkzeug's debugger PIN.
* serve: Don't start the admin panel SSE until the window is ready.
* serve: Fix asset processing loop.
* serve: Fix crash when displaying empty dictionaries in the debug info.
* serve: Fix error admin panel error message page.
* serve: Fix post editing when the post has assets.
* serve: Fix previewing articles from the administration panel.
* serve: Fix the notifications when publishing a site from the admin panel.
* serve: Optionally run the admin panel with the server.
* serve: Re-bake admin panel's static files.
* showrecord: Don't show empty records when filtering.
* showrecord: Don't show records that don't match the given filters.
* showrecord: Don't show the records if we just want to see a manifest.
* showrecord: Fix bug when filtering output paths.
* showrecord: Prevent a crash.
* sources: Add ``findContentFromPath`` API.
* sources: Change argument name in default source's ``createContent`` .
* sources: Changes in related contents management.
* sources: File-system sources accept all ``open`` arguments.
* sources: Give better exception messages when a class is missing a method.
* sources: Posts source accepts more arguments for creating a post.
* themes: Allow keeping local overrides when copying a theme locally.

10.1 Core
----------------------

* config: Better generate route function names to prevent collisions.
* config: Properly pass the merge mode to the ``merge_dicts`` function.
* data: Add access to route metadata in the templating data.
* data: Delay loading page configuration and datetimes.
* data: Don't add route functions or data providers that happen to be null.
* data: Improve pagination filters code, add ``defined`` and ``not_empty`` .
* data: Make the ``Assetor`` more into a ``dict`` than a ``list`` .
* data: Optimize page data creation.
* debug: Raise Jinja template exceptions the same way in both render passes.
* formatting: Remove segment parts, you can use template tags instead.
* internal: Check that the ``Assetor`` has an asset URL format to work with.
* internal: Clean up baker code.
* internal: Fix caching issues with config variants.
* internal: Give better exception messages when splitting URIs.
* internal: Include the number of fixup callback in the cache key.
* internal: Make ``createContent`` use a dictionary-like object.
* internal: Make the page serializer thread daemon.
* internal: PEP8
* internal: PEP8
* internal: Remove unnecessary timer, add timer for lazy data building.
* internal: Remove unused file.
* internal: Sources can cache their pages in addition to their items.
* internal: The processing loop for the server is now using the baker.
* internal: Use pickle for caching things on disk.
* internal: Worker pool improvements
* pagination: Prevent a possible crash when paginating things without a current page.
* routing: Properly order routes by pass when matching them to the request.
* templating: Template engines can now load extensions directly from plugins.

10.3 Project
----------------------

* cm: Regenerate the CHANGELOG.
* cm: Update Werkzeug.
* tests: Big push to get the tests to pass again.
* tests: First pass on making unit tests work again.

10.4 Miscellaneous
----------------------

* assets: Fix bug in assetor.
* cache: Bump the cache version.
* clean: PEP8.
* clean: Remove unused code.
* core: Continue PieCrust3 refactor, simplify pages.
* core: Keep refactoring, this time to prepare for generator sources.
* core: Start of the big refactor for PieCrust 3.0.
* fix: Don't crash during some iterative builds.
* jinja: Remove Twig compatibility, add timer, improve code.
* jinja: Use the extensions performance timer.
* optimize: Don't load Jinja unless we need to.
* optimize: Only load some 3rd party packages when needed.
* page: Default to an empty title instead of 'Untitled Page'.
* pep8: Fix indenting.
* pep8: Fix indenting.
* refactor: Fix a few more pieces of code using the old APIs.
* refactor: Fix some issues with record/cache entry collisions, add counters.
* refactor: Fix some last instance of using the old API.
* refactor: Fixing some issues with baking assets.
* refactor: Get the page assets to work again in the server.
* refactor: Get the processing loop in the server functional again.
* refactor: Get the taxonomy support back to a functional state.
* refactor: Improve pagination and iterators to work with other sources.
* refactor: Make the blog archives functional again.
* refactor: Make the data providers and blog archives source functional.
* refactor: Make the linker work again.
* server: Fix crash when serving temp files like CSS maps.
* wsgi: Add admin panel to WSGI helpers.

==================================
11. PieCrust 2.0.0 (2017-02-19)
==================================


11.0 Commands
----------------------

* admin: Add ability to upload page assets.
* admin: Add quick links in sidebar to create new posts/pages.
* admin: Bigger text for the site summary.
* admin: Don't have the static folder for the app collide with the blueprint's.
* admin: Fix crash when running ``admin run`` outside of a website.
* bake: Don’t swallow generic errors during baking
* bake: Show bake stats in descending order of time.
* showrecord: Add ``show-manifest`` argument.

11.1 Core
----------------------

* config: Cleanup config loading code. Add support for a ``local.yml`` config.
* data: Allow page generators to have an associated data provider
* internal: Don't check for a page repository, there's always one.
* internal: Import things in the builtin plugin only when needed.
* internal: Keep things out of the ``PieCrust`` class, and other clean-ups.
* internal: Make ``posts`` sources cache their list of pages.
* internal: PEP8 fixup for admin panel code.
* rendering: Separate performance timers for renering segments and layouts.
* templating: Put the routing functions in the data, not the template engine.

11.2 Bugfixes
----------------------

* bug: Fix crashes for commands run outside of a website.

11.3 Project
----------------------

* cm: Add setup.cfg file for flake8.
* cm: Allow generating documentation from inside the virtualenv.
* cm: Fix MANIFEST file for packaging.
* cm: Fix ``gulpfile`` for FoodTruck.
* cm: Regenerate the CHANGELOG.
* docs: Add missing quote in example
* docs: Add space before link
* docs: Correct typos
* docs: Fix line-end / new-line issues
* docs: Invalid yaml in example
* docs: Repair some broken links
* tests: Fix for time comparisons.

11.4 Miscellaneous
----------------------

* Allow PageSource to provide a custom assetor
* Allow an individual page to override pretty_urls in it config
* Allow page source to post-process page config at the end of page loading
* Assetor is now responsible for copying assets, to allow customization
* Don’t swallow generic errors during baking
* Fixed call to Assetor.copyAssets
* Land assets in the correct directory for pages with no pretty_urls override
* Refactored Assetor into Assetor and AssetorBase
* Removed pointless page argument from copyAssets
* Renamed buildPageAssetor to buildAssetor
* Use assetor provided by page source when paginating
* assets: Fix crash when a page doesn't have assets.

==================================
12. PieCrust 2.0.0rc2 (2016-09-07)
==================================


12.0 Commands
----------------------

* admin: Correctly flush loggers before exiting.
* admin: Don't crash when the site isn't in a source control repository.
* admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
* admin: Fix crash when running the ``admin`` command.
* admin: Fix various crashes caused by incorrect Blueprint setup.
* admin: Fixes for the Git support.
* admin: Make the whole FoodTruck site into a blueprint.
* bake: Add the list of deleted files to the bake/processing records.
* bake: Fix how slugified taxonomy terms are handled.
* bake: Print slightly better debug information.
* chef: Don't crash when running ``chef`` outside of a website.
* chef: Make all the commands descriptions fit in one line.
* plugins: Abort the command if there's no site.
* plugins: Don't crash when running the ``chef plugins`` command outside a site.
* prepare: Add ablity to run an editor program after creating the page file.
* prepare: Use the same convention as other commands with sub-commands.
* publish: Add SFTP publisher.
* publish: Add support for ``--preview`` for the SFTP publisher.
* publish: Fix crash.
* publish: Fix stupid typo.
* publish: Make publisher more powerful and better exposed on the command line.
* showrecord: Fix some crashes and incorrect information.
* themes: No parameters shoudl make the help text show up.

12.1 Core
----------------------

* config: Fix how we parse the root URL to allow for absolute and user URLs.
* data: Fix debug information for the blog data provider.
* internal: Add missing timer scope.
* internal: Add missing timer scope.
* internal: Don't strip the trailing slash when we get the root URL exactly.
* internal: Move admin panel code into the piecrust package.
* routing: Add some backwards compatibility support for parameter types.
* routing: Don't mistakenly raise errors about incorrect variadic parameters.
* routing: Simplify how route functions are declared and handled.
* routing: Simplify how routes are defined.

12.2 Bugfixes
----------------------

* bug: Fix possible crash with overlapping pages.

12.3 Project
----------------------

* cm: Add a "Bugfixes" section to the CHANGELOG and order things alphabetically.
* cm: Declare PieCrust as a Python 3 only package.
* cm: Regenerate the CHANGELOG.
* docs: Add documentation about the SFTP publisher.
* docs: Fix outdated routing in the configuration file.
* docs: Tutorial chapter about adding pages.
* docs: Update documentation on routing.
* tests: Add more ``showconfig`` tests.
* tests: Add tests for publishers.
* tests: Fix crash when reporting 404 errors during server tests.
* tests: Fix some CLI tests.
* tests: Make it possible to run FoodTruck tests.
* tests: Try and finally fix the time-based tests.

==================================
13. PieCrust 2.0.0rc1 (2016-06-09)
==================================


13.0 Commands
----------------------

* admin: Add support for Git source-control.
* admin: Add support for ``.well-known`` folder.
* admin: Fix OS-specific new line problems when editing pages.
* admin: Fix crash when previewing a website.
* admin: Fix crash when running FoodTruck as a standalone web app.
* admin: Run the asset pipeline before showing the admin panel.
* admin: Show a more classic blog post listing in FoodTruck.
* admin: run an asset processing loop in the background.
* bake: Add blog archives generator.
* bake: Add stat about aborted jobs
* bake: Add the timestamp of the page to each record entry.
* bake: Change ``show-timers`` to ``show-stats`` , add stats.
* bake: Don't clean the ``baker`` cache on a force bake.
* bake: Fix a crash when a rendering error occurs.
* bake: Fix some bugs with taxonomy combinations.
* bake: Fix some crashes with new blog archive/taxonomy for incremental bakes.
* bake: Re-enable faster serialization between processes.
* bake: Replace hard-coded taxonomy support with "generator" system.
* bake: Show more stats.
* bake: Some more optimizations.
* bake: Use standard pickle and queue for now to fix some small issues.
* bake: Use threads to read/write from/to the main arbitrator process.
* chef: Fix ``--debug-only`` argument.
* init: Use a better config template when creating websites.
* purge: Delete the whole cache directory, not just the current sub-cache.
* routes: Show the route template function.
* serve: Fix some crashes introduced by recent refactor.
* serve: Fix some problems with trailing slashes.
* showrecord: Don't print the record when you just want the stats.
* themes: Add support for a ``--theme`` argument to ``chef`` .
* themes: Add support for loading from a library of themes.
* themes: Expand ``~`` paths, fix error message.
* themes: Simplify ``themes`` command.

13.1 Core
----------------------

* data: Make the blog provider give usable data to the year archive routes.
* data: Support both objects and dictionaries in ``MergedMapping`` .
* debug: Pass the exceptions untouched when debugging.
* debug: Show more stuff pertaining to data providers in the debug window.
* formatting: Add a ``hoedown`` formatter.
* formatting: Don't import ``hoedown`` until we need it.
* internal: Bump cache version.
* internal: Don't run regexes for the 99% case of pages with no segments.
* internal: Fix a bug with registering taxonomy terms that are not strings.
* internal: Fix compatibility with older Python 3.x.
* internal: Fix incorrect check for cache times.
* internal: Fix some bugs with the ``fastpickle`` module.
* internal: Get rid of the whole "sub cache" business.
* internal: Improve how theme configuration is validated and merged.
* internal: More work/fixes on how default/theme/user configs are merged.
* internal: Move some basic FoodTruck SCM code to the base.
* internal: Prevent crash because of missing logger.
* internal: Refactor config loading some more.
* internal: Remove exception logging that shouldn't happen. Better message.
* internal: Remove threading stuff we don't need anymore.
* internal: Remove unused code.
* internal: Remove unused import.
* internal: Remove unused piece of code.
* internal: Update the cache version to force re-gen the configuration settings.
* render: Change how we store render passes info.
* rendering: Use ``fastpickle`` serialization before JSON.
* routing: Cleanup URL routing and improve page matching.
* routing: Correctly call the underlying route template function from a merged one.
* routing: Fix problems with route functions.
* templating: Make blog archives generator expose more templating data.
* templating: Make the 'categories' taxonomy use a 'pccaturl' function again.
* templating: Use HTTPS URLs for a couple things.

13.2 Bugfixes
----------------------

* bug: Also look for format changes when determining if a page needs parsing.

13.3 Project
----------------------

* cm: Add AppVeyor support.
* cm: Add generation of Mardown changelog suitable for the online documentation.
* cm: Add generation of online changelog to the release task.
* cm: Also test Python 3.5 with Travis.
* cm: Don't always generation the version when running ``setuptools`` .
* cm: Don't raise an exception when no version file exists.
* cm: Fix ``setup.py`` script.
* cm: Fix a packaging bug, update package metadata.
* cm: Ignore ``py.test`` cache.
* cm: Ignore bdist output directory.
* cm: Improve documentation generation script.
* cm: It's fun to send typos to Travis-CI.
* cm: Make Travis-CI test packaging.
* cm: Regenerate the CHANGELOG.
* docs: Add changelog page.
* docs: Add information on more global ``chef`` options.
* docs: Use HTTPS version of Google Fonts.
* docs: Use new config variants format.
* docs: Very basic theme documentation.
* docs: Write about generators and data providers, update all related topics.
* tests: Add ability to run tests with a theme site.
* tests: Add another app config test.
* tests: Add more tests for merged mappings.
* tests: Add some tests for blog archives and multi-blog features.
* tests: Fix logic for making time-based tests not fail randomly.
* tests: Improve failure reporting.
* tests: the ``PageBaker`` now needs to be shutdown.

13.4 Miscellaneous
----------------------

* Fix 404 broken link
* jinja: Add ``md5`` filter.

==================================
14. PieCrust 2.0.0b5 (2016-02-16)
==================================


14.0 Commands
----------------------

* admin: Don't require ``bcrypt`` for running FoodTruck with ``chef`` .
* admin: Remove settings view.

14.1 Core
----------------------

* internal: Remove SyntaxWarning from MacOS wrappers.

14.3 Project
----------------------

* cm: Exclude the correct directories from vim-gutentags.
* cm: Fix CHANGELOG newlines on Windows.
* cm: Fix categorization of CHANGELOG entries for new commands.
* cm: Fixes and tweaks to the documentation generation task.
* cm: Get a new version of pytest-cov to avoid a random multiprocessing bug.
* cm: Ignore more things for pytest.
* cm: Move all scripts into a ``garcon`` package with ``invoke`` support.
* cm: Regenerate the CHANGELOG.
* cm: Regenerate the CHANGELOG.
* cm: Tweaks to the release script.
* cm: Update node module versions.
* cm: Update npm modules and bower packages before making a release.
* cm: Update the node modules before building the documentation.

==================================
15. PieCrust 2.0.0b4 (2016-02-09)
==================================


15.0 Commands
----------------------

* admin: Ability to configure SCM stuff per site.
* admin: Add "FoodTruck" admin panel from the side experiment project.
* admin: Add summary of page in source listing.
* admin: Better UI for publishing websites.
* admin: Better error reporting, general clean-up.
* admin: Better production config for FoodTruck, provide proper first site.
* admin: Change the default admin server port to 8090, add ``--port`` option.
* admin: Configuration changes.
* admin: Dashboard UI cleaning, re-use utility function for page summaries.
* admin: Fix "Publish started" message showing up multiple times.
* admin: Fix constructor for Mercurial SCM.
* admin: Fix crashes when creating a new page.
* admin: Fix creating pages.
* admin: Fix responsive layout.
* admin: Improve publish logs showing as alerts in the admin panel.
* admin: Make sure we have a valid default site to start with.
* admin: Make the publish UI handle new kinds of target configurations.
* admin: Make the sidebar togglable for smaller screens.
* admin: New ``admin`` command to manage FoodTruck-related things.
* admin: Prompt the user for a commit message when committing a page.
* admin: Set the ``DEBUG`` flag before the app runs so we can read it during setup.
* admin: Show the install page if no secret key is available.
* admin: Use ``HGPLAIN`` for the Mercurial VCS provider.
* admin: Use the app directory, not the cwd, in case of ``--root`` .
* bake: Add a flag to know which record entries got collapsed from last run.
* bake: Add new performance timers.
* bake: Add option to bake assets for FoodTruck. This is likely temporary.
* bake: Add support for a "known" page setting that excludes it from the bake.
* bake: Don't re-setup logging for workers unless we're sure we need it.
* bake: Set the flags, don't combine.
* chef: Add ``--debug-only`` option to only show debug logging for a given logger.
* chef: Add ``--pid-file`` option.
* chef: Fix the ``--config-set`` option.
* publish: Add option to change the source for the ``rsync`` publisher.
* publish: Add publish command.
* publish: Add the ``rsync`` publisher.
* publish: Change the ``shell`` config setting name for the command to run.
* publish: Make the ``shell`` log update faster by flushing the pipe.
* publish: Polish/refactor the publishing workflows.
* routes: Add better support for taxonomy slugification.
* serve: Don't crash when looking at the debug info in a stand-alone window.
* serve: Extract some of the server's functionality into WSGI middlewares.
* serve: Fix corner cases where the pipeline doesn't run correctly.
* serve: Fix error reporting when the background pipeline fails.
* serve: Fix timing information in the debug window.
* serve: Improve debug information in the preview server.
* serve: Improve reloading and shutdown of the preview server.
* serve: Make it possible to preview pages with a custom root URL.
* serve: Refactor the server to make pieces usable by the debugging middleware.
* serve: Rewrite of the Server-Sent Event code for build notifications.
* serve: Werkzeug docs say you need to pass a flag with ``wrap_file`` .
* showconfig: Don't crash when the whole config should be shown.
* sources: Add code to support "interactive" metadata acquisition.
* sources: Add method to get a page factory from a path.

15.1 Core
----------------------

* cli: Add ``--no-color`` option.
* cli: More proper argument parsing for the main/root arguments.
* data: Fix a crash bug when no parent page is set on an iterator.
* debug: Don't show parentheses on redirected properties.
* debug: Fix a crash when rendering debug info for some pages.
* debug: Fix debug window CSS.
* debug: Fix how the linker shows children/siblings/etc. in the debug window.
* internal: Refactor the app configuration class.
* internal: Rename ``raw_content`` to ``segments`` since it's what it is.
* internal: Some fixes to the new app configuration.

15.2 Bugfixes
----------------------

* bug: Correctly handle root URLs with special characters.
* bug: Fix a crash when some errors occur during page rendering.

15.3 Project
----------------------

* cm: Add requirements for FoodTruck.
* cm: Add script to generate documentation.
* cm: Add some pretty little icons in the README.
* cm: CHANGELOG generator can handle future versions.
* cm: Fix Gulp config.
* cm: Ignore more stuff for CtrlP or Gutentags.
* cm: Merge the 2 foodtruck folders, cleanup.
* cm: Put Bower/Gulp/etc. stuff all at the root.
* docs: Add documentation about FoodTruck.
* docs: Add documentation about the ``publish`` command.
* docs: Add raw files for FoodTruck screenshots.
* docs: Add reference entry about the ``site/slugify_mode`` setting.
* docs: Fix broken link.
* docs: Make FoodTruck screenshots the proper size.
* docs: Remove LessCSS dependencies in the tutorial, fix typos.
* tests: Add unicode tests for case-sensitive file-systems.
* tests: Fix (hopefully) time-sensitive tests.
* tests: Fix another broken test.
* tests: Fix broken test.
* tests: Fix broken unit test.
* tests: Print more information when a bake test fails to find an output file.

==================================
16. PieCrust 2.0.0b3 (2015-08-01)
==================================


16.0 Commands
----------------------

* import: Add some debug logging.
* import: Correctly convert unicode characters in site configuration.
* import: Fix the PieCrust 1 importer.

16.1 Core
----------------------

* internal: Fix a severe bug with the file-system wrappers on OSX.
* templating: Make more date functions accept 'now' as an input.

16.3 Project
----------------------

* cm: Add a Gutentags config file for ``ctags`` generation.
* cm: Changelog generator script.
* cm: Ignore Rope cache.
* cm: Update changelog.
* tests: Check accented characters work in configurations.

==================================
17. PieCrust 2.0.0b2 (2015-07-29)
==================================


17.0 Commands
----------------------

* prepare: More help about scaffolding.

17.2 Bugfixes
----------------------

* bug: Fix crash running ``chef help scaffolding`` outside of a website.

==================================
18. PieCrust 2.0.0b1 (2015-07-29)
==================================


18.0 Commands
----------------------

* bake: Add a processor to generate a Pygments style CSS file.
* bake: Fix logging configuration for multi-processing on Windows.
* bake: Fix random crash with the Sass processor.
* bake: Set the worker ID in the configuration. It's useful.
* prepare: Fix the RSS template.
* serve: Don't show the same error message twice.
* serve: Fix a crash when matching taxonomy URLs with incorrect URLs.
* serve: Improve Jinja rendering error reporting.
* serve: Improve error reporting when pages are not found.
* serve: Say what page a rendering error happened in.
* serve: Try to serve taxonomy pages after all normal pages have failed.
* themes: Add a ``link`` sub-command to install a theme via a symbolic link.
* themes: Add config paths to the cache key.
* themes: Don't fixup template directories, it's actually better as-is.
* themes: Fix crash when invoking command with no sub-command.
* themes: Improve CLI, add ``deactivate`` command.
* themes: Proper template path fixup for the theme configuration.

18.1 Core
----------------------

* config: Make sure ``site/auto_formats`` has at least ``html`` .
* formatting: Add support for Markdown extension configs.
* internal: Correctly split sub URIs. Add unit tests.
* internal: Fix some edge-cases for splitting sub-URIs.
* internal: Fix timing info.
* internal: Improve handling of taxonomy term slugification.
* internal: Return ``None`` instead of raising an exception when finding pages.
* templating: Add ``now`` global to Jinja, improve date error message.
* templating: Make Jinja support arbitrary extension, show warning for old stuff.
* templating: ``highlight_css`` can be passed the name of a Pygments style.

18.2 Bugfixes
----------------------

* bug: Fix a crash with the ``ordered`` page source when sorting pages.
* bug: Fix file-system wrappers for non-Mac systems.
* bug: Forgot to add a new file like a big n00b.
* bug: Of course I broke something. Some exceptions need to pass through Jinja.

18.3 Project
----------------------

* cm: Add ``unidecode`` to requirements.
* cm: Error in ``.hgignore`` . Weird.
* cm: Fix benchmark website generation on Windows.
* cm: Ignore ``.egg-info`` stuff.
* cm: Re-fix Mac file-system wrappers.
* docs: Add some API documentation.
* docs: Add some syntax highlighting to tutorial pages.
* docs: Always use Pygments styles. Use the new CSS generation processor.
* docs: Configure fenced code blocks in Markdown with Pygments highlighting.
* docs: Make code prettier :)
* docs: Make the "deploying" page consistent with "publishing".
* docs: More generic information about baking and publishing.
* docs: No need to specify the layout here.
* docs: Start a proper "code/API" section.
* docs: Use fenced code block syntax.
* tests: Fix ``find`` tests on Windows.
* tests: Fix processing test after adding ``PygmentsStyleProcessor`` .
* tests: Fix processing tests on Windows.
* tests: Fix the Mustache tests on Windows.
* tests: Help the Yaml loader figure out the encoding on Windows.
* tests: Normalize test paths using the correct method.

18.4 Miscellaneous
----------------------

* bake/serve: Improve support for unicode, add slugification options.
* cosmetic: Remove debug print here too.
* cosmetic: Remove debug printing.
* jinja: Support ``.j2`` file extensions.
* less: Fix issues with the map file on Windows.
* sass: Overwrite the old map file with the new one always.

==================================
19. PieCrust 2.0.0a13 (2015-07-14)
==================================


19.0 Commands
----------------------

* bake: Fix a bug with copying assets when ``pretty_urls`` are disabled.

19.2 Bugfixes
----------------------

* bug: Correctly setup the environment/app for bake workers.
* bug: Fix copying of page assets during the bake.

==================================
20. PieCrust 2.0.0a12 (2015-07-14)
==================================


20.0 Commands
----------------------

* bake: Abort "render first" jobs if we start using other pages.
* bake: Add CLI argument to specify job batch size.
* bake: Commonize worker pool code between html and asset baking.
* bake: Correctly use the ``num_worers`` setting.
* bake: Don't pass the previous record entries to the workers.
* bake: Enable multiprocess baking.
* bake: Improve bake record information.
* bake: Improve performance timers reports.
* bake: Make pipeline processing multi-process.
* bake: Optimize the bake by not using custom classes for passing info.
* bake: Pass the config variants and values from the CLI to the baker.
* bake: Pass the sub-cache directory to the bake workers.
* bake: Tweaks to the ``sitemap`` processor. Add tests.
* bake: Use batched jobs in the worker pool.
* serve: Fix bug with creating routing metadata from the URL.
* serve: Fix crash on start.
* serve: Use Werkzeug's HTTP exceptions correctly.

20.1 Core
----------------------

* debug: Add support for more attributes for the debug info.
* debug: Better debug info output for iterators, providers, and linkers.
* debug: Fix serving of resources now that the module moved to a sub-folder.
* debug: Log error when an exception gets raised during debug info building.
* internal: Add a ``fastpickle`` module to help with multiprocess serialization.
* internal: Add support for fake pickling of date/time structures.
* internal: Add utility function for incrementing performance timers.
* internal: Allow re-registering performance timers.
* internal: Create full route metadata in one place.
* internal: Fix caches being orphaned from their directory.
* internal: Floats are also allowed in configurations, duh.
* internal: Handle data serialization more under the hood.
* internal: Just use the plain old standard function.
* internal: Move ``MemCache`` to the ``cache`` module, remove threading locks.
* internal: Optimize page data building.
* internal: Optimize page segments rendering.
* internal: Register performance timers for plugin components.
* internal: Remove unnecessary code.
* internal: Remove unnecessary import.
* linker: Add ability to return the parent and ancestors of a page.
* performance: Add profiling to the asset pipeline workers.
* performance: Compute default layout extensions only once.
* performance: Only use Jinja2 for rendering text if necessary.
* performance: Quick and dirty profiling support for bake workers.
* performance: Refactor how data is managed to reduce copying.
* performance: Use the fast YAML loader if available.
* render: Lazily import Textile package.
* rendering: Truly skip formatters that are not enabled.
* reporting: Better error messages for incorrect property access on data.
* reporting: Print errors that occured during pipeline processing.
* templating: Add modification time of the page to the template data.
* templating: Fix Pystache template engine.
* templating: Let Jinja2 cache the parsed template for page contents.
* templating: Workaround for a bug with Pystache.

20.2 Bugfixes
----------------------

* bug: Fix CLI crash caused by configuration variants.
* bug: Fix a crash when errors occur while processing an asset.
* bug: Fix infinite loop in Jinja2 rendering.
* bug: Fix routing bug introduced by 21e26ed867b6.

20.3 Project
----------------------

* cm: Add script to generate benchmark websites.
* cm: Fix wrong directory for utilities.
* cm: Move build directory to util to avoid conflicts with pip.
* cm: Use Travis CI's new infrastructure.
* docs: Add the ``--pre`` flag to ``pip install`` while PieCrust is in beta.
* tests: Add pipeline processing tests.
* tests: Fix Jinja2 test.
* tests: Fix crash in processing tests.

20.4 Miscellaneous
----------------------

* Fixed 'bootom' to 'bottom'
* markdown: Cache the formatter once.

==================================
21. PieCrust 2.0.0a11 (2015-05-18)
==================================


21.0 Commands
----------------------

* bake: Return all errors from a bake record entry when asked for it.
* serve: Fix bug where ``?!debug`` doesn't get appending correctly.
* serve: Remove development assert.

21.1 Core
----------------------

* data: Fix regression bug with accessing page metadata that doesn't exist.
* linker: Fix error when trying to list non-existing children.
* linker: Fix linker returning the wrong value for ``is_dir`` in some situations.
* pagination: Fix regression bug with previous/next posts.

21.3 Project
----------------------

* tests: Add support for testing the Chef server.
* tests: Also mock ``open`` in Jinja to be able to use templates in bake tests.
* tests: Fail bake tests with a proper error message when bake fails.
* tests: More accurate marker position for diff'ing strings.
* tests: Move all bakes/cli/servings tests files to have a YAML extension.

21.4 Miscellaneous
----------------------

* jinja: Look for ``html`` extension first instead of last.

==================================
22. PieCrust 2.0.0a10 (2015-05-15)
==================================


22.3 Project
----------------------

* setup: Add ``requirements.txt`` to ``MANIFEST.in`` so it can be used by the setup.

==================================
23. PieCrust 2.0.0a9 (2015-05-11)
==================================


23.0 Commands
----------------------

* serve: Add a WSGI utility module for easily getting a default app.
* serve: Add a generic WSGI app factory.
* serve: Add ability to suppress the debug info window programmatically.
* serve: Compatibility with ``mod_wsgi`` .
* serve: Split the server code in a couple modules inside a ``serving`` package.

23.1 Core
----------------------

* data: Fix problems with using non-existing metadata on a linked page.
* internal: Make it possible to pass ``argv`` to the main Chef function.
* routing: Fix bugs with matching URLs with correct route but missing metadata.

23.3 Project
----------------------

* docs: Add documentation for deploying as a dynamic CMS.
* docs: Add lame bit of documentation on publishing your website.
* setup: Keep the requirements in sync between ``setuptools`` and ``pip`` .
* tests: Add a Chef test for the ``find`` command.
* tests: Add support for "Chef tests", which are direct CLI tests.
* tests: Fix serving unit-tests.

==================================
24. PieCrust 2.0.0a8 (2015-05-03)
==================================


24.0 Commands
----------------------

* bake: Fix crash when handling bake errors.
* serve: Giant refactor to change how we handle data when serving pages.
* serve: Refactoring and fixes to be able to serve taxonomy pages.
* sources: Default source lists pages in order.
* sources: Fix how the ``autoconfig`` source iterates over its structure.
* theme: Fix link to PieCrust documentation.

24.1 Core
----------------------

* caching: Use separate caches for config variants and other contexts.
* config: Add method to deep-copy a config and validate its contents.
* internal: Return the first route for a source if no metadata match is needed.
* linker: Don't put linker stuff in the config.

24.3 Project
----------------------

* tests: Changes to output report and hack for comparing outputs.

24.4 Miscellaneous
----------------------

* Update ``requirements.txt`` .
* Update development ``requirements.txt`` , add code coverage tools.

==================================
25. PieCrust 2.0.0a7 (2015-04-20)
==================================


25.0 Commands
----------------------

* bake: Improve render context and bake record, fix incremental bake bugs.
* bake: Several bug taxonomy-related fixes for incorrect incremental bakes.
* bake: Use a rotating bake record.
* chef: Add a ``--config-set`` option to set ad-hoc site configuration settings.
* chef: Fix pre-parsing.
* find: Don't change the pattern when there's none.
* import: Use the proper baker setting in the Jekyll importer.
* serve: Don't access the current render pass info after rendering is done.
* serve: Fix crash on URI parsing.
* showrecord: Add ability to filter on the output path.

25.1 Core
----------------------

* config: Add ``default_page_layout`` and ``default_post_layout`` settings.
* data: Also expose XML date formatting as ``xmldate`` in Jinja.
* internal: Fix stupid routing bug.
* internal: Remove unused code.
* internal: Template functions could potentially be called outside of a render.
* internal: Try handling URLs in a consistent way.
* internal: Use hashes for cache paths.
* pagination: Make pagination use routes to generate proper URLs.

25.3 Project
----------------------

* build: Put dev-only lib requirements into a ``dev-requirements.txt`` file.
* docs: Add "active page" style for the navigation menu.
* docs: Add documentation for importing content from other engines.
* docs: Add new site configuration settings to the reference documentation.
* tests: Add ``os.rename`` to the mocked functions.
* tests: Add more utility functions to the mock file-system.
* tests: Fix test.
* tests: Improve bake tests output, add support for partial output checks.
* tests: Raise an exception instead of crashing rudely.
* tests: Remove debug output.
* tests: Support for YAML-based baking tests. Convert old code-based ones.

25.4 Miscellaneous
----------------------

* cleancss: Fix stupid bug.

==================================
26. PieCrust 2.0.0a6 (2015-03-30)
==================================


26.0 Commands
----------------------

* bake: Better error handling for site baking.
* bake: Better error handling for the processing pipeline.
* bake: Change arguments to selectively bake to make them symmetrical.
* bake: Changes in how assets directories are configured.
* bake: Don't include the site root when building output paths.
* bake: Don't store internal config values in the bake record.
* bake: Fix processing record bugs and error logging for external processes.
* bake: Remove ``--portable`` option until it's (maybe) implemented.
* import: Add an XML-based Wordpress importer.
* import: Make the Wordpress importer extendable, rename it to ``wordpressxml`` .
* import: Put importer metadata on the class, and allow return values.
* import: Show help if no sub-command was specified.
* import: Upgrade more settings for the PieCrust 1 importer.
* import: Wordpress importer puts drafts in a ``draft`` folder. Ignore other statuses.
* plugins: Change how plugins are loaded. Add a ``plugins`` command.
* plugins: First pass for a working plugin loader functionality.
* plugins: Fix crash for sites that don't specify a ``site/plugins`` setting.
* plugins: Remove unused API endpoints.
* prepare: Add user-defined scaffolding templates.
* serve: Add server sent events for showing pipeline errors in the debug window.
* serve: Correctly pass on the HTTP status code when an error occurs.
* serve: Correctly show timing info even when not in debug mode.
* serve: Don't crash when a post URL doesn't match our expectations.
* serve: Don't expose the debug info right away when running with ``--debug`` .
* serve: Don't have 2 processing loops running when using ``--use-reloader`` .
* serve: Fix a bug where empty route metadata is not the same as invalid route.
* serve: Fix exiting the server with ``CTRL+C`` when the SSE response is running.
* serve: Keep the ``?!debug`` when generating URLs if it is enabled.
* serve: Make the server find assets generated by external tools.
* serve: Print nested exception messages in the dev server.
* serve: Run the asset pipeline asynchronously.
* serve: Use Etags and 304 responses for assets.
* showrecord: Also show the pipeline record.
* showrecord: Show relative paths.
* showrecord: Show the overall status (success/failed) of the bake.
* sources: Fix a bug where the ``posts`` source wasn't correctly parsing URLs.
* sources: Generate proper slugs in the ``autoconfig`` and ``ordered`` sources.
* sources: Make sure page sources have some basic config info they need.
* sources: Pass any current mode to ``_populateMetadata`` when finding pages.
* sources: Refactor ``autoconfig`` source, add ``OrderedPageSource`` .
* sources: The ordered source returns names without prefixes in ``listPath`` .
* sources: Use ``posts_*`` and ``items_*`` settings more appropriately.
* theme: Fix the default theme's templates after changes in Jinja's wrapper.
* theme: Updated "quickstart" text shown for new websites.
* themes: Add the ``chef themes`` command

26.1 Core
----------------------

* config: Assign correct data endpoint for blogs to be v1-compatible.
* config: Make YAML consider ``omap`` structures as normal maps.
* config: Make sure ``site/plugins`` is transformed into a list.
* data: Add a top level wrapper for ``Linker`` .
* data: Add ability for ``IPaginationSource`` s to specify how to get settings.
* data: Better error message for old date formats, add ``emaildate`` filter.
* data: Correctly build pagination filters when we know items are pages.
* data: Don't nest filters in the paginator -- nest clauses instead.
* data: Fix incorrect next/previous page URLs in pagination data.
* data: Fix typos and stupid errors.
* data: Improve the Linker and RecursiveLinker features. Add tests.
* data: Make the ``Linekr`` use the new ``getSettingAccessor`` API.
* data: Only expose the ``family`` linker.
* data: Temporary hack for asset URLs.
* data: ``Linker`` refactor.
* internal: A bit of input validation for source APIs.
* internal: Add ability to get a default value if a config value doesn't exist.
* internal: Add support for "wildcard" loader in ``LazyPageConfigData`` .
* internal: Add utility function to get a page from a source.
* internal: Be more forgiving about building ``Taxonomy`` objects. Add ``setting_name`` .
* internal: Bump the processing record version.
* internal: Code reorganization to put less stuff in ``sources.base`` .
* internal: Fix bug with the default source when listing ``/`` path.
* internal: Make the simple page source use ``slug`` everywhere.
* internal: Re-use the cached resource directory.
* internal: Remove mentions of plugins directories and sources.
* internal: Remove the (unused) ``new_only`` flag for pipeline processing.
* internal: Removing some dependency of filters and iterators on pages.
* pagination: Add support for ``site/default_pagination_source`` .
* render: Add support for a Mustache template engine.
* render: Don't always use a ``.html`` extension for layouts.
* render: When a template engine can't be found, show the correct name in the error.
* routing: Better generate URLs according to the site configuration.

26.3 Project
----------------------

* build: Add ``pystache`` to ``requirements.txt`` .
* docs: A whole bunch of drafts for content model and reference pages.
* docs: Add a page explaining how PieCrust works at a high level.
* docs: Add documentation on making a plugin.
* docs: Add documentation on the asset pipeline.
* docs: Add embryo of a documentation website.
* docs: Add information about the asset pipeline.
* docs: Add some general information on ``chef`` .
* docs: Add the ability to use Pygments highlighting.
* docs: Add website configuration page.
* docs: Change docs' templates after changes in Jinja's wrapper.
* docs: Documentation for iterators and filtering.
* docs: Documentation on website structure.
* docs: Fix URLs to the docs source.
* docs: Fix link, add another link.
* docs: Fix missing link.
* docs: Last part of the tutorial.
* docs: More on creating websites.
* docs: More tutorial text.
* docs: Pagination and assets' documentation.
* docs: Properly escape examples with Jinja markup.
* docs: Quick support info page.
* docs: Still adding more pages.
* docs: Still more documentation.
* docs: Tutorial part 1.
* docs: Tutorial part 2.
* docs: Tweak CSS for boxed text.
* docs: Website configuration reference.
* tests: Add a blog data provider test.
* tests: Add help functions to get and render a simple page.
* tests: Add tests for Jinja template engine.
* tests: Add utility function to create multiple mock pages in one go.
* tests: Bad me, the tests were broken. Now they're fixed.
* tests: Fix linker tests.
* tests: Fix tests for base sources.
* tests: Fixes for running on Windows.
* tests: Patch ``os.path.exists`` and improve patching for ``open`` .
* tests: Remove debug output.

26.4 Miscellaneous
----------------------

* Add bower configuration file.
* Merge code changes.
* Merge docs.
* Temporary root URL for publishing.
* Use the site root for docs assets.
* bake/serve: Fix how taxonomy index pages are setup and rendered.
* bake/serve: Make previewed and baked URLs consistent.
* builtin: Remove ``plugins`` command, it's not ready yet.
* cleancss: Add option to specify an output extension, like ``.min.css`` .
* cosmetic: Fix PEP8 spacing.
* cosmetic: Fix some PEP8 issues.
* cosmetic: Fix some PEP8 issues.
* cosmetic: PEP8 compliance.
* dataprovider: Use the setting name for a taxonomy to match page config values.
* jinja: Add a global function to render Pygments' CSS styles.
* jinja: Fix Twig compatibility for block trimming.
* jinja: Provide a more "standard" Jinja configuration by default.
* less: Generate a proper, available URL for the LESS CSS map file.
* logging: If an error doesn't have a message, print its type.
* markdown: Let the user specify extensions in one line.
* oops: Remove debug print.
* processing: Add Compass and Sass processors.
* processing: Add ``concat`` , ``uglifyjs`` and ``cleancss`` processors.
* processing: Add ability to specify processors per mount.
* processing: Add more information to the pipeline record.
* processing: Don't fail if an asset we want to remove has already been removed.
* processing: More powerful syntax to specify pipeline processors.
* processing: Use the correct full path for mounts.
* sitemap: Fix broken API call.
* sitemap: Fixed typo bug.

==================================
27. PieCrust 2.0.0a5 (2015-01-03)
==================================


27.0 Commands
----------------------

* bake: Don't crash stupidly when there was no previous version.
* chef: Work around a bug in MacOSX where the default locale doesn't work.
* find: Fix the ``find`` command, add more options.
* paths: properly format lists of paths.
* prepare: Show a more friendly user message when no arguments are given.
* routes: Actually match metadata when finding routes, fix problems with paths.
* routes: Show regex patterns for routes.
* routes: When matching URIs, return metadata directly instead of the match object.
* serve: Add option to use the debugger without ``--debug`` .
* serve: Always force render the page being previewed.
* sources: Add ``chef sources`` command to list page sources.
* sources: Add an ``IListableSource`` interface for sources that can be listed.
* sources: Make the ``SimplePageSource`` more extensible, fix bugs in ``prose`` source.

27.1 Core
----------------------

* linker: Actually implement the ``Linker`` class, and use it in the page data.

27.3 Project
----------------------

* build: Add Travis-CI config file.
* setup: Make version generation compatible with PEP440.
* tests: Add unit tests for routing classes.
* tests: Fix serving test.

27.4 Miscellaneous
----------------------

* Ability to output debug logging to ``stdout`` when running unit-tests.
* Add Textile formatter.
* Add ``--log-debug`` option.
* Add ``autoconfig`` page source.
* Add ``compressinja`` to install/env requirements.
* Add ``ctrlpignore`` file.
* Add ``help`` function, cleanup argument handling.
* Add ``import`` command, Jekyll importer.
* Add ``sitemap`` processor.
* Add a ``BakeScheduler`` to handle build dependencies. Add unit-tests.
* Add ability for the processing pipeline to only process new assets.
* Add packaging and related files.
* Add support for KeyboardInterrupt in bake process.
* Add support for Markdown extensions.
* Add the ``paginate`` filter to Jinja, activate ``auto_reload`` .
* Added requirements file for ``pip`` .
* Added unit tests (using ``py.test`` ) for ``Configuration`` .
* Allow adding to the default content model instead of replacing it.
* Always use version generated by ``setup.py`` . Better version generation.
* Apparently Jinja doesn't understand ``None`` the way I thought.
* Better ``prepare`` command, with templates and help topics.
* Better combine user sources/routes with the default ones.
* Better date creation for blog post scaffolding.
* Better date/time handling for pages:
* Better error management and removal support in baking/processing.
* Better error reporting and cache validation.
* Better handling of Jinja configuration.
* Better support for times in YAML interop.
* Cache rendered segments to disk.
* Changes to ``help`` command and extendable commands:
* Changes to the asset processing pipeline:
* Check we don't give null values to the processing pipeline.
* Copy page assets to bake output, use correct slashes when serving assets.
* Correctly match skip patterns.
* Correctly set the ``debug`` flag on the app.
* Correctly set the current page on a pagination slicer.
* Cosmetic fix.
* Define page slugs properly, avoid recursions with debug data.
* Display page tags with default theme.
* Don't colour debug output.
* Don't complain about missing ``pages`` or ``posts`` directories by default.
* Don't fail if trying to clean up a file that has already been deleted.
* Don't look at theme sources in ``chef prepare`` .
* Don't look for tests inside the ``build`` directory.
* Don't recursively clean the cache.
* Don't stupidly crash in the RequireJS processor.
* Don't try to get the name of a source that doesn't have one.
* Don't use Werkzeug's reloader in non-debug mode unless we ask for it.
* Don't use file-system caching for rendered segments yet.
* Error out if ``date`` filter is used with PHP date formats.
* Exit with the proper code.
* First draft of the ``prose`` page source.
* Fix ``setuptools`` install.
* Fix a bug with page references in cases of failure. Add unit tests.
* Fix a bug with the posts source incorrectly escaping regex characters.
* Fix a crash when checking for timestamps on template files.
* Fix cache validation issue with rendered segments, limit disk access.
* Fix error reporting and counting of lines.
* Fix for pages listing pages from other sources.
* Fix generation of system messages.
* Fix how the ``Paginator`` gets the numer of items per page.
* Fix how we pass the out directory to the baking modules.
* Fix outdate information and bug in default theme's main page.
* Fix post sources datetimes by adding missing metadata when in "find" mode.
* Fix problems with asset URLs.
* Fix running ``chef`` outside of a website. Slightly better error reporting.
* Fix search for root folder. Must have been drunk when I wrote this originally.
* Fix some bugs with iterators, add some unit tests.
* Fix some indentation and line lengths.
* Fix stupid bug in default source, add some unit tests.
* Fix stupid bug.
* Fix stupid debug logging bug.
* Fix unit tests.
* Fixed a bug with the ``shallow`` source. Add unit tests.
* Fixed outdate information in error messages' footer.
* Fixes for Windows, make ``findPagePath`` return a ref path.
* Fixes to the ``cache`` Jinja tag.
* Forgot this wasn't C++.
* Get the un-paginated URL of a page early and pass that around.
* Gigantic change to basically make PieCrust 2 vaguely functional.
* Give the proper URL to ``Paginator`` in the ``paginate`` filter.
* Handle the case where the debug server needs to serve an asset created after it was started.
* I don't care what the YAML spec says, ordered maps are the only sane way.
* Ignore ``setuptools`` build directory.
* Ignore messages' counter.
* Improvements and fixes to incremental baking.
* Improvements to incremental baking and cache invalidating.
* In-place upgrade for PieCrust 1 sites.
* Initial commit.
* Jinja templating now has ``spaceless`` , ``|keys`` and ``|values`` .
* Make a nice error message when a layout hasn't been found.
* Make configuration class more like ``dict`` , add support for merging ``dicts`` .
* Make sure ``.html`` is part of auto-formats.
* Make template directories properly absolute.
* Make the ``Assetor`` iterate over paths.
* Match routes completely, not partially.
* Mock ``os.path.isfile`` , and fix a few other test utilities.
* More PieCrust 3 fixes, and a couple of miscellaneous bug fixes.
* More Python 3 fixes, modularization, and new unit tests.
* More installation information in the README file.
* More options for the ``showrecord`` command.
* More robust Markdown configuration handling.
* More unit tests for output bake paths.
* More unit tests, fix a bug with the skip patterns.
* Moved all installation instructions to a new ``INSTALL`` file.
* New site layout support.
* Oops.
* Optimize server for files that already exist.
* Pass date information to routing when building URLs.
* PieCrust 1 import: clean empty directories and convert some config values.
* Prepare the server to support background asset pipelines.
* Print the help by default when running ``chef`` with no command.
* Processors can match on other things than just the extension.
* Proper debug logging.
* Properly add the config time to a page's datetime.
* Properly escape HTML characters in the debug info, add more options.
* Properly override pages between realms.
* Properly use, or not, the debugging when using the chef server.
* Propertly create ``OrderedDict`` s when loading YAML.
* Property clean all caches when force baking, except the ``app`` cache.
* PyYAML supports sexagesimal notation, so handle that for page times.
* Quick fix for making the server correctly update referenced pages.
* Re-arranged modules to reduce dependencies to builtin stuff.
* Re-enable proper caching of rendered segments in server.
* Remove unneeded trace.
* Setup the server better.
* Simple importer for PieCrust 1 websites.
* Simplify ``AutoConfigSource`` by inheriting from ``SimplePageSource`` .
* Slightly better exception throwing in the processing pipeline.
* Slightly more robust dependency handling for the LESS processor.
* Split baking code in smaller files.
* Support for installing from Git.
* Switch the PieCrust server to debug mode with ``?!debug`` in the URL.
* The LESS compiler must be launched in a shell on Windows.
* The ``date`` filter now supports passing ``"now"`` as in Twig.
* Unused import.
* Update system messages.
* Update the ``requirements`` file.
* Upgrade system messages to the new folder structure.
* Upgrade to Python 3.
* Use ``SafeLoader`` instead of ``BaseLoader`` for Yaml parsing.
* Use cache paths that are easier to debug than hashes.
* Use ordered dictionaries to preserve priorities between auto-formats.
* Use properly formatted date components for the blog sources.
* Use the ``OrderedDict`` correctly when fresh-loading the app config.
* Use the item name for the ``prepare`` command.
* Use the same defaults as in PieCrust 1.
* Various fixes for the default page source:
* When possible, try and batch-load pages so we only lock once.
* cosmetic: pep8 compliance.