Skip to content

Releases: Davidb3l/Hayvenhurst-dev

v0.0.9

Choose a tag to compare

@github-actions github-actions released this 13 Oct 17:37
24df5b8

Hayvenhurst v0.0.6

The daemon now outlives the session that started it

Until now hayven daemon start ran in the foreground: close the terminal (or
end the agent session) that launched it and the daemon died with it — and every
other repo's tools failed with "could not reach daemon" until someone restarted
it by hand.

v0.0.6 makes the daemon a proper background service.

  • hayven daemon start detaches by default. It spawns the daemon as its
    own detached process, waits for the health check, prints the pid and the
    projects it serves, and returns. Exiting your shell or session no longer
    kills it. Use --foreground for the old behavior (CI, supervisors).
  • Starting in a second repo joins the running daemon instead of failing
    with "address already in use" — the repo is registered live and served
    immediately.
  • SIGHUP is handled gracefully (clean shutdown + pidfile removal), and
    stale pidfiles are cleaned automatically on start.
  • The Claude Code plugin auto-revives the daemon: a session-start hook
    starts it (detached) in any Hayvenhurst repo where it isn't running.

Safe sharing: every write is project-addressed

One daemon serving many repos (v0.0.5) needed one more guarantee: a command run
in repo B must never write into repo A's data.

  • Mutating CLI commands (claim, release, node body, sync, summarize)
    now address their own project explicitly; the daemon refuses writes naming a
    project it doesn't serve instead of falling back to the primary.
  • hayven sync identifies the peer project before exchanging anything.
    Syncing against a peer daemon that serves several projects requires
    --peer-project <alias> (single-project peers are picked automatically), so
    two different repos can never cross-contaminate each other's history.
  • The live-sync WebSocket pins each connection to its selected project, and
    cleanly disconnects peers of a project that is removed from the daemon.

Releases are now actually signed

A packaging bug meant earlier releases published no signature assets despite
the Sigstore signing step running. Fixed: from v0.0.6 every tarball ships with
its .sigstore.json bundle alongside the .sha256 checksum.

Upgrade

/plugin update hayvenhurst        # Claude Code plugin (0.0.6)
/hayvenhurst:install-binary       # fetches this release's binary
hayven daemon stop && hayven daemon start   # restart into the detached daemon

Single-repo setups need nothing else; existing indexes are untouched.

What's Changed

  • test: reap detached test daemons on Windows too by @Davidb3l in #10
  • fix(windows): no console windows from the daemon; name what locks hayven.exe by @Davidb3l in #9
  • release: v0.0.9 by @Davidb3l in #11

Full Changelog: v0.0.8...v0.0.9

v0.0.8

Choose a tag to compare

@github-actions github-actions released this 12 Oct 02:49
2b90118

Hayvenhurst v0.0.6

The daemon now outlives the session that started it

Until now hayven daemon start ran in the foreground: close the terminal (or
end the agent session) that launched it and the daemon died with it — and every
other repo's tools failed with "could not reach daemon" until someone restarted
it by hand.

v0.0.6 makes the daemon a proper background service.

  • hayven daemon start detaches by default. It spawns the daemon as its
    own detached process, waits for the health check, prints the pid and the
    projects it serves, and returns. Exiting your shell or session no longer
    kills it. Use --foreground for the old behavior (CI, supervisors).
  • Starting in a second repo joins the running daemon instead of failing
    with "address already in use" — the repo is registered live and served
    immediately.
  • SIGHUP is handled gracefully (clean shutdown + pidfile removal), and
    stale pidfiles are cleaned automatically on start.
  • The Claude Code plugin auto-revives the daemon: a session-start hook
    starts it (detached) in any Hayvenhurst repo where it isn't running.

Safe sharing: every write is project-addressed

One daemon serving many repos (v0.0.5) needed one more guarantee: a command run
in repo B must never write into repo A's data.

  • Mutating CLI commands (claim, release, node body, sync, summarize)
    now address their own project explicitly; the daemon refuses writes naming a
    project it doesn't serve instead of falling back to the primary.
  • hayven sync identifies the peer project before exchanging anything.
    Syncing against a peer daemon that serves several projects requires
    --peer-project <alias> (single-project peers are picked automatically), so
    two different repos can never cross-contaminate each other's history.
  • The live-sync WebSocket pins each connection to its selected project, and
    cleanly disconnects peers of a project that is removed from the daemon.

Releases are now actually signed

A packaging bug meant earlier releases published no signature assets despite
the Sigstore signing step running. Fixed: from v0.0.6 every tarball ships with
its .sigstore.json bundle alongside the .sha256 checksum.

Upgrade

/plugin update hayvenhurst        # Claude Code plugin (0.0.6)
/hayvenhurst:install-binary       # fetches this release's binary
hayven daemon stop && hayven daemon start   # restart into the detached daemon

Single-repo setups need nothing else; existing indexes are untouched.

