v0.5.0 — klasp demo, hook-conflict detection & the receipts plugin
Cross-surface hook-conflict detection, a receipts-gating reference plugin, and a zero-setup klasp demo.
Highlights
klasp demo— see klasp work without enrolling a repo (#69): a self-contained replay of a pre-recorded gate session. The replay harness drives the gate binary against a frozen snapshot, so the demo is deterministic across installs — the single most shareable ~20s of the pitch.- Hook-conflict detection for Claude Code (#92):
ClaudeCodeSurfacenow fingerprints husky, lefthook, and pre-commit-framework hooks and emits a skip-with-notice instead of overwriting them — bringing the Claude surface to parity with Codex's existing conflict handling.klasp init --adoptkeeps your existing hooks; no rip-and-replace. klasp-plugin-agentic-flowreceipts-completeness gate (#98): a reference plugin that reads.agentic-flow/step receipts and blocks a commit/push when required flow steps are missing or stale — exercising the v0 subprocess plugin protocol end-to-end.AgentSurface::install_with_warnings+doctor_check(#55): trait methods that replace stringly-typed dispatch inklasp install/klasp doctor. Surfaces now own their install-side warnings and per-surface doctor checks — the last ad-hoc string matching in the doctor path is gone.klasp-corepublictext+fsmodules (#125, #126): the managed-block hook writer (klasp_core::text) and filesystem helpers (klasp_core::fs) are now part of klasp-core's published API, so out-of-tree surfaces and plugins reuse the same hook read/render/install/uninstall primitives instead of reimplementing them.
Fixed
klasp doctorfalse-positive on managed-block hooks (#110): doctor reportedFAIL hook[…]when a hook file had a managed block plus user-added trailing lines. Now only the managed-block region is compared; trailing content is ignored. Setup output also polished — redundant status lines collapsed, install confirmation consistent across surfaces.- PEP 440 normalisation in the release version bumper (#26):
scripts/bump-source-versions.mjsnow whitelists supported tag forms (X.Y.Z,-rc.N,-alpha.N,-beta.N) and errors clearly on unsupported forms instead of silently emitting a malformed PyPI version string.
Install
# Cargo
cargo install klasp
# npm
npm install -g @klasp-dev/klasp
# pip
pip install klaspOr grab a prebuilt binary from the assets below (macOS arm64, Linux x86_64/arm64, Windows x86_64).
Docs
- docs/plugins.md — plugins overview
- docs/plugin-protocol.md — v0 subprocess plugin protocol
- docs/agentic-flow-receipts.md —
klasp-plugin-agentic-flowreceipts gate
What's Changed
- feat(demo): klasp demo subcommand + replay harness (closes #69) by @liam-ai-reality in #109
- fix: doctor false-positive on managed-block hooks, setup output polish by @liam-ai-reality in #110
- feat(core): AgentSurface::install_with_warnings + doctor_check (closes #55) by @liam-ai-reality in #111
- docs(changelog): backfill [0.4.0], populate [Unreleased], fix footer link by @liam-ai-reality in #113
- ci: pr-quality CI stack (semantic title, path-aware jobs, aggregate build-and-test, greptile) by @liam-ai-reality in #115
- follow-ups #16: PEP 440 normalisation coverage by @liam-ai-reality in #26
- chore: add dependabot config for weekly updates by @liam-ai-reality in #99
- refactor(core): extract fs helpers to klasp-core::fs (#83) by @liam-ai-reality in #126
- refactor(core): extract managed-block writer to klasp-core (#53) by @liam-ai-reality in #125
- refactor(sources): extract spawn_with_timeout primitive (#85) by @liam-ai-reality in #127
- refactor(sources): extract shared cross-recipe helpers (#59) by @liam-ai-reality in #128
- docs(changelog): add missing footer reference links (#72, #73, #91) by @liam-ai-reality in #124
- feat(plugin): klasp-plugin-agentic-flow receipts completeness gate (#98) by @liam-ai-reality in #129
- chore: format workspace to satisfy cargo fmt --check by @liam-ai-reality in #132
- feat(claude): detect husky/lefthook/pre-commit conflicts (#92) by @liam-ai-reality in #131
- chore(deps): bump amannn/action-semantic-pull-request from 5.5.3 to 6.1.1 by @dependabot[bot] in #116
- chore(deps): bump actions/setup-python from 5.6.0 to 6.2.0 by @dependabot[bot] in #117
- chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 by @dependabot[bot] in #118
- chore(deps): bump thiserror from 1.0.69 to 2.0.18 by @dependabot[bot] in #119
- chore(deps): bump serde_json from 1.0.149 to 1.0.150 by @dependabot[bot] in #120
- chore(deps): bump toml from 0.8.23 to 1.1.2+spec-1.1.0 by @dependabot[bot] in #121
- chore(deps): bump which from 6.0.3 to 8.0.2 by @dependabot[bot] in #122
- chore(deps): bump quick-xml from 0.37.5 to 0.40.1 by @dependabot[bot] in #123
- chore(deps): bump softprops/action-gh-release from 2.6.2 to 3.0.0 by @dependabot[bot] in #135
- chore(deps): bump actions/setup-node from 4.4.0 to 6.4.0 by @dependabot[bot] in #134
- chore(deps): bump dorny/paths-filter from 3.0.2 to 4.0.1 by @dependabot[bot] in #136
- chore(deps): drop unused tempfile dep from klasp-agents-claude by @liam-ai-reality in #130
- chore(release): prep v0.5.0 — changelog + version bump by @liam-ai-reality in #137
New Contributors
- @dependabot[bot] made their first contribution in #116
Full Changelog: v0.4.0...v0.5.0