Changelog for Acrylamid
=======================

0.7 (2013-03-18)
----------------

### What's new?

- filter configuration is now part of its internal hash and will mark the
  cache object as invalid to force recompilation. Appendum to #118.
- #124 – summarize and intro filter ignore img, audio & video tags by default.
  You can disable this feature by setting `*_IGNORE` to an empty list (`[]`).
- Windows compatibility (thanks to Matt Wilkie)

### What changes?

- Assuming UTF-8 as default encoding for I/O. This circumvents several issues
  on Windows and Ubuntu with an ASCII `locale.getpreferredencoding` although
  the locale encoding has been set to something different than ASCII.

  If your system uses a different encoding than UTF-8, Acrylamid may fail to
  read already existing files in the output directory. Removing `output/`
  solves the error.

### What has been fixed?

- TypeError in `acrylamid view` under Python 3
- regression in 'absolute' filter introduced with new joinurl functionality
- `OverflowError` for date time objects before 1970 (UNIX time epoch) has
  been resolved. Acrylamid now supports date time objects beginning from
  01.01.1900. Datetimes before 1990 are not supported by python's datetime API
  and the exact beginning may vary. I live in UTC+1 and can't use the 1.1.1990
  because it is actually 1899. Please keep this in mind.

0.6 (2013-02-12)
----------------

Released on February, 12th, 2013 – Almost stable.

### What's new?

- #105 – new archive view to render yearly, monthly and/or daily archives and
  has replaced the article view in the themes. The article view remains in
  the Acrylamid core but is likely to become deprecated in the future.
- #104 – simple and advanced, multhithreaded hooks during compilation, see
  http://posativ.org/acrylamid/hooks.rst for more information.
- Jinja2 content filter imports macros from theme/macros.html
  automatically into your entry namespace.
- #102 – enrich HTML metadata
- #101 – pandoc metadata recognition (initial implementation by Daniel Pritchard)
- #91  – CoffeeScript and IcedCoffeScript conversion for assets
- summarize filter accepts `<!-- more -->` as additional break keyword.

### What changes?

- the index pagination route has been changed to `/page/:num/`, notice the
  trailing slash. If you use the default index pagination route, this will
  immediately break as Acrylamid tries to create a file named `:num`. This
  also applies to the tag pagination.

### What has been fixed?

- the Jinja2 Atom and RSS templates do not longer indent the content as this
  causes unexpected indentation inside `<pre>` tags. This does not affect the
  Mako templates.
- #117 – fix a redirection issue where `/foo` has been resolved to
  `/output/foo/` instead of `/foo/` solely.
- #116 – serving from non-root path has been fixed
- #111 – prevent duplicate summarize link insertion for modus 0
- sitemap may have included drafts unintentional if routed through `'/drafts/'`
- automatically adding the index.html to any route without checking if the
  path has already an extension. Now, Acrylamid only appends an `index.html`
  to a final URL if the location ends with a trailing slash.
- auto-compilation now detects changes in the static directories (if any)
- improved Mako support and tests
- double angle quotes hardcoded into the entry view have been moved into the
  theme, you should adapt your theme as well.
- changed Markdown HTML output from XHTML1 to XHTML5
- better link recognition for the PingBack feature
- ignore files included by the `@import` statement in SASS/SCSS/LESS
- #103 – pass encoded values into `os.environ` to allow fancy unicode
  characters such as » or Aкриламид.

0.5 (2013-01-20)
----------------

Released on January, 20th 2013 – Winter Is Coming!

### What is new?

- speed improvements (up to 25%) due new internal hash (Adler32 vs. MD5)
  and detection of changes in your configuration, environment and posts.
- #7 –  static site search backend (not yet integrated into any theme, still
  waiting for a new default theme based on `syte`. The static site search is
  documented in docs/ and Acrylamid ships a python script to query the index.
- multiple views per rule! So, in theory you can map pages, posts, drafts
  and translations to `/:slug/`.
- #95 – add "read more" support for intro filter (Alexander Zhirov)
- #90 – specify alternate configuration file via `--conf /path/to/conf.py`
- #87 – new reStructuredText directive for Vimeo (the\_metalgamer)
- #82 – updated Atom feed to include tags, icon and provides a unique id for
  multiple destinations (Mark van Lent)
- improved WordPress import (pages and draft recognition)
- integrated web server blocks browser requests during (auto) compilation
- #78 – `acrylamid import` now uses RSS/Atom categories as tags
- #80 – new config variable `CONTENT_EXTENSION` to set the default filename
  extension when using `acrylamid new`, defaults to `.txt` (Günter Kolousek)
- new asset writer: `Jinja2` for the `.html` extension
- new filter: `intro` shows up to N paragraphs (`<p>...</p>`).

### What changes?

- `env.views` is now a list containing the actual view objects, but retains
  `if 'sitemap' in env.views` and `env.views['sitemap']` syntax.
- entry view no longer generates drafts. This might break your `conf.py`. To
  enable drafts, replace `"view": "entry"` with `"views": ["entry", "draft"]`
  inside your `"/:year/:slug/"` view.
- relative URIs in feeds are now absolute per default. URI fragments such as
  `#fn:1` are now distinct (relative to `WWW_ROOT`) in the index and tag view.
  To change this behavior, add `norelative` and `noabsolute` to the affected views.
- SASS/SCSS and LESS conversion are no longer in Acrylamid's defaults (if
  available), hence you have to include them via `STATIC_FILTERS += ['SASS', ...]`

### What was fixed?

