Releases: gdonald/Blogin
Releases · gdonald/Blogin
Release list
v0.9.2
Fixed
- A rebuild deleted the responsive image variants while leaving each page's
srcsetnaming them, so a site usingimage-widthsserved missing images
from its second build onward.
Changed
- Two posts claiming the same alias produce a warning naming both. The first
one keeps the alias now.
v0.9.1
No functional changes.
- Every GitHub Actions workflow runs read-only by default, and each action is
pinned to a commit rather than a tag that can be moved. - The development container pins its base image by digest and every package by
version, so a Linux build compiles against the same toolchain each time. - Static analysis through CodeQL, a published coverage figure, and an OpenSSF
Scorecard run, alongside the sanitizers, clang-tidy, and fuzzing already here. - Release binaries carry their build provenance attestation on the release
itself, so a signature can be checked beside the file it covers. - A security policy, at SECURITY.md.
v0.9.0
The first release. Everything below is new, so this section describes what
Blogin does rather than what changed.
Commands
blogin buildrenders a content tree to static HTML. A rebuild does only the
work the change requires and lands byte-identical to a build from scratch.blogin servepreviews the site on loopback and rebuilds as you edit, with
the open page reloading itself over a WebSocket. It builds into
.blogin-preview/, so serving never writes the directory you deploy.blogin initscaffolds a site that builds with nothing to fill in first,
againstnone,bootstrap5,pico, orbulma.blogin newwrites a post with its front matter filled in.blogin cleanremoves both trees a build can write and refuses any target
outside the site. Naming one with--outmakes it the only target.- Every option has a long and a one-letter spelling, and short options combine
as-fv.blogin --versionreports the version it was built from.
Content
- CommonMark, with GitHub Flavored Markdown for tables, task lists,
strikethrough, and fenced code. - Footnotes, reference links, definition lists, and attribute lists on links and
images. - Math and Mermaid diagrams, parsed into markup a client-side renderer draws.
- Shortcodes, with
youtubeandfigurebuilt in and ashortcodes/directory
for your own. - Front matter for the title, date, slug, summary, ordering, drafts, table of
contents, and redirect aliases. - Summaries from front matter, a
<!--more-->marker, or the opening block.
Templates
- A HAML engine with an expression language of its own: no assignment, no
user-defined functions, and no host language to call into. Anything outside it
is an error naming the file, line, column, and construct. - Layouts per section, by directory or by config.
- Themes, a directory of layouts and assets your own files override file by
file. cache-fragment, which reuses a rendered fragment wherever the values it read
are the same, so reuse cannot serve one page's markup to another.- Data files, JSON and a YAML subset, site-wide and scoped to a directory.
Output
- Atom, RSS, and JSON feeds, site-wide and per section, plus a sitemap,
robots.txt, and a 404 page. - Client-side search against a prebuilt index, with the script and its styling
generated by the build. - Taxonomies, with a page per term and an index, paginated like any listing.
- Optional extensionless URLs.
- More than one language, each built into its own subtree with translations
matched by filename.
Assets
- CSS and JavaScript minified, and assets named for a hash of their content so a
far-future cache never serves a stale file. - Responsive image variants with a
srcset, when an image resizer is present. - CSS framework profiles for Bootstrap 5, Pico, and Bulma, which class the same
semantic HTML without a layout knowing which framework is selected.
Platforms
- macOS through Homebrew, and Linux x86_64 and arm64 as statically linked
binaries that run on any distribution. - Windows through WSL2.
- Builds from source with clang on macOS and Linux, and with GCC 14 or newer on
Linux. - No runtime dependencies. Markdown, HAML, JSON, YAML, the asset pipeline, and
the preview server are all in the binary.