# Nanoc news ## 4.12.14 (2022-12-03) Fixes: - Fixed an issue which would cause `Invalid argument @ io_write` on larger sites (#1636) Enhancements: - Made Nanoc store temporary data (in `tmp/nanoc/`) in compressed form (#1637) ## 4.12.13 (2022-11-30) Fixes: - Prevented an issue where items could have two leading slashes in their identifier when using the `filesystem` data source’s `extra_files` option (#1622) - Fixed an issue which would make `nanoc compile --watch` or `nanoc live` crash if the layouts directory does not exist (#1625, #1626) - Fixed the usage of the `show-rules` command (it takes no arguments) (#1628) - Fixed an issue which could make Nanoc crash with `Stopwatch::AlreadyRunningError` (#1631, #1633) ## 4.12.12 (2022-11-15) Fixes: - Fixed a bug that could incorrectly raise compilation dependency cycle errors (#1620) ## 4.12.11 (2022-11-12) Enhancements: - Further improved compilation speed, especially for partial recompilation (#1609, #1612, #1613, #1615) ## 4.12.10 (2022-10-18) Enhancements: - Improved compilation speed, especially for partial recompilation (#1602, #1603, #1604) ## 4.12.9 (2022-10-08) Fixes: - Fixed compatibility with Haml 6.0 (#1595, #1593) ## 4.12.8 (2022-10-03) Fixes: - Fixed incorrect documentation regarding the IP addresses that the `live` and `view` commands listen on (#1584, #1585) Enhancements: - Wrapped URLs printed to stdout in angular brackets (like ``) so terminals can detect them properly (#1589) [Daniel Aleksandersen] - Made various performance improvements (#1596, #1597, #1598) ## 4.12.7 (2022-06-06) Fixes: - Dropped support for incompatible Psych versions (#1577, #1583) Enhancements: - Replaced UglifyJS (unmaintained) with Terser (#1578, #1579) - Dropped support for Ruby 2.6 (EOL) (#1580) ## 4.12.6 (2022-05-28) Fixes: - Fixed a crash in `nanc view` when a TUN device is present (#1567) [Sergio Durigan Junior] - Fixed a crash when content/ has non-writable binary files (#1576) - Fixed inconsistency in allowed YAML classes in metadata (#1574) [Daniel Aleksandersen] ## 4.12.5 (2022-01-22) Fixes: - Prefer YAML.safe_load over YAML.load (#1566) Enhancements: - Added `Time` to the list of permitted classes for YAML (#1565) [Hideaki Nagamine] ## 4.12.4 (2022-01-15) Fixes: - Fixed “can’t be called from trap context” exception (#1559, #1564) Enhancements: - Added `Date` to the list of permitted classes for YAML (#1560) [Damien Mathieu] - Made Nanoc log the filename when it is not absolute (#1557) [Johnny Willemsen] ## 4.12.3 (2021-10-09) Fixes: - Switched ERB to use keyword arguments (#1547, #1550) [Daniel Aleksandersen] - Removed use_helper re-definition warning (#1548, #1553) [Daniel Aleksandersen] - Fixed issue which could cause items not to be recalculated when removing items in the preprocess block (#1554, #1555) - Dropped Nokogumbo in favor of Nokogiri (#1546, #1549) [Daniel Aleksandersen] ## 4.12.2 (2021-05-28) Enhancements: - Add support for `video/@poster` to relativize_paths (#1544) [Masayuki Higashino] ## 4.12.1 (2021-04-05) Enhancements: - Made Nanoc expand paths containing `~` (home directory) in the filesystem data source configuration (!4, !5, !6) ## 4.12.0 (2021-02-20) Features: - Added `-W`/`--watch` flag to the `compile` command (requires the `nanoc-live` gem) Enhancements: - Made the compiler cache binary items ## 4.11.23 (2021-01-16) Fixes: - Fixed issue which could cause nanoc-live to keep running and use 100% CPU (#1538) ## 4.11.22 (2021-01-01) Changes: - Dropped support for Ruby 2.4 (EOL) Fixes: - Added support for Ruby 3.0 ## 4.11.21 (2020-12-18) Fixes: - Made clonefile usage optional You can add `clonefile` to your Gemfile to let Nanoc make use of your filesystem’s copy-on-write functionality (if available), which is not only faster but also more space-efficient. In the previous release, 4.11.20, clonefile was mandatory, even though it won’t properly compile on older operating systems. ## 4.11.20 (2020-12-18) Enhancements: - Made Nanoc use copy-on-write when available (preferred over hardlinking/copying) (#1509, #1511) [Daniel Aleksandersen] ## 4.11.19 (2020-10-16) Fixes: - Fixed an issue which could cause compiled pages to contain the content of another page (#1501, #1510) ## 4.11.18 (2020-06-17) Fixes: - Fixed a `Encoding::CompatibilityError` that would be thrown e.g. when using the `contracts` library (#1502, #1505) [Ethan Crawford] - Fixed an issue which could cause Nanoc not to compile all items on Ruby 2.7 (#1501, #1507) ## 4.11.17 (2020-06-12) Fixes: - Fixed issue which could cause Nanoc to throw a timeout exception (#1503) ## 4.11.16 (2020-04-26) Fixes: - Fixed uninitialized constant/undefined method bug with guard-nanoc (#1494, #1495) - Removed remaining more “Using the last argument …” warnings (#1498) Enhancements: - Ignore redirects to self (misued for cookies) (#1496) [Daniel Aleksandersen] ## 4.11.15 (2020-03-07) Enhancements: - Made `prune` print files to delete when using dry run (#1474, #1476) - Made Nanoc emit a warning when the `contracts` library is loaded, as it can cause severe slowdowns (#1483, #1489) - Made the default Rules handle `index.*` files (#1485, #1490) Fixes: - Fixed warnings on Ruby 2.7 - Made `@rep` (not just `@item_rep`) available in the Rendering helper (#1484, #1488) - Made the `:relativize_paths` filter relativize the `value` attribute, not the `content` one, of the `param` HTML element (#1491) - Made the `:relativize_paths` filter support relativizing paths in `srcset` attributes (#1475, #1492) - Fixed an issue that could cause items to be marked as outdated when they shouldn’t be (#1471, #1493). ## 4.11.14 (2019-11-10) Fixes: - Fixed an issue where removing and re-adding an item would not cause dependent items to be recompiled (#1463, #1464) ## 4.11.13 (2019-11-02) Fixes: - Fixed an issue which could cause Nanoc to freeze when generating the output diff on Windows ## 4.11.12 (2019-09-21) Fixes: - Fixed an issue with the output diff, where some hunks would not appear (#1457) ## 4.11.11 (2019-09-07) Fixes: - Made output diff more reliable (#1455, #1456) ## 4.11.10 (2019-08-31) Fixes: - Fixed problem with sporadic `DDMetrics::Stopwatch::AlreadyRunningError` (#1445) ## 4.11.9 (2019-08-17) Enhancements: - Allowed specifying excluded files across all checks (#1438) - Replace handlebars.rb with ruby-handlebars (#1443) - Improved dependency tracking for Sass imports (#1451, #1452) [Romain Goyet] ## 4.11.8 (2019-08-08) Fixes: - Fixed issue with `#find_all` yielding incorrect objects, causing a crash when attempting to access attributes (#1446, #1447) ## 4.11.7 (2019-07-28) Fixes: - Fixed handling of protocol-relative URLs (#1444) ## 4.11.6 (2019-07-06) Fixes: - Fixed crash in the `show-data` command when printing layout outdatedness (#1432) - Fixed crash in the `view` command when host/port is not specified Enhancements: - Added `#env_name` to `@config` (#1437) - Made the `external_links` checker detect more kinds of broken links (#1422) [Daniel Aleksandersen] - Made the `external_links` checker shuffle the list of links (#1429) [Daniel Aleksandersen] ## 4.11.5 (2019-04-30) Fixes: - Fixed an incompatibility introduced in Cri 2.15.4 (#1423, #1426) ## 4.11.4 (2019-04-28) Fixes: - Fixed an issue which could cause `#compiled_content` to sometimes return compiled content that erroneously includes the layout (#1412, #1421) ## 4.11.3 (2019-04-27) Enhancements: - Set a User-Agent for HTTP requests made by the `external_links` check (#1417) [Daniel Aleksandersen] - Added `atom:link[type]` attributes (#1415) [Daniel Aleksandersen] - Made the `external_links` check treat permanent redirects as errors (#1419) [Daniel Aleksandersen] ## 4.11.2 (2019-02-16) Fixes: - Fixed issue which prevented Sass (not SCSS) files from being imported (#1397, #1407) [Alexander Groß] ## 4.11.1 (2019-02-09) Fixes: - Fixed an issue which caused hardlinking to fail in certain situations (#1405, #1406) ## 4.11.0 (2018-12-01) Features: - Added support for generating inline source maps for Sass (#1376) [Gregory Pakosz] - Added `:tiebreaker` option to the breadcrumbs helper, so that it can deal with ambiguity (#1368) ## 4.10.4 (2018-12-01) Fixes: - Fixed an error when importing a Sass/SCSS file outside of Nanoc’s content directory (#1378, #1379) ## 4.10.3 (2018-10-28) Fixes: - Fixed an issue which could cause `write nil` to still invoke the routing rule (#1374, #1375) ## 4.10.2 (2018-10-21) Fixes: - Fixed an issue where changing a layout rule’s parameters would not recompile items that use the layout for this layout rule (#1372, #1373) ## 4.10.1 (2018-10-16) Fixes: - Made Nanoc no longer crash when the Sass gem is not available (#1371) ## 4.10.0 (2018-10-14) Features: - Added source map support to the Sass filter (#1365) [Gregory Pakosz] - Added a `nanoc()` Sass function (#1365) [Gregory Pakosz] Fixes: - Ensured breadcrumb trail always ends in item itself (#1367) Enhancemens: - Made Nanoc error when meta-file cannot be unambiguously associated (#1370) ## 4.9.9 (2018-10-06) Fixes: - Allowed `items_root` and `layouts_root` to be null ## 4.9.8 (2018-10-05) Fixes: - Fixed missing `configuration-schema.json` file ## 4.9.7 (2018-10-05) Enhancements: - Added `title_proc:` option to the blogging helper (#1362, #1363) [Thomas Hochstein] - Dropped Ruby 2.3 support, as it is no longer maintained (#1361) - Added static configuration file verification (#1360) ## 4.9.6 (2018-09-19) Fixes: - Fixed an issue which would cause the checksum of binary items created by the filesystem data source not to be updated when the content changes (#1358, #1359) ## 4.9.5 (2018-09-15) Fixes: - Fixed an issue which would cause Nanoc to trip up when the working directory changes during compilation (#1338, #1353, #1354, #1357) ## 4.9.4 (2018-08-19) Fixes: - Fixed an issue where compiled content of items generated in the preprocessor would not be available in the postprocessor (#1341, #1348) ## 4.9.3 (2018-06-09) Enhancements: - Added an `:exclude` option to `relativize_paths`, to exclude certain paths from being relativized (#1340) ## 4.9.2 (2018-03-30) Fixes: - Fixed bug which caused `output_dir` not to be ignored when checking for excludes in pruner (#1313, #1324) - Fixed bug which caused `Filter#depend_on` not to create a proper dependency when the depended-on item has no representations (#1330) Enhancements: - Made Nanoc use hardlinks instead of copying files when possible (#1321) [Antonio Terceiro] - Made Nanoc show an understandable error when a filter returns `nil` by accident (#1323, #1326) - Made the checks also consider `.xhtml` and `.htm` files (#1328, #1329) - Made Nanoc not report thread exceptions, which would freeze Ruby (#1332) ## 4.9.1 (2018-02-22) Fixes: - Fixed issue which could cause terminal output to be jumbled up (#1312, #1316) - Made pruner ignore `output_dir` configuration attribute when checking for excludes (#1313, #1317) - Fixed handling of interrupts (SIGINT) in the `shell` command (#1309, #1318) - Added workaround for `relativize_paths` mangling `gcse:search` elements (#1319, #1320) Enhancements: - Allowed overriding `` and `` elements in Atom feed generator (#1301) [Ian Young] - Made `sh` an alias for the `shell` command (#1308) - Simplified the default configuration (#1311) - Removed routing rules from newly-created sites (#1310) ## 4.9.0 (2018-01-31) Features: - Added `Identifier#match?` (#1305) - Added `Nanoc::Check.define` - Made Nanoc read checks configuration from `nanoc.yaml` (#1296) Enhancements: - Made Nanoc write out files asynchronously (#1288) - Made the filesystem data source ignore an initial blank line after the frontmatter (#1292, #1293) - Made the `check` command run deploy checks by default (#1304) - Made Nanoc honor the `NO_COLOR` environment variable (#1306) Bugs: - Fixed a potential deadlock in the `external_links` check (#1294, #1295) - Fixed the `external_links` check’s handling of redirects without a `Location` header (#1297, #1302) - Fixed the `external_links` check’s handling of URLs with invalid components (#1303) ## 4.8.19 (2018-01-01) Enhancements: - Made `write nil` skip routing rule (#1286) ## 4.8.18 (2017-12-28) Enhancements: - Added `.tex` to the default list of text extensions (#1280) [Rien Maertens] Fixes: - Made `#breadcrumbs_trail` smarter about picking the right parent when there is ambiguity (#1278, #1279) - Made `#find_all` be callable with block instead of an argument (like `Enumerable#find_all`) (#1284, #1285) ## 4.8.17 (2017-12-16) Enhancements: - Made `LoadError` be printed more nicely (#1273, #1274, #1275) ## 4.8.16 (2017-12-09) Fixes: - Made `adsf-live` not be required for `nanoc view`, unless running with `--live-reload` ## 4.8.15 (2017-12-02) Fixes: - Made `nanoc` show item being compiled in crash logs of all errors, not just errors inheriting from `StandardError` (#1258) - Made Erubi stack traces include the filename of the item or layout that is being compiled (#1255, #1259) - Prevented `view --live-reload` from crashing when the output directory does not exist (#1254, #1261) Enhancements: - Made pruner not remove the output directory if it’s empty (#1260) ## 4.8.14 (2017-11-27) Same as 4.8.13, but published with the proper release date. ## 4.8.13 (2017-11-27) Enhancements: - Added `-L`/`--live-reload` option to `nanoc view` (#1251) ## 4.8.12 (2017-11-16) Fixes: - Fixed issue where changing `:output_dir` during preprocessing would prevent Nanoc from performing incremental compilation (#1248, #1249) Enhancements: - Allowed creation of pattern from symbols, not just strings (#1247) [Gregory Pakosz] ## 4.8.11 (2017-10-28) Enhancements: - Added `:save_with` parameter to `relativize_paths` filter (#1237) [Gregory Pakosz] - Made error messages more compact and easier to read ## 4.8.10 (2017-10-08) Fixes: - Fixed handling of four dashes for separating metadata (#1222, #1223) - Made `#raw_path` unavailable in rules context (#1231) ## 4.8.9 (2017-09-22) Fixes: - Fixed “uninitialized constant DisabledContracts::Args” error ## 4.8.8 (2017-09-22) Enhancements: - Added `#dig` to configuration (#1221) [Gregory Pakosz] ## 4.8.7 (2017-09-18) Fixes: - Fixed “uninitialized constant CGI” issue (#1218) ## 4.8.6 (2017-09-17) Fixes: - Fixed issue which would cause items not to be considered as outdated when their content and/or attributes are changed in the preprocessor (#1216, #1217) ## 4.8.5 (2017-09-07) Enhancements: - Made `nanoc check` accept hyphenated check names (e.g. `internal-links`, in addition to `internal_links`). - `compile --verbose` now prints “cached” rather than “identical” when cached compiled content is used. (#1214) ## 4.8.4 (2017-09-03) Fixes: - Fixed issue which caused the CLI to load the site at the wrong moment (#1211, #1212, #1213) ## 4.8.3 (2017-08-30) Fixes: - Disallowed full identifiers from ending with a slash (#1206) - Made `nanoc view` listen on 127.0.0.1, not 0.0.0.0, by default (#1205) Enhancements: - Made `nanoc view` print site URL (#1204) - Made `nanoc` search for parent directory containing Nanoc site (#1210) ## 4.8.2 (2017-08-19) Fixes: - Fixed compatibility issue with guard-nanoc ## 4.8.1 (2017-08-06) Enhancements: - Various speed improvements ## 4.8 (2017-07-17) Features: - Added `asciidoctor` filter (#1199) ## 4.7.14 (2017-07-16) Enhancements: - Various speed improvements (#1195, #1198) ## 4.7.13 (2017-07-02) Enhancements: - Made adding an item or a layout only recompile items that likely depend on it (#1191, #1193) ## 4.7.12 (2017-06-23) Fixes: - Fixed an issue in which the fog deployer could run out of open file descriptors (#1189) Enhancements: - Made changes to `@config` only cause outdatedness of items that depend on `@config` (#1188) ## 4.7.11 (2017-06-17) Fixes: - Made the `external_links` check always use GET, not HEAD (#1178, #1179) - Fixed an issue where changing identifiers during preprocessing could cause a crash (#1184, #1185) Enhancements: - Added `--preprocess` to `shell` command, to load preprocessed site data (#1180) ## 4.7.10 (2017-05-14) Fixes: - Fixed behavior of `parent_config_file` so that it merges, rather than overwrites (#1176) [Gregory Pakosz] Enhancements: - Made `slim` filter show the filename in error messages (#1175) [Alexander Groß] - Added `#use_helper` as an alternative to `#include` for enabling helpers (#1170) ## 4.7.9 (2017-05-01) Fixes: - Fixed character set handling of code snippets (#1171, #1174) Enhancements: - Added `xml:base` support (#1172, #1173) [Chris Burkhardt] This release drops support for Ruby 2.2, as it is no longer maintained. ## 4.7.8 (2017-04-22) Fixes: - Fixed a crash when printing dependency cycle error messages (#1164, #1166) - Fixed incorrect ordering in dependency cycle error messages (#1167, #1168) - Fixed a crash when attempting to print malformed UTF-8 strings (#1163, #1165) Enhancements: - Added various speed improvements (#1158, #1159, #1160) ## 4.7.7 (2017-04-16) Enhancements: - Added `--diff` option to `compile` command as a one-time alternative to `enable_output_diff` (#1155) - Sped up incremental compilation (#1156, #1157) ## 4.7.6 (2017-04-15) Enhancements: - Added support for `:html5` in `relativize_paths` and `colorize_syntax` filters (#1153) ## 4.7.5 (2017-04-01) Fixes: - Made `--verbose` be recognised when calling `nanoc` without subcommand (#1145, #1146) Enhancements: - Made `show-data` print all outdatedness reasons, not just the first (#1142) - Sped up `@items.find_all` (#1147) ## 4.7.4 (2017-03-29) Enhancements: - Made attribute dependencies cause outdatedness less often (#1136, #1137, #1138) - Improved speed of Rules file handling (#1140) ## 4.7.3 (2017-03-26) Fixes: - Fixed an issue which could cause a missing file for a snapshot that is not `:last` not to be regenerated when compiling (#1134, #1135) ## 4.7.2 (2017-03-21) Fixes: - Fixed crash when calling `#raw_path` in the Checks file (#1130, #1131) ## 4.7.1 (2017-03-19) Fixes: - Fixed issue with `:xsl` filter not recompiling when it should (#924, #1127) Enhancements: - Made `compile --verbose` print percentiles rather than averages (#1122) - Improved dependency cycle error messages (#1123) ## 4.7 (2017-03-15) Features: - Added `:erubi` filter (#1103) [Jan M. Faber] - Added `write ext: 'something'` shortcut (#1079) ## 4.6.4 (2017-03-10) Fixes: - Fixed issue where `compile --verbose` would show misleading timing information (#1113) ## 4.6.3 (2017-03-05) Fixes: - Fixed `Errno::ENOENT` crash (#1094, #1109) - Fixed undefined method `#reverse_each` crash (#1107, #1108) - Fixed compilation speed issue introduced in 4.6.2 (#1106) ## 4.6.2 (2017-03-04) Fixes: - Fixed crash in `#binary?` (#1082, #1083, #1084) - Fixed issue which would cause the file referenced by `#raw_path` not to exist (#1097, #1099) Enhancements: - Allowed calling `#write` multiple times in the same rule (#1037, #1085) - Changed the `html` check to use validator.nu (#1104) ## 4.6.1 (2017-01-29) Fixes: - Fixed table formatting in `compile --verbose` (#1074) [Hugo Peixoto] Enhancements: - Reduced memory usage (#1075, #1076, #1077, #1078) ## 4.6 (2017-01-22) Features: - Made `#content_for` accept a string as well as a block, to allow setting captured content outside of ERB (#1066, #1073) - Added `#raw_content=` to items and layouts during preprocessing (#1057) - Added `#snapshot?` to item rep views (#1056) Enhancements: - Prevented useless recompilations when switching Nanoc environments (#1070, #1071) ## 4.5.4 (2017-01-16) Fixes: - Fixed issue with site not being recompiled fully when switching between environments (#1067, #1069) ## 4.5.3 (2017-01-15) Fixes: - Fixed “Fixnum is deprecated” message (#1061, #1062) - Fixed `:pre` snapshot not being created for items that are not laid out (#1064, #1065) ## 4.5.2 (2017-01-11) Fixes: - Fixed handling of periods in full identifiers (#1022, #1059) - Fixed “cannot layout binary items” error message (#1058) - Fixed escaping of URLs in sitemaps (#1052, #1054) ## 4.5.1 (2017-01-09) Fixes: - Fixed crash when Nokogiri is not installed (#1053) ## 4.5 (2017-01-09) Features: - Added Git deployer (#997) ## 4.4.7 (2017-01-05) Fixes: - Fixed issue that caused an item not to be considered outdated when only the mtime has changed (#1046) - Removed stray `require 'parallel'` which could break the `external_links` check (#1051) [Cédric Boutillier] Enhancements: - Made Nanoc not recompile compiled items after an exception occurs (#1044) ## 4.4.6 (2016-12-28) Fixes: - Fixed issue where `#compiled_content` would not return the correct content (#1040, #1041) ## 4.4.5 (2016-12-24) Fixes: - Prevented stale data from making it into the checksum store and thereby blowing up in memory (#1004, #1027) - Fixed slow recompile after adding many items to a site (#1028) - Fixed wrong capturing helper output when the output field separator (`$,`) is set - Fixed issue that could cause items with multiple reps not to be recompiled when needed (#1031, #1032) - Fixed error when fetching textual content of item whose `:last` snapshot is binary (#1035, #1036) ## 4.4.4 (2016-12-19) Enhancements: - Improved speed of incremental compilations (#1017, #1019, #1024) ## 4.4.3 (2016-12-17) Fixes: - Prevented stale data from making it into the compiled content cache and thereby blowing up in memory (#1004, #1013) - Fixed “about” and “IRC channel” links in default site - Fixed accuracy of `` in Atom feed (use most recent `updated_at` or `created_at`) (#1007, #1014) Enhancements: - Added support for non-legacy identifiers in `#breadcrumbs_trail` (#1010, #1011) - Defined checksum for `Nanoc::Int::Context` to make outdatedness checker more precise (#1008, #1012) - Made Nanoc raise an error when item reps are routed to a path that does not start with a slash (#1015, #1016) ## 4.4.2 (2016-11-27) Fixes: - Fixed “Maximum call stack size exceeded” issue in the `less` filter (#1001) - Fixed issue that could cause the `less` filter to not generate all necessary dependencies (#1003) Enhancements: - Improved the way that the crash log displays the item rep that is being compiled (#1000) ## 4.4.1 (2016-11-21) Fixes: - Fixed an issue where the `xsl` filter would not generate a correct dependency on the layout (#996) Enhancements: - Made `view` command use index filenames specified in the `index_filenames` site configuration attribute (#998) ## 4.4 (2016-11-19) Features: - Added support for Nanoc environments (#859) ## 4.3.8 (2016-11-18) Enhancements: - Improved support for Rouge 1.x and 2.x (#880) [Rémi Barraquand] - Added `#include` to the `nanoc shell` command (#973) - Improved speed of full and incremental compilations (#977, #985) Fixes: - Made routing rules and `#write` calls accept an identifier, and not just a string (#976) - Removed GC speed-up hacks, which became counterproductive in Ruby 2.2 (#975) - Fixed issue which caused items to be always recompiled if `rep`/`item_rep` or `self` are used in those items’ rules (#982) ## 4.3.7 (2016-10-29) Fixes: - Fixed issue with `show-data` and `show-rules` commands not showing all data (#970) [Chris Chapman] Enhancements: - Improved speed of `compile` command (#968) - Improved speed of `prune` command (#969) - Made kramdown warnings include affected item rep (#967) [Gregory Pakosz] - Made kramdown warnings configurable (#967) [Gregory Pakosz] ## 4.3.6 (2016-10-23) Fixes: - Made legacy patterns properly support full identifiers (#957) - Fixed timezone issues in `#to_iso8601_date` (#961) - Fixed error when accessing item (rep) paths in shell command (#963) - Fixed issue that caused `#path` to be nil inside compilation rules (#964) - Made `__FILE__` in Checks file be a absolute path (#966) Enhancements: - Made the command line write status information to stderr, not stdout (#958) ## 4.3.5 (2016-10-14) Fixes: - Handle `form/@action` in `relativize_paths` filter (#950) [Lorin Werthen] Experimental features: - `profiler`: adds `--profile` option to the `compile` command to profile compilation (#903) - `environments`: adds support for Nanoc environments (#859) ## 4.3.4 (2016-10-02) Fixes: - Fixed compilation crash when output directory does not exist and auto-pruning is enabled (#948, #949) ## 4.3.3 (2016-09-26) Fixes: - Fixed issue causing `Bundler::GemfileNotFound` to be thrown (#936) [Lorin Werthen] - Fixed issue when replacing a directory with a file or vice versa (#942, #946) Enhancements: - Modified the `compile` command to allow specifying the deploy target as argument (#945) ## 4.3.2 (2016-08-23) Identical to 4.3.1, but with corrected release notes. ## 4.3.1 (2016-08-23) Fixes: - Fixed “outdatedness of LayoutView” error (#927, #931) - Fixed bug causing some checks not to appear in `nanoc check --list` (#928, #930) - Fixed `@item`, … not being accessible in filters defined with `Nanoc::Filter.define` (#932, #934) ## 4.3 (2016-08-21) Features: - Added `Nanoc::Filter.define`, to easily define filters (#895) - Made the `nanoc` Gemfile group be auto-required when Nanoc starts (#910) [whitequark] ## 4.2.4 (2016-07-24) Fixes: - Fixed `UnmetDependency` errors in postprocessor (#913, #917) Enhancements: - Sped up Nanoc by not releasing cache memory as quickly (#902) - Let `internal_links` check also verify resource paths, such as scripts and images (#912) [Lorin Werthen] - Improved error reporting for errors in the Rules file (#908, #914, #915, #916) - Removed `win32console` support, as it’s deprecated and causing problems (#900, #918) ## 4.2.3 (2016-07-03) Fixes: - Fixed issue with `#inspect` raising a `WeakRef::RefError` (#877, #897) Enhancements: - Sped up compiler (#894) - Improved `#inspect` output of some classes (#896) - Deprecated `Item#modified` and replaced it with `Item#modified_reps` (#898) ## 4.2.2 (2016-07-02) Fixes: - Fixed confusing “invalid prefix” error message (#873, #879) - Ensured filter arguments are frozen, to prevent outdatedness checker errors (#881, #886) - Fixed issue with dependencies of items generated in the preprocessor not being tracked (#885, #891, #893) Enhancements: - Added specific handling for `Sass::Importers::Filesystem` in the checksummer, which should reduce unnecessary recompiles in sites using Compass (#866, #884) - Improved speed of checksummer (#864, #887) ## 4.2.1 (2016-06-19) Fixes: - Fixed an occasional `WeakRef::RefError` (#863, #865) - Fixed `show-data` command not running preprocessor (#867, #870) ## 4.2 (2016-06-04) Enhancements: - Dropped Ruby 2.1 support (#856) This release also includes the changes from 4.2.0b1. ## 4.1.6 (2016-04-17) Fixes: - Strip index.html only if it is a full component (#850, #851) - Force UTF-8 for item rep paths (#837, #852) ## 4.2.0b1 (2016-04-17) Features: - Allow creating items and layouts with a pre-calculated checksum (#793) [Ruben Verborgh] - Allow lazy-loading item/layout content and attributes (#794) [Ruben Verborgh] - Added `exclude_origins` configuration option to internal links checker (#847) - Added `ChildParent` helper, providing `#children_of` and `#parent_of` (#849) Enhancements: - Made `#html_escape` raise an appropriate error when the given argument is not a String (#840) [Micha Rosenbaum] - Improved memory usage of memoized values by using weak refs (#846) ## 4.1.5 (2016-03-24) Fixes: - Fixed crash in `show-data` command (#833, #835) - Fixed preprocessor not being invoked before running checks (#841, #842) ## 4.1.4 (2016-02-13) Fixes: - Added missing `Configuration#key?` method (#815, #820) - Made output diff use correct snapshot rather than `:last` (#813, #814) Enhancements: - Sped up item resolution in Sass filter (#821) - Made `#link_to` more resilient to unsupported argument types (#816, #819) ## 4.1.3 (2016-01-30) Fixes: - Fixed crash in `check` command when the subject of an issue is nil (#804, #811) - Made stale check not ignore non-final snapshot paths (#809, #810) ## 4.1.2 (2016-01-16) Fixes: - Made @-variables (e.g. `@items`) report their frozenness properly, so that optimisations based on frozenness work once again (#795, #797) - Removed environment from `crash.log` to prevent leaking sensitive information (#798, #800) Enhancements: - Removed redundant checksum calculation (#789) [Ruben Verborgh] ## 4.1.1 (2015-12-30) Fixes: - Fixed preprocessor not being run before check/deploy/prune commands (#763, #784, #787, #788) Enhancements: - Made `#breadcrumbs_trail` explicitly fail when using full identifiers (#781, #783) ## 4.1 (2015-12-18) Fixes: - Fixed crash when attempting to `#puts` an object that’s not a string (#778) - Made pruner not prune away files from routes defined for custom snapshots (#779) - Wrapped `@layout` in a layout view (#773) Enhancements: - Added a base path to the Checks file, so that it supports `#require_relative` (#774) This release also includes the changes from 4.1.0a1 to 4.1.0rc2. ## 4.1.0rc2 (2015-12-13) Fixes: - Fixed children of the root item not having a parent (#769, #770) Enhancements: - Made `#path`, `#compiled_content` and `#reps` unavailable during pre-processing, compilation and routing, because they do not make sense in these contexts (#571, #767, #768) ## 4.1.0rc1 (2015-12-12) Fixes: - Fixed `@item.compiled_content` in a layout raising an exception (#761, #766) ## 4.1.0b1 (2015-12-11) Fixes: - Fixed issue with `:pre` snapshot not being generated properly (#764) Enhancements: - Updated default site to use `#write` (#759) ## 4.1.0a1 (2015-12-05) Features: - Added `postprocess` block (#726) [Garen Torikian] - Added `#write` compilation instruction and `path` option to `#snapshot` (#753) Fixes: - Fixed crash when printing non-string object (#712) [Garen Torikian] - Removed English text from `#link_to` helper (#736) [Lucas Vuotto] Enhancements: - Allowed excluding URLs from external links check (#686) [Yannick Ihmels] - Added `atom` to list of text extensions (#657) [Yannick Ihmels] - Added `#each` to `Nanoc::ConfigView` (#705) [Garen Torikian] - Made `#attribute_to_time` handle `DateTime` (#717) [Micha Rosenbaum] - Added `Identifier#components` (#677) - Added `:existing` option to `#content_for` (can be `:error`, `:overwrite` and `:append`) (#744) ## 4.0.2 (2015-11-30) Fixes: - Properly set required Ruby version to 2.1 in the gem specification (#747) - Fixed issue with CLI commands not being loaded as UTF-8 (#742) - Added missing `#identifier=` method to items and layouts during preprocessing (#750) Enhancements: - Let attempts to fetch an item rep by number, rather than symbol, fail with a meaningful error (#749) ## 4.0.1 (2015-11-28) Fixes: - Fixed params documentation for :rdiscount filter (#722) - Fixed crash when comparing item rep views (#735, #738) Enhancements: - Lowered minimum required Ruby version from 2.2 to 2.1 (#732) ## 4.0 (2015-11-07) Enhancements: - `#parent` and `#children` now raise an exception when used on items with a non-legacy identifier (#710) This release also includes the changes from 4.0.0a1 to 4.0.0rc3. ## 4.0.0rc3 (2015-09-20) Features: - Added `Identifier#without_exts` and `Identifier#exts` (#644, #696) [Rémi Barraquand] - Added `DocumentView#attributes` (#699, #702) Fixes: - Fixed issue when comparing document views (#680, #693) Enhancements: - Made `#base_url` argument in `#tags_for` optional (#687) [Croath Liu] - Allowed `IdentifiableCollection#[]` to be passed an identifier (#681, #695) - Improved `Pattern.from` error message (#683, #692) - Let default site use a direct link to the stylesheet (#685, #701) Changes: - Removed `Identifier#with_ext` because its behavior was confusing (#697, #700) - Disallowed storing document (views) in attributes (#682, #694) ## 4.0.0rc2 (2015-07-11) Fixes: - Fixed broken `shell` command (#672) [Jim Mendenhall] - Fixed absolute path check on Windows (#656) Enhancements: - Made Nanoc error when multiple items have the same output path (#665, #669) - Improved error message for non-hash frontmatter (#670, #673) Changes: - nanoc is now called Nanoc ## 4.0.0rc1 (2015-06-21) Fixes: - Fixed double-wrapping of `@layout` in rendering helper (#631) - Fixed `show-rules` command (#633) ## 4.0.0b4 (2015-06-10) Fixes: - Added missing `#ext` method to identifiers (#612) - Fixed issue where identifiers would have the wrong extension (#611) - Fixed rule context exposing entities rather than views (#614, #615) - Fixed `#key?` and `#fetch` not being available on layout views (#618) - Fixed `#update_attributes` not being available on mutable layout views (#619) ## 4.0.0b3 (2015-05-31) Changes: - Removed `filesystem_verbose` data source (#599) - Set minimum required Ruby version to 2.2 Enhancements: - Made `@config`, `@items` and `@layouts` available in checks (#598) - Made `filesystem` an alias for `filesystem_unified` (#599) - Made specific reps for an item accessible using `@item.reps[:name]` (#586, #607) - Removed `allow_periods_in_identifiers` documentation (#605) - Made fog deployer not upload files with identical ETags to AWS (#480, #536, #552) [Paul Boone] Fixes: - Made `ItemView#parent` return nil if parent is nil (#600, #602) - Added missing `identifier_type` documentation (#604) ## 4.0.0b2 (2015-05-23) Changes: - Removed `ItemCollectionView#at` (#582) - Removed support for calling `ItemCollectionView#[]` with an integer (#582) - Renamed `identifier_style` to `identifier_type`, and made its values be `"full"` or `"legacy"` (#593) - Renamed `pattern_syntax` to `string_pattern_type`, and made its values be `"glob"` or `"legacy"` (#593) - Made `"full"` the default for `identifier_type` (#592, #594) - Made `"glob"` the default for `string_pattern_type` (#592) - Enabled auto-pruning by default for new sites (#590) Enhancements: - Added `--force` to `create-site` command (#580) [David Alexander] - Made default Rules file more future-proof (#591) Fixes: - Fixed `LayoutCollectionView#[]` documentation (it mentioned items) - Fixed `ItemCollectionView#[]` returning an array when passed a regex - Fixed an issue with mutable collection views’ `#delete_if` not yielding mutable views - Fixed an issue with collection views’ `#find_all` returning entities instead of views ## 4.0.0b1 (2015-05-14) Changes: - Removed tasks - Removed several private methods in the view API - Removed default `base_url` in tagging helper Enhancements: - Removed unused options from CLI - Added `Nanoc::Identifier#without_ext` - Made `Nanoc::Identifier#=~` work with a glob - Added `Nanoc::LayoutCollectionView#[]` - Allowed creation of site in current directory (#549) [David Alexander] Fixes: - Fixed `#passthrough` for identifiers with extensions - Fixed rendering helper for identifiers with extensions - Fixed filtering helper ## 4.0.0a2 (2015-05-12) Features: - Glob patterns (opt-in by setting `pattern_syntax` to `"glob"` in the site configuration) - Identifiers with extensions (opt-in by setting `identifier_style` to `"full"` in the data source configuration) Enhancements: - Added several convenience methods to view classes (#570, #572) See the [nanoc 4 upgrade guide](https://nanoc.ws/doc/nanoc-4-upgrade-guide/) for details. ## 4.0.0a1 (2015-05-09) This is a major upgrade. For details on upgrading, see the [nanoc 4 upgrade guide](https://nanoc.ws/doc/nanoc-4-upgrade-guide/). This release provides no new features, but streamlines the API and functionality, in order to easen future development, both for features and for optimisations. ## 3.8 (2015-05-04) Features: - Added `mixed_content` check (#542, #543) [Mike Pennisi] - Added `commands_dirs` configuration option for specifying directories to read commands from (#475) [Gregory Pakosz] - Added `:cdn_id` option to fog deployer for invalidating CDN objects (#451) [Vlatko Kosturjak] - Add access to regular expressions group matches in rules (#478) [Michal Papis] - Allow filtering the items array by regex (#458) [Mike Pennisi] Enhancements: - Added `:preserve_order` option to preserve order in Atom feed (#533, #534) - Allowed accessing `:pre` snapshot from within item itself (#537, #538, #548) Fixes: - Allowed passing generic Pandoc options with :args (#526, #535) - Fix crash when compiling extensionless binary items (#524, #525) - Fix double snapshot creation error (#547) ## 3.7.5 (2015-01-12) Enhancements: - Allowed extra patterns to be specified in the data source configuration, so that dotfiles are no longer necessary ignored (e.g. `extra_files: ['.htaccess']`) (#492, #498) [Andy Drop, Michal Papis] - Removed Ruby 1.8.x support ([details](https://groups.google.com/forum/#!topic/nanoc/pSL1i15EFz8)) (#517) - Improved CSS and HTML error messages (#484, #504) - Let kramdown filter print warnings (#459, #519) Fixes: - Fixed HTML class names for recent Rouge versions (#502) - Fixed crash when using items or layouts in attributes (#469, #518) ## 3.7.4 (2014-11-23) Enhancements: - Made `check` command fail when output directory is missing (#472) [Mike Pennisi] - Made external links check timeouts start small and grow (#483) [Michal Papis] - Made code and API adhere much more closely to the Ruby style guide (#476) Fixes: - Fixed potential “parent directory is world writable” error (#465, #474) - Fixed retrying requests in the external link checker (#483) [Michal Papis] - Fixed issue with data sources not being unloaded (#491) [Michal Papis] ## 3.7.3 (2014-08-31) Fixes: - Fixed issue which caused metadata sections not be recognised in files that use CRLF line endings (#470, #471) [Gregory Pakosz] ## 3.7.2 (2014-08-17) Fixes: - Fixed broken links to the now defunct RubyForge (#454, #467) - Fixed crash when Gemfile is missing but Bundler is installed (#464) - Made filesystem data source not strip any whitespace (#463) [Gregory Pakosz] Enhancements: - Fixed issue which could cause items to be unnecessarily marked as outdated (#461) [Gregory Pakosz] - Prevented binary layouts from being generated (#468) [Gregory Pakosz] ## 3.7.1 (2014-06-16) Fixes: - Fixed bug which would cause nanoc to crash if no Gemfile is present (#447, #449) ## 3.7 (2014-06-08) 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/` and `layouts/` dirs configurable (#412) [Gregory Pakosz] - Allowed included rules files to have their own preprocess block (#420) [Gregory Pakosz] Fixes: - Fixed bug which caused temporary directories not to be removed (#440, #444) ## 3.6.11 (2014-05-09) Identical to 3.6.10 but published with corrected release notes. This release was previously known as 3.6.10.1, but was renamed due to incompatibilities with the Semantic Versioning specification. ## 3.6.10 (2014-05-09) 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) ## 3.6.9 (2014-04-15) 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) ## 3.6.8 (2014-03-22) 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) ## 3.6.7 (2013-12-09) 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` and `watch` commands in help - Made CLI swallow broken pipe errors when piping to a process that terminates prematurely (#318, #369) ## 3.6.6 (2013-11-08) 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](https://github.com/macournoyer/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) ## 3.6.5 (2013-09-29) 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) ## 3.6.4 (2013-05-29) Enhancements: - Deprecated `watch` and `autocompile` commands in favour of [`guard-nanoc`](https://github.com/guard/guard-nanoc) Fixes: - Fixed bug which could cause the `tmp/` dir to blow up in size - Unescaped URLs when checking internal links ## 3.6.3 (2013-04-24) 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 the `relativize_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) ## 3.6.2 (2013-03-23) 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__` and `object_id` being redefined on Ruby 1.8.x [Justin Hileman] Enhancements: - Added possible alternative names for the `Checks` file for consistency with the `Rules` 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] ## 3.6.1 (2013-02-25) Fixes: - Fixed bug which could cause the Sass filter to raise a load error [Damien Pollet] - Fixed warnings about `__send__` and `object_id` being redefined [Justin Hileman] - Made `files_to_watch` contain `nanoc.yaml`, not `config.yaml` by default ## 3.6 (2013-02-24) 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` to `nanoc.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 [Matthias Reitinger] - 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 ## 3.5 (2013-01-27) 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 ## 3.4.3 (2012-12-09) 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 ## 3.4.2 (2012-11-01) 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 [Grégory 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 ## 3.4.1 (2012-09-22) 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 ## 3.4 (2012-06-09) - Improved error output and added crash log - Renamed `debug` and `info` commands to `show-data` and `show-plugins`, respectively - Added `show-rules` command (aka `explain`) 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 ## 3.3.7 (2012-05-28) - Added filename to YAML parser errors - Fixed issue which caused extra dependencies to be generated - Made timing information take filtering helper into account ## 3.3.6 (2012-04-27) - Fixed issue with relative_link_to stripping HTML boilerplate ## 3.3.5 (2012-04-23) - Fixed issue with relative_link_to not working properly ## 3.3.4 (2012-04-23) - Fixed bug which caused the compilation stack to be empty - Restored Ruby 1.8 compatibility ## 3.3.3 (2012-04-11) - 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 ## 3.3.2 (2012-03-16) - 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::OrigCLI in deployment tasks - Fixed “unrecognised kind” deployer error ## 3.3.1 (2012-02-18) - 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] ## 3.3 (2012-02-12) 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 ## 3.2.4 (2012-01-09) - 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 ## 3.2.3 (2011-10-31) - 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 ## 3.2.2 (2011-09-04) - 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 ## 3.2.1 (2011-07-27) - 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 ## 3.2 (2011-07-24) 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] ## 3.1.9 (2011-06-30) - 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 ## 3.1.8 (2011-06-25) - 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 ## 3.1.7 (2011-05-03) - Restored compatibility with Sass 3.1 ## 3.1.6 (2010-11-21) - Fixed issues with incompatible encodings ## 3.1.5 (2010-08-24) - 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` and `updated_at` attributes used in the `Blogging` helper to be `Date` instances ## 3.1.4 (2010-07-25) - 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 ## 3.1.3 (2010-04-25) - 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] ## 3.1.2 (2010-04-07) - Fixed bug which could cause incorrect output when compilation of an item is delayed due to an unmet dependency ## 3.1.1 (2010-04-05) - Sass `@import`s now work for files not managed by nanoc - Rake tasks now have their Unicode description decomposed if necessary ## 3.1 (2010-04-03) 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](https://kramdown.gettalong.org/)) - A diff between the previously compiled content and the last compiled content is now written to `output.diff` if the `enable_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 lowercase `dry_run` environment variable - The `maruku` filter now accepts parameters - The `rainpress` filter now accepts parameters - The `filesystem` data source is now known as `filesystem_verbose` - Meta files and content files are now optional - The `filesystem_compact` and `filesystem_combined` data sources have been merged into a new `filesystem_unified` data source - The metadata section in `filesystem_unified` is now optional [Chris 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 instead - `ItemRep#content_at_snapshot`; use `#compiled_content` instead - The `last_fm`, `delicious` and `twitter` data sources; fetch online content into a cache by a rake task and load data from this cache instead ## 3.0.9 (2010-02-24) - Fixed 1.8.x parsing bug due to lack of parens which could cause “undefined method `to_iso8601_time` for #” errors ## 3.0.8 (2010-02-24) - `#atom_tag_for` now works with `base_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 allows `created_at` to be a Time instance ## 3.0.7 (2010-01-29) - Fixed bug which could cause layout rules not be matched in order ## 3.0.6 (2010-01-17) - 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] ## 3.0.5 (2010-01-12) - 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 if `allow_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/`). ## 3.0.4 (2010-01-07) - 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] ## 3.0.3 (2010-01-06) - 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` and `Tagging` helpers now output escaped HTML - Fixed `played_at` attribute assignment in the `LastFM` data source for tracks playing now, and added a `now_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 ## 3.0.2 (2009-11-07) - 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 ## 3.0.1 (2009-10-05) - 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 the `base_url` site configuration attribute - Several outdated URLs are now up-to-date - Error handling has been improved in general ## 3.0 (2009-08-14) 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](http://coderay.rubychan.de/)) - 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_*` and `delete_*` methods in data sources - Processing instructions in metadata ## 2.2.2 (2009-05-18) - Removed `relativize_paths` filter; use `relativize_paths_in_html` or `relativize_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 ## 2.2.1 (2009-04-08) - Fixed bug which prevented `relative_path_to` from working - Split `relativize_paths` filter into two filter: `relativize_paths_in_html` and `relativize_paths_in_css` - Removed bundled mime-types library ## 2.2 (2009-04-06) New: - `--pages` and `--assets` compiler options - `--no-color` command-line option - `Filtering` helper - `#relative_path_to` function in `LinkTo` helper - `rainpress` filter ([Rainpress site](https://github.com/ddfreyne/rainpress)) - `relativize_paths` filter - The current layout is now accessible through the `@layout` variable - Much more informative stack traces when something goes wrong Changed: - The command-line 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 ## 2.1.6 (2009-02-28) - 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 ## 2.1.5 (2009-02-01) - Added Ruby 1.9 compatibility - The `filesystem` and `filesystem_combined` data sources now preserve custom extensions ## 2.1.4 (2008-11-15) - Fixed an issue where the autocompiler in Windows would serve broken assets ## 2.1.3 (2008-09-27) - The `haml` and `sass` 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 ## 2.1.2 (2008-09-08) - The utocompiler now compiles assets as well - The `sass` filter now takes options (just like the `haml` filter) - Haml/Sass options are now taken from the page _rep_ instead of the page ## 2.1.1 (2008-08-18) - Fixed issue which would cause files not to be required in the right order ## 2.1 (2008-08-17) This is only a short summary of all changes in 2.1. For details, see the [nanoc web site](https://nanoc.ws/). Especially the blog and the updated manual will be useful. New: - New `rdiscount` filter ([RDiscount site](https://github.com/davidfstr/rdiscount)) - New `maruku` filter ([Maruku site](https://github.com/bhollis/maruku/)) - New `erubis` filter ([Erubis site](http://www.kuwata-lab.com/erubis/)) - A better command-line 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`: use `erb` or `erubis` instead - `markdown`: use `bluecloth`, `rdiscount` or `maruku` instead - `textile`: use `redcloth` instead ## 2.0.4 (2008-05-04) - 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 ## 2.0.3 (2008-03-25) - 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` ## 2.0.2 (2008-01-26) - nanoc now requires Ruby 1.8.5 instead of 1.8.6 ## 2.0.1 (2008-01-21) - Fixed a “too many open files” error that could appear during (auto)compiling ## 2.0 (2007-12-25) New: - Support for custom layout processors - Support for custom data sources - Database data source - An auto-compiler - Pages have `parent` and `children` 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; use `filters_pre` instead - Support for Liquid ## 1.6.2 (2007-10-23) - Fixed an issue which prevented the content capturing plugin from working ## 1.6.1 (2007-10-14) - Removed a stray debug message ## 1.6 (2007-10-13) - 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 ## 1.5 (2007-09-10) - 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 be `erb` or `erubis` ## 1.4 (2007-07-06) - nanoc now supports ERB (as well as Erubis); Erubis no longer is a dependency - `meta.yaml` can now have `haml_options` property, which is passed to Haml - Pages can now have a `filename` property, which defaults to `index` [Dennis Sutch] - Pages now know in what order they should be compiled, eliminating the need for custom page ordering [Dennis Sutch] ## 1.3.1 (2007-06-30) - The contents of the `assets` directory are now copied into the output directory specified in `config.yaml` ## 1.3 (2007-06-24) - 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` and `create_template` (but not in compile) ## 1.2 (2007-06-05) - Sites now have an `assets` directory, whose contents are copied to the `output` directory when compiling [Stanley Rost] - 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]` ## 1.1.3 (2007-05-18) - Fixed bug which would cause layoutless pages to be outputted incorrectly ## 1.1.2 (2007-05-17) - Backup files (files ending with a “~”) are now ignored - Fixed bug which would cause subpages not to be generated correctly ## 1.1 (2007-05-08) - 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 ## 1.0.1 (2007-05-05) - 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 ## 1.0 (2007-05-03) - Initial release