github gohugoio/hugo v0.169.0

7 hours ago

The main motivation behind this release is to get out a build with Go 1.27.3, which blocks trust in a small set of intermediate certificates due to specific security concerns around their operation. See the eMudhra incident for more information. This affects Hugo features that fetch remote resources over HTTPS, e.g. resources.GetRemote.

This release also contains some security hardening of the template functions and menu entries that can render content as HTML (see below), a deprecation of looking up reserved front matter fields via .Params (also below), a faster and more robust plainify, and a set of bug fixes.

Security notes

Templates are trusted in Hugo, but content (including front matter) is not necessarily. This release tightens a few places where values from content could end up rendered as unescaped HTML:

  • pre and post values in menu entries defined in front matter are now HTML escaped, unless text/html is allowed in security.allowContent, which already marks HTML in /content as trusted. A warning (warning-menu-pre-post-html-escaped) is logged when a value containing HTML markup is escaped. Menu entries defined in the project configuration are not affected. f63482b
  • emojify and plainify now return a string unless the input is template.HTML, in which case the result is also template.HTML. Previously both always returned template.HTML, so e.g. {{ .Title | emojify }} would mark a potentially unsafe title as safe HTML. If you relied on the old behavior with trusted input, pipe the result through safeHTML. Thanks to @Reload3d for reporting this. #15452

Deprecations

Reserved front matter fields such as title, date and summary are currently also stored in .Params. Lookups such as .Params.title (and ByParam "title", where .Pages "Params.title" ... etc.) are now redirected to the corresponding Page method and logged as deprecated, unless the field was set in the params section of front matter. The content of .Params is unchanged for now. 53e1fef

Deprecated Use instead
.Params.date .Date
.Params.description .Description
.Params.draft .Draft
.Params.expirydate .ExpiryDate
.Params.keywords .Keywords
.Params.lastmod .Lastmod
.Params.layout .Layout
.Params.linktitle .LinkTitle
.Params.publishdate .PublishDate
.Params.slug .Slug
.Params.summary .RawSummary (new)
.Params.title .Title
.Params.translationkey .TranslationKey
.Params.type .Type
.Params.weight .Weight

Bug fixes

Improvements

Dependency Updates

  • build(deps): bump github.com/getkin/kin-openapi from 0.151.0 to 0.152.0 6e494d0 @dependabot[bot]
  • build(deps): bump github.com/tdewolff/minify/v2 from 2.24.19 to 2.24.22 8c1fdca @dependabot[bot]
  • build(deps): bump github.com/tdewolff/parse/v2 from 2.8.16 to 2.8.18 ed22b85 @dependabot[bot]
  • build(deps): bump github.com/getkin/kin-openapi from 0.149.0 to 0.151.0 4102d1a @dependabot[bot]
  • build(deps): bump golang.org/x/tools from 0.51.0 to 0.52.0 ac5af66 @dependabot[bot]

Don't miss a new hugo release

NewReleases is sending notifications on new releases.