What's Changed

  • ci(release): bump gh-action-sigstore-python to v3.5.0 (HAYV-11) by @Davidb3l in #2
  • feat(install): Windows installers: Git Bash/MSYS/Cygwin + native install-hayven.ps1 (HAYV-15) by @Davidb3l in #3
  • docs(community): GitHub page polish for the open source program (HAYV-16) by @Davidb3l in #4
  • feat(projects): registry management CLI + auto-relocation of moved repos (HAYV-12) by @Davidb3l in #5
  • feat(worktree): per-worktree overlay indexes so reads inside a Sirius worktree see its code (HAYV-13) by @Davidb3l in #6
  • fix(install): Windows findings from a real Win 11 test (HAYV-15) by @Davidb3l in #7
  • release: v0.0.8 by @Davidb3l in #8

Full Changelog: v0.0.7...v0.0.8

v0.0.7

Choose a tag to compare

@github-actions github-actions released this 02 Aug 06:37

Hayvenhurst v0.0.6

The daemon now outlives the session that started it

Until now hayven daemon start ran in the foreground: close the terminal (or
end the agent session) that launched it and the daemon died with it — and every
other repo's tools failed with "could not reach daemon" until someone restarted
it by hand.

v0.0.6 makes the daemon a proper background service.

  • hayven daemon start detaches by default. It spawns the daemon as its
    own detached process, waits for the health check, prints the pid and the
    projects it serves, and returns. Exiting your shell or session no longer
    kills it. Use --foreground for the old behavior (CI, supervisors).
  • Starting in a second repo joins the running daemon instead of failing
    with "address already in use" — the repo is registered live and served
    immediately.
  • SIGHUP is handled gracefully (clean shutdown + pidfile removal), and
    stale pidfiles are cleaned automatically on start.
  • The Claude Code plugin auto-revives the daemon: a session-start hook
    starts it (detached) in any Hayvenhurst repo where it isn't running.

Safe sharing: every write is project-addressed

One daemon serving many repos (v0.0.5) needed one more guarantee: a command run
in repo B must never write into repo A's data.

  • Mutating CLI commands (claim, release, node body, sync, summarize)
    now address their own project explicitly; the daemon refuses writes naming a
    project it doesn't serve instead of falling back to the primary.
  • hayven sync identifies the peer project before exchanging anything.
    Syncing against a peer daemon that serves several projects requires
    --peer-project <alias> (single-project peers are picked automatically), so
    two different repos can never cross-contaminate each other's history.
  • The live-sync WebSocket pins each connection to its selected project, and
    cleanly disconnects peers of a project that is removed from the daemon.

Releases are now actually signed

A packaging bug meant earlier releases published no signature assets despite
the Sigstore signing step running. Fixed: from v0.0.6 every tarball ships with
its .sigstore.json bundle alongside the .sha256 checksum.

Upgrade

/plugin update hayvenhurst        # Claude Code plugin (0.0.6)
/hayvenhurst:install-binary       # fetches this release's binary
hayven daemon stop && hayven daemon start   # restart into the detached daemon

Single-repo setups need nothing else; existing indexes are untouched.

What's Changed

  • feat(spine): emit code.changed on the suite event spine (SUITE_CONTRACTS §2) by @Davidb3l in #1

New Contributors

Full Changelog: v0.0.6...v0.0.7

v0.0.6

Choose a tag to compare

@github-actions github-actions released this 10 Jul 09:46

Hayvenhurst v0.0.6

The daemon now outlives the session that started it

Until now hayven daemon start ran in the foreground: close the terminal (or
end the agent session) that launched it and the daemon died with it — and every
other repo's tools failed with "could not reach daemon" until someone restarted
it by hand.

v0.0.6 makes the daemon a proper background service.

  • hayven daemon start detaches by default. It spawns the daemon as its
    own detached process, waits for the health check, prints the pid and the
    projects it serves, and returns. Exiting your shell or session no longer
    kills it. Use --foreground for the old behavior (CI, supervisors).
  • Starting in a second repo joins the running daemon instead of failing
    with "address already in use" — the repo is registered live and served
    immediately.
  • SIGHUP is handled gracefully (clean shutdown + pidfile removal), and
    stale pidfiles are cleaned automatically on start.
  • The Claude Code plugin auto-revives the daemon: a session-start hook
    starts it (detached) in any Hayvenhurst repo where it isn't running.

Safe sharing: every write is project-addressed

One daemon serving many repos (v0.0.5) needed one more guarantee: a command run
in repo B must never write into repo A's data.

  • Mutating CLI commands (claim, release, node body, sync, summarize)
    now address their own project explicitly; the daemon refuses writes naming a
    project it doesn't serve instead of falling back to the primary.
  • hayven sync identifies the peer project before exchanging anything.
    Syncing against a peer daemon that serves several projects requires
    --peer-project <alias> (single-project peers are picked automatically), so
    two different repos can never cross-contaminate each other's history.
  • The live-sync WebSocket pins each connection to its selected project, and
    cleanly disconnects peers of a project that is removed from the daemon.

