basic-memory 0.16.0__tar.gz → 0.17.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of basic-memory might be problematic. Click here for more details.
- basic_memory-0.17.0/.claude/commands/release/release.md +169 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.claude/commands/spec.md +17 -21
- basic_memory-0.17.0/.claude/settings.json +5 -0
- basic_memory-0.17.0/.env.example +28 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/workflows/test.yml +46 -3
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.gitignore +2 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/CHANGELOG.md +207 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/CLAUDE.md +95 -18
- basic_memory-0.16.0/README.md → basic_memory-0.17.0/PKG-INFO +164 -0
- basic_memory-0.16.0/PKG-INFO → basic_memory-0.17.0/README.md +118 -40
- basic_memory-0.17.0/docker-compose-postgres.yml +42 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/justfile +86 -8
- {basic_memory-0.16.0 → basic_memory-0.17.0}/pyproject.toml +14 -4
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/__init__.py +1 -1
- basic_memory-0.17.0/src/basic_memory/alembic/env.py +181 -0
- basic_memory-0.17.0/src/basic_memory/alembic/versions/314f1ea54dc4_add_postgres_full_text_search_support_.py +131 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +15 -3
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +44 -36
- basic_memory-0.17.0/src/basic_memory/alembic/versions/a2b3c4d5e6f7_add_search_index_entity_cascade.py +56 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +13 -0
- basic_memory-0.17.0/src/basic_memory/alembic/versions/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py +239 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/app.py +43 -10
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/knowledge_router.py +13 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/project_router.py +52 -10
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/resource_router.py +35 -25
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/utils.py +53 -14
- basic_memory-0.17.0/src/basic_memory/api/v2/__init__.py +35 -0
- basic_memory-0.17.0/src/basic_memory/api/v2/routers/__init__.py +21 -0
- basic_memory-0.17.0/src/basic_memory/api/v2/routers/directory_router.py +93 -0
- basic_memory-0.17.0/src/basic_memory/api/v2/routers/importer_router.py +182 -0
- basic_memory-0.17.0/src/basic_memory/api/v2/routers/knowledge_router.py +413 -0
- basic_memory-0.17.0/src/basic_memory/api/v2/routers/memory_router.py +130 -0
- basic_memory-0.17.0/src/basic_memory/api/v2/routers/project_router.py +342 -0
- basic_memory-0.17.0/src/basic_memory/api/v2/routers/prompt_router.py +270 -0
- basic_memory-0.17.0/src/basic_memory/api/v2/routers/resource_router.py +286 -0
- basic_memory-0.17.0/src/basic_memory/api/v2/routers/search_router.py +73 -0
- basic_memory-0.17.0/src/basic_memory/cli/app.py +84 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/__init__.py +3 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/cloud/rclone_commands.py +76 -4
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/cloud/rclone_installer.py +18 -4
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/command_utils.py +27 -1
- basic_memory-0.17.0/src/basic_memory/cli/commands/format.py +198 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/import_chatgpt.py +3 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/import_claude_conversations.py +3 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/import_claude_projects.py +3 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/import_memory_json.py +3 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/mcp.py +8 -26
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/project.py +22 -9
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/status.py +3 -2
- basic_memory-0.17.0/src/basic_memory/cli/commands/telemetry.py +81 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/main.py +7 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/config.py +176 -76
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/db.py +155 -73
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/deps.py +303 -9
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/file_utils.py +212 -3
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/importers/claude_conversations_importer.py +4 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/importers/utils.py +5 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/markdown/entity_parser.py +62 -23
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/markdown/markdown_processor.py +23 -4
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/markdown/plugins.py +4 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/markdown/utils.py +10 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/async_client.py +1 -0
- basic_memory-0.17.0/src/basic_memory/mcp/server.py +81 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/build_context.py +3 -3
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/canvas.py +34 -12
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/chatgpt_tools.py +3 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/delete_note.py +20 -3
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/edit_note.py +7 -3
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/list_directory.py +3 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/move_note.py +16 -10
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/project_management.py +6 -5
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/read_content.py +13 -3
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/read_note.py +24 -12
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/recent_activity.py +4 -4
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/search.py +3 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/utils.py +28 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/view_note.py +2 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/write_note.py +33 -10
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/models/knowledge.py +9 -2
- basic_memory-0.17.0/src/basic_memory/models/search.py +85 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/repository/entity_repository.py +192 -3
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/repository/observation_repository.py +1 -0
- basic_memory-0.17.0/src/basic_memory/repository/postgres_search_repository.py +379 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/repository/project_repository.py +26 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/repository/relation_repository.py +58 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/repository/repository.py +1 -0
- basic_memory-0.17.0/src/basic_memory/repository/search_index_row.py +95 -0
- basic_memory-0.17.0/src/basic_memory/repository/search_repository.py +94 -0
- basic_memory-0.17.0/src/basic_memory/repository/search_repository_base.py +241 -0
- basic_memory-0.16.0/src/basic_memory/repository/search_repository.py → basic_memory-0.17.0/src/basic_memory/repository/sqlite_search_repository.py +28 -228
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/base.py +34 -4
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/memory.py +7 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/project_info.py +1 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/search.py +5 -0
- basic_memory-0.17.0/src/basic_memory/schemas/v2/__init__.py +27 -0
- basic_memory-0.17.0/src/basic_memory/schemas/v2/entity.py +129 -0
- basic_memory-0.17.0/src/basic_memory/schemas/v2/resource.py +46 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/context_service.py +219 -43
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/directory_service.py +15 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/entity_service.py +68 -33
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/file_service.py +123 -12
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/initialization.py +51 -26
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/link_resolver.py +1 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/project_service.py +35 -18
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/search_service.py +51 -10
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/sync/sync_service.py +126 -112
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/sync/watch_service.py +20 -5
- basic_memory-0.17.0/src/basic_memory/telemetry.py +249 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/utils.py +91 -70
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/cli/test_project_commands_integration.py +59 -15
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/conftest.py +156 -27
- basic_memory-0.17.0/test-int/mcp/test_lifespan_shutdown_sync_task_cancellation_integration.py +68 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_project_management_integration.py +50 -23
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_project_state_sync_integration.py +2 -2
- basic_memory-0.17.0/test-int/mcp/test_read_note_integration.py +102 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_write_note_integration.py +68 -86
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/test_db_wal_mode.py +66 -43
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/test_disable_permalinks_integration.py +31 -16
- basic_memory-0.17.0/tests/README.md +172 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_async_client.py +18 -14
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_continue_conversation_template.py +3 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_project_router.py +8 -8
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_resource_router.py +5 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_search_router.py +10 -2
- basic_memory-0.17.0/tests/api/v2/__init__.py +1 -0
- basic_memory-0.17.0/tests/api/v2/conftest.py +21 -0
- basic_memory-0.17.0/tests/api/v2/test_directory_router.py +129 -0
- basic_memory-0.17.0/tests/api/v2/test_importer_router.py +530 -0
- basic_memory-0.17.0/tests/api/v2/test_knowledge_router.py +407 -0
- basic_memory-0.17.0/tests/api/v2/test_memory_router.py +301 -0
- basic_memory-0.17.0/tests/api/v2/test_project_router.py +334 -0
- basic_memory-0.17.0/tests/api/v2/test_prompt_router.py +212 -0
- basic_memory-0.17.0/tests/api/v2/test_resource_router.py +267 -0
- basic_memory-0.17.0/tests/api/v2/test_search_router.py +289 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/cli/conftest.py +29 -3
- basic_memory-0.17.0/tests/cli/test_cli_exit.py +48 -0
- basic_memory-0.17.0/tests/cli/test_cli_tool_exit.py +85 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/cli/test_cli_tools.py +11 -6
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/cli/test_project_add_with_local_path.py +6 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/conftest.py +150 -28
- basic_memory-0.17.0/tests/importers/test_conversation_indexing.py +114 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/importers/test_importer_utils.py +3 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/markdown/test_entity_parser.py +9 -6
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/markdown/test_markdown_plugins.py +40 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/markdown/test_parser_edge_cases.py +1 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/conftest.py +2 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_prompts.py +1 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_move_note.py +59 -28
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_read_content.py +124 -93
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_read_note.py +17 -37
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_view_note.py +18 -11
- basic_memory-0.17.0/tests/mcp/test_tool_write_note_kebab_filenames.py +392 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/repository/test_entity_repository.py +242 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/repository/test_entity_upsert_issue_187.py +3 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/repository/test_observation_repository.py +111 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/repository/test_project_repository.py +1 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/repository/test_relation_repository.py +157 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/repository/test_repository.py +8 -4
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/repository/test_search_repository.py +112 -25
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/repository/test_search_repository_edit_bug_fix.py +8 -7
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/schemas/test_memory_serialization.py +20 -1
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/schemas/test_schemas.py +42 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_context_service.py +26 -11
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_entity_service.py +7 -7
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_file_service.py +74 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_initialization.py +2 -60
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_link_resolver.py +1 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_project_service.py +37 -36
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_project_service_operations.py +10 -10
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_search_service.py +198 -5
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/sync/test_sync_service.py +148 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/sync/test_watch_service.py +2 -5
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/sync/test_watch_service_reload.py +2 -2
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/test_config.py +250 -21
- basic_memory-0.17.0/tests/test_rclone_commands.py +647 -0
- basic_memory-0.17.0/tests/test_telemetry.py +276 -0
- basic_memory-0.17.0/tests/utils/test_file_utils.py +550 -0
- basic_memory-0.17.0/tests/utils/test_timezone_utils.py +96 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/uv.lock +224 -164
- basic_memory-0.16.0/.claude/agents/python-developer.md +0 -154
- basic_memory-0.16.0/.claude/agents/system-architect.md +0 -126
- basic_memory-0.16.0/.claude/commands/release/release.md +0 -92
- basic_memory-0.16.0/src/basic_memory/alembic/env.py +0 -99
- basic_memory-0.16.0/src/basic_memory/cli/app.py +0 -54
- basic_memory-0.16.0/src/basic_memory/mcp/server.py +0 -9
- basic_memory-0.16.0/src/basic_memory/models/search.py +0 -38
- basic_memory-0.16.0/test-int/mcp/test_read_note_integration.py +0 -48
- basic_memory-0.16.0/test-int/test_sync_performance_benchmark.py +0 -369
- basic_memory-0.16.0/tests/test_db_migration_deduplication.py +0 -185
- basic_memory-0.16.0/tests/test_rclone_commands.py +0 -353
- basic_memory-0.16.0/tests/utils/test_file_utils.py +0 -216
- basic_memory-0.16.0/v0.15.0-RELEASE-DOCS.md +0 -161
- basic_memory-0.16.0/v15-docs/README.md +0 -61
- basic_memory-0.16.0/v15-docs/api-performance.md +0 -585
- basic_memory-0.16.0/v15-docs/background-relations.md +0 -531
- basic_memory-0.16.0/v15-docs/basic-memory-home.md +0 -371
- basic_memory-0.16.0/v15-docs/bug-fixes.md +0 -395
- basic_memory-0.16.0/v15-docs/chatgpt-integration.md +0 -648
- basic_memory-0.16.0/v15-docs/cloud-authentication.md +0 -381
- basic_memory-0.16.0/v15-docs/cloud-bisync.md +0 -531
- basic_memory-0.16.0/v15-docs/cloud-mode-usage.md +0 -546
- basic_memory-0.16.0/v15-docs/cloud-mount.md +0 -501
- basic_memory-0.16.0/v15-docs/default-project-mode.md +0 -425
- basic_memory-0.16.0/v15-docs/env-file-removal.md +0 -434
- basic_memory-0.16.0/v15-docs/env-var-overrides.md +0 -449
- basic_memory-0.16.0/v15-docs/explicit-project-parameter.md +0 -198
- basic_memory-0.16.0/v15-docs/gitignore-integration.md +0 -621
- basic_memory-0.16.0/v15-docs/project-root-env-var.md +0 -424
- basic_memory-0.16.0/v15-docs/sqlite-performance.md +0 -512
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.claude/commands/release/beta.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.claude/commands/release/changelog.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.claude/commands/release/release-check.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.claude/commands/test-live.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.dockerignore +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/dependabot.yml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/workflows/claude-code-review.yml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/workflows/claude-issue-triage.yml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/workflows/claude.yml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/workflows/dev-release.yml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/workflows/docker.yml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/workflows/pr-title.yml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.github/workflows/release.yml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/.python-version +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/CITATION.cff +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/CLA.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/CODE_OF_CONDUCT.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/CONTRIBUTING.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/Dockerfile +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/LICENSE +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/SECURITY.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/docker-compose.yml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/docs/Docker.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/docs/ai-assistant-guide-extended.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/docs/character-handling.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/docs/cloud-cli.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/llms-install.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/smithery.yaml +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-1 Specification-Driven Development Process.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-10 Unified Deployment Workflow and Event Tracking.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-11 Basic Memory API Performance Optimization.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-12 OpenTelemetry Observability.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-13 CLI Authentication with Subscription Validation.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-14 Cloud Git Versioning & GitHub Backup.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-14- Cloud Git Versioning & GitHub Backup.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-15 Configuration Persistence via Tigris for Cloud Tenants.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-16 MCP Cloud Service Consolidation.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-17 Semantic Search with ChromaDB.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-18 AI Memory Management Tool.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-19 Sync Performance and Memory Optimization.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-2 Slash Commands Reference.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-20 Simplified Project-Scoped Rclone Sync.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-3 Agent Definitions.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-4 Notes Web UI Component Architecture.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-5 CLI Cloud Upload via WebDAV.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-6 Explicit Project Parameter Architecture.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-7 POC to spike Tigris Turso for local access to cloud data.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-8 TigrisFS Integration.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-9 Multi-Project Bidirectional Sync Architecture.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-9 Signed Header Tenant Information.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/specs/SPEC-9-1 Follow-Ups- Conflict, Sync, and Observability.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/alembic.ini +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/migrations.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/script.py.mako +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/versions/9d9c1cb7d8f5_add_mtime_and_size_columns_to_entity_.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/alembic/versions/e7e1f4367280_add_scan_watermark_tracking_to_project.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/directory_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/importer_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/management_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/memory_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/prompt_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/routers/search_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/api/template_loader.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/auth.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/cloud/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/cloud/api_client.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/cloud/bisync_commands.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/cloud/cloud_utils.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/cloud/core_commands.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/cloud/upload.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/cloud/upload_command.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/db.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/cli/commands/tool.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/ignore_utils.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/importers/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/importers/base.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/importers/chatgpt_importer.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/importers/claude_projects_importer.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/importers/memory_json_importer.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/markdown/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/markdown/schemas.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/project_context.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/prompts/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/prompts/search.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/prompts/utils.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/resources/project_info.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/mcp/tools/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/models/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/models/base.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/models/project.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/repository/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/repository/project_info_repository.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/cloud.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/delete.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/directory.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/importer.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/prompt.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/request.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/response.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/schemas/sync_report.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/exceptions.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/services/service.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/sync/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/sync/background_sync.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/src/basic_memory/templates/prompts/search.hbs +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/BENCHMARKS.md +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/cli/test_version_integration.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_build_context_underscore.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_build_context_validation.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_default_project_mode_integration.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_delete_note_integration.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_edit_note_integration.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_list_directory_integration.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_move_note_integration.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_read_content_integration.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_search_integration.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/Non-MarkdownFileSupport.pdf +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/Screenshot.png +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/conftest.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_directory_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_importer_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_knowledge_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_management_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_memory_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_project_router_operations.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_prompt_router.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_relation_background_resolution.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_search_template.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_template_loader.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/api/test_template_loader_helpers.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/cli/test_cloud_authentication.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/cli/test_ignore_utils.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/cli/test_import_chatgpt.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/cli/test_import_claude_conversations.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/cli/test_import_claude_projects.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/cli/test_import_memory_json.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/cli/test_upload.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/db/test_issue_254_foreign_key_constraints.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/importers/test_importer_base.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/markdown/__init__.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/markdown/test_date_frontmatter_parsing.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/markdown/test_entity_parser_error_handling.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/markdown/test_markdown_processor.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/markdown/test_observation_edge_cases.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/markdown/test_relation_edge_cases.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/markdown/test_task_detection.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_permalink_collision_file_overwrite.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_resources.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_build_context.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_canvas.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_delete_note.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_edit_note.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_list_directory.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_recent_activity.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_resource.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_search.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_utils.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/test_tool_write_note.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/mcp/tools/test_chatgpt_tools.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/repository/test_entity_repository_upsert.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/repository/test_project_info_repository.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/schemas/test_base_timeframe_minimum.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/schemas/test_memory_url.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/schemas/test_memory_url_validation.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/schemas/test_search.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_directory_service.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_entity_service_disable_permalinks.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/services/test_project_removal_bug.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/sync/test_character_conflicts.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/sync/test_sync_service_incremental.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/sync/test_sync_wikilink_issue.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/sync/test_tmp_files.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/sync/test_watch_service_edge_cases.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/test_deps.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/test_production_cascade_delete.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/utils/test_parse_tags.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/utils/test_permalink_formatting.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/utils/test_utf8_handling.py +0 -0
- {basic_memory-0.16.0 → basic_memory-0.17.0}/tests/utils/test_validate_project_path.py +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# /release - Create Stable Release
|
|
2
|
+
|
|
3
|
+
Create a stable release using the automated justfile target with comprehensive validation.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
```
|
|
7
|
+
/release <version>
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
**Parameters:**
|
|
11
|
+
- `version` (required): Release version like `v0.13.2`
|
|
12
|
+
|
|
13
|
+
## Implementation
|
|
14
|
+
|
|
15
|
+
You are an expert release manager for the Basic Memory project. When the user runs `/release`, execute the following steps:
|
|
16
|
+
|
|
17
|
+
### Step 1: Pre-flight Validation
|
|
18
|
+
|
|
19
|
+
#### Version Check
|
|
20
|
+
1. Check current version in `src/basic_memory/__init__.py`
|
|
21
|
+
2. Verify new version format matches `v\d+\.\d+\.\d+` pattern
|
|
22
|
+
3. Confirm version is higher than current version
|
|
23
|
+
|
|
24
|
+
#### Git Status
|
|
25
|
+
1. Check current git status for uncommitted changes
|
|
26
|
+
2. Verify we're on the `main` branch
|
|
27
|
+
3. Confirm no existing tag with this version
|
|
28
|
+
|
|
29
|
+
#### Documentation Validation
|
|
30
|
+
1. **Changelog Check**
|
|
31
|
+
- CHANGELOG.md contains entry for target version
|
|
32
|
+
- Entry includes all major features and fixes
|
|
33
|
+
- Breaking changes are documented
|
|
34
|
+
|
|
35
|
+
### Step 2: Use Justfile Automation
|
|
36
|
+
Execute the automated release process:
|
|
37
|
+
```bash
|
|
38
|
+
just release <version>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The justfile target handles:
|
|
42
|
+
- ✅ Version format validation
|
|
43
|
+
- ✅ Git status and branch checks
|
|
44
|
+
- ✅ Quality checks (`just check` - lint, format, type-check, tests)
|
|
45
|
+
- ✅ Version update in `src/basic_memory/__init__.py`
|
|
46
|
+
- ✅ Automatic commit with proper message
|
|
47
|
+
- ✅ Tag creation and pushing to GitHub
|
|
48
|
+
- ✅ Release workflow trigger (automatic on tag push)
|
|
49
|
+
|
|
50
|
+
The GitHub Actions workflow (`.github/workflows/release.yml`) then:
|
|
51
|
+
- ✅ Builds the package using `uv build`
|
|
52
|
+
- ✅ Creates GitHub release with auto-generated notes
|
|
53
|
+
- ✅ Publishes to PyPI
|
|
54
|
+
- ✅ Updates Homebrew formula (stable releases only)
|
|
55
|
+
|
|
56
|
+
### Step 3: Monitor Release Process
|
|
57
|
+
1. Verify tag push triggered the workflow (should start automatically within seconds)
|
|
58
|
+
2. Monitor workflow progress at: https://github.com/basicmachines-co/basic-memory/actions
|
|
59
|
+
3. Watch for successful completion of both jobs:
|
|
60
|
+
- `release` - Builds package and publishes to PyPI
|
|
61
|
+
- `homebrew` - Updates Homebrew formula (stable releases only)
|
|
62
|
+
4. Check for any workflow failures and investigate logs if needed
|
|
63
|
+
|
|
64
|
+
### Step 4: Post-Release Validation
|
|
65
|
+
|
|
66
|
+
#### GitHub Release
|
|
67
|
+
1. Verify GitHub release is created at: https://github.com/basicmachines-co/basic-memory/releases/tag/<version>
|
|
68
|
+
2. Check that release notes are auto-generated from commits
|
|
69
|
+
3. Validate release assets (`.whl` and `.tar.gz` files are attached)
|
|
70
|
+
|
|
71
|
+
#### PyPI Publication
|
|
72
|
+
1. Verify package published at: https://pypi.org/project/basic-memory/<version>/
|
|
73
|
+
2. Test installation: `uv tool install basic-memory`
|
|
74
|
+
3. Verify installed version: `basic-memory --version`
|
|
75
|
+
|
|
76
|
+
#### Homebrew Formula (Stable Releases Only)
|
|
77
|
+
1. Check formula update at: https://github.com/basicmachines-co/homebrew-basic-memory
|
|
78
|
+
2. Verify formula version matches release
|
|
79
|
+
3. Test Homebrew installation: `brew install basicmachines-co/basic-memory/basic-memory`
|
|
80
|
+
|
|
81
|
+
#### Website Updates
|
|
82
|
+
|
|
83
|
+
**1. basicmachines.co** (`/Users/drew/code/basicmachines.co`)
|
|
84
|
+
- **Goal**: Update version number displayed on the homepage
|
|
85
|
+
- **Location**: Search for "Basic Memory v0." in the codebase to find version displays
|
|
86
|
+
- **What to update**:
|
|
87
|
+
- Hero section heading that shows "Basic Memory v{VERSION}"
|
|
88
|
+
- "What's New in v{VERSION}" section heading
|
|
89
|
+
- Feature highlights array (look for array of features with title/description)
|
|
90
|
+
- **Process**:
|
|
91
|
+
1. Pull latest from GitHub: `git pull origin main`
|
|
92
|
+
2. Create release branch: `git checkout -b release/v{VERSION}`
|
|
93
|
+
3. Search codebase for current version number (e.g., "v0.16.1")
|
|
94
|
+
4. Update version numbers to new release version
|
|
95
|
+
5. Update feature highlights with 3-5 key features from this release (extract from CHANGELOG.md)
|
|
96
|
+
6. Commit changes: `git commit -m "chore: update to v{VERSION}"`
|
|
97
|
+
7. Push branch: `git push origin release/v{VERSION}`
|
|
98
|
+
- **Deploy**: Follow deployment process for basicmachines.co
|
|
99
|
+
|
|
100
|
+
**2. docs.basicmemory.com** (`/Users/drew/code/docs.basicmemory.com`)
|
|
101
|
+
- **Goal**: Add new release notes section to the latest-releases page
|
|
102
|
+
- **File**: `src/pages/latest-releases.mdx`
|
|
103
|
+
- **What to do**:
|
|
104
|
+
1. Pull latest from GitHub: `git pull origin main`
|
|
105
|
+
2. Create release branch: `git checkout -b release/v{VERSION}`
|
|
106
|
+
3. Read the existing file to understand the format and structure
|
|
107
|
+
4. Read `/Users/drew/code/basic-memory/CHANGELOG.md` to get release content
|
|
108
|
+
5. Add new release section **at the top** (after MDX imports, before other releases)
|
|
109
|
+
6. Follow the existing pattern:
|
|
110
|
+
- Heading: `## [v{VERSION}](github-link) — YYYY-MM-DD`
|
|
111
|
+
- Focus statement if applicable
|
|
112
|
+
- `<Info>` block with highlights (3-5 key items)
|
|
113
|
+
- Sections for Features, Bug Fixes, Breaking Changes, etc.
|
|
114
|
+
- Link to full changelog at the end
|
|
115
|
+
- Separator `---` between releases
|
|
116
|
+
7. Commit changes: `git commit -m "docs: add v{VERSION} release notes"`
|
|
117
|
+
8. Push branch: `git push origin release/v{VERSION}`
|
|
118
|
+
- **Source content**: Extract and format sections from CHANGELOG.md for this version
|
|
119
|
+
- **Deploy**: Follow deployment process for docs.basicmemory.com
|
|
120
|
+
|
|
121
|
+
**4. Announce Release**
|
|
122
|
+
- Post to Discord community if significant changes
|
|
123
|
+
- Update social media if major release
|
|
124
|
+
- Notify users via appropriate channels
|
|
125
|
+
|
|
126
|
+
## Pre-conditions Check
|
|
127
|
+
Before starting, verify:
|
|
128
|
+
- [ ] All beta testing is complete
|
|
129
|
+
- [ ] Critical bugs are fixed
|
|
130
|
+
- [ ] Breaking changes are documented
|
|
131
|
+
- [ ] CHANGELOG.md is updated (if needed)
|
|
132
|
+
- [ ] Version number follows semantic versioning
|
|
133
|
+
|
|
134
|
+
## Error Handling
|
|
135
|
+
- If `just release` fails, examine the error output for specific issues
|
|
136
|
+
- If quality checks fail, fix issues and retry
|
|
137
|
+
- If changelog entry missing, update CHANGELOG.md and commit before retrying
|
|
138
|
+
- If GitHub Actions fail, check workflow logs for debugging
|
|
139
|
+
|
|
140
|
+
## Success Output
|
|
141
|
+
```
|
|
142
|
+
🎉 Stable Release v0.13.2 Created Successfully!
|
|
143
|
+
|
|
144
|
+
🏷️ Tag: v0.13.2
|
|
145
|
+
📋 GitHub Release: https://github.com/basicmachines-co/basic-memory/releases/tag/v0.13.2
|
|
146
|
+
📦 PyPI: https://pypi.org/project/basic-memory/0.13.2/
|
|
147
|
+
🍺 Homebrew: https://github.com/basicmachines-co/homebrew-basic-memory
|
|
148
|
+
🚀 GitHub Actions: Completed
|
|
149
|
+
|
|
150
|
+
Install with pip/uv:
|
|
151
|
+
uv tool install basic-memory
|
|
152
|
+
|
|
153
|
+
Install with Homebrew:
|
|
154
|
+
brew install basicmachines-co/basic-memory/basic-memory
|
|
155
|
+
|
|
156
|
+
Users can now upgrade:
|
|
157
|
+
uv tool upgrade basic-memory
|
|
158
|
+
brew upgrade basic-memory
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Context
|
|
162
|
+
- This creates production releases used by end users
|
|
163
|
+
- Must pass all quality gates before proceeding
|
|
164
|
+
- Uses the automated justfile target for consistency
|
|
165
|
+
- Version is automatically updated in `__init__.py`
|
|
166
|
+
- Triggers automated GitHub release with changelog
|
|
167
|
+
- Package is published to PyPI for `pip` and `uv` users
|
|
168
|
+
- Homebrew formula is automatically updated for stable releases
|
|
169
|
+
- Supports multiple installation methods (uv, pip, Homebrew)
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
-
allowed-tools: mcp__basic-memory__write_note, mcp__basic-memory__read_note, mcp__basic-memory__search_notes, mcp__basic-memory__edit_note
|
|
3
|
-
argument-hint: [create|status|
|
|
2
|
+
allowed-tools: mcp__basic-memory__write_note, mcp__basic-memory__read_note, mcp__basic-memory__search_notes, mcp__basic-memory__edit_note
|
|
3
|
+
argument-hint: [create|status|show|review] [spec-name]
|
|
4
4
|
description: Manage specifications in our development process
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
## Context
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Specifications are managed in the Basic Memory "specs" project. All specs live in a centralized location accessible across all repositories via MCP tools.
|
|
10
|
+
|
|
11
|
+
See SPEC-1 and SPEC-2 in the "specs" project for the full specification-driven development process.
|
|
10
12
|
|
|
11
13
|
Available commands:
|
|
12
14
|
- `create [name]` - Create new specification
|
|
13
15
|
- `status` - Show all spec statuses
|
|
14
|
-
- `
|
|
16
|
+
- `show [spec-name]` - Read a specific spec
|
|
15
17
|
- `review [spec-name]` - Review implementation against spec
|
|
16
18
|
|
|
17
19
|
## Your task
|
|
@@ -19,23 +21,19 @@ Available commands:
|
|
|
19
21
|
Execute the spec command: `/spec $ARGUMENTS`
|
|
20
22
|
|
|
21
23
|
### If command is "create":
|
|
22
|
-
1. Get next SPEC number by searching existing specs
|
|
23
|
-
2. Create new spec using template from
|
|
24
|
-
3.
|
|
24
|
+
1. Get next SPEC number by searching existing specs in "specs" project
|
|
25
|
+
2. Create new spec using template from SPEC-2
|
|
26
|
+
3. Use mcp__basic-memory__write_note with project="specs"
|
|
25
27
|
4. Include standard sections: Why, What, How, How to Evaluate
|
|
26
28
|
|
|
27
29
|
### If command is "status":
|
|
28
|
-
1.
|
|
29
|
-
2. Display table with spec number, title, and
|
|
30
|
-
3. Show
|
|
31
|
-
|
|
32
|
-
### If command is "
|
|
33
|
-
1.
|
|
34
|
-
2.
|
|
35
|
-
- Frontend/UI → vue-developer
|
|
36
|
-
- Architecture/system → system-architect
|
|
37
|
-
- Backend/API → python-developer
|
|
38
|
-
3. Launch Task tool with appropriate agent and spec context
|
|
30
|
+
1. Use mcp__basic-memory__search_notes with project="specs"
|
|
31
|
+
2. Display table with spec number, title, and progress
|
|
32
|
+
3. Show completion status from checkboxes in content
|
|
33
|
+
|
|
34
|
+
### If command is "show":
|
|
35
|
+
1. Use mcp__basic-memory__read_note with project="specs"
|
|
36
|
+
2. Display the full spec content
|
|
39
37
|
|
|
40
38
|
### If command is "review":
|
|
41
39
|
1. Read the specified spec and its "How to Evaluate" section
|
|
@@ -49,7 +47,5 @@ Execute the spec command: `/spec $ARGUMENTS`
|
|
|
49
47
|
- **Architecture compliance** - Component isolation, state management patterns
|
|
50
48
|
- **Documentation completeness** - Implementation matches specification
|
|
51
49
|
3. Provide honest, accurate assessment - do not overstate completeness
|
|
52
|
-
4. Document findings and update spec with review results
|
|
50
|
+
4. Document findings and update spec with review results using mcp__basic-memory__edit_note
|
|
53
51
|
5. If gaps found, clearly identify what still needs to be implemented/tested
|
|
54
|
-
|
|
55
|
-
Use the agent definitions from @docs/specs/Agent\ Definitions.md for implementation handoffs.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Basic Memory Environment Variables Example
|
|
2
|
+
# Copy this file to .env and customize as needed
|
|
3
|
+
# Note: .env files are gitignored and should never be committed
|
|
4
|
+
|
|
5
|
+
# ============================================================================
|
|
6
|
+
# PostgreSQL Test Database Configuration
|
|
7
|
+
# ============================================================================
|
|
8
|
+
# These variables allow you to override the default test database credentials
|
|
9
|
+
# Default values match docker-compose-postgres.yml for local development
|
|
10
|
+
#
|
|
11
|
+
# Only needed if you want to use different credentials or a remote test database
|
|
12
|
+
# By default, tests use: postgresql://basic_memory_user:dev_password@localhost:5433/basic_memory_test
|
|
13
|
+
|
|
14
|
+
# Full PostgreSQL test database URL (used by tests and migrations)
|
|
15
|
+
# POSTGRES_TEST_URL=postgresql+asyncpg://basic_memory_user:dev_password@localhost:5433/basic_memory_test
|
|
16
|
+
|
|
17
|
+
# Individual components (used by justfile postgres-reset command)
|
|
18
|
+
# POSTGRES_USER=basic_memory_user
|
|
19
|
+
# POSTGRES_TEST_DB=basic_memory_test
|
|
20
|
+
|
|
21
|
+
# ============================================================================
|
|
22
|
+
# Production Database Configuration
|
|
23
|
+
# ============================================================================
|
|
24
|
+
# For production use, set these in your deployment environment
|
|
25
|
+
# DO NOT use the test credentials above in production!
|
|
26
|
+
|
|
27
|
+
# BASIC_MEMORY_DATABASE_BACKEND=postgres # or "sqlite"
|
|
28
|
+
# BASIC_MEMORY_DATABASE_URL=postgresql+asyncpg://user:password@host:port/database
|
|
@@ -13,7 +13,8 @@ on:
|
|
|
13
13
|
branches: [ "main" ]
|
|
14
14
|
|
|
15
15
|
jobs:
|
|
16
|
-
test:
|
|
16
|
+
test-sqlite:
|
|
17
|
+
name: Test SQLite (${{ matrix.os }}, Python ${{ matrix.python-version }})
|
|
17
18
|
strategy:
|
|
18
19
|
fail-fast: false
|
|
19
20
|
matrix:
|
|
@@ -64,7 +65,49 @@ jobs:
|
|
|
64
65
|
run: |
|
|
65
66
|
just lint
|
|
66
67
|
|
|
67
|
-
- name: Run tests
|
|
68
|
+
- name: Run tests (SQLite)
|
|
68
69
|
run: |
|
|
69
70
|
uv pip install pytest pytest-cov
|
|
70
|
-
just test
|
|
71
|
+
just test-sqlite
|
|
72
|
+
|
|
73
|
+
test-postgres:
|
|
74
|
+
name: Test Postgres (Python ${{ matrix.python-version }})
|
|
75
|
+
strategy:
|
|
76
|
+
fail-fast: false
|
|
77
|
+
matrix:
|
|
78
|
+
python-version: [ "3.12", "3.13" ]
|
|
79
|
+
runs-on: ubuntu-latest
|
|
80
|
+
|
|
81
|
+
# Note: No services section needed - testcontainers handles Postgres in Docker
|
|
82
|
+
|
|
83
|
+
steps:
|
|
84
|
+
- uses: actions/checkout@v4
|
|
85
|
+
with:
|
|
86
|
+
submodules: true
|
|
87
|
+
|
|
88
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
89
|
+
uses: actions/setup-python@v4
|
|
90
|
+
with:
|
|
91
|
+
python-version: ${{ matrix.python-version }}
|
|
92
|
+
cache: 'pip'
|
|
93
|
+
|
|
94
|
+
- name: Install uv
|
|
95
|
+
run: |
|
|
96
|
+
pip install uv
|
|
97
|
+
|
|
98
|
+
- name: Install just
|
|
99
|
+
run: |
|
|
100
|
+
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin
|
|
101
|
+
|
|
102
|
+
- name: Create virtual env
|
|
103
|
+
run: |
|
|
104
|
+
uv venv
|
|
105
|
+
|
|
106
|
+
- name: Install dependencies
|
|
107
|
+
run: |
|
|
108
|
+
uv pip install -e .[dev]
|
|
109
|
+
|
|
110
|
+
- name: Run tests (Postgres via testcontainers)
|
|
111
|
+
run: |
|
|
112
|
+
uv pip install pytest pytest-cov
|
|
113
|
+
just test-postgres
|
|
@@ -1,5 +1,212 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## v0.17.0 (2025-12-28)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **#478**: Add anonymous usage telemetry with Homebrew-style opt-out
|
|
8
|
+
([`856737f`](https://github.com/basicmachines-co/basic-memory/commit/856737f))
|
|
9
|
+
- Privacy-respecting anonymous usage analytics
|
|
10
|
+
- Easy opt-out via `BASIC_MEMORY_NO_ANALYTICS=1` environment variable
|
|
11
|
+
- Helps improve Basic Memory based on real usage patterns
|
|
12
|
+
|
|
13
|
+
- **#474**: Add auto-format files on save with built-in Python formatter
|
|
14
|
+
([`1fd680c`](https://github.com/basicmachines-co/basic-memory/commit/1fd680c))
|
|
15
|
+
- Automatic markdown formatting on file save
|
|
16
|
+
- Built-in Python formatter for consistent code style
|
|
17
|
+
- Configurable formatting options
|
|
18
|
+
|
|
19
|
+
- **#447**: Complete Phase 2 of API v2 migration - MCP tools use v2 endpoints
|
|
20
|
+
([`1a74d85`](https://github.com/basicmachines-co/basic-memory/commit/1a74d85))
|
|
21
|
+
- All MCP tools now use optimized v2 API endpoints
|
|
22
|
+
- Improved performance for knowledge graph operations
|
|
23
|
+
- Foundation for future API enhancements
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
- Fix UTF-8 BOM handling in frontmatter parsing
|
|
28
|
+
([`85684f8`](https://github.com/basicmachines-co/basic-memory/commit/85684f8))
|
|
29
|
+
- Handles files with UTF-8 byte order marks correctly
|
|
30
|
+
- Prevents frontmatter parsing failures
|
|
31
|
+
|
|
32
|
+
- **#475**: Handle null titles in ChatGPT import
|
|
33
|
+
([`14ce5a3`](https://github.com/basicmachines-co/basic-memory/commit/14ce5a3))
|
|
34
|
+
- Gracefully handles conversations without titles
|
|
35
|
+
- Improved import robustness
|
|
36
|
+
|
|
37
|
+
- Remove MaxLen constraint from observation content
|
|
38
|
+
([`45d6caf`](https://github.com/basicmachines-co/basic-memory/commit/45d6caf))
|
|
39
|
+
- Allows longer observation content without truncation
|
|
40
|
+
- Removes arbitrary 2000 character limit
|
|
41
|
+
|
|
42
|
+
- Handle FileNotFoundError gracefully during sync
|
|
43
|
+
([`1652f86`](https://github.com/basicmachines-co/basic-memory/commit/1652f86))
|
|
44
|
+
- Prevents sync failures when files are deleted during sync
|
|
45
|
+
- More resilient file watching
|
|
46
|
+
|
|
47
|
+
- Use canonical project names in API response messages
|
|
48
|
+
([`c23927d`](https://github.com/basicmachines-co/basic-memory/commit/c23927d))
|
|
49
|
+
- Consistent project name formatting in all responses
|
|
50
|
+
|
|
51
|
+
- Suppress CLI warnings for cleaner output
|
|
52
|
+
([`d71c6e8`](https://github.com/basicmachines-co/basic-memory/commit/d71c6e8))
|
|
53
|
+
- Cleaner terminal output without spurious warnings
|
|
54
|
+
|
|
55
|
+
- Prevent DEBUG logs from appearing on CLI stdout
|
|
56
|
+
([`63b9849`](https://github.com/basicmachines-co/basic-memory/commit/63b9849))
|
|
57
|
+
- Debug logging no longer pollutes CLI output
|
|
58
|
+
|
|
59
|
+
- **#473**: Detect rclone version for --create-empty-src-dirs support
|
|
60
|
+
([`622d37e`](https://github.com/basicmachines-co/basic-memory/commit/622d37e))
|
|
61
|
+
- Automatic rclone version detection for compatibility
|
|
62
|
+
- Prevents errors on older rclone versions
|
|
63
|
+
|
|
64
|
+
- **#471**: Prevent CLI commands from hanging on exit
|
|
65
|
+
([`916baf8`](https://github.com/basicmachines-co/basic-memory/commit/916baf8))
|
|
66
|
+
- Fixes CLI hang on shutdown
|
|
67
|
+
- Proper async cleanup
|
|
68
|
+
|
|
69
|
+
- Add cloud_mode check to initialize_app()
|
|
70
|
+
([`ef7adb7`](https://github.com/basicmachines-co/basic-memory/commit/ef7adb7))
|
|
71
|
+
- Correct initialization for cloud deployments
|
|
72
|
+
|
|
73
|
+
### Internal
|
|
74
|
+
|
|
75
|
+
- Centralize test environment detection in config.is_test_env
|
|
76
|
+
([`3cd9178`](https://github.com/basicmachines-co/basic-memory/commit/3cd9178))
|
|
77
|
+
- Unified test environment detection
|
|
78
|
+
- Disables analytics in test environments
|
|
79
|
+
|
|
80
|
+
- Make test-int-postgres compatible with macOS
|
|
81
|
+
([`95937c6`](https://github.com/basicmachines-co/basic-memory/commit/95937c6))
|
|
82
|
+
- Cross-platform PostgreSQL testing support
|
|
83
|
+
|
|
84
|
+
## v0.16.3 (2025-12-20)
|
|
85
|
+
|
|
86
|
+
### Features
|
|
87
|
+
|
|
88
|
+
- **#439**: Add PostgreSQL database backend support
|
|
89
|
+
([`fb5e9e1`](https://github.com/basicmachines-co/basic-memory/commit/fb5e9e1))
|
|
90
|
+
- Full PostgreSQL/Neon database support as alternative to SQLite
|
|
91
|
+
- Async connection pooling with asyncpg
|
|
92
|
+
- Alembic migrations support for both backends
|
|
93
|
+
- Configurable via `BASIC_MEMORY_DATABASE_BACKEND` environment variable
|
|
94
|
+
|
|
95
|
+
- **#441**: Implement API v2 with ID-based endpoints (Phase 1)
|
|
96
|
+
([`28cc522`](https://github.com/basicmachines-co/basic-memory/commit/28cc522))
|
|
97
|
+
- New ID-based API endpoints for improved performance
|
|
98
|
+
- Foundation for future API enhancements
|
|
99
|
+
- Backward compatible with existing endpoints
|
|
100
|
+
|
|
101
|
+
- Add project_id to Relation and Observation for efficient project-scoped queries
|
|
102
|
+
([`a920a9f`](https://github.com/basicmachines-co/basic-memory/commit/a920a9f))
|
|
103
|
+
- Enables faster queries in multi-project environments
|
|
104
|
+
- Improved database schema for cloud deployments
|
|
105
|
+
|
|
106
|
+
- Add bulk insert with ON CONFLICT handling for relations
|
|
107
|
+
([`0818bda`](https://github.com/basicmachines-co/basic-memory/commit/0818bda))
|
|
108
|
+
- Faster relation creation during sync operations
|
|
109
|
+
- Handles duplicate relations gracefully
|
|
110
|
+
|
|
111
|
+
### Performance
|
|
112
|
+
|
|
113
|
+
- Lightweight permalink resolution to avoid eager loading
|
|
114
|
+
([`6f99d2e`](https://github.com/basicmachines-co/basic-memory/commit/6f99d2e))
|
|
115
|
+
- Reduces database queries during entity lookups
|
|
116
|
+
- Improved response times for read operations
|
|
117
|
+
|
|
118
|
+
### Bug Fixes
|
|
119
|
+
|
|
120
|
+
- **#464**: Pin FastMCP to 2.12.3 to fix MCP tools visibility
|
|
121
|
+
([`f227ef6`](https://github.com/basicmachines-co/basic-memory/commit/f227ef6))
|
|
122
|
+
- Fixes issue where MCP tools were not visible to Claude
|
|
123
|
+
- Reverts to last known working FastMCP version
|
|
124
|
+
|
|
125
|
+
- **#458**: Reduce watch service CPU usage by increasing reload interval
|
|
126
|
+
([`897b1ed`](https://github.com/basicmachines-co/basic-memory/commit/897b1ed))
|
|
127
|
+
- Lowers CPU usage during file watching
|
|
128
|
+
- More efficient resource utilization
|
|
129
|
+
|
|
130
|
+
- **#456**: Await background sync task cancellation in lifespan shutdown
|
|
131
|
+
([`efbc758`](https://github.com/basicmachines-co/basic-memory/commit/efbc758))
|
|
132
|
+
- Prevents hanging on shutdown
|
|
133
|
+
- Clean async task cleanup
|
|
134
|
+
|
|
135
|
+
- **#434**: Respect --project flag in background sync
|
|
136
|
+
([`70bb10b`](https://github.com/basicmachines-co/basic-memory/commit/70bb10b))
|
|
137
|
+
- Background sync now correctly uses specified project
|
|
138
|
+
- Fixes multi-project sync issues
|
|
139
|
+
|
|
140
|
+
- **#446**: Fix observation parsing and permalink limits
|
|
141
|
+
([`73d940e`](https://github.com/basicmachines-co/basic-memory/commit/73d940e))
|
|
142
|
+
- Handles edge cases in observation content
|
|
143
|
+
- Prevents permalink truncation issues
|
|
144
|
+
|
|
145
|
+
- **#424**: Handle periods in kebab_filenames mode
|
|
146
|
+
([`b004565`](https://github.com/basicmachines-co/basic-memory/commit/b004565))
|
|
147
|
+
- Fixes filename handling for files with multiple periods
|
|
148
|
+
- Improved kebab-case conversion
|
|
149
|
+
|
|
150
|
+
- Fix Postgres/Neon connection settings and search index dedupe
|
|
151
|
+
([`b5d4fb5`](https://github.com/basicmachines-co/basic-memory/commit/b5d4fb5))
|
|
152
|
+
- Optimized connection pooling for Postgres
|
|
153
|
+
- Prevents duplicate search index entries
|
|
154
|
+
|
|
155
|
+
### Testing & CI
|
|
156
|
+
|
|
157
|
+
- Replace py-pglite with testcontainers for Postgres testing
|
|
158
|
+
([`c462faf`](https://github.com/basicmachines-co/basic-memory/commit/c462faf))
|
|
159
|
+
- More reliable Postgres testing infrastructure
|
|
160
|
+
- Uses Docker-based test containers
|
|
161
|
+
|
|
162
|
+
- Add PostgreSQL testing to GitHub Actions workflow
|
|
163
|
+
([`66b91b2`](https://github.com/basicmachines-co/basic-memory/commit/66b91b2))
|
|
164
|
+
- CI now tests both SQLite and PostgreSQL backends
|
|
165
|
+
- Ensures cross-database compatibility
|
|
166
|
+
|
|
167
|
+
- **#416**: Add integration test for read_note with underscored folders
|
|
168
|
+
([`0c12a39`](https://github.com/basicmachines-co/basic-memory/commit/0c12a39))
|
|
169
|
+
- Verifies folder name handling edge cases
|
|
170
|
+
|
|
171
|
+
### Internal
|
|
172
|
+
|
|
173
|
+
- Cloud compatibility fixes and performance improvements (#454)
|
|
174
|
+
- Remove logfire instrumentation for cleaner production deployments
|
|
175
|
+
- Truncate content_stems to fix Postgres 8KB index row limit
|
|
176
|
+
|
|
177
|
+
## v0.16.2 (2025-11-16)
|
|
178
|
+
|
|
179
|
+
### Bug Fixes
|
|
180
|
+
|
|
181
|
+
- **#429**: Use platform-native path separators in config.json
|
|
182
|
+
([`6517e98`](https://github.com/basicmachines-co/basic-memory/commit/6517e98))
|
|
183
|
+
- Fixes config.json path separator issues on Windows
|
|
184
|
+
- Uses os.path.join for platform-native path construction
|
|
185
|
+
- Ensures consistent path handling across platforms
|
|
186
|
+
|
|
187
|
+
- **#427**: Add rclone installation checks for Windows bisync commands
|
|
188
|
+
([`1af0539`](https://github.com/basicmachines-co/basic-memory/commit/1af0539))
|
|
189
|
+
- Validates rclone installation before running bisync commands
|
|
190
|
+
- Provides clear error messages when rclone is not installed
|
|
191
|
+
- Improves user experience on Windows
|
|
192
|
+
|
|
193
|
+
- **#421**: Main project always recreated on project list command
|
|
194
|
+
([`cad7019`](https://github.com/basicmachines-co/basic-memory/commit/cad7019))
|
|
195
|
+
- Fixes issue where main project was recreated unnecessarily
|
|
196
|
+
- Improves project list command reliability
|
|
197
|
+
- Reduces unnecessary file system operations
|
|
198
|
+
|
|
199
|
+
## v0.16.1 (2025-11-11)
|
|
200
|
+
|
|
201
|
+
### Bug Fixes
|
|
202
|
+
|
|
203
|
+
- **#422**: Handle Windows line endings in rclone bisync
|
|
204
|
+
([`e9d0a94`](https://github.com/basicmachines-co/basic-memory/commit/e9d0a94))
|
|
205
|
+
- Added `--compare=modtime` flag to rclone bisync to ignore size differences from line ending conversions
|
|
206
|
+
- Fixes issue where LF→CRLF conversion on Windows was treated as file corruption
|
|
207
|
+
- Resolves "corrupted on transfer: sizes differ" errors during cloud sync on Windows
|
|
208
|
+
- Users will need to run `--resync` once after updating to establish new baseline
|
|
209
|
+
|
|
3
210
|
## v0.16.0 (2025-11-10)
|
|
4
211
|
|
|
5
212
|
### Features
|