Name
tilder 1.4.1 - an ASCII text mirror, a working example for production, one-line TOML errors
tilder 1.4.1 is out, and the site is built with it. The image is ghcr.io/thosted/tilder:1.4.1.
The text mirror is ASCII, whatever the source holds
txt/ promises plain ASCII, but a character neither in the fold table nor an accented letter used to pass through unfolded: an arrow in a label, an emoji typed into a description, reached txt/ as it was. to_ascii now drops any character that is still not ASCII once the usual folds and the accent-stripping are done, and folds more of them first: ↑ to ^, ← to <-, ≥ to >=, ß to ss, and a few more signs and stroked letters. The man header, the updated date, a profile's link and an image's path are folded too, not only the page's prose (the text mirror).
The example compose file works in production again
examples/Caddyfile's AUTO_HTTPS was documented as on for production - a value Caddy does not accept, since auto_https has no on. It is ignore_loaded_certs now, which keeps automatic HTTPS and changes nothing else. examples/compose.yaml also publishes Caddy's 443 and keeps the certificates it obtains in a caddy-data volume, across restarts, and its ports come from the environment, HTTP_PORT/TEXT_PORT/HTTPS_PORT, defaulting to 8080/8081/8443 as before (deployment).
An invalid site.toml is one error line
A syntax error in site.toml, site.<lang>.toml, theme.toml or theme.<lang>.toml used to end a one-shot build with Python's own message and traceback; a project's own mistake looked like a bug in tilder. It is now one line like every other error:
error: content/site.toml: is not valid TOML: Invalid statement (at line 12, column 1). Fix the TOML syntax there
Exit status 1, the traceback only with --debug (the command line).
Documentation
A few edge cases of the Markdown dialect are pinned in the reference, where the build's own tests now check them too: an event is past once its start date has gone by, whatever its end; *Lead-in.* text is an ordinary paragraph that starts in italics, not an empty state; every callout carries role="note", since it is static content, not a live change; a paragraph entirely in bold is also an empty state, its text in italics; and a backslash escapes nothing but a table cell's \| (the Markdown reference).