All notable changes to this project will be documented in this file.

Static Blog version 0.2.0 - 2026-08-05

Added

  • Footnote support, in both the labelled [^source] form and the inline ^[the note] form. Definitions are collected into a <section class="footnotes"> at the end of the post, numbered by order of citation, each with a backreference link.

  • A footnotes guide covering both syntaxes, the rendered markup, and a stylesheet to drop into your site.

  • StaticBlog.Markdown centralises markdown-to-HTML conversion so posts render identically from mix blog.build, the preview server, and the Micropub endpoint. Options are configurable with config :static_blog, :markdown.

Changed

  • Markdown is now rendered by MDEx instead of Earmark, which is retired and carries a security advisory. Tables, strikethrough, autolinks, task lists, and smart punctuation remain enabled, and raw HTML in posts is still passed through.

  • Fenced code blocks without a registered Makeup lexer now carry class="language-NAME" rather than class="NAME". Highlighted blocks are unchanged at class="makeup NAME".

  • nimble_publisher upgraded to ~> 2.1, which removes the last dependency on Earmark. If you use the :blog_module option with your own use NimblePublisher module, bump your own dependency to ~> 2.1 and rename any :earmark_options to :comrak_options.

Fixed

  • A footnote marker in a post's first paragraph no longer leaks its number into the generated summary, meta description, and RSS <description>.

Static Blog version 0.1.0 - 2026-04-12

Added

  • StaticBlog.Generator builds a complete static site from markdown posts: index, per-post pages, category pages, colophon, 404, RSS feed, sitemap, and robots.txt.

  • StaticBlog.Template behaviour with five callbacks (index, post, category, colophon, not_found) for pluggable template rendering.

  • StaticBlog.Template.Default implements the behaviour with a Daring Fireball-inspired design, light/dark theme toggle, JSON-LD structured data, and full Open Graph / Twitter Card metadata.