Releases: jmooring/hvm
v0.14.0
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,
hvmfollows thepromptForEditionsetting to either prompt you for a choice or automatically select yourdefaultEdition. - If you provide both the version and the edition,
hvmselects 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,
hvmdisplays a second menu to select an edition ifpromptForEditionis true. - If
promptForEditionis set to false,hvmautomatically selects thedefaultEditionfor 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 useandhvm installselect whenpromptForEditionisfalseor when you omit the edition during direct selection. The default isstandard. -
promptForEdition(bool)Whether
hvm useandhvm installshow the edition selection menu during interactive selection or when you omit the edition during direct selection. Setting this tofalseinstructshvmto select thedefaultEditioninstead. The default istrue.
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
- 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
hvmafter installing this release, it will clear your existing cache to ensure you do not have unnecessary files lying around. - We changed the
.hvmfile format. On the first read,hvmmigrates files containing only a version automatically. Specifically,hvmmigrates versions at or below v0.160.0 toversion/extended, while it migrates later versions toversion/defaultEdition. After printing a warning to stderr,hvmrewrites the file in the new format. You do not need to take any manual action. - You must update custom scripts that manually parse the
.hvmfile. 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
-
The withdeploy build is new in v0.159.2. ↩
v0.13.0
v0.12.0
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
v0.10.0
v0.9.1
v0.9.0
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
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
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