New features:
- Allowed excluding links from the internal links check (
@config[:checks][:internal_links][:exclude]
) (#242) [Remko Tronçon] - Added Rouge syntax coloring filter (#398) [Guilherme Garnier]
- Backported
after_setup
from nanoc 4 to make it easier to create CLI plugins (#407) [Rémi Barraquand] - Make lib dirs configurable using
lib_dirs
config attribute (#424) [Gregory Pakosz] - Added support for setting parent config dir using
parent_config_file
config attribute (#419) [Gregory Pakosz]
Enhancements:
- Added
:with_toc
support to RedCarpet (#222, #232) - Added
slim
to the list of text extensions (#316) - Made
content/
andlayouts/
dirs configurable (#412) [Gregory Pakosz] - Allowed included rules files to have their own preprocess block (#420) [Gregory Pakosz]
Identical to 3.6.10 but published with corrected release notes.
Fixes:
- Fixed occasional "no such file" error on JRuby (#422)
- Prevented multiple items and layouts from having the same identifier (#434, #435)
Enhancements:
- Set default encoding to UTF-8 (#428)
- Improved checksummer to reduce number of unnecessary recompiles (#310, #431)
- Disabled USR1 on JRuby in order to suppress warning (#425, #426)
- Made pandoc filter argument passing more generic (#210, #433)
Fixes:
- Fixed path to default stylesheet (#410, #411)
- Improved reliability of piping from/to external processes in JRuby (#417)
- Added workaround for “cannot modify” errors when using Nokogiri on JRuby (#416)
- Made corrupted cached data auto-repair itself if possible (#409, #418)
Fixes:
- Fixed issue with missing compilation durations (#374, #379)
- Made XSL filter transform item rather than layout (#399, #401) [Simon South]
- Made XSL filter honor omit-xml-declaration (#403, #404) [Simon South]
- Removed "see full crash log" line from crash log (#397, #402)
Enhancements:
- Added warning when multiple preprocessors are defined (#389)
- Improve stylesheet handling in default site (#339, #395)
Fixes:
- Made Handlebars filter usable outside layouts (#346, #348)
- Fixed ANSI color support on Windows (#352, #356)
- Made fog deployer handle prefixes properly (#351) [Oliver Byford]
- Fixed crash in watcher (#358)
- Fixed huge durations when showing skipped items after compilation (#360, #364)
- Fixed output of
--verbose
compilation statistics (#359, #365) - Fixed issue with Sass files not recompiling (#350, #370)
Enhancements:
- Fixed Windows compatibility issues in test suite (#353) [Raphael von der Grün]
- Hid deprecated
autocompile
andwatch
commands in help - Made CLI swallow broken pipe errors when piping to a process that terminates prematurely (#318, #369)
Enhancements:
- Reduced number of dependencies generated by Sass filter (#306) [Gregory Pakosz]
- Recognised lowercase
utf
in language value (e.g.en_US.utf8
) as being UTF-8 (#335, #338) - Set Thin as the default server for
nanoc view
(#342, #345) - Removed watcher section from the default configuration file (#343, #344)
Fixes:
- Prevented capturing helper from erroneously compiling items twice (#331, #337)
Fixes:
- Fixed bug which could cause incorrect dependencies to be generated in some cases (#329)
- Fixed handling of index filenames when allowing periods in identifiers (#330)
Enhancements:
- Deprecated
watch
andautocompile
commands in favour ofguard-nanoc
Fixes:
- Fixed bug which could cause the
tmp/
dir to blow up in size - Unescaped URLs when checking internal links
Fixes:
- Added support for growlnotify on Windows (#253, #267)
- Fixed bug which caused the external links checker to ignore the query string (#279, #297)
- Removed weird treatment of
DOCTYPE
s in therelativize_paths
filter (#296) - Fixed CodeRay syntax coloring on Ruby 2.0
- Silenced "Could not find files for the given pattern(s)" message on Windows (#298)
- Fixed issue which could cause
output.diff
not to be generated correctly (#255, #301) - Let filesystem and static data sources follow symlinks (#299, #302)
- Added compatibility with Listen 1.0 (#309)
- Let
#passthrough
in Rules work well with the static data source (#251) [Gregory Pakosz] - Made timing information be more accurate (#303)
Fixes:
- Removed the list of available deployers from the
deploy
help text and moved them into a new--list-deployers
option [Damien Pollet] - Fixed warning about
__send__
andobject_id
being redefined on Ruby 1.8.x [Justin Hileman]
Enhancements:
- Added possible alternative names for the
Checks
file for consistency with theRules
file:Checks.rb
,checks
,checks.rb
[Damien Pollet] - Made sure unchanged files never have their mtime updated [Justin Hileman]
- Made link checker retry 405 Method Not Allowed results with GET instead of HEAD [Daniel Hofstetter]
Fixes:
- Fixed bug which could cause the Sass filter to raise a load error [Damien Pollet]
- Fixed warnings about
__send__
andobject_id
being redefined [Justin Hileman] - Made
files_to_watch
containnanoc.yaml
, notconfig.yaml
by default
Features:
- Added
sync
command, allowing data sources to update local caches of external data [Justin Hileman] - Added
#ignore
compiler DSL method - Allowed accessing items by identifier using e.g.
@items['/about/']
- Added
shell
command
Enhancements:
- Renamed the nanoc configuration file from
config.yaml
tonanoc.yaml
Fixes:
- Updated references to old web site and old repository
- Made
require
errors mention Bundler if appropriate - Fixed bug which caused pruner not to delete directories in some cases [@reima]
- Made
check
command exit with the proper exit status - Added support for the
HTML_TOC
Redcarpet renderer - Made
stale
check honor files excluded by the pruner
Major changes:
- Added checks
Minor changes:
- Added
#include_rules
for modularising Rules files [Justin Hileman] - Replaced FSSM with Listen [Takashi Uchibe]
- Made USR1 print stack trace (not on Windows)
- Added ability to configure autocompiler host/port in config.yaml [Stuart Montgomery]
- Added static data source
- Added
:rep_select
parameter to XML sitemap to allow filtering reps - Removed use of bright/bold colors for compatibility with Solarized
Exensions:
- Added support for parameters in Less filter [Ruben Verborgh]
- Added support for icon and logo in Atom feed [Ruben Verborgh]
Fixes:
- Made syntax colorizer only use the first non-empty line when extracting the language comment
- Fixed XSL filter
Improvements:
- Item reps are now accessible in a consistent way: in Rules and during
compilation, they can be accessed using both
@rep
and@item_rep
Fixes:
- Made cleaning streams (stdout/stderr as used by nanoc) compatible with Ruby’s built-in Logger
- Made prune work when the output directory is a symlink
- Made Handlebars filter compatible with the latest version
- Made
show-data
command show more accurate dependencies [Stefan Bühler] - Restored compatibility with Sass 3.2.2
Fixes:
- Made passthrough rules be inserted in the right place [Gregory Pakosz]
- Fixed crashes in the progress indicator when compiling
- Made auto-pruning honor excluded files [Greg Karékinian]
- Made lack of which/where not crash watch command
Improvements:
- Fixed constant reinitialization warnings [Damien Pollet]
- Made UTF-8 not be decomposed when outputting to a file from a non-UTF-8 terminal
- Made syntax colorizer wrap CodeRay output in required CodeRay divs
- Made fog delete after upload, not before [Go Maeda]
- Made requesting compiled content of binary item impossible
Fixes:
- Fixed auto-pruning
- Made slim filter work with the capturing helper [Bil Bas]
Improvements:
- Made several speed improvements
- Added prune configuration to config.yaml
- Made nanoc check for presence of nanoc in Gemfile
- Made compile command not show identicals (use
--verbose
if you want them) - Made
relativize_paths
filter recognise more paths to relativize [Arnau Siches] - Fixed #passthrough for items without extensions [Justin Hileman]
- Added more IO/File proxy methods to cleaning streams
- Improved error output and added crash log
- Renamed
debug
andinfo
commands toshow-data
andshow-plugins
, respectively - Added
show-rules
command (akaexplain
)
Extensions:
- Added
:yield
key for Mustache filter - Added Handebars filter
- Added Pandoc filter
- Made the deployer use the
default
target if no target is specified - Converted HTML/CSS/link validation tasks to commands
- Made link validator follow relative redirects
- Added filename to YAML parser errors
- Fixed issue which caused extra dependencies to be generated
- Made timing information take filtering helper into account
- Fixed issue with relative_link_to stripping HTML boilerplate
- Fixed issue with relative_link_to not working properly
- Fixed bug which caused the compilation stack to be empty
- Restored Ruby 1.8 compatibility
- Fixed directed graph implementation on Rubinius
- Made capturing helper not remember content between runs
- Fixed Date#freeze issue on Ruby 1.8.x
- Made it possible to have any kind of object as parameters in the Rules file
- Fixed bug which caused changed routes not to cause a recompile
- Removed bin/nanoc3 (use nanoc3 gem if you want it)
- Fixed wrong “no such snapshot” errors
- Made deployer default to rsync for backwards compatibility
- Fixed missing Nanoc::CLI in deployment tasks
- Fixed “unrecognised kind” deployer error
- Fixed issue with long paths on Windows
- Fixed a few deployer crashes
- Added nanoc3.rb, nanoc3/tasks.rb, … for compatibility with older versions
- Made nanoc setup Bundler at startup [John Nishinaga]
Base:
- Dropped the “3” suffix on nanoc3/Nanoc3
- Turned Rake tasks into proper nanoc commands
- Improved dependency tracking
- Added support for locals in filters and layouts
Extensions:
- Added support for deployment using Fog [Jack Chu]
- Added CoffeeScript filter [Riley Goodside]
- Added XSL filter [Arnau Siches]
- Added YUICompress filter [Matt Keveney]
- Added pygments.rb to supported syntax colorizers
- Allowed syntax colorizer to colorize outside
pre
elements [Kevin Lynagh] - Added support for HTTPS link validation [Fabian Buch]
- Added support for (automatically) pruning stray output files [Justin Hileman]
- Added deploy command
- Fixed bug which would cause some reps not to be compiled when invoking nanoc programmatically
- Made data source configuration location a bit more obvious
- Fixed watch command under Windows
- Made filesystem data source ignore UTF-8 BOM
- Improved compatibility of
colorize_syntax
filter with older libxml versions
- Made syntax colorizer only strip trailing blank lines instead of all blanks
- Improved Ruby 1.9.x compatibility
- Made default rakefile require rubygems if necessary
- Made filename/content argument of
Nanoc3::Item#initialize
mandatory
- Fixed command usage printing
- Made
relativize_paths
filter handle Windows network paths [Ruben Verborgh] - Made watcher use correct configuration
- Allowed code blocks to start with a non-language shebang line
- Made
@config
available in rules file - Fixed
#readpartial
issue on JRuby [Matt Keveney] - Fixed possible
@cache
name clash in memoization module - Fixed options with required arguments (such as
--port
and--host
) - Fixed broken
#check_availability
- Fixed error handling in watch command
Base:
- Sped up nanoc quite a bit
- Added progress indicator for long-running filters
- Made all source data, such as item attributes, frozen during compilation
- Added --color option to force color on
- Cleaned up internals, deprecating several parts and/or marking them as private in the progress
- Allowed custom commands in commands/
Extensions:
- Added AsciiDoc filter
- Added Redcarpet filter [Peter Aronoff]
- Added Slim filter [Zaiste de Grengolada]
- Added Typogruby filter
- Added UglifyJS filter [Justin Hileman]
- Added
:items
parameter for the XML site map [Justin Hileman] - Added support for params to ERB
- Added
:default_colorizer
parameter to the:colorize_syntax
filter - Allowed for passing arbitrary options to pygmentize [Matthias Vallentin]
- Exposed RedCloth parameters in the filter [Vincent Driessen]
- Really fixed dependency generation between Sass partials this time
- Updated Less filter to 2.0
- Made
colorize_syntax
filter throw an error if pygmentize is not available
- Made link validator accept https: URLs
- Fixed erroneous handling of layouts with names ending in index
- Fixed dependency generation between Sass partials
- Fixed errors related to thread requires
- Fixed crash while handling load errors
- Improved encoding handling while reading files
- Restored compatibility with Sass 3.1
- Fixed issues with incompatible encodings
- Improved
#render
documentation - Improved metadata section check so that e.g. raw diffs are handled properly
- Deprecated using
Nanoc3::Site#initialize
with a non-"."
argument - Added Ruby engine to version string
- Allowed the
created_at
andupdated_at
attributes used in theBlogging
helper to beDate
instances
- Made INT and TERM signals always quit the CLI
- Allowed relative imports in LESS
- Made sure modification times are unchanged for identical recompiled items
- Improved link validator error handling
- Made pygmentize not output extra divs and pres
- Allowed colorizers to be specified using symbols instead of strings
- Added scss to the default list of text extensions
- Removed annoying win32console warning [Eric Sunshine]
- Removed color codes when not writing to a terminal, or when writing to Windows’ console when win32console is not installed [Eric Sunshine]
- Added .xhtml and .xml to list of text extensions
- Improved support for relative Sass @imports [Chris Eppstein]
- Fixed bug which could cause incorrect output when compilation of an item is delayed due to an unmet dependency
- Sass
@import
s now work for files not managed by nanoc - Rake tasks now have their Unicode description decomposed if necessary
New:
- An
Item#rep_named(name)
function for quickly getting a certain rep - An
Item#compiled_content
function for quickly getting compiled content - An
Item#path
function for quickly getting the path of an item rep - A new “+” wildcard in rule patterns that matches one or more characters
- A
view
command that starts a web server in the output directory - A
debug
command that shows information about the items, reps and layouts - A
kramdown
filter (kramdown site) - A diff between the previously compiled content and the last compiled content is now written to
output.diff
if theenable_output_diff
site configuration attribute is true - Assigns, such as
@items
,@layouts
,@item
, … are accessible without@
- Support for binary items
Changed:
- New sites now come with a stylesheet item instead of a
style.css
file in the output directory - The
deploy:rsync
task now use sensible default options - The
deploy:rsync
task now accepts a config environment variable - The
deploy:rsync
task now uses a lowercasedry_run
environment variable - The
maruku
filter now accepts parameters - The
rainpress
filter now accepts parameters - The
filesystem
data source is now known asfilesystem_verbose
- Meta files and content files are now optional
- The
filesystem_compact
andfilesystem_combined
data sources have been merged into a newfilesystem_unified
data source - The metadata section in
filesystem_unified
is now optional [Christopher Eppstein] - The
--server
autocompile option is now known as--handler
- Assigns in filters are now available as instance variables and methods
- The
#breadcrumbs_trail
function now allows missing parents - The
sass
filter now properly handles@import
dependencies
Deprecated:
Nanoc3::FileProxy
; use one of the filename attributes insteadItemRep#content_at_snapshot
; use#compiled_content
instead- The
last_fm
,delicious
andtwitter
data sources; fetch online content into a cache by a rake task and load data from this cache instead
- Fixed 1.8.x parsing bug due to lack of parens which could cause “undefined method
to_iso8601_time
for #String:0x…” errors
#atom_tag_for
now works withbase_url
s that contain a path [Eric Sunshine]- Generated root URLs in
#atom_feed
now end with a slash [Eric Sunshine] - Autocompiler now recognises requests to index files
Blogging
helper now allowscreated_at
to be a Time instance
- Fixed bug which could cause layout rules not be matched in order
- Error checking in
filesystem_combined
has been improved [Brian Candler] - Generated HTML files now have a default encoding of UTF-8
- Periods in identifiers for layouts now behave correctly
- The
relativize_paths
filter now correctly handles “/” [Eric Sunshine]
- Restored pre-3.0.3 behaviour of periods in identifiers. By default, a file can have multiple extensions (e.g.
content/foo.html.erb
will have the identifier/foo/
), but ifallow_periods_in_identifiers
in the site configuration is true, a file can have only one extension (e.g.content/blog/stuff.entry.html
will have the identifier/blog/stuff.entry/
).
- Fixed a bug which would cause the
filesystem_compact
data source to incorrectly determine the content filename, leading to weird “Expected 1 content file but found 3” errors [Eric Sunshine]
- The
Blogging
helper now properly handles item reps without paths - The
relativize_paths
filter now only operates inside tags - The autocompiler now handles escaped paths
- The
LinkTo
andTagging
helpers now output escaped HTML - Fixed
played_at
attribute assignment in theLastFM
data source for tracks playing now, and added anow_playing
attribute [Nicky Peeters] - The
filesystem_*
data sources can now handle dots in identifiers - Required enumerator to make sure
#enum_with_index
always works Array#stringify_keys
now properly recurses
- Children-only identifier patterns no longer erroneously also match parent (e.g.
/foo/*/
no longer matches/foo/
) - The
create_site
command no longer uses those ugly HTML entities - Install message now mentions the IRC channel
- The proper exception is now raised when no matching compilation rules can be found
- The autocompile command no longer has a duplicate
--port
option - The
#url_for
and#feed_url
methods now check the presence of thebase_url
site configuration attribute - Several outdated URLs are now up-to-date
- Error handling has been improved in general
New:
- Multiple data sources
- Dependency tracking between items
- Filters can now optionally take arguments
#create_page
and#create_layout
methods in data sources- A new way to specify compilation/routing rules using a Rules file
- A
coderay
filter (CodeRay site) - A
filesystem_compact
data source which uses less directories
Changed:
- Pages and textual assets are now known as “items”
Removed:
- Support for drafts
- Support for binary assets
- Support for templates
- Everything that was deprecated in nanoc 2.x
save_*
,move_*
anddelete_*
methods in data sources- Processing instructions in metadata
- Removed
relativize_paths
filter; userelativize_paths_in_html
orrelativize_paths_in_css
instead - Fixed bug which could cause nanoc to eat massive amounts of memory when an exception occurs
- Fixed bug which would cause nanoc to complain about the open file limit being reached when using a large amount of assets
- Fixed bug which prevented
relative_path_to
from working - Split
relativize_paths
filter into two filter:relativize_paths_in_html
andrelativize_paths_in_css
- Removed bundled mime-types library
New:
--pages
and--assets
compiler options--no-color
commandline optionFiltering
helper#relative_path_to
function inLinkTo
helperrainpress
filter (Rainpress site)relativize_paths
filter- The current layout is now accessible through the
@layout
variable - Much more informative stack traces when something goes wrong
Changed:
- The commandline option parser is now a lot more reliable
#atom_feed
now takes optional:content_proc
,:excerpt_proc
and:articles
parameters- The compile command show non-written items (those with
skip_output: true
) - The compile command compiles everything by default
- Added
--only-outdated
option to compile only outdated pages
Removed:
- deprecated extension-based code
- The
filesystem_combined
data source now supports empty metadata sections - The
rdoc
filter now works for both RDoc 1.x and 2.x - The autocompiler now serves a 500 when an exception occurs outside compilation
- The autocompiler no longer serves index files when the request path does not end with a slash
- The autocompiler now always serves asset content correctly
- Added Ruby 1.9 compatibility
- The
filesystem
andfilesystem_combined
data sources now preserve custom extensions
- Fixed an issue where the autocompiler in Windows would serve broken assets
- The
haml
andsass
filters now correctly take their options from assets - The autocompiler now serves index files instead of 404s
- Layouts named “index” are now handled correctly
- The
filesystem_combined
data source now properly handles assets
- The utocompiler now compiles assets as well
- The
sass
filter now takes options (just like thehaml
filter) - Haml/Sass options are now taken from the page rep instead of the page
- Fixed issue which would cause files not to be required in the right order
This is only a short summary of all changes in 2.1. For details, see the nanoc web site. Especially the blog and the updated manual will be useful.
New:
- New
rdiscount
filter (RDiscount site) - New
maruku
filter (Maruku site) - New
erubis
filter (Erubis site) - A better commandline frontend
- A new filesystem data source named
filesystem_combined
- Routers, which decide where compiled pages should be written to
- Page/layout mtimes can now be retrieved through
page.mtime
/layout.mtime
Changed:
- Already compiled pages will no longer be re-compiled unless outdated
- Layout processors and filters have been merged
- Layouts no longer rely on file extensions to determine the layout processor
- Greatly improved source code documentation
- Greatly improved unit test suite
Removed:
- Several filters have been removed and replaced by newer filters:
eruby
: useerb
orerubis
insteadmarkdown
: usebluecloth
,rdiscount
ormaruku
insteadtextile
: useredcloth
instead
- Fixed
default.rb
’s#html_escape
- Updated Haml filter and layout processor so that @page, @pages and @config are now available as instance variables instead of local variables
- The autocompiler now honors custom paths
- The autocompiler now attempts to serve pages with the most appropriate MIME type, instead of always serving everything as
text/html
- nanoc now requires Ruby 1.8.5 instead of 1.8.6
- Fixed a “too many open files” error that could appear during (auto)compiling
New:
- Support for custom layout processors
- Support for custom data sources
- Database data source
- An auto-compiler
- Pages have
parent
andchildren
Changed:
- The source has been restructured and cleaned up a great deal
- Filters are defined in a different way now
- The
eruby
filter now uses ERB instead of Erubis
Removed:
- The
filters
property; usefilters_pre
instead - Support for Liquid
- Fixed an issue which prevented the content capturing plugin from working
- Removed a stray debug message
- Added support for post-layout filters
- Added support for getting a File object for the page, so you can now e.g. easily get the modification time for a given page (
@page.file.mtime
) - Cleaned up the source code a lot
- Removed deprecated asset-copying functionality
- Added support for custom filters
- Improved Liquid support -- Liquid is now a first-class nanoc citizen
- Deprecated assets -- use something like rsync instead
- Added
eruby_engine
option, which can beerb
orerubis
- nanoc now supports ERB (as well as Erubis); Erubis no longer is a dependency
meta.yaml
can now havehaml_options
property, which is passed to Haml- Pages can now have a
filename
property, which defaults toindex
[Dennis Sutch] - Pages now know in what order they should be compiled, eliminating the need for custom page ordering [Dennis Sutch]
- The contents of the
assets
directory are now copied into the output directory specified inconfig.yaml
- The
@pages
array now also contains uncompiled pages - Pages with
skip_output
set to true will not be outputted - Added new filters
- Textile/RedCloth
- Sass
- nanoc now warns before overwriting in
create_site
,create_page
andcreate_template
(but not in compile)
- Sites now have an
assets
directory, whose contents are copied to theoutput
directory when compiling [Soryu] - Added support for non-eRuby layouts (Markaby, Haml, Liquid, …)
- Added more filters (Markaby, Haml, Liquid, RDoc [Dmitry Bilunov])
- Improved error reporting
- Accessing page attributes using instance variables, and not through
@page
, is no longer possible - Page attributes can now be accessed using dot notation, i.e.
@page.title
as well as@page[:title]
- Fixed bug which would cause layoutless pages to be outputted incorrectly
- Backup files (files ending with a “~”) are now ignored
- Fixed bug which would cause subpages not to be generated correctly
- Added support for nested layouts
- Added coloured logging
@page
now hold the page that is currently being processed- Index files are now called “content” files and are now named after the directory they are in [Colin Barrett]
- It is now possible to access
@page
in the page’s content file
- Fixed a bug which would cause a “no such template” error to be displayed when the template existed but compiling it would raise an exception
- Fixed bug which would cause pages not to be sorted by order before compiling
- Initial release