BlogMore ChangeLog
v2.25.0
Released: 2026-05-20
- Fixed HTML entities being incorrectly included in their escaped form (like
"and>) in the search index snippets. (#497) - Added support for optionally bundling the main CSS files into a single
file, to help speed up the first load from a site (controlled by
bundle_cssand off by default). (#499) - Added support for optionally inlining the main theming JavaScript code
into every generated page, giving the option to reduce the number of
JavaScript files that need to be downloaded on the first load of a site
(controlled by
inline_theme_jsand off by default). (#499) - Changed the site title in the sidebar from an
<h1>tag to a<div class="site-title">to ensure each page has only one primary heading. (#501) - Added support for responsive sidebar logo image optimisation. When
optimise_imagesis enabled, the sidebar site logo is automatically optimised and rendered as a responsive HTML<picture>element. (#502)
v2.24.0
Released: 2026-05-18
- Fixed the
lintcommand double-reporting errors in the404page. (#489) - Added optional automatic image optimisation (
optimise_images: true). When enabled, local images in Markdown posts are automatically resized into a multi-size "ladder", converted to WebP, and rendered using responsive<picture>elements withsrcsetand aspect-ratio stability attributes. (#492)
v2.23.0
Released: 2026-05-14
- Added a
cachecommand to the CLI to show the cache location and clear the cache directory. (#482) - The generated favicons and platform icons are now cached per-blog, saving the need to recreate them on every build unless the source image changes. (#483)
- Added browser auto-reload to
servemode. Connected browsers now automatically reload whenever the site is regenerated following a change to content or configuration. (#487)
v2.22.0
Released: 2026-05-13
- The FontAwesome metadata is now cached, saving the need to download it every time a site is built. (#469)
- Reduced the amount of Markdown parsing done when calculating the backlinks. (#470 then #478)
- Reduced the amount of Markdown parsing done when extracting various stats and metadata from posts. (#471)
- Removed the need to re-parse the Markdown when calculating word counts and reading times. (#472)
- Optimised the calculation of previous/next post lookups. (#474)
- Optimised the use and reuse of the Markdown parsing object. (#475)
- Added some extra stats to the output of the linter. (#477)
v2.21.0
Released: 2026-05-10
- Added a
lintcommand (withcheckas an alias) that performs various checks of the content of the site, looking for things like broken internal links or malformed front matter. (#467)
v2.20.0
Released: 2026-05-09
- Word count and reading time calculations now use the proper Markdown-to-text converter rather than a regex-based approximation. Fenced code blocks are excluded from these counts (inline code is still included). (#455)
- Fixed a disparity on the stats page where the post listed as having the shortest or longest reading time could differ from the post with the fewest or most words. Reading time min/max are now derived from the word-count min/max posts. (#457)
- Added optional
titlefield tosocialsentries. When provided it is used as the tooltip (titleattribute) and accessible label (aria-label) for that social icon link; when omitted thesitename continues to be used. (#459) - Each step printed during site generation now shows its wall-clock duration, and the final completion message includes the total elapsed time. (#461)
- Enabled the
md_in_htmlMarkdown extension so that Markdown syntax inside HTML tags is rendered when the tag carries themarkdown="1"attribute. (#463)
v2.19.0
Released: 2026-05-04
- Fixed missing social graph (
og:*andtwitter:*) meta tags on listing and other pages (tag, category, archive, tags cloud, categories cloud, stats, calendar, graph, and search pages). (#432) - Extended per-build cache busting to the theme, search, code blocks and graph JavaScript files. (#439)
- Fixed backlinks being silently dropped when a post's URL contains parentheses. (#445)
v2.18.0
Released: 2026-04-28
- Added a
backlinks_titleconfiguration option to override the heading of the "References & mentions" section on individual post pages. (#422) - When a post's frontmatter includes a
modifieddate, it is now shown after the publication date in parentheses. (#423) - Added richer tooltips to the graph view of blogs. (#424)
v2.17.0
Released: 2026-04-27
- Added an optional comment invitation section to individual post pages. (#412)
- Added an interactive post-relationship graph page. (#414)
v2.16.0
Released: 2026-04-25
- Added a
with_backlinksconfiguration option that enables a "References & mentions" section on individual post pages. When turned on, BlogMore scans every post's Markdown content for internal links to other posts and shows a collated list of back-linking posts. (#404) - Added a "Top Internal Links" table to the stats page. When
with_backlinksis enabled, the stats page now shows a table of up to 20 posts ranked by the number of other posts that link to them. (#406)
v2.15.0
Released: 2026-04-24
- Added a subtle row gap between wrapped tag rows in post summaries and full post views, so that stacked rows of tags no longer touch. (#401)
v2.14.0
Released: 2026-04-15
- Added a "Posts per Year" horizontal bar chart to the stats page. (#398)
v2.13.0
Released: 2026-04-11
- Added
sitemap_extrasconfiguration option. A list of root-relative paths to add tositemap.xmlif it is being generated. (#388) - Fixed the calendar page not respecting the
clean_urlssetting when linking to the year, month, and day archives. (#390) - Fixed canonical
<link>tags not respecting theclean_urlssetting. (#392)
v2.12.0
Released: 2026-04-10
- The "Reading Time" section is now hidden on the stats page when
with_read_timeis set tofalse. (#383) - HTML files copied from the
extrasdirectory are no longer included in the generatedsitemap.xml. Only pages generated by BlogMore appear in the sitemap. (#384) - The stats page no longer carries a
noindexrobots directive. (#385)
v2.11.1
Released: 2026-04-09
- Fixed an endless regeneration loop in
blogmore serveon Linux caused by watchdog (via inotify) emitting read-only file-access events (FileOpenedEvent,FileClosedNoWriteEvent) when the site generator readsextrasfiles. These events are now explicitly ignored, so only genuine content changes trigger a site rebuild. (#381)
v2.11.0
Released: 2026-04-09
- Added a table of longest posting streaks to the stats page, showing the top 10 consecutive-day posting streaks of two or more days. (#369)
- Added a
read_time_wpmconfiguration option that lets users override the words-per-minute value used when calculating estimated reading time. (#371) - Added a calendar view page (
with_calendar/--with-calendar) that shows the full history of the blog as a year calendar. (#373)
v2.10.0
Released: 2026-04-07
- Added a posting-streak chart to the stats page. (#366)
v2.9.0
Released: 2026-04-04
- Added styling for
<kbd>elements. Keys are now rendered with a subtle raised appearance using a border, background, and monospaced font. Two new CSS variables β--kbd-bgand--kbd-borderβ control the appearance and can be overridden in a custom stylesheet. Both light and dark modes are supported via the corresponding--dark-kbd-bgand--dark-kbd-borderpalette variables. (#363)
v2.8.0
Released: 2026-04-02
- Fixed a bug where post or page content starting with a line of the form
<digit>:<rest>(e.g.7:54am β¦) was silently dropped from the rendered HTML output. (#360)
v2.7.0
Released: 2026-04-01
- Replaced the regex-based
extract_first_paragraphimplementation with a Markdown-library-powered approach. (#354) - Draft posts now receive a clear visual indicator wherever a post title is rendered: the title is displayed in a contrasting amber colour and a π§ emoji is appended after the title text. (#357)
v2.6.0
Released: 2026-03-28
- Fixed auto-generated post descriptions so that reference-style links are
stripped to plain text, matching the existing behaviour for inline links.
Strikethrough (
~~text~~) and underscore bold/italic (__text__,_text_) are now also stripped. Reference link definition lines ([ref]: url) found inside a paragraph block are skipped rather than included in the description. (#349)
v2.5.0
Released: 2026-03-27
- Added support for strikethrough text using
~~text~~syntax, which renders as an HTML<del>element. (#346)
v2.4.0
Released: 2026-03-25
- Broke out page-specific styles from the main
style.cssinto separate stylesheets (search.css,stats.css,archive.css,tag-cloud.css). Each stylesheet is loaded only on the pages that need it. (#341) - Fixed singular/plural in the "Word Count" section of the stats page so that a count of 1 now correctly shows "1 word" rather than "1 words". (#343)
v2.3.0
Released: 2026-03-24
- Fixed sitemap generation not excluding the search page if a custom
search_pathwas in use. (#331) - Added
light_mode_code_styleanddark_mode_code_styleconfiguration options that allow the Pygments syntax-highlighting colour scheme to be configured independently for light and dark mode. (#334) - Fixed
servemode not restoring configuration defaults when a setting is removed from the YAML file. (#337) - Added an optional blog statistics page (
--with-stats/with_stats: true). When enabled, a stats page is generated showing all sorts of statistics about posts in the blog. The output path is configurable via thestats_pathconfiguration file option, which honoursclean_urlsin the same way as the other path options. (#338)
v2.2.1
Released: 2026-03-23
- Fixed sidebar page links on individual post pages not respecting the
configured
page_pathandclean_urlssettings. (#329)
v2.2.0
Released: 2026-03-23
- Added post counts to the archive page. (#326)
v2.1.0
Released: 2026-03-22
- Fixed false-positive stripping of
index.htmlfrom URLs such as/my-index.html. (#315) - Overhauled the styling of code blocks, adding a language label in the top-left corner and a copy-to-clipboard button in the top-right corner. (#323)
v2.0.1
Released: 2026-03-17
- Fixed
categories_pathandtags_pathnot loading correctly from the configuration file. (#313)
v2.0.0
Released: 2026-03-17
- Added configurable search page path option via the
search_pathconfiguration option. (#304) - BREAKING CHANGE: Added configurable pagination path options
page_1_pathandpage_n_path. These configuration file settings control the output path template for the first page and for pages 2+ of any paginated listing (main index, year/month/day archives, tag pages, and category pages). The defaults (index.htmlandpage/{page}.html) keep the existing URL structure in some cases, but break the pre-existing default structure for categories and tags. Whenclean_urlsis enabled, the same trailing-slash transformation is applied to pagination URLs as to post and page URLs. (#307) - Added configurable archive page path via the
archive_pathconfiguration option. (#308) - Added configurable tags overview page path via the
tags_pathconfiguration option. (#310) - Added configurable categories overview page path via the
categories_pathconfiguration option. (#310)
v1.16.0
Released: 2026-03-16
- Added optional
pagesconfiguration option. When set to a list of page slugs, only those pages are linked in the sidebar, in the order given. Pages not listed are still generated but receive no automatic sidebar link. Omitting the option (or leaving it empty) preserves the existing behaviour where all pages are shown. (#294) - The title of the "Links" section in the sidebar can now be customised. (#295)
v1.15.0
Released: 2026-03-15
- Added
headconfiguration option. This allows extra<head>tags (such as<link>or<meta>) to be injected into every generated page without needing to create or override templates. (#286) - Added configurable page output path scheme via the
page_pathconfiguration option. (#288)
v1.14.0
Released: 2026-03-14
- Added optional HTML minification via the
--minify-htmlcommand-line switch or theminify_html: trueconfiguration option. (#272) - Consolidated and better documented the theming infrastructure to make custom themes easier to create. (#275)
v1.13.0
Released: 2026-03-13
- Added
clean_urlsconfiguration file option (off by default). When set totrue, any post whose resolved URL ends with/index.htmlhas theindex.htmlportion removed so that the URL ends with a trailing slash instead. (#266) - Fixed
servemode so that all configuration file settings are properly reloaded on rebuild. Previously,clean_urls,minify_css,minify_js,clean_first,include_drafts, andextra_stylesheetschanges were silently ignored when the config file was modified while the server was running. (#269)
v1.12.0
Released: 2026-03-12
- The "Generated with" footer is now optional and can be turned off via
with_advert: falsein the configuration file. (#258) - Added support for custom heading IDs using the
{#custom-id}syntax (e.g.### My Heading {#custom-id}). Headings without a custom ID continue to receive auto-generated IDs as before. (#260) - Heading elements (
h2βh6) now display a ΒΆ hover-anchor link when the reader moves the mouse over them, making it easy to copy a permalink to any section. (#260)
v1.11.0
Released: 2026-03-11
- All locally-generated stylesheets (the main stylesheet and the FontAwesome
CSS when generated locally) now include a generation-specific
cache-busting query parameter (e.g.
?v=1741698000) so that browsers re-download updated stylesheets after a fresh site generation/deploy. (#253) - When
minify_cssis enabled, the generatedfontawesome.cssis now minified and written asfontawesome.min.cssinstead. (#252)
v1.10.0
Released: 2026-03-11
- BREAKING CHANGE: The
/attachments/directory no longer has special treatment. If you should have a/attachments/directory in your output then placeattachments/underextras/in the content directory. (#248)
v1.9.1
Released: 2026-03-10
- Fixed an error when using a relative path for the
outputconfiguration option. Using a relative path such assitenow works correctly. (#242)
v1.9.0
Released: 2026-03-09
- Added configurable post output path scheme via the
post_pathconfiguration option. (#237)
v1.8.0
Released: 2026-03-07
- Social media icons in the sidebar are now rendered at a consistent, fixed width. Also reduced their default size. (#228)
- The title of the social media icons section in the sidebar can now be customised. (#228)
v1.7.0
Released: 2026-03-07
- Estimated reading time is now optional and disabled by default. Use
--with-read-timeon the command line or setwith_read_time: truein the configuration file to show reading time on posts. (#218) - Reduced some of the repeated boilerplate in the templates. (#221)
- The main archive page now shows a right-hand sidebar table of contents if the viewport is wide enough. This can be used to quickly navigate the archives. (#224)
v1.6.2
Released: 2026-03-05
- Fixed spurious regenerations and "Directory not empty" errors during
blogmore serveon Linux (#213)
v1.6.1
Released: 2026-03-04
- A bare
tags:frontmatter entry is now silently treated as an empty tag list instead of causing a warning and skipping the post. (#207)
v1.6.0
Released: 2026-03-04
- Improved mobile layout: in "mobile view" the sidebar is collapsed by default to show only the site title and a burger menu (β°) button. Clicking the burger menu expands the full sidebar (logo, subtitle, pages, links, socials). (#202)
- Fixed a site-build crash ("Argument must be bytes or unicode, got 'int'")
that occurred when a post's frontmatter contained a bare number as a tag
or category value (e.g.
tags: [2024, python]orcategory: 2024). Also added some other checks and warnings for frontmatter values that could appear ambiguous. (#204)
v1.5.0
Released: 2026-03-03
- Fixed
servemode rebuilding once per changed file when multiple files are modified or added at the same time. (#194) - Reduced excessive vertical whitespace in generated HTML output. (#197)
- Added support for a custom 404 page. The
servecommand will serve this page for any missing resource during local development. (#199)
v1.4.0
Released: 2026-03-01
- Fixed a
publishfailure when working across multiple machines: the publish branch is now fetched from remote before use, so a local branch that is behind its remote counterpart no longer causes a non-fast-forward push error. (#187) - Tags are now displayed in casefold alphabetical order wherever a list of tags is shown (post pages, index, archive, category, and tag pages). (#189)
- Fixed the default description finder not skipping images that are also
links (i.e.
[](url)syntax), so posts starting with a linked banner image now correctly use the first text paragraph as the description. (#191)
v1.3.0
Released: 2026-02-28
- Made cosmetic changes to the categories and tags pages to make the clouds look a bit more compact. (#184)
v1.2.0
Released: 2026-02-26
- Pagination navigation on archival pages (categories, tags, date archives, and the main index) has been improved: previous/next links are now styled as buttons to match the rest of the site's navigation, numbered page links are shown between them (with ellipsis for large page counts), and pagination is now displayed at both the top and bottom of each paginated page (the front page of the site excepted, which only shows it at the bottom). (#177)
- Fixes pages appearing in the post history. (#180)
- Paginated listing pages (the main index, category pages, tag pages, and
date-based archive pages) now include
<link rel="prev" href="...">and<link rel="next" href="...">tags in the<head>where appropriate. (#181)
v1.1.0
Released: 2026-02-26
- Every generated page now includes a
<link rel="canonical" href="...">tag in the<head>, pointing to the fully-qualified URL for that page. (#174)
v1.0.0
Released: 2026-02-25
- Post pages that have previous and/or next post navigation now also include
<link rel="prev">and<link rel="next">tags in the<head>of the generated HTML. (#171)
v0.14.0
Released: 2026-02-24
- Added optional JavaScript minification via the
--minify-jscommand-line switch or theminify_js: trueconfiguration option. (#166)
v0.13.0
Released: 2026-02-23
- FontAwesome loading is now non-blocking:
font-displaychanged fromblocktoswap, and a<link rel="preload">hint for the WOFF2 font file is added to all pages that use FontAwesome icons, improving initial page rendering speed. (#163)
v0.12.0
Released: 2026-02-23
- Removed redundant CSS rules from
style.css. (#159) - The default
og:imagefor the site index page now uses theicon_sourcegenerated platform icon (android-chrome-512x512.png) when available, falling back tosite_logoif no platform icons have been generated. Post and page templates that don't have an explicitcoverimage set now also default to the platform icon forog:imageandtwitter:image. (#160) - Added optional CSS minification via the
--minify-csscommand-line switch or theminify_css: trueconfiguration option. (#161)
v0.11.0
Released: 2026-02-22
- Added the
site_descriptionconfiguration option. When set, it is used as a fallback description for anyheadmetadata that uses a description of the page. (#146) - Added the
site_keywordsconfiguration option. When set, it is used as a a fallback set of keywords for anyheadmetadata that uses them. (#150) - Author metadata is now added to the
headof all pages, if the site's default author has been set. (#152) - Added
og:titlemeta tag to all generated pages that previously lacked it (index, archive, tag, category, tags overview, categories overview, and search pages). The title is derived from the site name, subtitle, and a description of the page type. (#153) - Added full social/share-friendly
<head>meta tags to the main index page, includingog:type,og:url,og:site_name,og:image,twitter:card,twitter:title, andtwitter:image. The image is taken from the configured site logo, or the largest generated platform icon if no logo is set. (#154) - Added automatic FontAwesome CSS optimisation. This reduces the FontAwesome CSS overhead down to only what's needed for the "social icons" in the sidebar, rather than pulling down the whole FontAwesome CSS. (#155)
v0.10.0
Released: 2026-02-22
- Fixed admonitions merging multiple paragraphs into one. (#135)
- Fixed
article:modified_timemeta tag not using ISO 8601 format when amodifiedfrontmatter value is set. (#138) - When icons are generated, a copy of
favicon.icois now also placed in the root of the output for backward compatibility. Ashortcut iconlink header is also included for legacy browser support. (#140)
v0.9.0
Released: 2026-02-21
- Added optional XML sitemap generation. (#127)
- Fixed posts not being discovered recursively (Copilot documented that this was a feature, but never actually implemented it). (#130)
- Fixed the top-level navigation menu overflowing the viewport on narrow/mobile screens. (#131)
v0.8.0
Released: 2026-02-20
- Footnotes are now rendered in a slightly smaller font size to visually differentiate them from body text. (#121)
- Post date timestamps are now formatted as
YYYY-MM-DD HH:MM:SS TZand each component (year, month, day) links to its corresponding archive page. (#123) - Added optional client-side full-text search across post titles and content. Search is off by default. (#124)
v0.7.0
Released: 2026-02-20
- Fixed
servemode failing withFileNotFoundErrorwhenclean_firstis enabled. (#118)
v0.6.0
Released: 2026-02-19
- Fixed duplicate HTML element IDs when multiple posts with footnotes appear on the same index page. (#114)
- Improved table styling with subtle borders, a distinct header background, and alternating row shading that works in both light and dark modes. (#115)
v0.5.0
Released: 2026-02-19
- Fixed relative URLs in RSS/Atom feed entry content being left as root-relative paths; they are now rewritten to absolute URLs using the configured site URL, resolving feed-validator warnings. (#110)
v0.4.0
Released: 2026-02-19
- Added auto-generation of various 'favicon' types from a single source image. (#103)
v0.3.0
Released: 2026-02-18
- Initial public release.