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
disable
flag in its metadata header, Ivy will not produce an output HTML page for it. (The disable
flag only affects the node itself, not its children.)
6.0.0
-
This release simplifies Ivy internally by merging
Page
objects into Node
objects.
-
Sites and themes should continue working unchanged from v5.x.
-
Plugins may need to be updated if they interacted directly with
Page
objects.
-
The following filters which previously passed
Page
objects have been renamed and moved to the nodes.py
file: page_path
, page_slugs
, page_templates
, page_classes
. These filters now pass the relevant Node
object instead.
5.1.0
-
A new
deploy
command has been added. This command fires a deploy
event hook which plugins
can use to run site deployment scripts.
-
The
make
command has been renamed to add
to avoid confusion with the build
command.
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 call Node.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
argslib
dependency has been updated to version 2.0.0.
3.3.0
-
The
Node.render()
method has been replaced by making Node.html
a dynamically-generated property. Internal caching has been added to nodes to reduce build time.
3.2.0
-
The output of the
tree
command is now sorted by slug.
3.1.0
-
All build command callbacks have been consolidated in the
ivy/cli/build.py
module.
-
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
classes
list 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 bundled graphite
theme.
-
The most significant change for extensions is that the
hooks
module has been split into two separate modules, events
and filters
, 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's config.py
file.
-
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
slug
attribute to the node's metadata.
-
The
tree
command 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 corresponding Node
instance.
-
The
is_homepage
flag has been moved to the root page dictionary. The flags
dictionary has been removed.
-
The
debug
theme has been redesigned.
-
The
renderers
module now defaults to passing unregistered text formats through unchanged.
-
The
Node.init()
method has been replaced by Node.render()
. The init_node
and init_tree
event hooks have been removed.
-
The
Page.render()
method has been renamed Page.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_node
filter has been added to the default build routine in ivy/build.py
. This filter can be used as a switch to determine which nodes get turned into pages.
-
Two new filters,
load_node_dir
and load_node_file
, have been added in ivy/nodes.py
. These filters can be used as switches to determine which files and directories in src
get parsed as nodes.
-
The
includes.py
module has been replaced by a site.includes()
function.
-
The
urls.py
module has been replaced by a utils.rewrite_urls()
function.
-
The
loader.py
module has been replaced by a utils.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
.py
extension before attempting to load files from the extensions directory.
-
Update the
graphite
theme's footnote and infobox styles.
2.8.0
-
Add a
menu_exclude
option 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
--port
option to the watch
command 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
version
tag to the graphite
theme.
-
The YAML extension now uses the
safe_load()
function to parse file headers.
-
Add colored output for the
tree
command.
-
Update the skeleton site to support Syntext 2.0.
-
Files with a
.stx
or .sxt
extension will be rendered as Syntext.
-
Files with a
.mk
or .monk
extension 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
.monk
and .mk
files will continue to work.
-
Small improvements to mobile styles for the
graphite
theme.
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
vanilla
theme from the default distribution.
-
Update the
debug
theme.
-
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
watch
command.
-
Ivy now uses the presence of either a
config.py
file or a hidden .ivy
file to identify a site's home directory.
1.3.0
-
Remove deprecated support for source files in Syntex format.
-
Minor improvements to
graphite
theme styles.
1.2.0
-
Add a sample plugin to the skeleton site's
ext
directory 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.py
site configuration files. These files should be renamed to config.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
.mk
extension.
-
The default port for the
serve
command has been changed from 0
to 8080
.
-
The
watch
command 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
.stx
files 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
graphite
theme 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.py
to config.py
. Old site.py
files will continue to be recognised. (Some Python installations were confusing the site.py
file with the standard library's site
module, causing the interpreter to crash when Ivy was run from the site directory.)