v0.155.0

gohugoio/hugov0.155.0Jan 28, 2026by bep

AI Summary

A feature-rich release focusing on version handling, image metadata, and performance, specifically for WebP and multidimensional sites.

Key Highlights

  • Support for version range queries (e.g., >= v1.0.0) in GitHub repos
  • XMP and IPTC image metadata support added
  • Page aliases now work in multidimensional sites
  • Performance improvements for WebP and image processing

Breaking Changes

  • Alias paths beginning with a slash (/) are now site-relative instead of server-relative in multilingual single-host projects.

New Features

  • Version range queries
  • XMP and IPTC metadata support
  • Page aliases in multidimensional sites
  • WebP performance improvements

Full Release Notes

Some notable new things in this release are:

* Improvements to how [versions](https://gohugo.io/methods/site/version/#article) are handled: We now support version (and also for the other dimension) range queries (e.g. `>= v1.0.0`), and we now cache Go module version queries, which makes mounting multiple versions of the same GitHub repo with different version much more practical and enjoyable, se    [this site and config](https://github.com/bep/hugo-testing-git-versions/blob/main/hugo.toml) for an annotated example.
* We finally have XMP and IPTC image metadata support, in addition to EXIF, see #13146 
* Page `aliases` now works in multidimensional sites (e.g. multiple languages), and it is now much easier to create e.g. Netlify `_redirects` files that works in such setups.
* There are several performance related WebP improvements in this release. 
* Also, image processing in general (e.g. resize operations) should be considerably more effective.

## Breaking change

Prior to v0.155.0, alias paths beginning with a slash (`/`) were treated as [server-relative]. In v0.155.0 and later, they are now [site-relative]. This change only affects multilingual single-host projects that used alias paths beginning with a slash (`/`) to cross language boundaries. See [details].

[details]: https://discourse.gohugo.io/t/alias-paths-in-v0-155-0-and-later/56674
[server-relative]: https://gohugo.io/quick-reference/glossary/#server-relative
[site-relative]: https://gohugo.io/quick-reference/glossary/#site-relative

## Note

* Make Page.Aliases more useful in multidimensional setups (note) ee91c707 @bep #14402 

## Bug fixes

* Fix data race when clearing cache in cachebusters 8a979d54 @wjiec 
* resources/images: Fix comment for Quality field in ImageConfig fd49df8f @bep 
* Fix panic reported in discourse c7b35c87 @bep #14441 
* Fix recently introduced partial rendering bug 8dfcece8 @bep #14433 
* tpl: Fix partial decorator panic when partial returns falsy f472dd48 @simonheimlicher #14419 
* resources: Fix race condition in test helper 48566b6f @simonheimlicher 
* Fix cascade draft panic 11f7f399 @bep #14409 #14412 
* hugolib: Fix multilingual alias generation 5ba03bf6 @jmooring #14388 
* Fix file mount specifity issue within the same module c1b2e58b @bep #14405 
* warpc: Fix typed nil return in Start 2c611091 @Sam-404-404 #14372 
* hugolib: Fix relative alias generation 32334d09 @jmooring #14381 

## Improvements

* Remove disableDate and disableLatLong from MetaConfig 5916b61b @bep #14437 
*  internal/warpc: Make webp C defaults match the Go defaults 7eafef22 @bep 
* testscripts: Move server tests to own folder 00c4228f @bep #14439 
* testing: Skip some slow tests when not running in CI 5f5b2f37 @bep #14438 
* magefile: Skip commands test when running mage check locally ef7a22a2 @bep 
* Remove -p 2 parallelism limit for local test runs 9a6bfe26 @bep 
* Add AGENTS.md and CLAUDE.md 0fc63fbf @bep 
* Add == and != operators to range predicates 50973e72 @bep 
* Add modulequeries file cache for module version queries b441472b @bep #14417 
* Allow v1,v2 etc. style version names while still supporting full semver in queries ac2c3fb2 @bep #14414 
* Add range matchers for site matrix vector store filtering 192e3c45 @bep #14359 
* Misc webp performance work e569dd59 @bep #14370 
* Move from github.com/disintegration/gift to github.com/gohugoio/gift 1a947316 @bep #14397 
* resources/images: Stabilize order of valid sources in error message 8e9e04e3 @jmooring #14390 
* Add XMP and IPTC image metadata support 8e2e60dd @bep #13146 
* output: Add TestCanonical integration test 2bc54df6 @bep 
* Rename common/maps to common/hmaps (#14384) 608ed09a @bep 
* Decode webp.ImageConfig natively d36a8f56 @bep #14371 

## Dependency Updates

* build(deps): bump golang.org/x/tools from 0.40.0 to 0.41.0 7d45614c @dependabot[bot] 
* build(deps): bump github.com/olekukonko/tablewriter from 1.1.2 to 1.1.3 7f12c090 @dependabot[bot] 
* build(deps): bump github.com/alecthomas/chroma/v2 from 2.23.0 to 2.23.1 dab2c332 @dependabot[bot] 
* build(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudfront 576d55d0 @dependabot[bot] 
* build(deps): bump golang.org/x/image from 0.34.0 to 0.35.0 b9400b8a @dependabot[bot] 
* build(deps): bump golang.org/x/mod from 0.31.0 to 0.32.0 ce0c7f42 @dependabot[bot] 
* deps: Upgrade github.com/gohugoio/gift v0.1.0 => v0.2.0 77214117 @bep 
* build(deps): bump github.com/alecthomas/chroma/v2 from 2.22.0 to 2.23.0 18784711 @dependabot[bot] 
* build(deps): bump golang.org/x/net from 0.48.0 to 0.49.0 94f1ede3 @dependabot[bot] 
* build(deps): bump github.com/bep/lazycache from 0.8.0 to 0.8.1 ab374e3d @dependabot[bot] 
* deps: Upgrade github.com/alecthomas/chroma v2.21.1 => v2.22.0 1a913307 @jmooring #14368 

## Build Setup

* Revert "release: Support alpha, beta, and RC releases" e66a33d3 @bep #14448 

## Documentation

* misc: Update image processing description in README.md b3ea2a5f @jmooring 
* docs: Update docs.yaml 67b54354 @jmooring 
* Make docs helper maxAge JSON output user friendly 5a64551a @bep