Releases: glaciers-in-archives/snowman
0.6.1
Snowman 0.6.1 ⛄
This is a patch release fixing an issue causing the get_remote
function to expect two arguments instead of the intended one. It also improves Windows support and brings a quality of life improvement to view definitions.
Changes 🎈
Bug fixes 🪲
- On Windows, paths to queries in
views.yaml
do longer need double slashes(\\
) #100 get_remote
now only expects one parameter as prior to 0.6.0.
Other changes 🍿
- There can now be spaces surrounding references to variables in
views.yaml
. #102
Installing Snowman 🌨
Download the binary for your OS/architecture, rename it to "snowman", and place it in a directory on your path. Alternatively, place it in your project folder and execute it with the ./
prefix.
We provide binaries for six architectures/operation systems, if none of these are suitable for you, you can build it from source. If you think we should provide pre-built binaries for additional platforms, consider raising an issue.
Roadmap and Snowman 0.7.0 🗺
Let us know what we should include in Snowman 0.7.0 either by raising an issue or opening a discussion.
Note that there is currently a discussion open regarding a potential breaking change for math template functions and there is a plan to change the interface of the cache
CLI command.
Discuss 💬
You can discuss this release or other aspects of Snowman in the forum.
0.6.0
Snowman 0.6.0 ⛄
This release is the sixth non-experimental release of Snowman, a static site generator for SPARQL backends. This release brings you support for forwarding multiple arguments to include
and include_text
, under the hood template functions has been reworked to ensure test-ability, and the SPARQL-client from a third-party dependency has been replaced with our own.
Features and changes 🎈
Breaking changes ⚠️
mul
andadd
now only takes two arguments instead of an unlimited number.- Multi-page path targets can no-longer start or end with
.
.
Here are some of the most notable changes:
CLI 🛠
- Most of the output from the
build
command has been removed. Non-warnings/errors can still be enabled by passing the new--verbose
option. - The
build
command will now exit if a bad multi-page path target is being referenced instead of quietly replace the illegal pattern with underscores.
Template functions 🛠
include
andinclude_text
can now take an unlimited set of arguments. #79contains
is a new template function for checking if a string contains another string. #94get_remote
andget_remote_with_config
now supports URL arguments of other types thanstring
(such asiri
). #89add
andmul
now only supports two arguments at a time.
Documentation 📄
- The template functions
include
andinclude_text
has been documented. #85 - The limit argument of
replace
has been documented. #84 - There are new documentation regarding Snowman development itself.
- The
build
command flagconfig
has been documented. - The template functions
has_suffix
andhas_prefix
has been documented. #82
Bug fixes 🪲
- The template functions
to_json
andfrom_json
are now available in child templates as intended. #90
Other changes 🍿
/
can now be used in multi-page path targets.- Multi-page path targets can no longer be empty.
- Multi-page path targets can no-longer start or end with
.
.
Installing Snowman 🌨
Download the binary for your OS/architecture, rename it to "snowman", and place it in a directory on your path. Alternatively, place it in your project folder and execute it with the ./
prefix.
We provide binaries for six architectures/operation systems, if none of these are suitable for you, you can build it from source. If you think we should provide pre-built binaries for additional platforms, consider raising an issue.
Roadmap and Snowman 0.7.0 🗺
Let us know what we should include in Snowman 0.7.0 either by raising an issue or opening a discussion.
Note that there is currently a discussion open regarding a potential breaking change for math template functions and there is a plan to change the interface of the cache
CLI command.
Discuss 💬
You can discuss this release or other aspects of Snowman in the forum.
0.5.0
Snowman 0.5.0 ⛄
This release is the fifth non-experimental release of Snowman, a static site generator for SPARQL backends. This release is a rather small one given our release history but it brings you a new --conflig
build parameter as well as two important bugs fix next to various changes to the documentation.
Features and changes 🎈
There are no breaking changes in this release.
Here are some of the most notable changes:
CLI 🛠
- A new
--config
flag for thebuild
command which allows you to points to other configuration files than the defaultsnowman.yaml
.
Documentation 📄
- Added documentation for Go's built in
print
template function - Removed an obsolete note about functions not understanding RDF terms
- Added documentation for the view option
unsafe
. Thank you @mzeinstra! ⭐
Template functions 🛠
- Added
int
which casts values to integers.
Bug fixes 🪲
- Fixed a bug causing
site
files from previous build runs not to clear - Fixed a bug causing the
query
template function to incorrectly inject parameters if called with more than one has been fixed. #68 Thank you @LvanWissen! ⭐
Known issues
- Snowman 0.4.0 appears to have introduced a dependency on LibC, this is not intended. If you are affected, either install a matching LibC version or build Snowman from source on your target platform. #72
Installing Snowman 🌨
Download the binary for your OS/architecture, rename it to "snowman", and place it in a directory on your path. Alternatively, place it in your project folder and execute it with the ./
prefix.
We provide binaries for six architectures/operation systems, if none of these are suitable for you, you can build it from source. If you think we should provide pre-built binaries for additional platforms, consider raising an issue.
Roadmap and Snowman 0.6.0 🗺
Let us know what we should include in Snowman 0.6.0 either by raising an issue or opening a discussion.
Discuss 💬
You can discuss this release or other aspects of Snowman in the forum.
0.4.0
Snowman 0.4.0 ⛄
This release is the fourth non-experimental release of Snowman, a static site generator for SPARQL backends. This release-cycle has focused on advanced template improvements and features that allow one to access remote or system resources. We can't wait to see what you will do with this new set of capabilities!
Features and changes 🎈
There are no breaking changes in this release.
Here are some of the most notable changes:
Template features 🛠
- New
read_file
template function for reading local files. - New
current_view
template function for accessing configuration of the current view being rendered. - New
get_remote
template function for fetching information from remote URLs. - New
from_json
template function which parses JSON. - New
re_replace
template function which can be used to replace substrings with Regular Expressions. - The
query
template function now takes an unlimited number of arguments.
Documentation 📄
- A new example showing how to make nested lists with a single SPARQL query.
- A new example showing how to fetch and parse remote JSON.
- A new example showing how to read the project's query files.
Bug fixes 🪲
- Fixed a bug causing very large project builds to fail on UNIX systems.
Installing Snowman 🌨
Download the binary for your OS/architecture, rename it to "snowman", and place it in a directory on your path. Alternatively, place it in your project folder and execute it with the ./
prefix.
We provide binaries for six architectures/operation systems, if none of these are suitable for you, you can build it from source. If you think we should provide pre-built binaries for additional platforms, consider raising an issue.
Roadmap and Snowman 0.5.0 🗺
Let us know what we should include in Snowman 0.5.0 either by raising an issue or opening a discussion.
Discuss 💬
You can discuss this release or other aspects of Snowman in the forum.
0.3.1
Snowman 0.3.1 ⛄
This release is a security release for Snowman, a static site generator for SPARQL backends. It resolves an issue with multipage views which could lead to a malicious actor in control of a SPARQL endpoint, creating files outside of your project directory.
Features and changes 🎈
Breaking changes
You can no longer use the following characters in the variables used to render multipage view at a given path: ~
/ /
/ :
/ *
/ ?
/ "
/ <
/ >
/ |
If such a character is present Snowman will replace it with _
.
Security issue explanation
Snowman's multipage views take an argument to decide the path in which to render a file.
- output: "prints/{{qid}}.html"
Using versions prior to 0.3.1 one could escape out of the project directory with variable values such as ../..
, which would result in Snowman rendering pages outside of the intended directory. This could be used by a malicious actor if they controlled the contents of your SPARQL endpoint.
How to check if you are affected
If you use a SPARQL endpoint in which you trust the contents and which hasen't suffered breaches you should not be affected. It can still be good to verify this using the following steps.
You can find suspicious data by searching the contents of your SPARQL cache files which Snowman stores in your project directory under .snomwan/cache
. Search these files for patterns like ../
and inspect the results.
If you have a lot of data in your cache directory or want to review the files related to the query used to generate multipage views. Then you can inspect the content of such files using the Snowman cache
command(snowman cache <name-of-query>
).
If you are in a temporary or sandboxed environment such as a container you can build your site as usual and inspect the Rendered page at
messages as these will display the full path.
Acknowledgments
This issue was discovered and reported by @lucaswerkmeister. ⭐
Installing Snowman 🌨
Download the binary for your OS/architecture, rename it to "snowman", and place it in a directory on your path. Alternatively, place it in your project folder and execute it with the ./
prefix.
We provide binaries for six architectures/operation systems, if none of these are suitable for you, you can build it from source. If you think we should provide pre-built binaries for additional platforms, consider raising an issue.
Roadmap and Snowman 0.4.0 🗺
Snowman 0.4.0 has yet to reach feature freeze.
Discuss 💬
You can discuss this release or other aspects of Snowman in the forum.
0.3.0
Snowman 0.3.0 ⛄
This release is the third non-experimental release of Snowman, a static site generator for SPARQL backends.
Features and changes 🎈
There are no breaking changes in this release.
This release brings a series of productivity features and template improvements. Here are some of the most notable changes:
Productivity features 🏇
snowman new
is a new command which can scaffold a new Snowman project. #33
Template features 🛠
- New
trim
template function. #36 - New
has_prefix
andhas_suffix
template functions #38 - New
version
template function. #44 - You can now use
{{continue}}
and{{break}}
in loops.
Installing Snowman 🌨
Download the binary for your OS/architecture, rename it to "snowman", and place it in a directory on your path. Alternatively, place it in your project folder and execute it with the ./
prefix.
We provide binaries for six architectures/operation systems, if none of these are suitable for you, you can build it from source. If you think we should provide pre-built binaries for additional platforms, consider raising an issue.
Roadmap and Snowman 0.4.0 🗺
Snowman 0.4.0 has yet to reach feature freeze.
Discuss 💬
You can discuss this release or other aspects of Snowman in the forum.
0.2.0
Snowman 0.2.0 ⛄
This release is the second non-experimental release of Snowman, a static site generator for SPARQL backends.
Features and changes 🎈
There are no breaking changes in this release.
This release brings a series of productivity features, template improvements, bug fixes, and documentation improvements. Here are some of the most notable changes:
Productivity features 🏇
snowman build
prints a warning when it writes to a file twice. #19snowman cache
can now invalidate unused cache items. #5snowman build --static
now lets you build only static files. #23
Template features 🛠
- All string functions as well as
query
, andsafe_html
now tries to cast any given arguments to a string. - New
to_json
template function. #20 - New
type
template function.
Documentation ✍️
- The readme has been copyedited. Thank you @hughlilly!
- There is a new example showcasing Snowman's multilingual capabilities.
- There is a new example showcasing Snowman's configuration options.
- The
snowman server
command has been documented.
Bug fixes 🐛
snowman server
did not display an error if the port or address were already in use. #22- cache invalidation did not print its actions.
Installing Snowman 🌨
Download the binary for your OS/architecture, rename it to "snowman", and place it in a directory on your path. Alternatively, place it in your project folder and execute it with the ./
prefix.
We provide binaries for six architectures/operation systems, if none of these are suitable for you, you can build it from source. If you think we should provide pre-built binaries for additional platforms, consider raising an issue.
Roadmap and Snowman 0.3.0 🗺
While Snowman 0.3.0 has yet to reach feature freeze, it's already in the works. Some planned features include:
- Cached includes. #32 (in progress)
- Add a command to scaffold a working project. #33
- Several new template functions. (#35 #36 #37 #38)
Discuss 💬
You can discuss this release or other aspects of Snowman in the forum.
0.1.0
Snowman 0.1.0
This release is the first non-experimental release of Snowman, a static site generator for SPARQL backends.
Snowman's templating system comes with RDF and SPARQL tailored functions and features and takes its data from SPARQL queries. Snowman is designed to allow RDF-based projects to use SPARQL in the user-facing parts of their stack, even at scale. While Snowman today drops the "experimental" warning it's already in use and powers both projects rendering simple SKOS vocabularies as well as projects rendering complex knowledge bases.
Installing Snowman
Download the binary for your OS/architecture, rename it to "snowman", and place it in a directory on your path. Alternatively, place it in your project folder and execute it with the ./
prefix.
We provide binaries for six architectures/operation systems, if none of these are suitable for you you can build it from source. If you think we should provide pre-built binaries for additional platforms consider raising an issue.
Getting started with Snowman
The Snowman README contains a tutorial-like introduction to Snowman. There are also several example projects available:
- Wikidata - an example using Wikidata's public SPARQL endpoint
- Advanced static - an example showcasing how to work with static files
- Sitemap - an example rendering a sitemap
- Non-HTML content - an example of rendering JSON content
- Inline queries - an example showcasing how to issue SPARQL queries from within templates
Known issues
- View templates using layouts inherit block values 🐛 #8
snowman server
does not print an error message when the server port is already in use 🐛 #22
Roadmap and Snowman 0.2.0
Snowman 0.2.0 focuses on developer experience. Some highlights include:
- Add a template function that can convert data to JSON #20
snowman cache
should be able to invalidate unused cache items #5- Snowman should print a warning when it overwrites files #19
This release does not mean that Snowman is stable it does however mean that one will have consistent releases to which one can pin their projects. Breaking changes will be announced at least one version ahead of the change.
Discuss
You can discuss this release or other aspects of Snowman in the forum.