Skip to content

Releases: jmooring/hvm

v0.14.0

05 Apr 18:42
Immutable release. Only release title and notes can be modified.
3246351

Choose a tag to compare

Release notes

Hugo provides four build editions: standard, withdeploy1, extended, and extended_withdeploy. Previous versions of hvm exclusively downloaded the extended edition. This release allows you to choose both the version and the edition.

What changed

File format

The .hvm file now stores a version and edition pair, replacing the previous format that only stored a version. For example:

v0.159.2/standard
v0.159.2/withdeploy
v0.159.2/extended
v0.159.2/extended_withdeploy

Command behavior

The hvm use and hvm install commands now handle editions in two ways, depending on how you call them.

When you provide a version as an argument, you can now optionally append an edition.

  • If you provide the version only and omit the edition, hvm follows the promptForEdition setting to either prompt you for a choice or automatically select your defaultEdition.
  • If you provide both the version and the edition, hvm selects that specific pair immediately.

When you run hvm use or hvm install without any arguments, the tool starts an interactive flow.

  • In step 1, you select a version from the list.
  • In step 2, hvm displays a second menu to select an edition if promptForEdition is true.
  • If promptForEdition is set to false, hvm automatically selects the defaultEdition for the version you chose in the first step.

Cache layout change

We changed the cache directory structure from something like this:

hvm/
├── default/
│   └── hugo
├── v0.150.0/
│   └── hugo
└── v0.159.2/
    └── hugo

to something like this:

hvm/
├── default/
│   └── hugo
├── v0.150.0/
│   ├── extended/
│   │   └── hugo
│   └── standard/
│       └── hugo
├── v0.159.2/
│   ├── extended/
│   │   └── hugo
│   ├── standard/
│   │   └── hugo
│   └── withdeploy/
│       └── hugo
├── releases.json
└── schema.json

Cache schema versioning

With this and future releases, hvm creates a schema.json file at the root of the cache directory. On the first run after upgrading, hvm will not find a schema.json in the cache directory, so it removes all previously cached version directories and writes a new schema.json file. A message printed to stderr will state that hvm migrated the cache to a new format and removed old cached versions. This migration does not affect the default directory used by hvm install.

New configuration options

There are two new configuration keys.

  • defaultEdition (string)

    The edition hvm use and hvm install select when promptForEdition is false or when you omit the edition during direct selection. The default is standard.

  • promptForEdition (bool)

    Whether hvm use and hvm install show the edition selection menu during interactive selection or when you omit the edition during direct selection. Setting this to false instructs hvm to select the defaultEdition instead. The default is true.

Why we changed it

Hugo will deprecate the extended and extended/deploy editions in the near future, requiring users to migrate to other editions. Tracking the edition explicitly is now a requirement for hvm so that shell integration can locate the correct binary in the two-level cache hierarchy.

Historically, users installed one of the extended editions to enable specific features that other editions lacked, but these requirements are now obsolete:

  • Users previously required the extended editions to encode WebP images. This is no longer necessary because all editions now handle WebP encoding natively.
  • Users previously required the extended editions to transpile Sass to CSS using LibSass. However, the Sass team deprecated LibSass six years ago. Users should now use Dart Sass, which is compatible with every Hugo edition.

Breaking changes

  1. We changed the cache directory structure to accommodate the version and edition identity. Tracking this structure now involves a schema file, and any schema changes trigger a cache clearing to prevent the accumulation of obsolete data. Consequently, the first time you run hvm after installing this release, it will clear your existing cache to ensure you do not have unnecessary files lying around.
  2. We changed the .hvm file format. On the first read, hvm migrates files containing only a version automatically. Specifically, hvm migrates versions at or below v0.160.0 to version/extended, while it migrates later versions to version/defaultEdition. After printing a warning to stderr, hvm rewrites the file in the new format. You do not need to take any manual action.
  3. You must update custom scripts that manually parse the .hvm file. Because the file now contains a version and edition pair separated by a forward slash, existing logic that expects only a version string will no longer function as expected.

Shell integration

Official shell integration scripts continue to function without modification. While we changed the internal pathing to the binary to include the edition component, the scripts handle this resolution automatically. You do not need to update your shell configuration manually.

Changelog

  • 72d396f all: Add edition selection alongside version selection
  • 3319350 all: Improve test coverage
  • 691d141 build(deps): bump github.com/pelletier/go-toml/v2 from 2.2.4 to 2.3.0
  • 0bc709a build(deps): bump golang.org/x/mod from 0.33.0 to 0.34.0
  • f0a6ac3 build(deps): bump golang.org/x/oauth2 from 0.35.0 to 0.36.0
  • 3246351 cmd/aliases: Improve PowerShell alias
  • 033fa5d cmd/aliases: Use Write-Host for powershell alias output
  • f7c4a5b cmd: Remove unused helper function
  • a71c740 misc: Adjust badges
  • 4189932 misc: Fix coverage badge
  • 887b03f misc: Remove coverage badge
  • c233050 misc: Update README
  • 3cbb303 misc: Update README
  • 8a386c0 misc: Update README
  • ae84cea misc: Update deps
  1. The withdeploy build is new in v0.159.2.

v0.13.0

23 Feb 00:26
Immutable release. Only release title and notes can be modified.
96dbf94

Choose a tag to compare

Changelog

  • 96dbf94 misc: Add Windows arm64 to build matrix

v0.12.0

23 Feb 00:08
Immutable release. Only release title and notes can be modified.
5caa4d1

Choose a tag to compare

