Skip to content

Releases: basicmachines-co/basic-memory

v0.22.0

11 Jun 05:55

Choose a tag to compare

What's Changed

  • fix(skills): reject invalid frontmatter YAML by @phernandez in #896
  • fix(plugins): include codex in shared version bump by @phernandez in #897
  • feat(core): add LiteLLM embedding provider by @RheagalFire in #809
  • fix(core): L2-normalize FastEmbed vectors to satisfy unit-vector contract by @tk-pkm111 in #843
  • fix(mcp): resolve write_note overwrite conflicts by file_path strictly by @DoubleDeeRuffy in #860
  • feat(cli): add delete-note tool command by @AKarode in #887
  • fix(sync): use strict link resolution for deferred forward references by @DoubleDeeRuffy in #861
  • fix: cross-project context traversal by @sourrris in #874
  • test(ci): normalize setup overwrite assertion by @phernandez in #898
  • fix(mcp): stop move_note reporting false success across boundaries by @phernandez in #904
  • fix(core): prevent asyncpg engine-dispose crash on Postgres backend by @phernandez in #902
  • fix(core): load sqlite-vec for embedding-status query by @phernandez in #901
  • fix(core): self-heal corrupt FastEmbed model cache by @phernandez in #900
  • feat(cli): improve workspace and cloud bisync command discoverability by @phernandez in #905
  • fix(core): reuse a single embedding provider per process by @phernandez in #903
  • feat(core): add observation category filter to search by @phernandez in #908
  • feat(cli): add --wait and --timeout to bm status by @phernandez in #906
  • feat(cli): add --type to the write-note tool command by @phernandez in #907
  • docs(core): mark LiteLLM provider experimental by @phernandez in #899
  • fix(core): split comma-separated tags in parse_tags by @phernandez in #911
  • fix(core): make note_types search filter case-insensitive by @phernandez in #912
  • fix(mcp): resolve memory:// in move_note and stop false cross-project rejections by @phernandez in #914
  • fix(cli): align bm tool commands with MCP (error exits, overwrite, category, default) by @phernandez in #913
  • fix(mcp): validate navigation pagination and fix recent_activity project display by @phernandez in #915
  • fix(mcp): point move mismatch guidance at landing path by @phernandez in #916
  • feat(cli): add Team-safe cloud push/pull and gate sync to Personal workspaces by @phernandez in #917
  • docs(core): add Basic Machines agent style guidance by @phernandez in #921
  • feat(cli): per-workspace rclone remotes for Team push/pull by @phernandez in #920
  • feat(ci): add BM Bossbot PR gate by @phernandez in #925
  • ci(ci): use pytestmon and Depot runners by @phernandez in #928
  • fix(ci): make BM Bossbot asset cleanup idempotent by @phernandez in #935
  • fix(core): disambiguate truncated observation permalinks to prevent index collisions by @phernandez in #931
  • ci(ci): gate bossbot on passing tests by @phernandez in #937
  • perf(ci): disable semantic search in default test fixtures by @phernandez in #938
  • fix(mcp): split comma-separated tags in search_notes tags param by @phernandez in #932
  • fix(mcp): accept page/page_size in read_note for parity with sibling tools by @phernandez in #933
  • fix(cli): don't let bm cloud setup overwrite an existing rclone remote by @phernandez in #923
  • docs(skills): fix npx skill install docs and ignore docs assets by @phernandez in #927
  • test(mcp): assert tags param and tag: shorthand comma equivalence by @phernandez in #943
  • fix(mcp): tighten search_notes tags input and normalize for direct callers by @phernandez in #941
  • fix(mcp): recover edit_note when file exists on disk but is not indexed by @phernandez in #934
  • fix(core): use Observation.permalink in build_context to match the search index by @groksrc in #946
  • test(mcp): integration coverage for colliding observation permalinks (index + delete) by @groksrc in #926
  • perf(ci): select impacted tests via testmon on PR builds by @phernandez in #945
  • docs(cli): document personal-vs-team cloud sync semantics by @phernandez in #947
  • Add glama.json to claim the Glama MCP directory listing by @groksrc in #953
  • chore(core): release v0.22.0 by @groksrc in #960

New Contributors

Full Changelog: v0.21.6...v0.22.0

v0.21.6

05 Jun 04:42

Choose a tag to compare

