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.