- compatibility with python 3.2 is now assured by the testsuite
- auto compilation gets slower for each iteration
- #95 – fix assets not being copied when multiple directories (Christoph Polcin)
- #94 – more accurate intro generation (Alexander Zhirov)
- #73 – LESS and SASS conversion is now optional
- #67 – track referenced entries for updates
- #86 – escape YAML blocks ("[" and "]") properly
- #85 – empty posts in WordPress dump broke the import
- #84 – TypeError in the second run during auto compilation
- #82 – theme files copied to output if they are not used
- #77 – missing items in sitemap view
- #75 – dotfiles not copied from the static folder (Mark van Lent)

0.4 (2012-09-19)
----------------

Released on September, 19th 2012 – Arrr!

### What's new?

- support for translations, #22
- Mako as second templating engine of choice, #39
- opt-in for native markdown and reStructuredText metadata style, #40
- `acrylamid autocompile` now detects layout and conf.py changes, #48
- new kind of entry – page – that should be used for static sites, #50
- summarize by keyword, #51
- new Mako filter, #52
- asset handling, #62
- per-tag feeds, #68
- support for LESS, SASS and SCSS
- new theme "shadowplay"
- subcommand `acrylamid ping` for PingBack and Twitter announces
- superscript, subscript and delins extensions for Markdown
- compatibility for russion and asian characters to ASCII
  via unidecode
- ability to add custom metadata pairs to entry header on import

### What changes?

- discover Markdown and reST extension in `FILTERS_DIR`
- `ENTRIES_IGNORE` was renamed to `CONTENT_IGNORE`, a list of git-like patterns
- new `SUMMARIZE_LINK` for continue reading link instead of the old three
  `SUMMARIZE_*` variables to allow more customization, #45
- `LAYOUT_DIR` was renamed to `THEME`
- `PERMALINK_FORMAT` is no longer used. Acrylamid will automatically determine
  the permalink format or you can explicitly set it with `ENTRY_PERMALINK` and
  `PAGE_PERMALINK`

### Bugfixes

Way too many to mention here. Over 700 (!) commits from 0.3.5. I would like to
thank @markvl, @moschlar and @t-8ch for their patches and patience to test
broken builds.


0.3 (2012-04-11)
----------------

### 0.3.5

- new command `acrylamid check` W3C compliance and validates external
  links, closes #32
- new command `acrylamid info` showing version, cache size and latest
  articles and number of drafted and published writings.
- add previous and next relations to single entry, closes #29
- entry has now zero-padded day and month, thanks to Mark, #37
- default smartypants behaviour is now unmodified, custom changes
  require TYPOGRAPHY_MODE = "a", see #36 (thanks to Mark)
- compilation summary and hide skip/identical by default
- deployments are now executed in a real shell environment
- verified python 3 support (via p3test.sh)
- templates are now configurable per view, #24
- use argparse instead of optparse
- few bugfixes to core (that induces new compilation :-/)

### 0.3.4

- per entry settings for summarize filter
- add split filter to jinja filter
- fix a block when importing something
- unicode awareness
- experimental python 3 support (!)
- new filter: Discount – a faster Markdown implementation

### 0.3.3

- new sitemap generator
- add experimental bash_completion (source it from GitHub repository)
- `acrylamid deploy` now shows available tasks when no argument is given
- add SSL and start options for reST's YouTube directive
- new test framework `cram`
- new API: you can now register callbacks to events (sitemap view
  and `acrylamid clean` are implemented that way).
- refactoring and first API docs available under
  http://posativ.org/acrylamid/ (yes, that's the Werkzeug theme).
- lazy imports to ease writing custom filters
- less I/O on cache objects (= speed improvements)
- fix invalid cache objects
- fix unescaped attributes
- more robust error handling for filters

### 0.3.2

- use a single, compressed cache file for each entry
- fix (hopefully) the last issue with system locales
- don't touch permalinks with trailing slash
- make custom keys in YAML header available in templating
- new YouTube embed code for reStructuredText
- new metalogo filter by sebix
- add explicit `static` for static pages
- fix a serious issue where `<tag foo>` raises an exception
- clean removes abandoned cache files as well, #27
- add filter version, #26

### 0.3.1

- new content filter: textile (thanks to sebix)
- add import for WordPress (thanks to ametaireau/pelican) and Atom
- new reStructuredText directives: code (JS), code-block (Pygments)
  and YouTube
- bugfixes in various built-in filters and internals
- deployment is no longer limited to a single command (thanks to sebix)
- deployment has now incremental output
- Markdown 2.1 compatibility for asciimathml

### 0.3.0

Released on April, 1th 2012 – Aprilscherz

- new command `acrylamid new` to create a new post with some defaults
- new command `acrylamid view` an internal webserver to view your output
- new command `acrylamid autocompile` automatically compile if something as
  has changed and a parallel running webserver on port -p 8000
- new command `acrylamid clean` to clean untracked files (orphans)
- new command `acrylamid deploy` to run your own commands with acrylamid
- new command `acrylamid import` to import content from an existing RSS feed
- new condition property in Filter so you can e.g. make a per-tag feed or
  get multilanguage support in your blog
- new jinja2, acronyms and pandoc filters
- new HTML5 layout (and it even validates)
- pelican inspired configuration
- optional PyYAML support
- documentation
- major refactoring
- API overhaul
- tons of bugfixes
- sub-uri support
- some unit tests
- speed improvements

0.2 (2011-12-16)
----------------

- add static page support (see docs/howtows.rst)
- fix update when entry moved/drafted
- new draft feature that excludes entries from everything except entry view
- minor bugfixes
- introduced caching
- lazy evaluation for expensive operations
- first docs

0.1 (2011-11-16)
----------------

Initial release.

- german hyphenation support
- summarizing page/items
- reStructuredText and Markdown Markup Support
- RSS and Atom feed generation
- theming support using Jinja2
- flat file database
- powerful callback API