Changelog

  • dbf0310 build(deps): bump golang.org/x/mod from 0.32.0 to 0.33.0
  • efec453 build(deps): bump golang.org/x/oauth2 from 0.34.0 to 0.35.0
  • 270f363 cmd: Add support for HVM_GITHUB_TOKEN with high precedence
  • f9e2eb3 misc: Update README
  • 5caa4d1 misc: Update demonstration
  • abf155f misc: Update deps
  • 56162f4 misc: Upgrade to Go 1.26.0

v0.11.0

12 Jan 01:42
Immutable release. Only release title and notes can be modified.
0d7449f

Choose a tag to compare

There are no user-facing changes in this release.

Changelog

v0.10.0

10 Jan 05:29
Immutable release. Only release title and notes can be modified.
a81891c

Choose a tag to compare

Changelog

  • b0312eb all: Improve test coverage
  • 3f26071 all: Reorganize codebase with separated concerns
  • 13b846b cmd: Add update notification
  • 98d7046 cmd: Clean up version string formatting
  • a81891c misc: Update README and demonstration

v0.9.1

08 Jan 23:34
52af681

Choose a tag to compare

Changelog

  • 52af681 cmd: Improve version string with local builds

v0.9.0

23 Dec 12:21
e973f7a

Choose a tag to compare

Hugo v0.153.0 changed the macOS build asset from a .tar.gz to a .pkg file. This update adds support for downloading and processing .pkg installers to maintain compatibility with newer Hugo releases.

Changelog

  • 16eb55a all: Support macOS .pkg archives
  • 65ce97a build(deps): bump github.com/spf13/cobra from 1.10.1 to 1.10.2
  • 323879c build(deps): bump golang.org/x/mod from 0.28.0 to 0.29.0
  • 916287a build(deps): bump golang.org/x/mod from 0.29.0 to 0.30.0
  • 91a3552 build(deps): bump golang.org/x/mod from 0.30.0 to 0.31.0
  • bd7ef33 build(deps): bump golang.org/x/oauth2 from 0.31.0 to 0.32.0
  • 6c5c074 build(deps): bump golang.org/x/oauth2 from 0.32.0 to 0.33.0
  • c560df1 build(deps): bump golang.org/x/oauth2 from 0.33.0 to 0.34.0
  • 208879c misc: Update README
  • c926d25 misc: Update README
  • f32648b misc: Update README
  • adbef63 misc: Update README
  • 9d148c5 misc: Update demonstration
  • e973f7a tests: Change version to v0.153.0

v0.8.4

08 Oct 17:18
8d95df0

Choose a tag to compare

The only user-facing change in this release is a fix for the fish shell alias function generated by hvm gen alias fish. Thanks to @iwai-wovn for the fix.

Changelog

  • 32dab21 build(deps): bump github.com/go-viper/mapstructure/v2
  • ae0e575 build(deps): bump github.com/go-viper/mapstructure/v2
  • 0260046 build(deps): bump github.com/spf13/cobra from 1.9.1 to 1.10.1
  • 30100e8 build(deps): bump github.com/spf13/viper from 1.20.1 to 1.21.0
  • 395e653 build(deps): bump golang.org/x/mod from 0.24.0 to 0.25.0
  • 57c06a3 build(deps): bump golang.org/x/mod from 0.25.0 to 0.26.0
  • 4092de3 build(deps): bump golang.org/x/mod from 0.26.0 to 0.27.0
  • fc1150a build(deps): bump golang.org/x/mod from 0.27.0 to 0.28.0
  • aef334f build(deps): bump golang.org/x/oauth2 from 0.30.0 to 0.31.0
  • 5c9cb3d cmd/aliases: Fix fish shell alias
  • d86b876 misc: Allow running workflows on-demand
  • b180e38 misc: Update README
  • 8d95df0 misc: Update demonstration
  • bb20065 misc: Update notes regarding demo creation
  • c8a4240 misc: Update workflows

v0.8.3

08 Jun 23:40
22c2428

Choose a tag to compare

There are no functional changes in this release.

Changelog

  • 8acc33e build(deps): bump github.com/pelletier/go-toml/v2 from 2.2.3 to 2.2.4
  • fab3187 build(deps): bump github.com/spf13/cobra from 1.8.1 to 1.9.1
  • 3646b37 build(deps): bump github.com/spf13/viper from 1.19.0 to 1.20.0
  • ab71d7e build(deps): bump github.com/spf13/viper from 1.20.0 to 1.20.1
  • 210359e build(deps): bump golang.org/x/mod from 0.22.0 to 0.23.0
  • 5be2bd2 build(deps): bump golang.org/x/mod from 0.23.0 to 0.24.0
  • e12f669 build(deps): bump golang.org/x/oauth2 from 0.25.0 to 0.26.0
  • d5a0241 build(deps): bump golang.org/x/oauth2 from 0.27.0 to 0.28.0
  • 5411074 build(deps): bump golang.org/x/oauth2 from 0.28.0 to 0.29.0
  • 9c3348b build(deps): bump golang.org/x/oauth2 from 0.29.0 to 0.30.0
  • a2e1429 build: Bump go from 1.24.0 to 1.24.4
  • 0cbb526 cmd/testscripts: Update for Go 1.24
  • e58f54c cmd/use: Improve short use command description
  • 469e53b misc: Update README
  • 4234b0a misc: Update demonstration
  • 5db1aba misc: Update test workflow
  • 8f1dde3 pkg/helpers: Minor improvements
  • 8404313 pkg/helpers: Remove unused functions
  • 22c2428 pkg/helpers: Use os.CopyFS to copy directory content

v0.8.2

03 Feb 22:32
0fe67b3

Choose a tag to compare

Changelog

  • 0fe67b3 cmd/aliases: Fix Z shell alias