Releases
What each bassclef release changed for adopters. Newest first.
Use this when
You want to know what shipped in the release your machine is on. Or you want to see whether a version bump is worth taking. Each entry names the cures, the tickets that surfaced them, and the discipline anchors that kept the change adopter-safe.
Skip this when
You are new to bassclef and want to install. Head to the install page. This page is for adopters already running.
v0.45.0 — 2026-09-18
Seven adopter cures from bassclef-cli sessions plus one release pipeline fix. Each cure fires only under the failing shape it fixes. Adopters not hitting the failure see no change.
Adopter cures (Phase B)
-
Fresh-install guard on the orientation gate. A truly cold repo no longer shows the red BLOCKED banner. New library
lib/fresh-install-check.shreads for no commits and no SESSION_LOCK. The gate still fires whendocs/whereami.mdor a goal doc exists — that means you have started orienting. Sources bassclef-cli#102. -
BASSCLEF_DIR probe order. New library
lib/bassclef-dir-resolver.shwalks four candidate paths in order: peer checkout,$HOME/bassclef, bundled,$CWDfallback. Prior two-line resolver lost the bundled path. Sources bassclef-cli#105. -
Clone-failure classifier names the real cause. New library
lib/clone-failure-classifier.shreadsgit clonestderr and picks one of four causes: auth, visibility, network, unknown. Each cause gets its own hint. Before this change every failure banner said "Set up GitHub auth" even when the real cause was a private repo you cannot see. Auth hint now reads:Optional: set up GitHub auth to unlock full-tier sync — run: gh auth login. Sources bassclef-cli#106. -
textstat warning fires once per session. Prior behavior fired the fallback warning once per prompt.
plain-english-steering.shnow writes a per-session marker under$HOME/.claude/state/sessions/<id>/textstat-warned. Sources bassclef-cli#107. -
Fresh-install guard on abrupt-stop recovery. A cold repo no longer shows the "ABRUPT STOP DETECTED" banner. Running
bassclef initfor the first time skips the recovery banner for a session that never existed. Sources bassclef-cli#108. -
compare_wirings normalizes guarded shape. The jq filter in
.claude/hooks/_lib/wirings.shstrips[ -f "path" ] &&prefix and|| truesuffix before diff. Adopter settings using the guarded form no longer report as missing. Empty banner suppressed via amissing | length > 0guard. Sources bassclef-upstream#1742. -
Drift-check trigger extension.
bassclef-lite-manifest-drift-check.ymltriggers extended to includelib/**andscripts/build-adopter-tree.sh. Prior triggers missed edits to lib files that ship at lite tier.
Adopter cures (Phase A)
Two session-start signals that went silent for adopters at operator install now surface.
-
session-reflection.d/80-hook-heartbeat-check.sh— probes the bundledstandards/path first, then falls back to$BASSCLEF_DIR/standards/. Before this change the fragment silent-returned at operator install where$BASSCLEF_DIRresolves to$HOMEwith nostandards/. Adopters never saw stale-hook banners. -
session-reflection.d/81-hook-manifest-staleness.sh— same probe pattern for both the manifest read and the.claude/hooks/directory walk. Restores the "new hook landed but manifest doesn't list it" signal for adopters at operator scope. -
Both fragments declare
# install-class: dualper the install class discipline instandards/hook-install-class.md.
Release pipeline
-
Release PR body auto-populates. New helper
lib/build-release-pr-body.shreadsdocs/release-notes/v<SEMVER>.mdand injects it as the PR body Summary. Prior release PR bodies shipped a template stub when nobody amended them. Sources bassclef-upstream#1614. -
SESSION_LOCK write guards
.claude/dir.session-reflection.shcreates.claude/before writing SESSION_LOCK. Adopters in repos without a pre-existing.claude/no longer hit "No such file or directory" on session start. Sources bassclef-upstream#1730.
New hook at lite
session-reflection.d/91-npm-version-drift.sh — a session-reflection
fragment that ships at lite tier and warns when your installed
@thebassclef/lite version drifts from the pinned substrate. See the
hooks catalog for the full list.
Discipline anchors
- ADR-056 D3 — bundled-path-first probe (all seven cures follow this pattern)
- ADR-058 — install-class dispatch (Phase A hooks declare dual)
- ADR-031 — we don't break adopters (all changes fire only under the failing shape)
Source
Full release notes at bassclef v0.45.0 on GitHub.