summaryrefslogtreecommitdiff
path: root/posts/2024-02-19-haunt-0.3.0-released.md
blob: a3b47130030b3cb120e68e20fe1e079c560eaab3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
title: Haunt 0.3.0 released
date: 2024-02-19 10:30:00
tags: haunt, release
summary: Haunt 0.3.0 released
---

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](https://files.dthompson.us/docs/haunt/latest/Publishers.html)
  for more details.

* Added `haunt publish` command.  See [the
  manual](https://files.dthompson.us/docs/haunt/latest/Invoking-haunt-publish.html)
  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](https://files.dthompson.us/docs/haunt/latest/Flat-pages.html)
  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](https://files.dthompson.us/docs/haunt/latest/Redirects.html)
  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](https://files.dthompson.us/docs/haunt/latest/RSS.html).

* 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](https://guix.gnu.org/):

```
guix pull
guix install haunt
```

Otherwise, you can build from source:

Source tarball: [haunt-0.3.0.tar.gz](https://files.dthompson.us/haunt/haunt-0.3.0.tar.gz)

GPG signature: [haunt-0.3.0.tar.gz.asc](https://files.dthompson.us/haunt/haunt-0.3.0.tar.gz.asc)

See the [Haunt project page](/projects/haunt.html) 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!