What's Changed

  • fix(cli): block team workspace rclone sync by @groksrc in #855
  • feat(cli): expose project sync support metadata by @groksrc in #856
  • fix(cli): handle non-subscription errors in cloud login by @phernandez in #870
  • chore: add cross-vendor adversarial-review skill by @phernandez in #868
  • chore(installer): consolidate agent packages by @phernandez in #859
  • fix(skills): correct invalid picoschema enum YAML in memory skills by @phernandez in #867
  • feat(plugins): Claude Code plugin v0.4 — the memory bridge by @phernandez in #865
  • feat(plugins): improve /basic-memory:setup — load-bearing focus, cloud-safe schema seeding, smoke test by @phernandez in #876
  • feat(api): expose owning project on entity resolve by @phernandez in #885
  • refactor(plugins): prefix Claude Code plugin skills with bm- by @phernandez in #878
  • docs(ci): document auto bm dogfood install by @phernandez in #890
  • fix(ci): require all codex synthesis schema fields by @phernandez in #891
  • fix(ci): allow ci PR title scope by @phernandez in #892
  • fix(ci): improve auto bm note narrative by @phernandez in #893
  • feat(plugins): add codex plugin package by @phernandez in #894

Full Changelog: v0.21.5...v0.21.6

v0.21.5

26 May 15:59

Choose a tag to compare

What's Changed

  • fix(mcp): preinitialize local ASGI database by @phernandez in #838
  • fix(core): load sqlite-vec before vector table cleanup by @groksrc in #852
  • fix(mcp): return workspace-qualified write permalinks by @groksrc in #853
  • fix(mcp): attach local state to one workspace project row by @groksrc in #854

Full Changelog: v0.21.4...v0.21.5

v0.21.4

23 May 19:59

Choose a tag to compare

