Changelog¶
2.7.7¶
liara serve --adminnow handles feeds and redirection nodes gracefullyFeeds don’t fail to generate if
contentis not populatedRedirectionNodeinstances have new metadata:$sourceand$destinationdescribing the source and destination of the redirection, respectively.
2.7.6¶
liara serveignores changes to.git,.hgand.svnby default now.Thumbnail processing has been improved:
ThumbnailNodeinstances have a new metadata entry,$thumbnail_size, which stores the thumbnail size as a tuple (similar to$image_sizeon images.)Thumbnails can be defined using
longest_edgenow. See templates for more details.
2.7.5¶
Render data files in the
--adminview.Change license to AGPLv3. See
LICENSE.txtfor details. For almost all users, this license change has no implications as the generated output is served.
2.7.4¶
Various improvements to the
--adminview.
2.7.3¶
Add a new
check-toolscommand which verifies that the tools requested in the configuration (for example, the SASS compiler) are present.check-toolscan optionally also help with the installation.Add a new
content_publishedsignal.Rename
image_sizemetadata field on images to$image_size(image_sizeis still present to maintain backwards compatibility.)Add a
$sizemetadata entry to all static files, containing the file size.Generated and resource nodes have a metadata field
$typewith the class name of the underlying node.Add
--adminflag toliara servewhich shows a web-based content view.
2.7.2¶
Add a new
compressionoption to compress files during build time (this may require installingliara[compression]to get access to all compression algorithms.) See configuration for details.
2.7.1¶
Fix
liara servefailing to serve paths which are URL-encoded, for example, paths containing spaces escaped using%20.Fix an error when creating thumbnails for two files with the same base filename (i.e. without the extension.) In this case, a debug message is printed, and the second set of thumbnails is not generated. This would occur if you had two files,
foo.pngandfoo.webp, and liara would try to generate afoo.thumbnail.webpfile for the.png, and then create the same file again for the.webpfile.Fix data files not getting merged properly. Previously, two data files, one containing
key: { value1: ...}and one containingkey: { value2: ...}would not merge correctly, so the resulting dictionary containedkey: { value1: ...}orkey: { value2: ...}depending on the order they were processed. In 2.7.1, the expected result is created instead, which is:key: { value1: ..., value2: ...}.Shortcode names can include dashes now, i.e.
foo-baris now a valid shortcode name.
2.7.0¶
Add a new
inspectcommand. This is useful for debugging internal state:inspect datacan be used to inspect themerged_datacontent.inspect template-matchcan be used to check a template pattern, see Templates.
Change how
serveworks: Previously,servewould miss certain changes to the web site (like adding new files or changing data files.) The new implementation recreates the whole state allowing any change to be done during development.
2.6.4¶
Fix
$datanot being present in shortcodes when usingliara validate-links.
2.6.3¶
Fix
$datanot being present in shortcodes when usingliara serve.
2.6.2¶
Improve cache robustness: Previously, configuration, plugin or data changes would not invalidate the cache, so it had to be cleared manually. This should no longer be necessary.
The cache is now persisted when using
liara serve. This improves performance when callingliara serverepeatedly, as entries are cached between invocations.$datais provided as an additional context to shortcodes. See Shortcodes for more details.Added
jsonsupport forlist-content.Various properties have been properly marked as read-only.
2.6.1¶
Fix
.yamlfiles with UTF-8 content not being read correctly. Now, files with a BOM are correctly recognized, and files without a BOM are assumed to beUTF-8encoded.Fix
Queryfailure when a filter is used in conjunction withreverse, but without specifying a sort order.Fix
readtime()ignoring thewords_per_minuteparameter.Fix
validate-linksfailing on empty documents due to an incorrect assertion.
2.6.0¶
Bump minimum Python version to 3.10.
Improve log output for shortcodes. Use
--debugto see information about each shortcode invocation.
2.5.4¶
Provide the current node as a context variable to shortcode handlers. See Shortcodes for details.
2.5.3¶
Rewrite the
ShortcodePreprocessor. This resolves many issues with the existing preprocessor, for example:Quoted strings containing
/%>are handled correctly now.Multiple shortcodes can be used in one line.
No whitespace is needed before the closing tag.
Non-quoted values can contain
-now (previously, it was an alphanumeric characters or_only)Parsing robustness has generally improved with better error messages.
See Shortcodes for more details.
2.5.2¶
Fix the
commandline_preparedsignal not specifying asender, unlike all other signals.Improve documentation of signals & plugins. See Plugins for more details.
2.5.1¶
Add
excludeandincludeto thumbnail definitions to skip creation of thumbnails for some images. See Templates for more details.
2.5.0¶
Add support for “shortcodes”, that is, function calls embedded in the document source. See Shortcodes for more details.
Add a new configuration option to load plugins from a directory. See Plugins for more details.
Documents which fail to parse don’t abort the build any more. Instead, a warning will be printed pointing to the broken document, and the processing will continue.
Markdown extensions can be configured now. See Configuration for more details. As part of this change, the default output format changed to
html5(previously it wasxhtml.)Add a new
build_contextglobal variable to templates. See Templates for more details.
2.4.1¶
Add support for parallel node processing. This can result in significantly faster build times for sites with many resources. You can use
--no-parallelto disable parallel processing in case this causes problems.Add support for additional thumbnail formats. This also replaces the old mechanism using
image_thumbnail_sizeswith a new configuration setting,image_thumbnails. See Templates for more details.Use
tomllibon Python 3.11 instead oftomli.The
RedisCacheuses transactions now to avoid problems with concurrent access to individual cache items.
2.4.0¶
Note
This release contains breaking changes when using indices and collections. Make sure to review the changelog and the Collections and Indices pages when running into issues after updating.
The main change is that missing metadata fields in collections and indices result in an error now, instead of silently removing items. Use exclude_without to filter nodes missing specific metadata fields. When updating from < 2.4, you can simply copy the order_by/group_by entry in the respective YAML file into exclude_without to get the original behavior back.
Add
Query.with_node_kindsandQuery.without_node_kindstoQuery. This allows lists of nodes (as returned byselect()and other functions) to be filtered by the node kind. This is useful if you want to mix static content and documents in the same folder.Add
SiteTemplateProxy.select_pagesandPage.childrento select pages (i.e. document and index nodes) only without having to manually filter the result usingwith_node_kinds/without_node_kinds.Add
node_kindstoCollection.__init__to allow constraining a collection to a specific node kind. See Collections for more details.Add
exclude_withouttoCollection.__init__andIndex.__init__to allow excluding items without a specific metadata field.Improve the debug output during publishing. The template publisher will now print which document is published using which template. As part of this change,
Template.pathwas added.Change how
Page.referencesis populated for top level indices. Previously,referenceswould not be populated for a top-level index. Additionally, improve the documentation of top-level indices, see Indices for more details.Improve error handling when trying to sort nodes which are missing the corresponding metadata key, for example, using
sorted_by_title(). Previously, this would raise an exception about a failed comparison involvingNone, now this raises a more useful exception which contains the path to the item missing the metadata key and which key was requested.
2.3.5¶
Add
--no-cacheoption toliara serveandliara build(off by default.)In some cases, it may be necessary to disable the cache to ensure up-to-date output during development. For instance
SASSfiles can have includes which are not tracked byliaraand fail to trigger a rebuild. With--no-cacheeach file is rebuilt on each request. This can be very slow and is thus only recommended during template/style development.Improve the
liara validate-linkscommand:Check internal links by default. Previously, if run without
-t, no links were checked.Return a non-zero exit code if broken links are found
Add more debug output
Fix an issue which prevented timeouts from being reported correctly.
2.3.4¶
Add a new configuration option to select the SASS compiler. See configuration for details.
Note
The option is set to
libsassby default for now, but it is highly recommended to install the command line compiler and use it. The option to uselibsasswill be removed in a future release.Add support for caching to
SassResourceNode. This can significantly speed up building sites with large amounts of SASS files.Change the default log formatting settings:
The default output no longer includes the source. The source refers (typically) to the class producing the log message and results in noise for most normal use of Liara.
The verbose output includes the message severity now. This makes it easier to spot warnings and errors in the verbose output.
The debug output level contains both the source and the severity.
2.3.3¶
Improve error handling during publishing. A generated node that fails to produce content is now skipped and a warning is printed.
Non-fatal issues (i.e. those which don’t stop the build) use the
warninglog level now instead oferror.Update
PyYAMLdependency to 6.0.Update
pymdown-extensionsdependency to 9.0.Replace
tomldependency withtomliwhich is TOML 1.0 compliant (tomlonly supports TOML 0.5)Add Python 3.10 as an officially supported version.
2.3.2¶
Add a new
--dateoption to the command line to build the site at a different date. This is useful conjunction with theDateFilter, as it allows previewing scheduled entries.Improve error handling during content discovery. An error while creating a document will no longer abort the build. Additionally, instead of printing a full stack trace, an short error message containing the file path is printed. In any case, discovery continues so multiple broken documents can be identified.
2.3.1¶
2.3.0¶
Add a
--portoption toliara serveto change the listen port.Add an
ignore_filesoption to ignore certain file patterns. This is particularly useful if an editor creates lock or backup files that should be ignored. See Configuration for details.The file discovery process will ignore invalid index and resource files instead of failing with an exception. An error will be logged to help find the problematic files.
Fix
liara list-contentnot showing the node type on_indexnodes.Handling of metadata has changed:
Document metadata can be placed in a separate
.metafile instead of being part of the document itself. See Content for details.Separate
.metafiles for metadata are no longer supported in the static and resource directory. This previously didn’t work as expected – resource files with.metafiles associated had the.metafile processed (which would cause a failure), and static files had the.metafile added as a separate static file. From this release on,.metafiles don’t get any special treatment when placed in the static or resource directory trees. Static files inside the content directory continue to support metadata files. See Content for details.
2.2.1¶
Mako is now installed by default, and the
makoextra is gone. If you installed Liara usingliara[mako], please switch toliaragoing forward.liara.template.Page.contentnow returns an empty string forIndexNodeinstances. Previously, it would raise an exception.liara quickstartgained a new option,--template-backend, which allows selecting betweenjinja2andmakotemplates.The collection sort order can be reversed now. See Collections for details.
2.2.0¶
Bump minimal required Python version to 3.8.
liara servenow uses the cache configuration specified by the user instead of always using a filesystem cache with fixed paths.Add
RedisCache, which uses Redis as the storage backend. Using Redis in a shared environment allows multiple clients to benefit from the cache. Additionally, the Redis cache allows for cache entries to expire, so it won’t accumulate garbage over time (i.e. draft posts which never get published, etc.) See Configuration for details on how to enable Redis. Redis also requires Liara to be installed with the[redis]option.
2.1.3¶
Fix
liara quickstartnot working.Fix a bug when fixing up timezones while using the
zoneinfopackage for timezone data.
2.1.2¶
Deprecate
liara.template.Page.metain favor ofliara.template.Page.metadata(which was newly added in this version) for consistency withliara.template.SiteTemplateProxy.metadata.Use the logger in
liara serveinstead of printing directly to the console for log messages. The default listen URL will be still printed if showing the browser is disabled.Set the
Content-Typeheader inliara serve. This fixes an issue with Chrome/Edge where SVG images would not work as they were served without a content type.Update
jinja2dependency to 3.0. This provides access to new Jinja2 features like required blocks.Update
clickdependency to 8.0.
2.1.1¶
Fix plugins not being packaged.
2.1.0¶
Introduce a new plugin system. This moves the
has-pending-documentcommand into a new plugin and adds signals to interact with Liara’s processing. See Plugins for details.Remove
liara.version.version. Use the standardliara.__version__variable instead, which was already present in earlier versions.
2.0.7¶
Add a
server_rule_onlyoption to prevent the creation of redirection nodes and use the redirection paths verbatim.
2.0.6¶
Add
has-pending-documentto the command line. This will check if there is any content which is filtered by theDateFilter. This is useful for cron-based deploys which try to not rebuild if there are no content changes, as there is no other way to find out if all content in a given revision has been published.
2.0.5¶
Fix
liara create-confignot working.
2.0.4¶
Add
Sqlite3Cache, which allows caching everything into a single file instead of one file per entry.Add a bytecode cache for the
Jinja2TemplateRepository.Fix generated nodes not getting generated when using
liara serve.Reduce debug spew when stopping
liara serveusing^C.
2.0.3¶
Add
get_page_by_url().
2.0.2¶
Fix a packaging issue.
2.0.1¶
Improve document handling: Documents without a trailing newline are now supported, previously they would cause an error.
Improve configuration: Empty configuration files are now supported.
Fix
list-filesrequiring a type to be specified.Add
exclude().Override
base_urlwhen serving locally. This was previously documented to work, but not implemented. As part of this change,set_metadata_item()was added.
2.0¶
liara 2.0 is a complete rewrite of liara, with no shared code with the 1.x series. liara 2 is now template & content driven, and no longer just a library which simplifies static page generation. Unlike the 1.x series, it is possible to use liara 2 without writing any Python code.