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 listdoes 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
- @szepeviktor made their first contribution in #761
Full Changelog: v0.20.3...v0.21.0