Haunt 0.3.0 released

February 19, 2024

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 for rsync 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 original post-slug transforms 0.3.0 to 030 while post-slug-v2 transforms it to 0-3-0. Unfortunately, the original post-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 their site arguments in haunt.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 to haunt 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 to haunt serve.

  • Added Access-Control-Allow-Origin: * header to HTTP responses in haunt serve to avoid CORS issues while developing.

  • Added post-author, post-tags and post-title convenience procedures.

  • Added reader-find and reader-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 to GUILE_LOAD_PATH and GUILE_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 of summary 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!