Repository navigation
Releases
kindling v0.4.1
kindling 0.4.1
Security
- Bundled SQLite follows rusqlite 0.41 (RUSTSEC-2026-0459).
kindling,kindling-store, andkindling-providerdepend onrusqlite
0.41 with thebundledfeature, which buildslibsqlite3-sys0.39
(SQLite 3.54.1). The 0.40 line bundled SQLite before 3.54.0. That SQLite can
return uninitialized page-cache memory when a process opens a database
together with a sibling-walfile whose page size differs. The workspace
MSRV is 1.89, which is rusqlite 0.41's minimum.
Fixed
- Failed capsule closes and observation attachments roll back (GH-165, GH-204).
A close that fails while storing its summary leaves the capsule without that
summary, and a failed attachment removes an observation inserted for that
attempt. An observation that already existed stays in place and can be
retried. - A failed capsule import rolls back that capsule (GH-203).
When linking observations fails, the import removes the new capsule and its
links so a repaired bundle can be imported again. Other entities in the same
import still commit. validate_db_pathaccepts harmless adjacent dots in database paths.
Parent-directory rejection now matches..as a whole/or\component
(../x,a/../b,..\\x, a bare..), so names such asmy..dband
archive..old/kindling.dbcan be opened.- Hook secret masking redacts padded Basic and Bearer credentials in full (GH-169).
Base64 padding=is no longer treated as a key/value separator, which kept
the credential and appended=[REDACTED]. - Daemon socket cleanup no longer deletes a regular file at the socket path (GH-168).
Startup removes a leftover Unix socket only, and shutdown unlinks the bound
socket's inode. A regular file already at that path, or one that replaces
the socket after bind, is left in place. - Hook tool capture and service ingestion sanitize secrets across content, provenance, and scope metadata (GH-170).
format_tool_contentandextract_tool_use_provenancenow filter tool
arguments, errors, shell variable assignments, and URL credentials/query
parameters;Bashprovenance skips leading variable assignments (and omits
commandwhen only assignments or secrets are present); and
append_observation_atsanitizesprovenanceandscope_idsalongside
content.
Changed
- Public SQLite errors use rusqlite 0.41.
StoreError::Sqlite,ProviderError::Sqlite, andCliError::Sqlitekeep
their names. Matching those variants yields rusqlite 0.41'sError. kindling searchdefaults its repo scope to the current git repository
(C3). Without--repo, search filters on the enclosing git working-tree
root (git rev-parse --show-toplevel), from any subdirectory; outside a git
repository no repo filter is applied. A new--all-reposflag searches every
repository, and an explicit--repoalways overrides detection. Thelog
andcapsule openverbs default their recorded repo scope to the same root
so CLI round trips stay consistent. The applied scope is shown in
the text output and inprovenance.scopeIdsin--jsonoutput. The demo's
suggested search now passes--all-repos, since demo memory has its own
sample repo ID.
kindling v0.4.0
kindling 0.4.0
Integration-hardening release. Closes out the post-0.3 downstream-integration
work the daemon/client contract needed before anvil could depend on it in
anger: redaction evidence, published fixtures, an authenticated TCP transport,
atomic capsule close, honest --db routing, outage spooling that stays flat
under a deep backlog, and composite scope indexes for keyset reads. It also
carries the CodeQL path-injection fix and the cleartext-logging triage.
Breaking for
kindling-server(build_routergains atcp_secret
argument), for mixed-version TCP deployments (the daemon now requires a
bearer token on loopback TCP), and for the schema contract (v5 to v6).
Pre-1.0, a breaking change bumps the minor, hence 0.4.0.
npm publishing discontinued. kindling no longer publishes to npm (D-010).
This is the first GitHub Release since v0.1.2, and it ships as Release assets
(the 7 prebuiltkindlingbinaries, attached to a Release for the first
time, and the VS Code / Cursor / Windsurf VSIX), the Homebrew tap, and
crates.io. The npm packages@eddacraft/kindling,
@eddacraft/kindling-adapter-opencodeand
@eddacraft/kindling-adapter-pocketflowstay at the retired 0.1.2
TypeScript engine and are being deprecated with a notice pointing at the
binary install. Their source stays in the repository: the thin client is
bundled into the VSIX, and the adapters can be used from a clone.
Highlights
- Authenticated loopback-TCP transport (KINTEG-010). The daemon mints a
per-daemon secret, stores it in an owner-only token file beside the port
file, and rejects every request exceptGET /v1/healththat does not carry
it as a bearer token. The client reads the token automatically. UDS is
unchanged. - Redaction evidence (KINTEG-006). Append responses report how many
secret matches were masked and which classes matched, never the values, so a
consumer can prove sensitive content was handled without re-leaking it. - Published hook-payload fixtures (KINTEG-007). A versioned
fixtures/hook-payloads/claude-code.json, also exported from
@eddacraft/kindlingas./fixtures, gives adapter authors a stable
artefact to test against. The export-bundle compatibility guarantee is now
documented indocs/data-model.md. - Flat outage spooling (KINTEG-013).
SpooledClientno longer rescans or
rewrites the whole backlog per append, and backs off a known-unavailable
daemon instead of retrying on every observation. - Composite scope indexes (KINTEG-014, schema v6). Keyset list queries over
a repo or session no longer sort through a temporary B-tree. - Correctness fixes: capsule close is atomic when the summary is missing
(KINTEG-011);--via-daemonwith--dbis rejected instead of silently
routing to a different project's database (KINTEG-012). - Security: database paths are validated before anything is created on
disk (CodeQLrust/path-injection#15); therust/cleartext-loggingalerts
#11 to #14 are triaged as false positives with a CodeQL model pack and a
written disposition inSECURITY.md.
Breaking changes and upgrade
- TCP transport requires a bearer token. A 0.3 client talking to a 0.4
daemon over TCP (the Windows default) receives 401. Upgrade the client and
the daemon together. No configuration changes: the token file is derived
from the existing port-file rendezvous. kindling_server::build_router(state, tcp_secret). PassNonewhen
embedding the router over UDS only.- Schema v5 to v6. Read-write opens migrate in place on first open.
Read-only opens of v5 databases still work. A v6 database cannot be opened
by a 0.3 engine, so do not downgrade after the first open.
Install
# Rust SDK (daemon-backed), with the durable-emit spool
cargo add kindling-client@0.4 --features spool
# one-dependency embedded runtime
cargo add kindling-runtime@0.4
# CLI binary
cargo install eddacraft-kindling@0.4
# Homebrew (macOS/Linux)
brew install eddacraft/tap/kindling
# install script (resolves the latest GitHub Release)
curl -fsSL https://raw.githubusercontent.com/eddacraft/kindling/main/install.sh | shThe editor extension is the kindling-0.4.0.vsix asset on this Release; see
the Cursor and Windsurf quickstart.
Notes
- The Rust crates are published to crates.io separately via
scripts/publish.shin dependency order (types, store, provider, service,
server, client, runtime, kindling).kindling-benchispublish = false. - Publishing this GitHub Release triggers
release.yml(binary archives and
the VSIX attached to the Release, plus the automatedhomebrew-tapPR, which
needs theHOMEBREW_TAP_TOKENsecret). Nothing is published to npm.
Changelog: see CHANGELOG.md ·
Full diff: v0.3.0...v0.4.0
v0.1.2
What's Changed
- perf: query performance optimizations by @joshuaboys in #26
- fix: shell injection in commands + readonly export regression by @joshuaboys in #27
- chore: release v0.1.2 by @joshuaboys in #28
- fix: bump root package.json to 0.1.2 by @joshuaboys in #29
- Chore/release 0.1.2 by @joshuaboys in #30
Full Changelog: v0.1.1...v0.1.2
v0.1.1
What's Changed
Security
- Fix SQL injection vector in database export — validate limit parameter before interpolation into queries (#2) by @joshuaboys
- Add permissions to GitHub publish workflow — restrict token scope (#24) by @joshuaboys
Bug Fixes
- Fix Claude Code plugin for standalone installation — remove workspace:* devDependencies that broke npm install outside the monorepo, bump auto-install timeout to 120s, improve stdio handling and debug logging (#21) by @joshuaboys
- Fix private: true preventing npm publish by @joshuaboys
- Fix KindlingClient → KindlingApiClient class name in README example (#19) by @joshuaboys
Features
- Add Claude Code plugin marketplace manifest for github:EddaCraft/kindling installation by @joshuaboys
Documentation
- Add README for the main @eddacraft/kindling npm package — quick start, bundled exports, entry points, lightweight alternatives (#19) by @joshuaboys
- Add installation links to root README by @joshuaboys
Chores
- Bump all packages to v0.1.1 by @joshuaboys
- Bump esbuild from 0.24.2 to 0.25.0 (#25) by https://github.com/dependabot
Full Changelog: v0.1.0...v0.1.1
Kindling Beta Release
What's Changed
- docs(plan): Implement Anvil Plan Spec structure for Kindling by @joshuaboys in #4 & #1
- feat: Implement M2 Phase 1 - TypeScript monorepo with core packages by @joshuaboys in #2
- feat: scaffold M1 package structure and core documentation by @joshuaboys in #3
- feat: Pocketflow Adapter - vendoring solution and doc updates by @joshuaboys in #5
- feat: add KindlingService, API server, and expanded CLI commands by @joshuaboys in #6
- feat: prepare all packages for npm publishing by @joshuaboys in #7
- chore: add code quality tooling: Prettier, ESLint, Husky, and lint-staged by @joshuaboys in #9
- chore: approve build scripts for better-sqlite3 and esbuild by @joshuaboys in #11
- docs: add active development warning to README by @joshuaboys in #12
- ci: add lightweight CI workflow for PRs and main branch by @joshuaboys in #8
- feat(plugin): migrate Claude Code plugin from flat files to SQLite by @joshuaboys in #10
- fix: DX hardening - security, error handling, docs by @joshuaboys in #14
- feat: rework Claude Code plugin with SQLite engine by @joshuaboys in #15
- chore: npm publishing readiness by @joshuaboys in #16
- chore: rename packages from @kindling/* to @eddacraft/* scope by @joshuaboys in #17
- chore: eddacraft scope rename by @joshuaboys in #18
Full Changelog: https://github.com/EddaCraft/kindling/commits/v0.1.0