Haunt version 0.3.0 has been released! It’s been just over 2 years since the last release, and many fixes and improvements have been accumulated so this is long overdue!
About Haunt
Haunt is a static site generator that uses the Guile Scheme as its configuration language. It aims to be simple, functional, and extensible.
Features include:
- Easy blog and Atom/RSS feed generation
- Markdown post support
- Simple development server for viewing edits before publishing
- Purely functional build process
- User extensibility
Notable changes
Added first-class support for publishing Haunt websites via new
(haunt publisher)
module. For starters, publishers forrsync
and Sourcehut are included. See the manual for more details.Added
haunt publish
command. See the manual for more details.Added the oft-requested “flat pages” builder. Flat pages cover the simple case of converting a tree of files written in some markup language to full web pages. They work great for the more informational parts of a website that don’t require any fancy programming to generate, like an “About me” page. See the manual for more details.
Added
post-slug-v2
procedure that fixes problems with the original slug generator. For example, the originalpost-slug
transforms0.3.0
to030
whilepost-slug-v2
transforms it to0-3-0
. Unfortunately, the originalpost-slug
is effectively set in stone because changing it would break existing URLs upon upgrade. Users can opt-in to the new slug generator by adding#:make-slug post-slug-v2
to theirsite
arguments inhaunt.scm
.Added redirects builder which generates HTML pages that perform client-side redirects. Useful for cases when you don’t have control over web server configuration or just want to have more “configuration as code”. This builder will definitely come in handy if you choose to upgrade to
post-slug-v2
. See the manual for more details.Added collection pagination support to blog builder.
haunt serve --watch
reloads user Scheme modules when they change on disk.Added
--host
option tohaunt serve
.post-time
now returns a fallback value if there is no timestamp on the post rather than#f
.Added
application/wasm
MIME type support tohaunt serve
.Added
Access-Control-Allow-Origin: *
header to HTTP responses inhaunt serve
to avoid CORS issues while developing.Added
post-author
,post-tags
andpost-title
convenience procedures.Added
reader-find
andreader-read
procedures.Added
#:post-prefix
parameter to blog builder, allowing for post pages to nested deeper than collection pages in the resulting file hierarchy.Added documentation for RSS builder.
Added
#:last-updated
parameter to atom and RSS feed builders for reproducible generation of feeds that don’t change timestamps every build.Fixed
haunt
executable so that it automatically adds its own modules toGUILE_LOAD_PATH
andGUILE_LOAD_COMPILED_PATH
. This addresses a longstanding source of confusion when users install Haunt to a location that isn’t on Guile’s default load path such as/usr/local
.Fixed atom feed generation issues such as using
content
instead ofsummary
for blog post contents and “self” URLs that did not have a URI scheme.Fixed blog builder to only render pages for posts that are in a collection rather than all posts.
Fixed inotify integration so that it is not compiled or loaded on non-Linux platforms.
Download
Haunt 0.3.0 is already available in Guix:
guix pull
guix install haunt
Otherwise, you can build from source:
Source tarball: haunt-0.3.0.tar.gz
GPG signature: haunt-0.3.0.tar.gz.asc
See the Haunt project page for more information.
Thank you to Richard Sent, Denys Nykula, Yuval Langer, Filip Lajszczak, jgart, Jelle Licht, and Christine Lemmer-Webber for their contributions to this release.
Happy haunting!