Skip to content
@bep bep
Compare
Choose a tag to compare

Hugo v0.101.0 comes with GIF animation image processing, a new hl_inline option for code highlighting, a new :slugorfilename permalink keyword, we now respect the NO_COLOR OS env var, and more.

This release represents 35 contributions by 9 contributors to the main Hugo code base.@bep leads the Hugo development with a significant amount of contributions, but also a big shoutout to @dependabot[bot], @jmooring, and @vanbroup for their ongoing contributions. Also a shoutout to @CIAvash for his work on the Chroma highlighter.

Many have also been busy writing and fixing the documentation in hugoDocs,
which has received 3 contributions by 2 contributors.

Hugo now has:

Changes

@bep bep
Compare
Choose a tag to compare

This release is mostly motivated by the fix for the panic experienced by people having blackfriday configured as defaultMarkdownHandler (#9968). The Blackfriday support was removed in Hugo v0.100.0 after being deprecated with a warning for a long time.

@bep bep
Compare
Choose a tag to compare

$page.RenderString (see #6703) finally supports shortcodes, and shortcode improvements is the main theme in Hugo 0.100.0.

Indentation fixes for shortcode blocks: We now record the indentation before the opening shortcode tag when parsing the source. This allow us to fix a couple of annoying issues in Hugo:

  1. We have added a new .InnerIndent method to the shortcode context to prevent the highlight shortcode from including in the indentation as part of the code block. See #4717.
  2. Hugo now preserves the indentation for shortcode blocks. See more below.

A shortcode block is when the shortcode is included as the first non-whitespace content on a line. Note that this does not touch shortcodes with inner content, where the user is in control of the indentation. See issue #9946 for more information. An example, say that I have this in layouts/shortcodes/mylist.md:

* Culpa enim incididunt fugiat id dolore velit laboris veniam minim.
* Tempor ex nisi labore ad elit laborum ex ullamco aute labore eu occaecat. 
* Deserunt mollit aliqua est laboris et irure eu non. 
* Consectetur nulla minim non reprehenderit Lorem elit dolore quis.

And then use that shortcode in a content file:

* My List
  {{% mylist %}}

In earlier versions of Hugo the above would render as:

image

Now it renders as:

image

Note that in the example above we use the md file suffix for the shortcode. In this release we also added Markdown as a built-in output format in Hugo, defined as a plain text format, meaning you get more lenient parsing compared to HTML. Using this if your shortcode produces Markdown has fewer quirks. See #9821.

Also noteworthy is the new template function resources.Copy which allows you to copy almost any Hugo Resource (the one exception is the Page), possibly most useful for renaming things:

{{ $resized := $image.Resize "400x400" |  resources.Copy "images/mynewname.jpg" } }}
<img src="{{ $resized.RelPermalink }}">

This release represents 32 contributions by 4 contributors to the main Hugo code base.@bep leads the Hugo development with a significant amount of contributions, but also a big shoutout to @dependabot[bot], @satotake, and @moorereason for their ongoing contributions.

Many have also been busy writing and fixing the documentation in hugoDocs,
which has received 1 contributions by 1 contributors.

Hugo now has:

Notes

  • The methods on Page IsDescendant and IsAncestor now returns true for itself, which is obviously the correct behaviour. We have fixed this before, but reverted it because it broke some theme's logic. Looking back, that reversion was a mistake. If you want the old logic you can get that by doing somethiong ala {{ if or (eq $p1 $p2) ($p1.IsAncestor $p2) }}{{ end }} #9925
  • We have removed Blackfriday as a Markdown option. It has been deprecated for a long time, its v1 version is not maintained anymore, and there are many known issues. Goldmark should be a mature replacement by now. #9944

Changes

@bep bep
Compare
Choose a tag to compare

Fix server regression for multihost sites (multiple languages with different baseURLs) 2f9eac4 @bep #9901

@bep bep
Compare
Choose a tag to compare

The theme of this release is error handling – a topic grievously underrated in most development tools. You are often expected to Google this mysterious error and end up in some Stackoverflow thread telling you to use a specific Node version. Hugo has done an OK job in this department, but when I, @bep, recently got stuck with a minify error I had no clue how to debug, I knew we had to take another look at this. There is a list of "error improvements below", but here is one visual example:

image

The two screenshots above is from the same template error in Hugo v0.98.0 (left) and the new v0.99.0 (right). This is a type error (method not found) in a partial included in a shortcode template. We did a decent job in v0.98.0, too, pointing at correct line in the partial. But the right version has the full stack, with absolute filename, line and column and some file context (highlighted lines) for all of the files involved in the error (Markdown file, shortcode and partial). Having these source file references to click on in the VS Code terminal is a real time saver, especially in Hugo projects with mulitiple file roots (themes, theme components).

A list of the most important "error improvements":

  • A new server error template (can be overridden in layouts/_server/error.html), always add the content file context if relevant, improve JS errors, Add file context (with position) to codeblock render blocks, add file context to errors in the publishing step (e.g. minify), and more. #9892 #9891 #9893
  • Fix SIGINT handling (allowing to kill the server) after loading bad configuration #9664
  • Improve SASS/SCSS errors (both Dart SASS and Libsass) #9897
  • Fix line numbers in errors from PostCSS, add missing file context to "import not found" #9895

Also worth mentioning is the new clock cli flag (#8787 ) which allows you to "set the clock" and see how your site looks like ... in the future.

This release represents 24 contributions by 4 contributors to the main Hugo code base.@bep leads the Hugo development with a significant amount of contributions, but also a big shoutout to @dependabot[bot], @satotake, and @nathannaveen for their ongoing contributions.

Many have also been busy writing and fixing the documentation in hugoDocs,
which has received 3 contributions by 2 contributors.

Hugo now has:

Notes

Changes

@bep bep
Compare
Choose a tag to compare

This release is mostly some important upgrades of Hugo's core dependencies, but we have also added crypto.FNV32a template function, which produces 32-bit unsigned integer hashes from a string. We have already many hash functions, but none of them produces an integer, which can be useful, e.g.:

{{ $mystring := "Hugo" }}
{{ $colors := slice "orange" "blue" "green" "steel" "hotpink" }}
{{ $hash := (crypto.FNV32a $mystring) }}
{{ $i := mod $hash (len $colors) }}
{{ $color := index $colors $i }}

This release represents 29 contributions by 3 contributors to the main Hugo code base.

Hugo now has:

Notes

Changes

@bep bep
Compare
Choose a tag to compare

The v0.97.x release has been an Easter riddle. The new --renderStaticToDisk flag required a consolidation of the file systems in Hugo, which introduced a bug. The fix for that bug introduced a new bug, and reverting the obvious pick of the two candidate commits ... did not resolve the issue.

OK, all good things are three, and now with proper tests to avoid this particular issue happening again.

@bep bep
Compare
Choose a tag to compare

NOTE: We seem to have introduced an issue with /static synching of files in this release, so we recommend wait for thev0.97.3 and roll back to the v0.97.0 or earlier for now.

This release reverts one of the fixes from yesterday, which broke more than it fixed:

  • Revert "Fix PostProcess regression for hugo server" 6c35a1a @bep
@bep bep
Compare
Choose a tag to compare

NOTE: We seem to have introduced an issue with /static synching of files in this release, so we recommend wait for thev0.97.3 and roll back to the v0.97.0 or earlier for now.

This is a bug-fix release with a couple of important fixes. Note that the MediaType on image conversion bug isn't a regression, that bug has been there since we added the target format option to the image processing methods.