Skip to content

Releases: cashapp/hermit

v0.52.1

21 Apr 16:52
107c8b9

Choose a tag to compare

fix: deadlock between Task.Size and redrawProgress under parallel ins…

v0.52.0

20 Apr 17:45
b3daf6d

Choose a tag to compare

feat: parrallellize hermit install downloads (#558)

Download package archives concurrently during install using errgroup,
with concurrency defaulting to `runtime.NumCPU()`. A new `-j` flag
allows overriding the parallelism level.

Only the download phase is parallelised. Extraction and linking remain
serial because unpack triggers may execute binaries from dependency
packages.

Both install paths benefit:
- **No-args** (re-install existing): parallel download, then serial
CacheAndUnpack.
- **With packages**: parallel download, then serial install/link loop.

A new `State.Download` method is added to expose download-only
functionality, separate from `CacheAndUnpack`.

Co-authored-by: Amp <amp@ampcode.com>

v0.51.0

13 Apr 02:45
24c8d37

Choose a tag to compare

Guard zsh prompt prefix updates (#555)

## Summary
- only capture `_HERMIT_OLD_PS1` and prepend the Hermit prompt once in
`update_hermit_ps1`
- avoid re-prepending the Hermit prompt on later precmd runs once the
original prompt has been recorded

## Testing
- `go test ./...`

Co-authored-by: Amp <amp@ampcode.com>

v0.50.2

26 Mar 20:27
12d4e4a

Choose a tag to compare

fix: sync sources on ListInstalled resolution failure (#552)

Co-authored-by: Amp <amp@ampcode.com>

v0.50.1

19 Mar 01:39
a1ecc96

Choose a tag to compare

fix: move download outside global lock in CacheAndUnpack (#551)

## Summary

- Move the network download step outside the global file lock in
`CacheAndUnpack()` so slow downloads no longer block other hermit
processes
- Only the fast local extract + link operations remain under the lock,
preventing "timed out acquiring lock" errors in CI
- Consistent with `CacheAndDigest()` which already downloads outside any
lock

This is safe because cache paths are content-addressed (SHA256-based)
and the cache layer uses temp files + atomic `os.Rename` (see
`cache/http.go` `downloadHTTP()`).

per
[ADR-0098](https://docs.google.com/document/d/1CxeLv3gArVytK8pJLw-MMA3t6j4OqE65rK1Kbs6RcrM/edit)
and the [Workspace
Contract](https://docs.google.com/document/d/18Susz4iTeWoINhchvIFmSen_fHU657hAurvNlZFliuY/edit).

## Test plan

- [x] \`go build ./...\` compiles successfully
- [x] \`go test ./state/... ./cache/...\` passes
- [ ] Verify in CI that parallel hermit installs no longer produce lock
timeout errors

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

v0.50.0

01 Mar 20:33
b2a1c14

Choose a tag to compare

fix: move all make commands to just (#548)

v0.49.4

18 Feb 02:34
f13c834

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.49.3...v0.49.4

v0.49.3

17 Feb 22:24
11a3ef7

Choose a tag to compare

What's Changed

  • cache: do not print spurious '%s' format verb by @marco-m in #544
  • fix: prevent Git argument injection RCE by @wsutina in #542

New Contributors

Full Changelog: v0.49.2...v0.49.3

v0.49.2

10 Feb 05:11
c041ab2

Choose a tag to compare

chore: add just commands for release workflow (#543)

Adds `just` and `gh` as Hermit dependencies and creates a justfile with
release commands:

- `just release` — auto-calculates next patch version, confirms, and
creates a GitHub release
- `just release-minor` — same but bumps the minor version
- `just release-status` — shows recent release workflow runs
- `just release-watch` — live-watches the latest release workflow
- `just release-list` — lists recent releases

Also updates RELEASE.md to reference the new commands.


ℹ️ The repo also has a Makefile - I've not touched that... perhaps we
eventually want to move it all to just 🤔 .

Co-authored-by: Amp <amp@ampcode.com>

v0.49.1

06 Feb 06:28
69dbf29

Choose a tag to compare

Revert "fix: symlinks/hard links could escape during unarchiving" (#539)

This reverts commit 80919e76b1db80e7967059b6c4182b06a213e29d.