Docs
Upgrading to Hinode V1
Last modified on July 1, 2025 • 3 min read • 461 wordsUpgrade your existing Hinode site to take advantage of content blocks introduced in v1.
Note
Upgrading to the modules introduced in Hinode v0.16? Check out This Page instead.
Hinode
v1.0.0
introduces a new approach to reusable page elements. It now also support the revised template system introduced by
Hugo v0.146.0
. This release of Hinode is a breaking change with all 0.x
releases. Review the core changes below on how to upgrade your existing site to the latest Hinode version. Please use
GitHub discussions
when encountering any challenges, or use the
issue tracker
for bug reports.
Content Blocks
Hinode now supports reusable page elements called content blocks, such as a hero, about panel, or an FAQ. Hinode includes several ready-to-use content blocks. These content blocks replace the previous Page Sections. For example, the following content block renders a list of three article cards:
- _bookshop_name: articles
heading:
title: Guides
align: start
input:
section: guides
reverse: true
sort: title
hide-empty: false
header-style: none
more:
title: More Guides
padding: 0
max: 3
class: border-0 card-zoom card-body-margin
You will have to manually replace any obsolete page section with either an Articles Content Block (when referring to a site section) or a Cards Content Block (when using direct input).
Structured Arguments
All partials, shortcodes, and utility functions now use a standardized approach to validate and initialize passed arguments. This greatly simplifies argument handling and ensures arguments are consistent across components. The argument names have been standardized too. They are centrally maintained within the mod-utils module. As a result, several existing arguments have been deprecated. Hinode will log any deprecation warnings to the command line.
Revised Template System
Important
Hinode is now fully compatible with the refreshed template system of Hugo v0.146.0 . Although the Hugo team has made significant effort to make this template system backwards compatible, some compatibility issues are to be expected. Hinode has bumped all modules with a new major version to signal a breaking change.
Pages now use a simplified template for rendering. The core templates (baseof.html
, list.html
, and single.html
) have been moved to the core layouts
folder. The templates themselves have been refactored to simplify maintenance and customization. Partials now reside in layouts/_partials
folder. Similarly, shortcode now use the layouts/_shortcodes
folder. Move your custom templates, partials, and shortcodes to the correct folder to ensure Hinode renders them correctly.
Inline partials require special attention. When invoking an inline partial, the partial name should not include the prefix partials
or _partials
. For example, the card.html
partial contains the following inline partial to render a card body:
{{- define "_partials/inline/card-body.html" -}}
{{/* Partial code */}}
{{- end -}}
The following code to invoke this inline partial no longer works and results in an error:
{{- partial "_partials/inline/card-body.html" -}}
Instead, drop the _partials
prefix from the partial name:
{{- partial "inline/card-body.html" -}}