phernandez
1768de8571
fix(core): skip absent search tables in project delete
...
search_index is created lazily by SearchRepository.init_search_index and
search_vector_chunks only materializes once semantic search initializes,
so either table may be absent on minimal test DBs. The previous version
of ProjectRepository.delete unconditionally issued DELETEs against both
and crashed CLI integration tests on Postgres and SQLite where
search_vector_chunks hadn't been created yet:
relation "search_vector_chunks" does not exist
no such table: search_vector_chunks
Inspect the connection's tables once per call and only delete from
whichever derived tables are present. Idempotent on every backend.
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-16 14:25:07 -05:00
phernandez
a85767ad92
fix(core): purge SQLite search_index on project delete
...
SQLite stores search_index as an FTS5 virtual table, which can't carry a
foreign key, so the ON DELETE CASCADE from search_index.project_id to
project.id only applies on Postgres. On SQLite, deleting a project left
its FTS rows behind — and when auto-increment handed the same id to a
new project, the leftover rows masqueraded as the new tenant's data and
leaked into searches scoped to that project.
- ProjectRepository.delete now explicitly purges search_index and
search_vector_chunks for the project id in the same session before
the ORM delete. Idempotent on Postgres (the cascade FK still runs).
- One-time cleanup migration sweeps two leftover shapes: rows whose
project_id is gone, and rows whose entity_id is gone (the larger
class from id reuse). Guarded by table-existence checks so fresh
SQLite installs — where search_index is created at runtime by
init_search_index, not by Alembic — don't fail the upgrade.
- Regression test seeds both derived tables, calls remove_project,
and asserts both come out clean. Verified red on pre-fix code.
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-16 11:43:16 -05:00
Paul Hernandez
47ee982041
perf(cli): defer local ASGI app import ( #828 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-15 17:59:58 -05:00
Paul Hernandez
4d22c398c6
fix(sync): preserve bmignore rclone filters ( #827 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-15 17:48:49 -05:00
phernandez
8ac2d975f9
update README.md
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-15 17:13:34 -05:00
Paul Hernandez
34830bfad7
Update README.md
...
update agent matrix
Signed-off-by: Paul Hernandez <60959+phernandez@users.noreply.github.com >
2026-05-15 14:55:00 -05:00
Paul Hernandez
f5e0c42047
Update README.md
...
remove sync commands from cli examples
Signed-off-by: Paul Hernandez <60959+phernandez@users.noreply.github.com >
2026-05-15 14:52:27 -05:00
phernandez
3f98da8c67
update README.md
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-15 14:50:35 -05:00
phernandez
14ff77d1c2
update to fastmcp 3.3.1
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-15 12:28:03 -05:00
phernandez
4e4da6128d
ci: run github actions on node 24
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-15 12:14:06 -05:00
Paul Hernandez
3bed6d8890
chore(deps): update deps and harden security ( #825 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-15 10:45:14 -05:00
Paul Hernandez
4cba7ba01c
fix(core): parse prose wikilinks as inline links ( #824 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-14 11:43:11 -05:00
Drew Cain
8eeec64e28
fix: basic-memory project list does not list projects from all workspaces ( #822 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-14 09:46:02 -05:00
Paul Hernandez
c6fa185bf3
fix(mcp): route edit_note workspace-qualified permalinks ( #813 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-11 12:56:26 -05:00
Paul Hernandez
415c2b3d6e
feat(cli): add orphan entity command ( #816 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-11 12:13:14 -05:00
Paul Hernandez
4aa0cbdd62
fix(sync): ignore hidden paths relative to watched project ( #815 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-11 11:14:03 -05:00
Paul Hernandez
55f314237d
fix(sync): avoid shell for scan subprocesses ( #814 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-11 09:20:11 -05:00
Drew Cain
9862ef5411
fix(core): use updated_at for recent_activity filter and ordering ( #812 )
...
Signed-off-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Signed-off-by: Drew Cain <groksrc@gmail.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: phernandez <paul@basicmachines.co >
2026-05-11 09:14:06 -05:00
Paul Hernandez
df5e8d805f
fix(mcp): centralize workspace permalink routing ( #808 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-08 16:44:57 -05:00
Paul Hernandez
831dc1ecdc
fix(mcp): make multi-project search opt-in ( #807 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-08 12:54:20 -05:00
Paul Hernandez
26381aeed1
fix(mcp): use lightweight graph hydration lookup ( #806 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-08 10:07:29 -05:00
Paul Hernandez
7918e5c6bf
fix(mcp): preserve workspace paths in build_context ( #801 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-08 09:53:54 -05:00
Paul Hernandez
f312341020
fix(mcp): add workspace routing to delete_project ( #803 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-08 09:48:51 -05:00
phernandez
e871298e95
Merge branch 'main' of github.com:basicmachines-co/basic-memory
2026-05-07 18:50:10 -05:00
phernandez
177ae21ba7
pass context to recent_activity
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-07 18:50:02 -05:00
Drew Cain
3415fd1014
fix(core): parse picoschema modifier descriptions ( #796 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: phernandez <paul@basicmachines.co >
2026-05-06 12:21:35 -05:00
Paul Hernandez
b08659e228
fix(api): accept qualified project resolver hints ( #795 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-06 10:33:11 -05:00
Paul Hernandez
09a4b09436
feat(api): include search result totals ( #791 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-04 14:57:04 -05:00
Paul Hernandez
a661e924df
feat(mcp): create projects by workspace slug ( #789 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-03 19:31:55 -05:00
Paul Hernandez
05adda1502
fix(mcp): route workspace-qualified memory urls ( #790 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-03 18:18:10 -05:00
Drew Cain
0a72d81bb3
fix(mcp): cap recent_activity rows with explicit truncation footer ( #785 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-03 17:43:42 -05:00
Drew Cain
5ccf433cad
fix(cli): point bm cloud setup hint at bm cloud sync-setup ( #780 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-02 17:35:24 -05:00
Paul Hernandez
b4bf14ebf7
fix(mcp): list factory projects across workspaces ( #778 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-02 09:17:25 -05:00
Paul Hernandez
0b335476d6
fix(mcp): resolve projects by external_id, remove workspace from MCP tools ( #777 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-01 05:15:44 -05:00
Paul Hernandez
2fccc74a20
feat(cli): refuse db reset while basic-memory mcp processes run ( #776 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 15:48:19 -05:00
Paul Hernandez
c4956cac16
fix(cli): cleanup local DB state on set-cloud/set-local ( #775 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 11:50:14 -05:00
Paul Hernandez
128c2da40c
fix(cli): clear default_workspace on cloud logout ( #773 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 09:53:09 -05:00
Paul Hernandez
2bfb9c76df
fix(core): degrade gracefully when sqlite-vec cannot load on init ( #774 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 08:57:31 -05:00
Paul Hernandez
3d927b848f
fix(installer): mount docker-compose config volume to appuser home ( #772 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 08:57:26 -05:00
Paul Hernandez
953fe20aef
test(core): regression guard for vector-row cleanup on entity delete ( #764 ) ( #771 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-28 23:20:15 -05:00
Paul Hernandez
a4282d9f2f
fix(core): skip Obsidian callouts in observation parser ( #769 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-28 23:15:13 -05:00
Paul Hernandez
799dd6c629
fix(mcp): remove no-op pagination params from read_note and view_note ( #768 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-28 23:05:14 -05:00
Paul Hernandez
26e74ea118
test(core): regression guard for long relation_type values ( #721 ) ( #770 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-28 22:55:14 -05:00
Paul Hernandez
ee1558ea68
feat(mcp): accept training-data-friendly parameter aliases ( #766 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-28 20:10:36 -05:00
Viktor Szépe
4d62b623db
chore(core): fix typos ( #761 )
...
Signed-off-by: Viktor Szépe <viktor@szepe.net >
2026-04-23 10:12:46 -05:00
Paul Hernandez
2fe4488eda
fix(sync): constrain watch service to --project scope ( #759 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-20 13:46:13 -05:00
Paul Hernandez
f3e46d7984
feat(mcp): discover projects across workspaces ( #757 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-18 14:04:57 -05:00
jope-bm
56d6f1b4a5
fix(mcp): report cloud projects as source=cloud in factory mode ( #752 )
...
Signed-off-by: Joe P <joe@basicmemory.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-18 11:10:20 -06:00
Paul Hernandez
1b39062ecd
refactor(core): rip telemetry wrappers, use logfire directly ( #754 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-17 13:58:19 -05:00
Paul Hernandez
c4cf0aff1e
perf(sync): speed up single markdown file indexing ( #751 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-17 07:08:21 -05:00