Skip to content
Hextra v0.12 is here! 🎉 Discover what’s new
Hextra v0.12

Hextra v0.12

February 20, 2026·imfing
imfing

Hextra v0.12.0 delivers a rich set of new features including page context menus, image zoom, redesigned tabs, and more, plus comprehensive WCAG 2.2 AA accessibility improvements and numerous bug fixes.

Upgrade Guide

No breaking changes are expected for most sites. Update using Hugo Modules:

hugo mod get -u github.com/imfing/hextra

Highlights

  • Page context menu for copying/viewing Markdown source
  • Redesigned tabs shortcode with per-tab naming and icon support
  • Click-to-zoom for Markdown images
  • GoatCounter analytics support
  • Option to hide the main sidebar on desktop
  • Display last modified author via GitInfo
  • Option to disable prev/next navigation
  • Built-in archives page for chronological blog post listings
  • Term glossary shortcode and layout
  • Exclude pages/sections from llms.txt
  • Mobile sidebar ordering and labels aligned with menu.main
  • Stable content width with CSS variable override support
  • Comprehensive WCAG 2.2 AA accessibility improvements

New Features

Page Context Menu

Context menu

The page context menu provides a dropdown button that lets you copy the page content as Markdown or view the raw Markdown source. As more users feed documentation into generative AI tools, having quick access to clean Markdown is increasingly useful. Custom links with template variables ({url}, {title}, {markdown_url}) let you wire up “Ask AI” shortcuts or other integrations directly in the menu.

To use the “View as Markdown” and {markdown_url} features, enable the Markdown output format in your site configuration:

hugo.yaml
outputs:
  page: [html, markdown]
  section: [html, rss, markdown]

Then configure the context menu:

hugo.yaml
params:
  page:
    contextMenu:
      enable: true
      links:
        - name: "Ask AI"
          url: "https://example.com?content={markdown_url}"
          icon: "sparkles"

Tabs Revamp and Icon Support

The tabs shortcode has been redesigned. Tab names can now be set directly on each tab shortcode, and an optional icon parameter displays an icon before the tab label. The previous syntax is still supported.

{{< tabs >}}
  {{< tab name="Photos" icon="photograph" >}}Manage and organize your photo library.{{< /tab >}}
  {{< tab name="Music" icon="music-note" >}}Browse and play your favorite tracks.{{< /tab >}}
  {{< tab name="Videos" icon="film" >}}Watch and stream video content.{{< /tab >}}
{{< /tabs >}}

Tabs with icons

Image Zoom

Enable click-to-zoom on Markdown images with a new configuration option, powered by medium-zoom.

hugo.yaml
params:
  imageZoom:
    enable: true

GoatCounter Analytics

Built-in support for GoatCounter analytics alongside existing Google Analytics, Umami, and Matomo integrations.

Hide Main Sidebar

A new front matter parameter allows hiding the main sidebar on desktop to give content pages the full width.

content/my-page.md
---
title: My Page
sidebar:
  hide: true
---

Last Modified Author

Display the last commit author alongside the “last updated” date using Hugo’s GitInfo.

hugo.yaml
params:
  displayUpdatedAuthor: true

Last modified author

Disable Prev/Next Navigation

Disable the previous/next navigation buttons site-wide:

hugo.yaml
params:
  page:
    displayPagination: false

LLMs.txt Exclusion

Exclude individual pages or entire sections from llms.txt output by setting llms: false in front matter.

content/private-page.md
---
title: "Private Page"
llms: false
---

Archives Page

A new built-in archives layout displays blog posts in a chronological timeline grouped by year, with tags shown inline after each post title.

content/archives/_index.md
---
title: Archives
layout: archives
---

Archives page

Glossary

A site-wide terminology glossary with a dedicated listing page and a term shortcode for inline definitions.

Accessibility

Comprehensive WCAG 2.2 AA accessibility improvements (#924):

  • Skip-to-content link and ARIA landmark roles on all pages
  • ARIA attributes on all interactive widgets (theme toggle, tabs, sidebar, filetree, dropdowns, search, menus)
  • Keyboard navigation for tabs and theme toggle (arrow keys, Enter, Escape)
  • prefers-reduced-motion support and global focus-visible styles
  • 15 new i18n accessibility keys with full translations across all 21 locales
  • Replaced all hardcoded English aria-label strings with i18n lookups

Quality of Life

  • Improved table readability styles
  • Markdown attribute support for headers
  • Better active link detection for multilingual section landing pages
  • Card shortcode supports optional alt parameter for images
  • Page bundle images supported in OpenGraph metadata
  • Content width now stays consistent by default, with CSS variable override support for custom layouts

Fixes

  • Prevent relref double base-prefix in render-link
  • Fix tabs rendering when nested inside steps
  • Align mobile sidebar ordering and labels with menu.main
  • Respect search.enable in the sidebar
  • Respect the toc page parameter in mobile dropdown
  • Enhance FlexSearch match highlighting and safe DOM manipulation
  • Fix card subtitle positioning
  • Handle leading slashes in OG image paths for subpath deployments
  • Fix FlexSearch returning fewer than expected result pages
  • Change default Umami analytics file to script.js
  • Fix RSS author lookup for Hugo v0.156.0+ (.Site.Params.Author)

Documentation & i18n

  • Add Italian localization
  • Link KaTeX documentation
  • Update details shortcode docs to angle bracket syntax

Contributors

This release was made possible by contributions from 11 new contributors:

Additional thanks to returning contributors @KStocky, @ldez, @kowyo, @torbjornbp, @yuri1969, and @PrintN for their continued contributions.


Full Changelog: https://github.com/imfing/hextra/compare/v0.11.1...v0.12.0

Last updated on