Repository navigation
Update hugo - #638
Draft
renovate[bot] wants to merge 1 commit into
Draft
Update hugo#638renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/hugo
branch
from
July 15, 2026 13:49
26724ef to
76d8506
Compare
cwhite911
reviewed
Jul 18, 2026
cwhite911
left a comment
Contributor
There was a problem hiding this comment.
DO NOT MERGE. Updating Hugo has breaking changes that need to be addressed in coordination to the update.
echoix
marked this pull request as draft
July 18, 2026 12:28
This was referenced Aug 3, 2026
renovate
Bot
force-pushed
the
renovate/hugo
branch
from
October 10, 2026 12:34
76d8506 to
626701b
Compare
renovate
Bot
force-pushed
the
renovate/hugo
branch
from
October 13, 2026 23:10
626701b to
964f323
Compare
renovate
Bot
force-pushed
the
renovate/hugo
branch
2 times, most recently
from
October 27, 2026 19:55
747dbc3 to
f4ddd17
Compare
renovate
Bot
force-pushed
the
renovate/hugo
branch
from
November 13, 2026 16:55
f4ddd17 to
5a7e1bc
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
0.113.0→0.170.00.113.0→0.165.0Release Notes
gohugoio/hugo
v0.170.0Compare Source
The big change in this release is that the extended edition of Hugo is gone. LibSass has been deprecated for a long time, and it was the only remaining reason we needed a CGO-enabled extended build. There is now only one Hugo binary, and apart from LibSass it has all the features the extended build had.
Notes
transpilertolibsassincss.Sassnow returns an error. Dart Sass is now the default and the only transpiler, so you need to install it if you use Sass.hugo_extended_*archives. To avoid breaking existing CI setups, we publish aliases for the most downloaded extended archives (e.g.hugo_extended_<version>_linux-amd64.tar.gz,hugo_extended_<version>_Linux-64bit.tar.gz, thelinux-amd64.deb,linux-arm64.tar.gzandwindows-amd64.zip), but you should update your scripts to use the standard archives. Theextended_withdeploybuilds are also removed. See Installation.hugo.IsExtendednow always returnsfalse, and the module config settinghugoVersion.extendedis deprecated and has no effect.--buildDrafts) now override OS environment variables (e.g.HUGO_BUILDDRAFTS). This also fixesHUGO_ENVIRONMENT=qa hugo build -e stagingloading thestagingconfig but reportingqainhugo.Environment.strings.Truncatehas been rewritten on top of a proper HTML scanner. It now handles comments, void elements, quoted attributes with>and raw text elements such asscriptcorrectly, and it's faster and allocates less. On a curious note, the old version was implemented by Mathias Biilmann, the Netlify CEO.time.Timevalues now keep their named time zone, andeq,ne,inanduniqcomparetime.Timevalues by instant.resources.Matchand friends now preserve the directory casing in the matched paths, so e.g.resources.Match "gallery/Travel/Iceland/*"now works on case-sensitive file systems.encoderSpeed6 and lower, recovering from broken WASM instances in the server).Security
Hugo
markup.goldmark.renderer.unsafeis enabled. Before this, e.g.\(<img src=x onerror=alert(1)>\)in a content file emitted raw HTML.wrapperClassoption, settable from thehighlightshortcode andtransform.Highlight, is now escaped._vendordirectory (symlinks pointing outside are rejected).Thanks to @R0X4R for finding and reporting the last two issues.
Go
This release is built with Go 1.27.4, which includes 12 security fixes. The one most relevant for Hugo is a crash in the
net/httpHTTP/1 server (used byhugo server) caused by a race inMaxBytesReader. The other 11 are in thecmd/gotoolchain (cgo flag and linker injection at build time) and mainly matter if you build Hugo from source with untrusted dependencies.Dependencies
golang.org/x/netv0.62.0 fixes two issues in thehtmlpackage: quadratic complexity when coalescing text nodes, and a namespace issue when rendering raw text. Hugo uses this package when collecting HTML elements forhugo_stats.jsonand in the AsciiDoc integration.github.com/go-jose/go-jose/v4v4.1.6 (indirect dependency) contains a number of security fixes, among them GHSA-mgcc-cww5-fp2q (RSA modulus size limit when parsing JWKs) and a stack depth limit in the JSON decoder.Changes
c2f9cb8@bep #154050b66ebd@bep #15502588241b@pei711a8a8e97@bep #155233c2f52d@bep #155224742565@bep #15522f3875ec@bep #15538 #15540b76fde2@bep #1549987e6e14@jmooring #15536fa5a3d4@jmooring #15518471d0fb@bepe2f66a2@raghu453453519196@jmooring #15577afb2d9a@bep #15572b755c9d@xndvaz #155672056ed6@xndvaz #15568bca2cec@bep5922421@jmooring #8895 #15565bdde5aa@bepd41a8a1@bep5b44cfc@xndvaz #7686 #10112d5ba1aa@bep #15549 #15550e6a470c@jmooring #155461a014e5@bep #155225086d5f@bep #155223a1985b@AnaTejeda1 #116012b0e1e1@jmooring #15518185a609@jmooring6b0c89c@bep #15505 #15509Dependency Updates
29bcc86@dependabot[bot]4f8354e@dependabot[bot]6aebad4@dependabot[bot]8846854@dependabot[bot]0586add@dependabot[bot]45dfa4e@dependabot[bot]d2010fc@dependabot[bot]2d6cf3a@bepb6fa2fe@bepfe34313@dependabot[bot]7ff95e0@dependabot[bot]98ab2ff@dependabot[bot]a1668da@dependabot[bot]Documentation
8502b60@jmooring #15512v0.169.0Compare Source
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 robustplainify, 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:
preandpostvalues in menu entries defined in front matter are now HTML escaped, unlesstext/htmlis allowed insecurity.allowContent, which already marks HTML in/contentas 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.f63482bemojifyandplainifynow return astringunless the input istemplate.HTML, in which case the result is alsotemplate.HTML. Previously both always returnedtemplate.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 throughsafeHTML. Thanks to @Reload3d for reporting this. #15452Deprecations
Reserved front matter fields such as
title,dateandsummaryare currently also stored in.Params. Lookups such as.Params.title(andByParam "title",where .Pages "Params.title" ...etc.) are now redirected to the correspondingPagemethod and logged as deprecated, unless the field was set in theparamssection of front matter. The content of.Paramsis unchanged for now.53e1fef.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.WeightBug fixes
46e51f3@bep #15484c22158c@chanellebingham #15472ce5d232@Ferdinand-MZ #154732efee51@bep #15481b86e0ca@bep #1546677230eb@bep85fb23f@bep #154498df3180@jmooring #15444Improvements
53e1fef@bep3e67572@bepf63482b@bep7343fc9@bepff4eab7@bep #154677ec3a36@bep #15462895f583@bep #1545287bf585@bep #154529d50291@bep #15453683a877@bepDependency Updates
6e494d0@dependabot[bot]8c1fdca@dependabot[bot]ed22b85@dependabot[bot]4102d1a@dependabot[bot]ac5af66@dependabot[bot]v0.168.0Compare Source
Notable new features
imaging.firstFrameOnlyoption (and a matching processing flag) to only decode/encode the first frame of animated images. Hugo now also only decodes the first frame when the target format doesn't support animation, and fails early with an informative error if processing all frames would exceed the WASM memory limit.FrameCountmethod on images, e.g. to check if an image is animated.site.Languagenow hasTranslateandFormat*methods, so you can e.g. range oversite.Languagesand translate into each language.charsetoption forjs.Buildandcss.Build.Security fixes
This release is built with Go 1.27.2, which includes 15 security fixes. The most relevant for Hugo are:
html/templateescaping fixes, which also apply to Hugo's fork of the package: CVE-2026-94448 (context tracking not reset on consecutive expressions in JS template literals) and CVE-2026-97030 (yieldnot recognized as a regexp preceder keyword). Both could lead to incorrect escaping of inline JavaScript.net/httpfixes (HTTP/2 server crash and memory exhaustion, connection desynchronization, unboundedRangeheader parsing), relevant forhugo serverand remote resources. The corresponding HTTP/2 fixes are also included via the upgrade ofgolang.org/x/netto v0.61.0.os.Root.Mkdir(All)could follow junctions out of the root on Windows.Also:
github.com/tdewolff/minifyis upgraded to v2.24.19, which fixes GHSA-3ppm-p7r9-c5w3:</script>(and<!--) inside inline scripts was not properly escaped (case-insensitively) when minifying JS in HTML.module.replacementsdefined in themes; only the project can define replacements.Changes
0732ead@bep #15420ac62c80@taekop #12838be8ffd6@bep285d0ef@bepc94bdf9@bep63fb71c@bep2f2f33b@bep53aae44@bep13ee7e9@bep #154330688a8c@bep #15435c9f6e4d@bep #15430df8bade@bep #7844d1024ae@bep #154256883b55@bepf44c355@bep #1542746123a6@bep31f5395@toddy156b3ba3a@bep #15403ec69d0e@bepDependency Updates
2bbad50@dependabot[bot]030619b@dependabot[bot]13ef707@dependabot[bot]846b1d7@dependabot[bot]16441d2@dependabot[bot]Build Setup
8c88da3@jmooringv0.167.0Compare Source
This release brings relative partial references, slug support for branch pages, and a handful of security hardening fixes.
Relative partial references. A partial name starting with
./or../is now resolved relative to the directory of the calling partial. This makes it much easier to write self-contained, movable partial trees, e.g.{{ partial "./item.html" . }}from withinlayouts/_partials/card/list.html. Relative paths are only allowed from within partials, and paths resolving outside the partials directory is an error. See #15373 and the documentation.Slugs for section, taxonomy and term pages. The
slugfront matter now works for branch pages, not just regular pages, and it cascades to descendants. This is particularly useful in multilingual sites, where e.g.content/help/_index.es.mdwithslug: ayudagives/es/ayuda/,/es/ayuda/avanzado/etc. See #14352.Other notable improvements include the new
build.cleanDestinationDirconfig withkeepFiles/keepDirsGlob patterns (#14937, docs),hugonow builds without a config file (#15393), exact numeric comparisons ineq,where,inand the set functions (#15322, #15358), and automatic summaries that no longer end inside an open list or blockquote (#14044).Security
This release contains several hardening fixes. None of them are known to be exploited, but if you build sites with untrusted themes or modules, you should upgrade.
security.allowReadroots as the Node.js tools andjs.Build.41040cc(thanks to @Hama1cco)/assetswere resolved and read by ESBuild itself. The resolved path is now checked against the allowed read paths before ESBuild loads it.2aa51f3(thanks to @Hama1cco)2fe9bab## Foo {id="..."}) were written unescaped into the table of contentshref, allowing attribute breakout.671fbf2Note
baseURLis nowhttps://example.org/(it was empty). Hugo has always required a valid URL to work properly, so this mostly affects new and test sites, but if you relied on the empty default for relative URLs, setbaseURLexplicitly.bc68654@bep #14625 #15384cleanDestinationDirconfig key is deprecated in favour ofbuild.cleanDestinationDir.enable. The--cleanDestinationDirflag maps to the new key. Note that.gitfiles in the publish dir are now kept by default.9086193@bep #14937eqnow compares numeric values the same way aslt,leetc., so e.g.eq 1 1.0is nowtrue. Also,in,intersect,union,uniq,symdiff,complementandwhere'sin/not innow compare numbers exactly rather than viafloat64, and no longer require the Go types to match.4d628bb366377b@bep #15322 #15358140d936@jmooring #15389summaryLengthwhen needed so they don't end inside an open container element. This may change the summary for some pages.d692a24@bep #14044Bug fixes
fdbba5a@jmooring2782bfd@flyn-org5edd05b@bep #11266 #153691d87ee5@bepffbcdba@hktitof #15323a374b86@bep #15330Improvements
f6606f1@bep41040cc@bep2aa51f3@bepc7f9999@bep #15393dd16df1@jakezwang #11131140d936@jmooring #1538983ab799@bep5d43ab7@bep #14352806a62e@bep #153858bac4de@bepbd1588b@bep #153739086193@bep #14937a74b753@bep #843307b9fba@jmooring #843309fa49b@bep2fe9bab@bep671fbf2@bep25f2856@bep #15367cb6a707@bep #15355 #15361366377b@bep #15358 #1535910bb97b@bep51cd9e6@bepec578f0@jmooring #153555698de9@bepd692a24@bep #14044 #149273be817e@bep4d628bb@bep #15322 #15347aaacd12@jmooring #15332881c0ec@bepDependency Updates
1567bde@dependabot[bot]9e4059c@dependabot[bot]8e3bbe6@dependabot[bot]753c5fc@dependabot[bot]facde8a@dependabot[bot]c7e1a8e@dependabot[bot]ec57bb7@dependabot[bot] #15324Documentation
7a46cd2@mikoxyzBuild Setup
34d8cdb@bepv0.166.0Compare Source
This release is mostly about hardening and bug fixes, but there are some notable changes:
.Rendernow takes an optional context argument:{{ .Render "view" $ctx }}, mirroring thepartialAPI. This makes it possible to pass e.g. a dict to a content view. See #15077.returnkeyword in templates has been reimplemented. It now works in any template (not just partials) and can be used anywhere, e.g. insideiforrangeblocks. See #15212.resources.Publishtemplate function andIndexOfmethod onPages.relatedconfig: newtokenizeoption for index values, and index creation is faster.Note
8d88b8b@bep #15267d19e0a4@bep #12536 #12543 #15266Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.