Skip to content

Folia 0.2.0

The second pre-1.0 release of Folia, the Rust static-site generator behind ggirelli.info. It adds a local preview server, preview builds of drafts and scheduled posts, reproducible builds as of a moment, and the first release binary.

Read this first. Like 0.1.0, this is a release of the software. It does not mean the Jekyll site has been replaced, or is ready to be: Folia's output equals Jekyll's for most outputs and differs, on purpose or known, for the rest (known limitations). Folia is fully vibe coded: tested, not audited, and provided without warranty. It is built for one website and is not a general-purpose static-site generator.

What is new

  • folia serve builds the site, serves it on a local address and builds it again when a file changes, reloading the open pages. Each rebuild is stamped with the local time of day ([14:03:22] Changed: …). See Previewing while you write and its limitations.

    A rebuild writes only the files whose bytes changed, and removes those the build no longer makes, instead of replacing the whole destination. On a slow disk this is the difference between minutes and seconds: a rebuild into a slow external disk drops from minutes to seconds. Each file is still replaced whole, never served half-written. - Preview builds: folia build and folia serve take --future (documents dated after the build) and --unpublished (documents whose front matter says published: false). A preview build is not for publishing, and folia build refuses to replace a normal build with one, or the reverse. See Previewing drafts and scheduled posts. - folia build --at <TIME> builds as of an RFC 3339 timestamp instead of now, so the same sources give the same site on any day. See Building as of a moment. - Redirect stubs in the site's colours: a [redirects] table with background and color-scheme paints the stubs Folia writes for redirect_from from their first frame, so an old URL no longer flashes a white page on a dark site. Without it, a stub is as before. See [redirects]. - page.lang: the front matter lang of a post, garden note, micro entry or page reaches templates as written ([italian] or italian), and is absent without one. - noindex: a page's front matter may say noindex: true, which its template sees as page.noindex (false by default), so a site can keep one page, such as its 404, out of search results by writing a robots tag. Before, the key was refused and the page skipped. - A release binary: a release workflow builds folia for Linux x86_64 from the tag, with a SHA-256 checksum and a build-provenance attestation. See Install and Releasing. - Documentation: a user guide (getting started, content, templates, building and deploying, feeds, sitemap and search), a guide to migrating from Jekyll, and the parity tools reduced to a reference for that exercise. The design plans were removed from the docs; they remain in the git history. - Checks: the Jekyll parity checks moved out of just check into just check-parity, so the default check needs no Ruby.

Upgrading from 0.1.0

Nothing in a 0.1.0 site's sources or configuration needs to change. A dark site may add [redirects] to colour its redirect stubs. If your feeds name Folia's version as their generator, update it to 0.2.0. A destination written by a preview build (--future or --unpublished) is refused by a normal folia build, and the reverse: build previews into a directory of their own.

Install

Download folia-v0.2.0-x86_64-unknown-linux-gnu.tar.gz and its .sha256 file from this release, or build from source (cargo build --release -p folia). See Getting started.

Known limitations

Unchanged from 0.1.0, plus those of folia serve: every change rebuilds the whole site, a git commit alone triggers nothing, and the served site's URLs are local. See Known limitations.