What's Changed

  • docs(core): move release process from CONTRIBUTING.md to AGENTS.md by @groksrc in #846
  • fix(mcp): restore write_note overwrite schema for external clients (#818) by @rudi193-cmd in #841
  • fix(cli): ignore CancelledError in background task done callback (#839) by @rudi193-cmd in #842

Full Changelog: v0.21.3...v0.21.4

v0.21.3

23 May 18:47

Choose a tag to compare

What's Changed

  • test(core): isolate XDG_CONFIG_HOME so host env can't leak into tests by @groksrc in #845

Full Changelog: v0.21.2...v0.21.3

v0.21.2

23 May 17:16
5ae8a73

Choose a tag to compare

What's Changed

  • docs(installer): use pgvector image for Postgres compose by @rudi193-cmd in #840
  • feat(core): add XDG_CONFIG_HOME support by @rafamadriz in #844
  • fix(mcp): route mixed local/cloud projects correctly by @groksrc in #837

New Contributors

Full Changelog: v0.21.1...v0.21.2

v0.21.1

16 May 23:59

Choose a tag to compare

What's Changed

Full Changelog: v0.21.0...v0.21.1

v0.21.0

16 May 22:16

Choose a tag to compare

What's Changed

  • fix: concurrent delete race conditions in delete_entity by @phernandez in #702
  • fix: eliminate N+1 query in search hydrate_results by @groksrc in #713
  • fix(cli): propagate cloud workspace routing and incremental sync by @phernandez in #712
  • chore(deps): bump picomatch from 4.0.3 to 4.0.4 in /ui/tool-ui-react in the npm_and_yarn group across 1 directory by @dependabot[bot] in #696
  • chore(deps): bump the uv group across 1 directory with 2 updates by @dependabot[bot] in #697
  • feat(cli): support cloud project visibility on add by @phernandez in #715
  • test(api): add recent activity hydration regression coverage by @phernandez in #716
  • perf(core): reuse written note content after writes by @phernandez in #717
  • perf: eliminate redundant DB queries in upsert_entity_from_markdown by @groksrc in #714
  • fix: Increase brew outdated timeout from 15s to 60s by @groksrc in #695
  • feat(core): add note_content tenant schema primitive by @phernandez in #719
  • fix(cli): show display_name instead of UUID for private projects in CLI by @jope-bm in #718
  • fix(mcp): pass workspace parameter through client factory by @phernandez in #722
  • fix: add workspace routing to cloud upload and API client by @groksrc in #704
  • fix(core): preserve external_id during entity upsert on re-index by @groksrc in #724
  • perf(core): reduce postgres vector sync work by @phernandez in #723
  • fix(core): remove runtime ALTER TABLE from vector init by @phernandez in #728
  • perf(sync): batch file indexing in core by @phernandez in #726
  • perf(core): speed up vector sync and tune fastembed defaults by @phernandez in #731
  • fix(core): clean up delete vectors and cloud sync by @phernandez in #733
  • fix(cli): show cloud index freshness in project info by @phernandez in #734
  • chore(core): make ty the default typechecker by @phernandez in #736
  • refactor(core): simplify note write flow by @phernandez in #739
  • fix(sync): preserve canonical markdown in single-file sync by @phernandez in #746
  • ci(core): reduce duplicate CI and normalize Windows assertions by @phernandez in #749
  • fix(core): resolve FastEmbed cache under data dir instead of /tmp by @groksrc in #743
  • fix(core): honor BASIC_MEMORY_CONFIG_DIR across remaining call sites by @groksrc in #744
  • perf(sync): speed up single markdown file indexing by @phernandez in #751
  • refactor(core): rip telemetry wrappers, use logfire directly by @phernandez in #754
  • fix(mcp): report cloud projects as source=cloud in factory mode by @jope-bm in #752
  • feat(mcp): discover projects across workspaces by @phernandez in #757
  • fix(sync): constrain watch service to --project scope by @phernandez in #759
  • chore(core): fix typos by @szepeviktor in #761
  • feat(mcp): accept training-data-friendly parameter aliases by @phernandez in #766
  • test(core): regression guard for long relation_type values (#721) by @phernandez in #770
  • fix(mcp): remove no-op pagination params from read_note and view_note by @phernandez in #768
  • fix(core): skip Obsidian callouts in observation parser by @phernandez in #769
  • test(core): regression guard for vector-row cleanup on entity delete (#764) by @phernandez in #771
  • fix(installer): mount docker-compose config volume to appuser home by @phernandez in #772
  • fix(core): degrade gracefully when sqlite-vec cannot load on init by @phernandez in #774
  • fix(cli): clear default_workspace on cloud logout by @phernandez in #773
  • fix(cli): cleanup local DB state on set-cloud/set-local by @phernandez in #775
  • feat(cli): refuse db reset while basic-memory mcp processes run by @phernandez in #776
  • fix(mcp): resolve projects by external_id, remove workspace from MCP tools by @phernandez in #777
  • fix(mcp): list factory projects across workspaces by @phernandez in #778
  • fix(cli): point bm cloud setup hint at bm cloud sync-setup by @groksrc in #780
  • fix(mcp): cap recent_activity rows with explicit truncation footer by @groksrc in #785
  • fix(mcp): route workspace-qualified memory urls by @phernandez in #790
  • feat(mcp): create projects by workspace slug by @phernandez in #789
  • feat(api): include search result totals by @phernandez in #791
  • fix(api): accept qualified project resolver hints by @phernandez in #795
  • fix(core): parse picoschema modifier descriptions by @groksrc in #796
  • fix(mcp): add workspace routing to delete_project by @phernandez in #803
  • fix(mcp): preserve workspace paths in build_context by @phernandez in #801
  • fix(mcp): use lightweight graph hydration lookup by @phernandez in #806
  • fix(mcp): make multi-project search opt-in by @phernandez in #807
  • fix(mcp): centralize workspace permalink routing by @phernandez in #808
  • fix(core): use updated_at for recent_activity filter and ordering by @groksrc in #812
  • fix(sync): avoid shell for scan subprocesses by @phernandez in #814
  • fix(sync): ignore hidden paths relative to watched project by @phernandez in #815
  • feat(cli): add orphan entity command by @phernandez in #816
  • fix(mcp): route edit_note workspace-qualified permalinks by @phernandez in #813
  • fix: basic-memory project list does not list projects from all workspaces by @groksrc in #822
  • fix(core): parse prose wikilinks as inline links by @phernandez in #824
  • chore(deps): update deps and harden security by @phernandez in #825
  • fix(sync): preserve bmignore rclone filters by @phernandez in #827
  • perf(cli): defer local ASGI app import by @phernandez in #828
  • fix(core): purge SQLite search_index on project delete by @phernandez in #832

New Contributors

Full Changelog: v0.20.3...v0.21.0

v0.20.3

27 Mar 04:10

Choose a tag to compare

What's Changed

  • fix(cli): use resolved project path in doctor command by @phernandez in #667
  • fix(core): exclude stale entity rows from embedding coverage stats by @phernandez in #675
  • fix(mcp): add project detection from memory:// URLs in edit_note and delete_note by @phernandez in #668
  • fix(core): allow double-dot filenames while still blocking path traversal by @jope-bm in #673
  • feat(core): add default_search_type config setting by @phernandez in #676
  • feat: add Logfire phased instrumentation by @phernandez in #692
  • fix: (cloud) CLI cloud commands now use API key when configured by @phernandez in #698

Full Changelog: v0.20.2...v0.20.3

v0.20.2

11 Mar 04:14

Choose a tag to compare

Full Changelog: v0.20.1...v0.20.2