v0.0.3: Keep measurements clean, and stop losing them
This release scrubs forge tokens from measured commands, fixes a bug where a push could erase the remote's entire measurement history, and adds a settings registry to configure it. It also repairs the Docker build.
Added
- A settings registry driven by
settings.toml, withbuild.rsgenerating theSettingsstruct, defaults, and introspection metadata. A newtak settingssubcommand prints resolved values, their sources, and the computed scrub list;tak settings --docsadds descriptions and examples. The first two settings areenv_deny(variables removed from measured commands) andenv_allow(variables kept even thoughenv_denylists them, subtracting from the deny list). Resolution precedence is CLI > environment >tak.toml> default, exposed as--env-deny/--env-allowflags,TAK_ENV_DENY/TAK_ENV_ALLOW, and an[env]section intak.toml. By @jdx in #18.
Fixed
-
Forge tokens (
GITHUB_TOKEN,GH_TOKENby default) are now removed from the environment of every command tak measures, on both the wall-clock and cachegrind paths. A CLI that finds a token often does more work with it — authenticating, fetching, checking rate limits — which lands in the series as an unexplained step change. It also keeps a repository-write token out of scope for the downloaded binaries thattak backfillexecutes. Projects measuring a CLI that genuinely cannot start unauthenticated can opt a variable back in viatak.toml. By @jdx in #17.# tak.toml [env] allow = ["GITHUB_TOKEN"]
-
A push no longer erases the remote's measurements. One forced refspec served both fetch and push, so the retry-and-merge loop beneath it never ran and any writer with a stale or empty local notes ref replaced the whole remote history — which is exactly what a fresh CI checkout is, since
actions/checkoutdoes not fetch notes. Push now uses a non-forced refspec so a non-fast-forward is rejected and the merge path runs; fetch lands on a scratch ref and is merged into the local one withcat_sort_uniq. Reading (tak history) between recording and pushing no longer discards the unpushed local record. By @jdx in #19. -
The Docker build works again. The build stage was missing
crates/from its context, so cargo failed at manifest resolution — a regression from whenasset-pickerwas extracted into the workspace. By @jdx in #16.
Full Changelog: v0.0.2...v0.0.3