From a2aae8d59d1eadc5c97fdb891cb6d4305c7221ad Mon Sep 17 00:00:00 2001 From: Drew Cain Date: Thu, 11 Jun 2026 00:46:58 -0500 Subject: [PATCH 1/2] docs(core): add v0.22.0 changelog entry Signed-off-by: Drew Cain --- CHANGELOG.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ee8d06df..3a582ee4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,70 @@ # CHANGELOG +## v0.22.0 (2026-06-11) + +Team-safe cloud sync. New additive `bm cloud push` and `bm cloud pull` +commands work safely on shared Team workspaces, while the destructive mirror +commands are gated to Personal workspaces. Also: a large batch of MCP tool +fixes, search improvements, and embedding reliability work. + +### Features + +- **#917**: Added Team-safe `bm cloud push` / `bm cloud pull`. Both are + additive (they never delete on the destination) and abort on conflicts by + default, git-style, with `--on-conflict {fail|keep-local|keep-cloud|keep-both}`. + The destructive `bm cloud sync` / `bm cloud bisync` mirrors are now gated + to Personal workspaces. +- **#920**: Team push/pull uses per-workspace rclone remotes, so remotes and + credentials stay scoped to each workspace. +- **#908**: Search supports an observation category filter. +- **#809**: Added an experimental LiteLLM embedding provider for semantic + search (marked experimental, see **#899**). +- **#907**: `bm tool write-note` accepts `--type`. +- **#906**: `bm status` accepts `--wait` and `--timeout`. +- Added the `bm tool delete-note` command. +- **#905**: Improved workspace and cloud bisync command discoverability. + +### Bug Fixes + +- **#931 / #946**: Truncated observation permalinks are disambiguated to + prevent search-index collisions, and `build_context` resolves observations + by the same permalink the search index uses (**#909**, **#929**). +- **#934**: `edit_note` recovers when the file exists on disk but is not yet + indexed (**#581**). +- **#911 / #932 / #941**: Comma-separated tags are split consistently in + `parse_tags` and the `search_notes` tags parameter, with input normalized + for direct callers (**#910**). +- **#933**: `read_note` accepts `page`/`page_size` for parity with sibling + tools (**#883**). +- **#914 / #904 / #916**: `move_note` resolves `memory://` URLs, stops + falsely rejecting same-project moves as cross-project, no longer reports + false success across project boundaries, and mismatch guidance points at + the landing path. +- **#915**: Navigation pagination is validated, and `recent_activity` shows + the correct project. +- **#913**: `bm tool` commands align with MCP behavior (error exit codes, + overwrite handling, category support, defaults). +- **#923**: `bm cloud setup` no longer overwrites an existing rclone remote + (**#922**). +- **#912**: The `note_types` search filter is case-insensitive. +- `build_context` allows cross-project context traversal, `write_note` + resolves overwrite conflicts, and sync uses strict deferred relation + resolution. +- Embedding reliability: FastEmbed vectors are L2-normalized (**#843**), + corrupt FastEmbed model caches self-heal (**#900**), a single embedding + provider is reused per process (**#903**), `sqlite-vec` loads for the + embedding-status query (**#901**), and engine disposal no longer crashes + on the Postgres backend (**#902**). + +### Maintenance + +- Leaner, faster CI: testmon-selected branch builds, sharded Postgres jobs, + and faster default test fixtures (**#928**, **#938**, **#945**). +- Documented personal-vs-team cloud sync semantics (**#947**, closes + **#851**). +- Fixed npx skill install docs (**#927**). +- Added `glama.json` to claim the Glama MCP directory listing (**#953**). + ## v0.21.6 (2026-06-04) Monorepo consolidation plus a redesigned Claude Code plugin. The satellite From d41e372cd9881f60ae65f9b2e15b1b798f07580b Mon Sep 17 00:00:00 2001 From: Drew Cain Date: Thu, 11 Jun 2026 00:51:35 -0500 Subject: [PATCH 2/2] chore: update version to 0.22.0 for v0.22.0 release Signed-off-by: Drew Cain --- .claude-plugin/marketplace.json | 4 ++-- integrations/hermes/__init__.py | 2 +- integrations/hermes/plugin.yaml | 2 +- integrations/openclaw/package.json | 2 +- plugins/claude-code/.claude-plugin/marketplace.json | 4 ++-- plugins/claude-code/.claude-plugin/plugin.json | 2 +- plugins/codex/.codex-plugin/plugin.json | 2 +- server.json | 4 ++-- src/basic_memory/__init__.py | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 5fd91e6b5..214ac691c 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -6,14 +6,14 @@ }, "metadata": { "description": "Official Basic Memory plugins from the canonical basic-memory repository", - "version": "0.21.6" + "version": "0.22.0" }, "plugins": [ { "name": "basic-memory", "source": "./plugins/claude-code", "description": "The bridge between Claude's working memory and Basic Memory's durable knowledge graph \u2014 session briefings, pre-compaction checkpoints, and capture reflexes", - "version": "0.21.6", + "version": "0.22.0", "author": { "name": "Basic Machines" }, diff --git a/integrations/hermes/__init__.py b/integrations/hermes/__init__.py index bfe89f9e4..4e33732b5 100644 --- a/integrations/hermes/__init__.py +++ b/integrations/hermes/__init__.py @@ -38,7 +38,7 @@ from agent.memory_provider import MemoryProvider from tools.registry import tool_error -__version__ = "0.21.6" +__version__ = "0.22.0" logger = logging.getLogger("hermes.memory.basic-memory") diff --git a/integrations/hermes/plugin.yaml b/integrations/hermes/plugin.yaml index ac32c3046..c284502f3 100644 --- a/integrations/hermes/plugin.yaml +++ b/integrations/hermes/plugin.yaml @@ -1,5 +1,5 @@ name: basic-memory -version: 0.21.6 +version: 0.22.0 description: "Basic Memory — persistent knowledge graph backed by the basic-memory MCP server" pip_dependencies: - mcp diff --git a/integrations/openclaw/package.json b/integrations/openclaw/package.json index f78cd4f2c..1b199357e 100644 --- a/integrations/openclaw/package.json +++ b/integrations/openclaw/package.json @@ -1,6 +1,6 @@ { "name": "@basicmemory/openclaw-basic-memory", - "version": "0.21.6", + "version": "0.22.0", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/plugins/claude-code/.claude-plugin/marketplace.json b/plugins/claude-code/.claude-plugin/marketplace.json index 54795457d..95517e52b 100644 --- a/plugins/claude-code/.claude-plugin/marketplace.json +++ b/plugins/claude-code/.claude-plugin/marketplace.json @@ -6,14 +6,14 @@ }, "metadata": { "description": "Official plugins from Basic Machines for knowledge management and AI-assisted development", - "version": "0.21.6" + "version": "0.22.0" }, "plugins": [ { "name": "basic-memory", "source": "./", "description": "The bridge between Claude's working memory and Basic Memory's durable knowledge graph \u2014 session briefings, pre-compaction checkpoints, and capture reflexes", - "version": "0.21.6", + "version": "0.22.0", "author": { "name": "Basic Machines" }, diff --git a/plugins/claude-code/.claude-plugin/plugin.json b/plugins/claude-code/.claude-plugin/plugin.json index 164c98776..1e295e768 100644 --- a/plugins/claude-code/.claude-plugin/plugin.json +++ b/plugins/claude-code/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "basic-memory", "description": "The bridge between Claude's working memory and Basic Memory's durable knowledge graph \u2014 session briefings, pre-compaction checkpoints, and capture reflexes", - "version": "0.21.6", + "version": "0.22.0", "author": { "name": "Basic Machines" }, diff --git a/plugins/codex/.codex-plugin/plugin.json b/plugins/codex/.codex-plugin/plugin.json index 92714d055..886ef7e70 100644 --- a/plugins/codex/.codex-plugin/plugin.json +++ b/plugins/codex/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "codex", - "version": "0.21.6", + "version": "0.22.0", "description": "A Codex-native bridge to Basic Memory for durable engineering context, decisions, and resumable checkpoints.", "author": { "name": "Basic Machines", diff --git a/server.json b/server.json index 482be5560..21ec05613 100644 --- a/server.json +++ b/server.json @@ -6,12 +6,12 @@ "url": "https://github.com/basicmachines-co/basic-memory.git", "source": "github" }, - "version": "0.21.6", + "version": "0.22.0", "packages": [ { "registryType": "pypi", "identifier": "basic-memory", - "version": "0.21.6", + "version": "0.22.0", "runtimeHint": "uvx", "runtimeArguments": [ { diff --git a/src/basic_memory/__init__.py b/src/basic_memory/__init__.py index 21fdacf23..7cd753b04 100644 --- a/src/basic_memory/__init__.py +++ b/src/basic_memory/__init__.py @@ -1,7 +1,7 @@ """basic-memory - Local-first knowledge management combining Zettelkasten with knowledge graphs""" # Package version - updated by release automation -__version__ = "0.21.6" +__version__ = "0.22.0" # API version for FastAPI - independent of package version __api_version__ = "v0"