6.2.0
- 
Event and filter hooks are now implemented as enums instead of strings.
This change is backwards compatible — string hook names will continue to work as before.
(Thanks to gvwilson for the pull request.)
6.1.0
- 
This release adds support for disabling nodes — if a node has a disableflag in its metadata header, Ivy will not produce an output HTML page for it. (Thedisableflag only affects the node itself, not its children.)
6.0.0
- 
This release simplifies Ivy internally by merging Pageobjects intoNodeobjects.
- 
Sites and themes should continue working unchanged from v5.x.
- 
Plugins may need to be updated if they interacted directly with Pageobjects.
- 
The following filters which previously passed Pageobjects have been renamed and moved to thenodes.pyfile:page_path,page_slugs,page_templates,page_classes. These filters now pass the relevantNodeobject instead.
5.1.0
- 
A new deploycommand has been added. This command fires adeployevent hook which plugins
can use to run site deployment scripts.
- 
The makecommand has been renamed toaddto avoid confusion with thebuildcommand.
5.0.0
- 
There are no breaking changes to Ivy in this release but the Ibis dependency version
has been updated to v3.0. If you've been using Ibis templates you should note that the default
syntax for escaped print tags has changed to {$ varname $}.
4.1.0
- 
The internal logic of the hashing module has been simplified.
- 
The Node.update()method has been removed. You can callNode.meta.update()directly
if required.
4.0.0
- 
There are no breaking changes to Ivy in this release. I've bumped the version number as two of
Ivy's dependencies, the Shortcodes and Ibis packages, have been updated and users
may want to test their sites for compatibility before updating.
- 
The Shortcodes dependency version has been updated
to v5.0. The only difference end users should notice is improved error messages.
- 
The Ibis dependency version has been updated to v2.0.
If you've been using Ibis templates you'll want to note that Django-style colon-syntax is no
longer supported for function and filter arguments — you should use bracket-syntax instead.
Also, variables that resolve to callables are no longer called automatically — you need to
explicitly call functions using brackets, e.g. {{ some.func() }}.
3.5.0
3.4.0
- 
A new convenience command, open, has been added for opening@root/urls in the default browser.
- 
The argslibdependency has been updated to version 2.0.0.
3.3.0
- 
The Node.render()method has been replaced by makingNode.htmla dynamically-generated property. Internal caching has been added to nodes to reduce build time.
3.2.0
- 
The output of the treecommand is now sorted by slug.
3.1.0
- 
All build command callbacks have been consolidated in the ivy/cli/build.pymodule.
- 
The end-of-build report has been updated.
3.0.0
- 
Most changes in this release are internal and won't affect existing sites or themes. Extensions will need to be updated but the required changes should be minor.
- 
One small change which may affect themes — the classeslist for the<body>element is now a list of strings rather than a single string. These strings can be concatenated using a template filter as demonstrated in the bundledgraphitetheme.
- 
The most significant change for extensions is that the hooksmodule has been split into two separate modules,eventsandfilters, to make its operation clearer and conceptually simpler. Existing@hooks.register()decorators in extensions will need to be renamed to either@events.register()or@filters.register()but should otherwise work unchanged.
- 
This release switches to a new library for parsing command line arguments, argslib. The command line interface has also been simplified by removing all options for customizing site directories (src,out, etc.). These directories can now be customized from the site'sconfig.pyfile.
- 
In general, code has been ruthlessly simplified wherever possible. In particular, the internal structure of the node tree is now significantly simpler.
- 
URL path slugs are now customizable and no longer tied to filenames. The slug can be customized by adding a slugattribute to the node's metadata.
- 
The treecommand for inspecting site structure has been substantially enhanced.
- 
A convenience command, make, has been added for creating new node files.
- 
@root/urls in angle brackets are no longer rewritten. This "feature" was a solution in search of a problem.
- 
The nodes.node()function now takes an@root/url and returns the correspondingNodeinstance.
- 
The is_homepageflag has been moved to the root page dictionary. Theflagsdictionary has been removed.
- 
The debugtheme has been redesigned.
- 
The renderersmodule now defaults to passing unregistered text formats through unchanged.
- 
The Node.init()method has been replaced byNode.render(). Theinit_nodeandinit_treeevent hooks have been removed.
- 
The Page.render()method has been renamedPage.write().
- 
The sample shortcode extension has been replaced by a set of examples in the documentation.
- 
The shortcodes dependency version has been upgraded to 3.0. Shortcode handler functions will need to be updated to reflect the updated API.
- 
A build_nodefilter has been added to the default build routine inivy/build.py. This filter can be used as a switch to determine which nodes get turned into pages.
- 
Two new filters, load_node_dirandload_node_file, have been added inivy/nodes.py. These filters can be used as switches to determine which files and directories insrcget parsed as nodes.
- 
The includes.pymodule has been replaced by asite.includes()function.
- 
The urls.pymodule has been replaced by autils.rewrite_urls()function.
- 
The loader.pymodule has been replaced by autils.loadfile()function.
2.10.0
- 
Update the required Python version to 3.8.
- 
Make the shortcodes package an optional dependency.
- 
Simplify the sample site configuration file.
2.9.0
- 
Check for a .pyextension before attempting to load files from the extensions directory.
- 
Update the graphitetheme's footnote and infobox styles.
2.8.0
- 
Add a menu_excludeoption to omit nodes from automatically-generated menus.
2.7.0
- 
Simpler directory structure for newly initialized sites.
- 
The sample shortcode plugin has been moved into core.
2.6.0
- 
Add a --portoption to thewatchcommand to set the port number the test server will run on.
2.5.0
- 
Remove SSL support from the test server.
2.4.0
- 
Improved error handling and reporting for extension errors.
- 
Add a versiontag to thegraphitetheme.
- 
The YAML extension now uses the safe_load()function to parse file headers.
- 
Add colored output for the treecommand.
- 
Update the skeleton site to support Syntext 2.0.
- 
Files with a .stxor.sxtextension will be rendered as Syntext.
- 
Files with a .mkor.monkextension will no longer be rendered as Syntext.
2.3.0
- 
The cache file is now stored in %LOCALAPPDATA%instead of the user's home directory on Windows.
2.2.0
- 
Add Windows support for colored terminal output.
- 
Update Ivy to reflect the Monk to Syntext name change. Old .monkand.mkfiles will continue to work.
- 
Small improvements to mobile styles for the graphitetheme.
2.1.0
- 
Add colored terminal output.
2.0.0
- 
Add Python 3.6 type hints throughout the codebase.
- 
Update the minimum required Python version to 3.6.
- 
Remove the vanillatheme from the default distribution.
- 
Update the debugtheme.
- 
Refactor modules to clarify the distinction between public and private interfaces. Private methods and variables now have names beginning with an underscore.
- 
The default build process now skips empty nodes, i.e. nodes that correspond to a directory without an associated source file.
- 
Add Windows support for the watchcommand.
- 
Ivy now uses the presence of either a config.pyfile or a hidden.ivyfile to identify a site's home directory.
1.3.0
- 
Remove deprecated support for source files in Syntex format.
- 
Minor improvements to graphitetheme styles.
1.2.0
- 
Add a sample plugin to the skeleton site's extdirectory that registers an[% include %]shortcode.
1.1.0
- 
Refactor url rewriting as a separate module.
- 
Fix a Windows bug in the algorithm for finding the site's home directory.
- 
Remove deprecated support for site.pysite configuration files. These files should be renamed toconfig.py.
1.0.0
- 
First stable release. Future releases will adhere to semantic versioning for changes which affect the theme or plugin API.
- 
This release adds support for Monk files with a .mkextension.
- 
The default port for the servecommand has been changed from0to8080.
- 
The watchcommand now automatically launches the test server to view the site.
- 
We revert to the original algorithm for locating and rewriting @root/urls, i.e. only urls enclosed in quotes or angle brackets will be rewritten. (Quotes are preserved, angle brackets evaporate.)
0.9.0
- 
Ivy has been updated to support Monk 1.0, the markup language previously named Syntex. Old .stxfiles will continue to be supported.
0.8.0
- 
The argument-parsing library for the command line interface has been changed
from Clio to Janus.
- 
The default graphitetheme now supports a meta description tag.
0.7.0
- 
The algorithm for locating and rewriting @root/urls has been changed. Previously only@root/urls enclosed in quotes or angle brackets were rewritten; now all@root/urls are rewritten unless escaped by a preceding backslash.
0.6.0
- 
The site configuration file has been renamed from site.pytoconfig.py. Oldsite.pyfiles will continue to be recognised. (Some Python installations were confusing thesite.pyfile with the standard library'ssitemodule, causing the interpreter to crash when Ivy was run from the site directory.)