Highlights
- Atomic, idempotent writes —
set,del, andeditnow write and commit under a single cross-process lock, so concurrent agents can no longer interleave into a half-committed store. Re-setting an unchanged value and committing a clean tree are no-ops instead of errors. - The Go library works standalone — new
mem.Init()bootstraps./.mem(or~/.memwithWithScope("global")) without shelling out to the CLI, and is safe to call repeatedly.Set/Deletecommit together with the write.
Fixed
- New stores initialize on
maininstead ofmaster, and ship a committed.gitignoresoconfig.yamlandvectors/never show up as uncommitted changes. mem branch <existing>switches to the branch instead of force-moving its ref onto the current HEAD (which could orphan history).mem watchactually works: it watches the store tree (not the project root), picks up new key directories, commits pre-existing dirty state on startup, and reports errors instead of swallowing them.mem delno longer panics when a built vector index is loaded.mem summarizeand the hook strategies resolve a configured LLM provider instead of failing unconditionally with "provider not available"; missing configuration now produces actionable errors.- External
mem-*plugins receive all seven documentedMEM_*environment variables. mem index statusreports real index statistics;mem statusshows the current branch and dirty state.mem provider addcollects connection details andmem provider listdisplays them.
Changed
- Keys that would collide with store metadata (a trailing
.tmp, dot-led path segments) are rejected at validation instead of being written and then hidden. pkg/v1:New()returns an error when no project store exists instead of silently falling back to the global~/.mem.
Internal
- Sentinel errors (
ErrNotFound,ErrBranchExists,ErrNothingToCommit,ErrNoProvider, …) throughout; commands branch on meaning, not error strings. - Embedding model and LLM provider load lazily — commands that don't need them never pay for them.
- Vector index gets
Close()and atomic tmp+rename saves. - golangci-lint v2 configuration; CI runs on macOS with updated actions; goannoy bumped to v0.1.1.
- Test suite grew from 142 to 165 tests.
- README aligned with actual CLI behavior (command tables, flags, hook semantics, storage layout, library example).
Full changelog: v0.6.0...v0.7.0