Packages
A reusable static blog engine for Elixir. Generates a complete website from markdown with syntax highlighting, RSS, sitemap, SEO structured data, MarsEdit integration via Micropub/XML-RPC, and Cloudflare R2 publishing.
Current section
Files
Jump to
Current section
Files
static_blog
CHANGELOG.md
CHANGELOG.md
# Changelog
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](https://hexdocs.pm/static_blog/footnotes.html) 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](https://hexdocs.pm/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.