Repository navigation
Releases: basicmachines-co/basic-memory
Releases · basicmachines-co/basic-memory
Release list
v1.0.0
What's Changed
- fix: Refuse note creates and updates whose path leaves the project by @phernandez in #1837
- feat(mcp): shared parameter types, refusals and resolver for bm_* tools by @phernandez in #1835
- feat(mcp): bm_read, bm_list, bm_find, bm_search, bm_context by @phernandez in #1836
- feat(mcp): add bm_write, bm_edit, bm_move and bm_delete by @phernandez in #1838
- feat(mcp): add bm_project, bm_project_delete and bm_schema by @phernandez in #1839
- feat(mcp): bm_man and manual pages for the 1.0 tools by @phernandez in #1844
- feat(cli): redesign bm doctor as a report with suggested fixes by @phernandez in #1799
- fix: clean up a superseded move's old file by @phernandez in #1847
- fix(core): defer note promotions that would roll back to a superseded version by @groksrc in #1825
- fix(mcp): refuse create_memory_project path mismatch by @phernandez in #1846
- refactor(mcp): migrate consumers and documentation to 1.0 tools by @phernandez in #1849
- fix(core): upgrade FastAPI and preserve read-cache identities by @phernandez in #1854
- fix(ci): shard full test suites and preserve local fast-test by @phernandez in #1856
- fix(ci): correct platform assertions and isolate wiki CLI tests by @phernandez in #1863
- fix(mcp): correct manual tool results and cover deferred writes by @phernandez in #1864
- fix(core): recover SQLite index rebuilds and large vector deletions by @phernandez in #1865
- fix(sync): catch up newly watched projects during ignored activity by @phernandez in #1866
- fix(mcp): align recovery guidance and manuals with bm tools by @phernandez in #1868
- docs(core): add unreleased 1.0 changes to the changelog by @phernandez in #1871
- fix(core): keep wiki projections moving past reserved identities by @phernandez in #1875
- fix(api): reject malformed memory JSON before writing notes by @phernandez in #1876
- feat: return the file paths a chat import wrote by @phernandez in #1878
- fix(core): preserve title ranking with metadata filters by @phernandez in #1882
- build(deps): make LiteLLM an explicit optional extra by @phernandez in #1883
- refactor(mcp): retire the redundant legacy tool surface by @phernandez in #1881
- fix(core): re-embed relation sources after forward-reference resolution by @remote-controlled-man in #1884
- fix(api): return 400 for malformed memory-context locators by @remote-controlled-man in #1885
- docs: add bm-agent(3) for the hosted agent tool by @phernandez in #1917
- fix(core): escape literal directory prefixes before moves by @phernandez in #1915
- fix(core): bound ChatGPT mapping graph traversal by @phernandez in #1916
- fix(core): avoid quadratic section heading suffix copies by @phernandez in #1920
- fix(core): enforce resolved project root ancestry by @phernandez in #1921
- fix(cli): skip file symlinks in legacy directory uploads by @phernandez in #1922
- fix(core): bound find-replace output before allocation by @phernandez in #1923
- fix(cli): create rclone credentials with private permissions by @phernandez in #1924
- fix(core): make atomic staging private before writing by @phernandez in #1925
- fix(core): bound Markdown directive whitespace scanning by @phernandez in #1926
- fix(core): bound CSV preview before wide-row padding by @phernandez in #1927
- fix(cli): validate normalized upload destinations before dispatch by @phernandez in #1928
- fix(core): preserve configured project root during moves by @phernandez in #1930
- fix(core): enforce project boundaries at import and storage sinks by @phernandez in #1931
- refactor(core): share project path validation contracts by @phernandez in #1932
- fix(mcp): require explicit project scope for note tools by @phernandez in #1934
- fix(core): reject YAML aliases and merge expansion in notes by @phernandez in #1933
- fix(core): match nested directory ignore rules by ancestry by @phernandez in #1929
- docs: bm-agent(3) takes a required project, like the note tools by @phernandez in #1936
- fix(mcp): honor project constraint in JSON project list by @phernandez in #1937
- fix(cli): prompt for cloud API key instead of requiring argv by @phernandez in #1938
- fix(core): cap ZIP import and search query input sizes by @phernandez in #1939
- fix(mcp): report a timed-out query as a ToolError by @phernandez in #1942
- feat(cli)!: bm tool mirrors the bm_* MCP tools by @phernandez in #1943
- fix(core): apply directory path rules to their files and skip a BOM in ignore files by @phernandez in #1949
- fix(core): normalize OpenAI-compatible embedding vectors by @phernandez in #1948
- refactor(mcp): remove retired tool modules nothing calls by @phernandez in #1944
- refactor(mcp): remove the retired write_note tool by @phernandez in #1947
- fix(sync): keep file events across watcher reloads by @phernandez in #1951
- docs(core): list only registered tools in section 3 of the manual by @phernandez in #1952
- feat(cli)!: remove legacy cloud sync and bisync by @phernandez in #1953
- fix(core): repair and report entities missing search rows by @phernandez in #1954
- fix(core): rank an exact title match first in title search by @phernandez in #1957
- test(mcp): port project management tests to bm_project by @phernandez in #1961
- refactor(mcp): fold schema tools into bm_schema by @phernandez in #1959
- refactor(mcp): port context and recent-activity tests to bm_context and bm_project by @phernandez in #1962
- refactor(mcp): remove read_note, edit_note, workspaces and chatgpt tool modules by @phernandez in #1964
- fix(core): own startup index tasks and remove flaky test causes by @phernandez in #1967
- refactor(mcp): port search tests to bm_search and remove search_notes by @phernandez in #1963
- refactor(cli)!: rebuild cat/grep/ls/find on bm_* tools and remove tail by @phernandez in #1960
- fix(integrations): make the OpenClaw plugin work on OpenClaw 2026.10 by @groksrc in #1966
- chore(ci): run coverage over the same four suites as just test by @phernandez in #1969
- docs(mcp): describe bm_agent run on nothing, a note, or a folder by @phernandez in #1970
- fix(sync): keep watching when one project directory is missing by @phernandez in #1971
- fix(core): make "a AND NOT b" search work on SQLite by @phernandez in https://github.com/basicmachine...
v0.24.1
What's Changed
- fix(deps): pin FastAPI to 0.139.0 by @phernandez in #1823
- chore(core): release v0.24.1 by @phernandez in #1824
Full Changelog: v0.24.0...v0.24.1
v0.24.0
What's Changed
- fix(cli): stop stranding anyio worker threads on command exit by @phernandez in #1349
- fix(core): ignore wikilinks in inline code by @phernandez in #1348
- fix(core): honor batch metadata concurrency by @phernandez in #1347
- docs(core): explain CLA acceptance, sign-off fixes, and fork PR CI by @phernandez in #1350
- fix(integrations): declare the Hermes plugin manifest as v1 so the installer accepts it by @phernandez in #1356
- fix(cli): stop accepting a private project visibility the cloud does not have by @phernandez in #1357
- fix(installer): pass --prerelease=allow on every uv install path by @phernandez in #1353
- fix(cli): drop the local routing entry when a cloud project is removed by @phernandez in #1355
- fix(core): unresolve inbound relations on entity delete by @phernandez in #1358
- fix(cli): seed config projects into the database on CLI-only installs by @phernandez in #1354
- docs(core): drop the broken star-history chart and document CJK keyword-search limits by @phernandez in #1360
- fix(core): make case-only renames stick on case-insensitive filesystems by @phernandez in #1362
- feat(cli): add bm prune to drop index entries for ignored files by @phernandez in #1363
- fix(core): parse quoted PostgreSQL search safely by @phernandez in #1361
- fix(core): refresh linking notes' search rows on API note delete by @phernandez in #1368
- feat(core): configure custom OpenAI embedding endpoints by @phernandez in #1370
- fix(integrations): make the memory write path insistent and its result citable by @phernandez in #1367
- fix(core): stop splitting entity body into per-bullet vector chunks by @phernandez in #1371
- feat(mcp): surface similar existing notes after write_note creates a note by @phernandez in #1375
- fix(core): bound production indexing convergence by @phernandez in #1374
- feat(core): add portable document ingestion contracts by @phernandez in #1178
- feat(core): add the pdf-inspector extraction adapter behind a pdf extra by @phernandez in #1377
- fix(core): tolerate disappearing guarded files by @phernandez in #1383
- feat(core): support unsegmented-script full-text search by @phernandez in #1373
- fix(core): batch relation search refresh cleanup by @phernandez in #1391
- feat(mcp): ship the manual in the package and serve it as resources by @phernandez in #1389
- fix(mcp): correct the search_notes examples in the tool description by @phernandez in #1386
- feat(mcp): generate manual SYNOPSIS blocks from the tool registry by @phernandez in #1393
- test(core): benchmark multilingual embeddings by @phernandez in #1392
- feat(core): add deterministic wiki projector by @phernandez in #1381
- feat(mcp): serve notes as MCP resources via their memory:// URLs by @phernandez in #1394
- feat(core): order accepted project changes by @phernandez in #1382
- feat(mcp): add POSIX read tools behind enable_posix_tools flag by @phernandez in #1406
- feat(core): add section indexing and range reads by @phernandez in #1408
- feat(cli): add POSIX verbs over the shared translation layer by @phernandez in #1411
- feat(core): add BEAM benchmark integration to the benchmarks package by @phernandez in #1407
- feat(core): add agent-task eval harness for tool-surface comparison by @phernandez in #1409
- feat(core): add xAFS dataset adapter to the benchmarks package by @phernandez in #1410
- refactor(core): converge wiki logs on the accepted-change vocabulary by @phernandez in #1396
- feat(cli): add local wiki projection commands by @phernandez in #1422
- fix(ci): pin the uv interpreter so the matrix tests what it claims by @phernandez in #1429
- fix(core): harden the eval harness from live A/B and BEAM runs by @phernandez in #1416
- fix(core): bound generated wiki logs by @phernandez in #1433
- fix(core): link empty wiki folders from parent indexes by @phernandez in #1434
- feat(mcp): route project-qualified paths in the POSIX tools by @phernandez in #1421
- fix(core): keep deleted wiki folders deleted by @phernandez in #1436
- feat(mcp): add metadata predicates and field projection to POSIX find by @phernandez in #1423
- feat(core): add temporal qualifiers and time-aware search (SPEC-82) by @phernandez in #1426
- fix(mcp): route identifiers by the session's own project set by @phernandez in #1439
- fix(core): restrict the vector filter pass to its own candidates by @phernandez in #1443
- fix(core): key search_index uniqueness on the row kind by @phernandez in #1444
- fix(cli): index on project add and make status readiness honest by @phernandez in #1440
- fix(core): merge the alembic heads left by #1440 and #1444 by @phernandez in #1447
- fix(core): seed agent-task projects with one index pass, and verify recency by @phernandez in #1448
- feat(core): record error excerpts on failed agent-task tool turns by @phernandez in #1449
- feat(core): xAFS audit, corrections, judge default, and harness fixes by @phernandez in #1450
- fix(core): record seeding failures against their tasks instead of aborting by @phernandez in #1452
- fix(core): index markdown whose leading fences are not YAML by @phernandez in #1453
- docs(skills): literary analysis corrections from the Moby Dick run by @phernandez in #1459
- feat(core): agent-curated BEAM ingestion by @phernandez in #1461
- feat(core): curate BEAM conversations in parallel by @phernandez in #1462
- fix(core): keep BEAM curation alive through server startup failures, and resume by @phernandez in #1463
- fix(core): surface the HTTP error body in completion-runner failures by @phernandez in #1464
- feat(api): batch accepted note reads for hosted search by @phernandez in #1454
- fix(core): run claude -p judges and answerers without the operator's MCP servers by @phernandez in #1465
- fix(core): sandbox the bm-local provider's default project home by @phernandez in #1467
- feat(core): resume an interrupted BEAM scoring pass by @phernandez in #1469
- fix(mcp): stop a same-named note from being read as its own project by @mmaxjr in #1460
- fix(mcp): preserve search result fidelity by @phernandez in #1470
- feat(integrations): expose OpenClaw note metadata by @phernandez in #1474
- fix(mcp): normalize constrained project names by @phernandez in #1471
- fix(core): support...
v0.23.2
What's Changed
- fix(api): resolve note directories case-insensitively by @phernandez in #1329
- docs(core): add v0.23.2 changelog entry by @phernandez in #1330
- chore(core): release v0.23.2 by @phernandez in #1331
Full Changelog: v0.23.1...v0.23.2
v0.23.1
What's Changed
- fix(plugins): ship the claude-code hook version bumps with releases by @phernandez in #1313
- ci(core): add an OIDC-authenticated MCP registry publish workflow by @phernandez in #1314
- fix(core): prepare v0.23.1 fast-follow fixes by @phernandez in #1321
- fix(core): scope search reindex to the active project by @phernandez in #1325
- fix(cli): allow disposable doctor project under configured root by @phernandez in #1327
- chore(core): release v0.23.1 by @phernandez in #1328
Full Changelog: v0.23.0...v0.23.1
v0.23.0
What's Changed
- fix(core): repair FTS half of hybrid search for natural-language queries by @groksrc in #994
- docs(ci): fix stale basicmachines.co post-release step by @groksrc in #999
- docs: Update README.md by @phernandez in #1000
- ci(ci): validate Auto BM webhook by @phernandez in #1019
- ci(ci): remove legacy Basic Memory workflow by @phernandez in #1020
- fix(core): make local Postgres backend usable (migrations, pooling, default project) by @phernandez in #1018
- test(benchmarks): vendor benchmark suite and add write-load harness by @phernandez in #1021
- docs(core): clarify DCO and CLA requirements by @phernandez in #1025
- fix(mcp): add directory-compliant tool annotations by @phernandez in #1031
- fix(mcp): gate ChatGPT compatibility tools by clientInfo by @phernandez in #1035
- fix(mcp): set explicit destructive hints by @phernandez in #1036
- fix(mcp): expose edit_note operation enum by @phernandez in #1037
- feat(mcp): expose note external_id in list_directory and recent_activity output by @jope-bm in #1040
- chore: formatting fixes by @phernandez in #1042
- chore: add dist recipe for skills by @phernandez in #1049
- chore(deps): refresh dependencies with LiteLLM compatibility cap by @phernandez in #1051
- feat(skills): add memory-onboarding skill by @cfaust990 in #1050
- chore(deps): unpin and refresh FastMCP by @phernandez in #1052
- refactor(core): add shared runtime orchestration by @phernandez in #1002
- refactor(core): structure campaign — collapse seams, honest types, typed boundaries by @phernandez in #1054
- fix(cli): show configured project in list when uncredentialed (#1003) by @rudi193-cmd in #1010
- feat(plugins): fall back to user-level ~/.claude settings for Claude Code hook config by @samuellawerentz in #924
- fix(plugins): make Claude hook tests portable on Windows by @phernandez in #1055
- fix(integrations): stop leaking bm mcp children from the Hermes provider by @phernandez in #1059
- fix(cli): never print a blank doctor failure message by @phernandez in #1058
- fix(core): chunk select_by_ids to stay under SQLite bound-parameter limit by @phernandez in #1057
- test(api): cover single-entity delete for non-markdown file entities by @phernandez in #1056
- feat(cli): add bm cloud share command group (create/list/update/revoke) by @groksrc in #965
- fix(mcp): validate all schema-covered types when schema_validate gets no arguments by @phernandez in #1060
- feat(mcp): add basic_memory_diagnostics tool for version and system info by @groksrc in #963
- fix(core): support CJK terms in relaxed FTS fallback by @liusiyuxyfx in #1022
- feat(cli): add Rich human-readable output to bm tool commands by @groksrc in #967
- fix(core): make replace_section level-aware with replace_subsections opt-out by @phernandez in #1063
- fix(mcp): surface cloud project delete errors and support delete_notes by @phernandez in #1062
- feat(core): add LiteLLM API base and API key config by @lastguru-net in #1043
- fix(cli): remove newly-ignored files from cloud on one-way sync and add bm cloud prune by @phernandez in #1061
- feat(core): add semantic embedding text prefixes by @lastguru-net in #1044
- ci(skills): publish onboarding archive on main pushes by @phernandez in #1067
- fix(mcp): expose unknown search totals by @phernandez in #1069
- fix(core): search complete SQLite note content by @phernandez in #1071
- fix(mcp): prevent phantom memory URL edits by @phernandez in #1073
- fix(mcp): surface cloud project deletion job by @phernandez in #1074
- fix(core): expose previous accepted move path by @phernandez in #1075
- fix(core): persist observations and relations on DB-first accepted writes by @phernandez in #1079
- fix(core): avoid phantom project directory on config load by @phernandez in #1080
- fix(core): reject equivalent note filenames by @phernandez in #1081
- fix(mcp): paginate directory listings by @phernandez in #1082
- fix(cli): replace retired Basic Memory links by @phernandez in #1083
- fix(ci): keep issue triage focused on triage by @phernandez in #1086
- fix(mcp): index recreated projects by @phernandez in #1085
- fix(ci): grant Claude Code workflow write access to open PRs by @phernandez in #1087
- fix(mcp): preserve scoped memory URL paths by @phernandez in #1092
- fix(ci): drop broken pull_request_target trigger + provision toolchain for Claude workflow by @phernandez in #1091
- feat(skills): add Pythonic code guidance by @phernandez in #1095
- test(skills): add issue-derived Pythonic code evals by @phernandez in #1099
- feat(api): add owning-entity external_id to search results by @jope-bm in #1101
- feat(core): honor note timestamps from frontmatter by @phernandez in #1100
- refactor(core): unify accepted note runtime boundaries by @phernandez in #1102
- feat(skills): use Pythonic guidance in GitHub agents by @phernandez in #1104
- feat(mcp): emit external_id in search_notes markdown output by @jope-bm in #1103
- feat(skills): add pull request workflow skills by @phernandez in #1105
- refactor(mcp): remove canvas tool and resource write endpoints by @phernandez in #1111
- refactor(core): delete dead post-seam compatibility shims by @phernandez in #1112
- refactor(api): collapse dead v1/_v2 DI provider tiers by @phernandez in #1113
- refactor(api): inject config from composition roots into the DI graph by @phernandez in #1114
- docs(core): refresh ARCHITECTURE.md after the arch-review cleanup by @phernandez in #1115
- feat(core): add bm hook producer front door for harness capture by @phernandez in #1070
- feat(plugins): surface hook capture setup and health by @phernandez in #1119
- chore(plugins): rename Codex marketplace to basic-memory by @phernandez in #1120
- refactor(core): rename picoschema package and drop legacy routes by @phernandez in #1121
- refactor(core): split search query and row hydration by @phernandez in #1122
- fix(plugins): make Codex hooks and memory notes reliable by @phernandez in #1123
- feat(plugins): add bm-writing skill and coding setup to Claude Code plugin by @phernandez in #1124
- feat(plugins): add queryable coding session profiles by @phernandez in htt...
Latest Basic Memory skills
Rolling skill archives built from c143040.
v0.22.1
What's Changed
- chore(ci): route release recipes through PRs and refresh release runbook by @groksrc in #961
- fix(cli): preload deferred rich/typer modules before in-place upgrade by @groksrc in #966
- fix(core): require line-anchored frontmatter fences in file_utils by @groksrc in #973
- fix(api): allow setting default project when none is currently set by @groksrc in #976
- feat(mcp): comma-split note_types/entity_types/categories in search_notes by @groksrc in #962
- feat(mcp): add title and tags annotations to all MCP tool decorators (phase 1, #826) by @groksrc in #968
- fix(mcp): resolve workspace display names and tenant ids in qualified project routes by @groksrc in #979
- feat(plugins): manual-pages flow — manpage seed schema, flow docs, verification fixes by @phernandez in #971
- fix(mcp): close out the #952 manual verification findings by @phernandez in #981
- fix(sync): prevent concurrent-session rollbacks from destroying writes on in-memory SQLite by @phernandez in #989
- fix(core): use (type, id) keys in vector search hydration to prevent id collisions by @phernandez in #986
- fix(cli): defer FastAPI and app imports out of CLI startup by @phernandez in #988
- fix: promote first project when config default missing from DB (#974) by @rudi193-cmd in #985
- fix(core): preserve an existing database default when repairing a missing config default by @phernandez in #987
- fix(api): point fresh installs at project setup when resolve finds an empty projects table by @phernandez in #990
- feat(mcp): add workspace parameter to write_note for parity with edit_note by @groksrc in #964
- fix(sync): skip projects without an absolute local path (#949) by @groksrc in #992
- docs(core): add v0.22.1 changelog entry by @groksrc in #995
- chore(core): release v0.22.1 by @groksrc in #996
Full Changelog: v0.22.0...v0.22.1
v0.22.0
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
- @RheagalFire made their first contribution in #809
- @tk-pkm111 made their first contribution in #843
- @DoubleDeeRuffy made their first contribution in #860
- @AKarode made their first contribution in #887
- @sourrris made their first contribution in #874
Full Changelog: v0.21.6...v0.22.0
v0.21.6
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