Releases are now actually signed

A packaging bug meant earlier releases published no signature assets despite
the Sigstore signing step running. Fixed: from v0.0.6 every tarball ships with
its .sigstore.json bundle alongside the .sha256 checksum.

Upgrade

/plugin update hayvenhurst        # Claude Code plugin (0.0.6)
/hayvenhurst:install-binary       # fetches this release's binary
hayven daemon stop && hayven daemon start   # restart into the detached daemon

Single-repo setups need nothing else; existing indexes are untouched.

Full Changelog: v0.0.5...v0.0.6

v0.0.5

Choose a tag to compare

@github-actions github-actions released this 03 Jul 05:44

Hayvenhurst v0.0.5

Multiple repos from one daemon

Until now a Hayvenhurst daemon served exactly one repository — the directory it
was started in. Install it in two repos and they collided on the same port; you
could only see whichever one the daemon happened to start on.

v0.0.5 makes one daemon serve any number of repos, switchable on the fly.

  • hayven init registers each project automatically. Manage the set with
    hayven daemon register <path>, hayven daemon projects, and
    hayven daemon unregister <alias|path>.
  • One daemon serves them all. Start it once; it opens every registered
    project's index. The graph viewer gains a project switcher in the nav,
    and every API endpoint accepts ?project=<alias> to select a repo
    (defaulting to the primary — the one you started the daemon in).
  • Single-repo setups are unchanged. The switcher stays hidden, the default
    behavior is identical, and nothing new is required.

Try it

hayven daemon register /path/to/repo-a
hayven daemon register /path/to/repo-b
cd /path/to/repo-a && hayven daemon start   # serves BOTH; viewer at :7777

Open http://localhost:7777 and use the project dropdown to switch. Or hit the
API directly:

curl localhost:7777/api/health                    # lists every project + the primary
curl 'localhost:7777/api/stats?project=repo-b'    # answer for a specific repo

Upgrading

Pre-release (0.x) — build from source (Bun 1.3+ and a Rust toolchain), or
reinstall via the Claude Code plugin's binary installer. No migration needed;
existing per-project indexes are picked up as-is.

Full changelog: CHANGELOG.md.

Full Changelog: v0.0.4...v0.0.5

v0.0.4

Choose a tag to compare

@github-actions github-actions released this 03 Jul 02:23

Hayvenhurst v0.0.4

The fastest way to keep an always-fresh, private structural index of your codebase — no model, no embeddings, no setup.

A pre-release (0.x): expect breaking changes in every 0.x until v1.0.

What Hayvenhurst is

Hayvenhurst builds and maintains a structural index of a codebase — entities, call/import edges, and runtime trace coverage — backed by SQLite, with zero embeddings, zero model, and zero external services. It runs anywhere a Rust binary and SQLite run, indexes in well under a second, and never sends your code anywhere. The advantage is speed + zero-config + determinism, not "smarter than grep."

The measured wedge (committed, reproducible harnesses)

Property Hayvenhurst Embedding-based indexer
Cold index (hono, 362 files) 0.65 s 35.6 s
Cold index (gin, Go) 0.23 s —
Branch switch (re-parse only the diff) ~48 ms re-syncs + re-embeds
Revisit a seen branch 1 ms (cached) 0.41 s
Dependencies none model + torch + vector store

Because the index is embedding-free, building it is a parse + a SQLite write — sub-second cold, instant on a cached branch, private by construction. We win on speed, freshness, and privacy — embeddings still beat us on fuzzy semantic recall.

Reproduce on any repo: bench/wedge-demo.sh <repo-url>.

What's new in 0.0.4

  • Per-test runtime coverage + hayven affected-tests. A trace collector records, per test, the entities that test executed; affected-tests <symbol|--changed files> returns the tests for a change — useful as a fail-fast test ordering aid and as a precise "which tests actually exercise this symbol" query. The collector batches flushes, records coverage on every call (complete even at the default sample rate), and excludes nested helpers from being test contexts.
  • Fail-fast test ordering (affected-tests --order, APFD-optimized) and fleet memory (hayven remember/recall, /api/memory) — durable, graph-keyed notes shared across agents and sessions.
  • Branch-aware per-branch indexing matured — each branch caches its own index; a re-visit is a 1 ms read, never a re-embed.

Install

Build from source (bun install, cargo build --release), or install the Claude Code plugin and hayven init in any repo. Cross-platform tarballs are produced by the release workflow.

Reproduce the wedge in under a minute

export HAYVEN_NATIVE_BIN="$PWD/native/target/release/hayven-native"
git clone --depth 50 https://github.com/honojs/hono /tmp/hv-switch
bun bench/branch-switch-cost.ts /tmp/hv-switch 3

Full Changelog: https://github.com/Davidb3l/Hayvenhurst-dev/commits/v0.0.4