All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.13.5 - 2026-03-24
- Bump all updatable Go dependencies to their latest versions as of this date.
0.13.4 - 2026-03-24
- Bump
charm.landdependencies.
0.13.3 - 2026-03-24
- Align USAGE and SYNOPSIS columns across all groups in
stave -l/--listoutput. - Isolate git hook tests from user global config (
core.hooksPath). Closes #90.
0.13.2 - 2026-03-07
- Address
goseclint inpkg/watch/watch.go.
0.13.1 - 2026-03-06
- Bump Go version to
1.25.8(and update dependencies).
0.13.0 - 2026-03-04
- Simplify
--listoutput by merging NAME and USAGE columns into a single USAGE column (while still preserving original color-coding & annotations that NAME column previously had).
0.12.0 - 2026-02-26
- Bump Go version to
1.25.7(and update dependencies).
0.11.1 - 2026-02-21
- Bump all updatable Go dependencies to their latest versions as of this date.
0.11.0 - 2026-02-21
- Instead of the main Go file template being used to always generate a file called
stave_output_file.go, switch to deduped filenames (based on a content hash and the current PID).
0.10.10 - 2026-02-19
- Change pre-push trufflehog hook to only scan changes, rather than entire repo.
0.10.9 - 2026-02-19
- Downgrade dependencies to preserve compatibility with Go
1.24.
0.10.8 - 2026-02-19
- Bump all updatable Go dependencies to their latest versions as of this date.
0.10.7 - 2026-02-19
- Maintenance release to fix homebrew tap issue.
0.10.6 - 2026-02-19
- Secrets scanning (based on trufflehog GitHub action) in CI.
- Wire in trufflehog to project's stavefile.gp
0.10.5 - 2026-01-31
- CHANGELOG.md correction.
0.10.4 - 2026-01-31
- Bumped
yaklabco/direnvtov2.37.1.14.
0.10.3 - 2026-01-28
- Removed remove
replacedirective ingo.mod.
0.10.2 - 2026-01-28
- Bump all updatable Go dependencies to their latest versions as of this date.
0.10.1 - 2026-01-28
- CHANGELOG.md correction.
0.10.0 - 2026-01-28
- Reference to root-command flags in
spf13/cobrausage.
- Design document for Stave Spells - a scaffolding and code generation system.
0.9.10 - 2026-01-16
- Made
changelog.FindDefaultBase(...)function public.
0.9.9 - 2026-01-16
- Bumped Go version to
1.24.12, updated 3rd-party Go dependencies.
0.9.8 - 2026-01-15
- Respect
-f/--forceflag instave --hookssubcommands.
0.9.7 - 2026-01-14
- Attend to
log.directoryconfig value insvuconfig reading.
0.9.6 - 2026-01-08
ContainsFilefunction, used in changelog validation, now usesstrings.Containsfor file matching. This means that as long as there is a file namedCHANGELOG.mdin the list, it will be considered a match, regardless of whether that files sits in the repo root or not.
0.9.5 - 2026-01-08
- "Double-dip" running of
golangci-lintin stavefile.go: run once with--fix& without reporting exit code, then run a second time without--fix& report exit code as well as any output. - Change test
TestTransitiveHashFastto not be parallelized.
0.9.4 - 2026-01-07
- More handling of complex tags in changelog validation functions.
0.9.3 - 2026-01-07
- Handling of complex tags in changelog validation functions.
0.9.2 - 2026-01-07
- Handling of complex URLs in
changelog.Linkify*functions.
0.9.1 - 2026-01-07
- Handling of svu config file in
pkg/changelogcode. - Propagation of working dir in hooks processing.
0.9.0 - 2026-01-07
- Ability to set
workdirfield for hooks. See documentation for details.
0.8.3 - 2026-01-03
- Improvements to display of default targets in
-l/--listfunctionality.
0.8.2 - 2026-01-03
- Bumped
yaklabco/direnvtov2.37.1.12.
0.8.1 - 2026-01-02
- More unit tests.
0.8.0 - 2026-01-02
- Direnv support for environment management, via
stave --direnv [direnv-subcommand] [args...]. See documentation for details.
0.7.0 - 2025-12-31
- Support for running a
Defaulttarget in a namespace when only the namespace name is provided as an argument.
0.6.6 - 2025-12-25
- Type-validation on
st.F-wrapped arguments passed towatch.Deps.
0.6.5 - 2025-12-25
st.ActiveContext()function to retrieve the context of the nearest active target from the call stack.
- Shell commands in
pkg/sh(e.g.,sh.Run,sh.Output) now automatically derive from Stave's active context, allowing them to be cancelled by timeouts or file changes in watch mode. The watch-specific shell helpers inpkg/watchhave now been removed.
- Panic propagation in
st.Deps: if a dependency panics, subsequent calls now correctly re-propagate the panic instead of silently returning anilerror. - Watch mode improvements:
- Support for multiple targets: all specified targets are now re-run upon file changes.
- Non-blocking re-runs: re-running one target no longer blocks others.
- Activation logic: fixed issues where watch mode wouldn't activate correctly depending on target order.
- Safety: restricted watch mode activation to explicitly requested targets to prevent infinite loops from transitive dependencies.
- Fixed potential out-of-bounds panic when multiple variables are declared on a single line in a stavefile (e.g.,
var A, Default = 1, Target).
- Redundant shell-helper functions from
pkg/watch(watch.Run,watch.Output, etc.), as the standard helpers inpkg/share now automatically context-aware.
0.6.4 - 2025-12-24
- Any wiring-up of Release Please in this project.
0.6.3 - 2025-12-23
- Improvements to doc strings and
Cleantarget in--initstavefile template.
0.6.2 - 2025-12-23
- Use
stave check:gitStateCleanin checks.yml workflow instead of cumbersome bash code.
0.6.1 - 2025-12-23
- Removed erroneous disabling of changelog functionality in .goreleaser.yaml, so that
--release-notes=...command-line argument is respected.
0.6.0 - 2025-12-23
ExtractSection(...)function to extract a section from a changelog file, with ability to extract latest (numbered) section if no explicit section specified. Useful in generating release notes from manually-curated, Keep a Changelog-style changelog.Snapshottarget instave's own stavefile.goPrep.GitStateCleantarget instave's own stavefile.go
- Generate
stave's own release notes from changelog usingExtractSection(...)function. - Some refactoring of
stave's own stavefile.go stave's ownCheck.PrePushnow callsPrep.LinkifyChangelog(which is idempotent, so will no-op if changelog is already linkified), followed byCheck.GitStateClean, as dependencies. This means that if changelog has not been linkified beforehand, attempting to push the branch will fail theCheck.PrePushcheck on uncommitted changes.
0.5.4 - 2025-12-22
- Yet more minor improvements to goreleaser config for Homebrew handling of completion files.
0.5.3 - 2025-12-22
- More minor improvements to goreleaser config for Homebrew handling of completion files.
0.5.2 - 2025-12-22
- Post-install Homebrew message (a.k.a. "caveats") about how to enable completions.
- More fixes to Homebrew release pipeline, to ensure completion files are properly included in formula.
0.5.1 - 2025-12-22
- Homebrew release pipeline, including automated generation of completions.
0.5.0 - 2025-12-22
- Command-line completion of targets (via
stave completion <shell_name>, or by simply installingstavevia Homebrew).
0.4.1 - 2025-12-22
- Incorporated
watch.Deps(...), as well as mixedst.Deps/watch.Depsdependency chains, into circular dependency detection logic.
0.4.0 - 2025-12-21
- Watch-mode; see documentation of this feature for details.
- Changelog "linkify" functionality (function
Linkify(...)in `pkg/changelog).
0.3.4 - 2025-12-16
- Outdated
outputlnstring in main app stavefile.go file.
0.3.3 - 2025-12-16
- Extra printing of errors in main.go (
ExecuteWithFang(...)already pretty-prints error; eliminates duplicate error printing).
0.3.2 - 2025-12-16
- Organized targets in project's own stavefile.go using namespaces.
- Remove extra padding added to SYNOPSIS header (added in word-wrapping feature) to prevent line overflow.
0.3.1 - 2025-12-15
- Word-wrapping in stave
-l/--listoutput.
0.3.0 - 2025-12-15
- Enhanced
stave -loutput with Lipgloss styling and table formatting. - Color auto-detection via
st.ColorEnabled()respectingNO_COLORstandard.
- List output (
-l) now handled by stave binary, not compiled output.
- Unused
st.EnableColor()function (usest.ColorEnabled()instead). - Dead list code from compiled mainfile template.
0.2.8 - 2025-12-12
- Fix some inaccuracies in CLI usage strings.
0.2.7 - 2025-12-12
- Docs: more updates & improvements to documentation.
0.2.6 - 2025-12-11
- Lots of updates to documentation. See docs/index.md and links therein.
- Bump all updatable Go dependencies to their latest versions as of this date.
0.2.5 - 2025-12-10
- Section on using
stavein CI has been added to the README.
0.2.4 - 2025-12-10
- Installation instructions for installing via Homebrew.
- Simplified how env vars are nullified in
TestGobuild target.
0.2.3 - 2025-12-10
- Replace dependency on
goctx'sfsutilswith an "in-house"fsutils.
0.2.2 - 2025-12-10
- Added
changelog.NextTag(), which returns the next version prefixed with "v" (in contrast tochangelog.NextVersion(), which strips thev).
0.2.1 - 2025-12-09
- Maintenance release to ensure proper propagation to
sum.golang.org.
0.2.0 - 2025-12-09
- New
sh.Piper(...)andsh.PiperWith(...)functions.
- Refactored
internal/env->pkg/envto exposeenvfunctions publicly.
0.1.3 - 2025-12-09
- When calculating the next version to-be-released, call
svucode programmatically instead of running the executable.
0.1.2 - 2025-12-08
- Upgraded
caarlos0/svutov3, and removed deprecated--force-patch-incrementflag from all its invocations.
0.1.1 - 2025-12-08
- Drop minimum Go version to
1.24.11(was:1.25.4) (by consumingv0.14.3ofgoctxinstead of the olderv0.14.2, which, despite being older, had a higher minimum Go version requirement).
0.1.0 - 2025-12-08
- Git hooks management. Stave can manage your git hooks, implementing both native hooks management, and
husky-based hooks management for support of legacy projects. See docs/user-guide/hooks.md for details. - Public Go functions, exported as
pkg/changelog, for automatically enforcing keep-a-changelog-compliant CHANGELOG formatting; and, separately, for enforcing that every push includes an update to the CHANGELOG (each can be used / not used separately from one another). Also,changelog.NextVersion(), which automatically calculates next release version based on Conventional Commits. --dryrunmode.- Automated detection of circular dependencies among stavefile targets.
- Detailed API reference documentation as well as an architecture overview for contributors.
- Pretty-printed debug logs, both in "outer" Stave execution and in execution of compiled stavefile.
--execflag to execute arbitrary command-lines under Stave.CHANGELOG.md! (And first formally-versioned release of Stave.)
- Added parallelism-by-default to use of Go tools from inside Stave.
- Parallelized tests where possible, including locking mechanism to prevent parallel tests in same
testdata/(xyz/)subdir.