# Changelog

All notable changes to Blogin are documented here.

## [0.9.1] - 2026-08-02

### Added

- Live reload over a WebSocket. Each rebuild pushes the output paths it
  rewrote, so a page reloads only when its own file or a script it loads
  changed. A changed stylesheet or image is swapped in place without a reload,
  and the page reconnects on its own when the server restarts.
- `.keep` files are left alone by `blogin clean` and by the prune step of a
  build, so a directory the site owner tracks survives a rebuild.

### Changed

- `blogin serve` builds with minification and fingerprinting off, and says so
  when the config enables them. `blogin build` still applies both.
- Directories created after the server starts are watched without a restart,
  and the filesystem events from one save are coalesced into a single rebuild.
- Preview responses are sent with `Cache-Control: no-store`.

### Fixed

- Markdown link text containing square brackets is parsed as a link.
- Responsive image variants, minified files, and fingerprinted renames are
  recorded in the build's write log.
- The console no longer shows the socket notices a browser leaves when it
  closes a reload connection.

## [0.9.0] - 2026-07-24

### Added

- Markdown rendered by a Raku grammar: tables, task lists, footnotes,
  reference links, attribute lists on links, and inline and display math.
- Fenced code blocks highlighted server-side during the build, plus `mermaid`
  and `math` fences.
- Content sections derived from the `content/` tree, with per-post slugs, drafts,
  future-dated posts, and alias redirects.
- HAML layouts `base`, `show`, `index`, `home`, `tag`, `tags`, and `404`, with
  chrome partials and per-section layout overrides.
- A documented template context split into a post context, a listing context,
  and a shared site context, exposing `heading`, `posts`, per-post `tags`,
  `related`, the table of contents, reading time, and word count.
- Named taxonomies, each with a page per term and an index. Tags are the default,
  and a term page prefers a singular layout so the index can differ from it.
- Atom, RSS, and JSON feeds, site-wide and per section, plus a sitemap and
  `robots.txt`.
- Browser search over a prebuilt index.
- Open Graph, Twitter, and canonical metadata.
- CSS-framework profiles for Bootstrap 5, Pico, and Bulma, or none.
- A light and dark color theme with a navbar toggle, applied before paint and
  remembered per visitor.
- Data files in JSON and YAML, merged site-wide and per directory.
- Built-in and user-defined shortcodes.
- Multi-language builds with a per-language URL prefix and a page switcher.
- An asset pipeline under `public/assets/{css,js,img}`, with optional
  minification, content-hash fingerprinting, and responsive image variants,
  alongside a `static/` tree copied to the output verbatim.
- A preview server that rebuilds on change and live-reloads the open page, and
  incremental builds that rewrite only the files that changed.
- A `blogin` CLI with `init`, `new`, `build`, `serve`, and `clean`.
- Theme layout sets and a build-hook plugin interface.

[0.9.1]: https://github.com/gdonald/Blogin/releases/tag/0.9.1
[0.9.0]: https://github.com/gdonald/Blogin/releases/tag/0.9.0
