Skip to content

Commit bf85208

Browse files
authored
Merge branch 'main' into fix/cli-tool-hang
2 parents 4613c9a + 95937c6 commit bf85208

5 files changed

Lines changed: 109 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,98 @@
11
# CHANGELOG
22

3+
## v0.16.3 (2025-12-20)
4+
5+
### Features
6+
7+
- **#439**: Add PostgreSQL database backend support
8+
([`fb5e9e1`](https://github.com/basicmachines-co/basic-memory/commit/fb5e9e1))
9+
- Full PostgreSQL/Neon database support as alternative to SQLite
10+
- Async connection pooling with asyncpg
11+
- Alembic migrations support for both backends
12+
- Configurable via `BASIC_MEMORY_DATABASE_BACKEND` environment variable
13+
14+
- **#441**: Implement API v2 with ID-based endpoints (Phase 1)
15+
([`28cc522`](https://github.com/basicmachines-co/basic-memory/commit/28cc522))
16+
- New ID-based API endpoints for improved performance
17+
- Foundation for future API enhancements
18+
- Backward compatible with existing endpoints
19+
20+
- Add project_id to Relation and Observation for efficient project-scoped queries
21+
([`a920a9f`](https://github.com/basicmachines-co/basic-memory/commit/a920a9f))
22+
- Enables faster queries in multi-project environments
23+
- Improved database schema for cloud deployments
24+
25+
- Add bulk insert with ON CONFLICT handling for relations
26+
([`0818bda`](https://github.com/basicmachines-co/basic-memory/commit/0818bda))
27+
- Faster relation creation during sync operations
28+
- Handles duplicate relations gracefully
29+
30+
### Performance
31+
32+
- Lightweight permalink resolution to avoid eager loading
33+
([`6f99d2e`](https://github.com/basicmachines-co/basic-memory/commit/6f99d2e))
34+
- Reduces database queries during entity lookups
35+
- Improved response times for read operations
36+
37+
### Bug Fixes
38+
39+
- **#464**: Pin FastMCP to 2.12.3 to fix MCP tools visibility
40+
([`f227ef6`](https://github.com/basicmachines-co/basic-memory/commit/f227ef6))
41+
- Fixes issue where MCP tools were not visible to Claude
42+
- Reverts to last known working FastMCP version
43+
44+
- **#458**: Reduce watch service CPU usage by increasing reload interval
45+
([`897b1ed`](https://github.com/basicmachines-co/basic-memory/commit/897b1ed))
46+
- Lowers CPU usage during file watching
47+
- More efficient resource utilization
48+
49+
- **#456**: Await background sync task cancellation in lifespan shutdown
50+
([`efbc758`](https://github.com/basicmachines-co/basic-memory/commit/efbc758))
51+
- Prevents hanging on shutdown
52+
- Clean async task cleanup
53+
54+
- **#434**: Respect --project flag in background sync
55+
([`70bb10b`](https://github.com/basicmachines-co/basic-memory/commit/70bb10b))
56+
- Background sync now correctly uses specified project
57+
- Fixes multi-project sync issues
58+
59+
- **#446**: Fix observation parsing and permalink limits
60+
([`73d940e`](https://github.com/basicmachines-co/basic-memory/commit/73d940e))
61+
- Handles edge cases in observation content
62+
- Prevents permalink truncation issues
63+
64+
- **#424**: Handle periods in kebab_filenames mode
65+
([`b004565`](https://github.com/basicmachines-co/basic-memory/commit/b004565))
66+
- Fixes filename handling for files with multiple periods
67+
- Improved kebab-case conversion
68+
69+
- Fix Postgres/Neon connection settings and search index dedupe
70+
([`b5d4fb5`](https://github.com/basicmachines-co/basic-memory/commit/b5d4fb5))
71+
- Optimized connection pooling for Postgres
72+
- Prevents duplicate search index entries
73+
74+
### Testing & CI
75+
76+
- Replace py-pglite with testcontainers for Postgres testing
77+
([`c462faf`](https://github.com/basicmachines-co/basic-memory/commit/c462faf))
78+
- More reliable Postgres testing infrastructure
79+
- Uses Docker-based test containers
80+
81+
- Add PostgreSQL testing to GitHub Actions workflow
82+
([`66b91b2`](https://github.com/basicmachines-co/basic-memory/commit/66b91b2))
83+
- CI now tests both SQLite and PostgreSQL backends
84+
- Ensures cross-database compatibility
85+
86+
- **#416**: Add integration test for read_note with underscored folders
87+
([`0c12a39`](https://github.com/basicmachines-co/basic-memory/commit/0c12a39))
88+
- Verifies folder name handling edge cases
89+
90+
### Internal
91+
92+
- Cloud compatibility fixes and performance improvements (#454)
93+
- Remove logfire instrumentation for cleaner production deployments
94+
- Truncate content_stems to fix Postgres 8KB index row limit
95+
396
## v0.16.2 (2025-11-16)
497

598
### Bug Fixes

justfile

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,16 @@ test-int-sqlite:
5151
# Note: Uses timeout due to FastMCP Client + asyncpg cleanup hang (tests pass, process hangs on exit)
5252
# See: https://github.com/jlowin/fastmcp/issues/1311
5353
test-int-postgres:
54-
timeout --signal=KILL 600 bash -c 'BASIC_MEMORY_TEST_POSTGRES=1 uv run pytest -p pytest_mock -v --no-cov test-int' || test $? -eq 137
54+
#!/usr/bin/env bash
55+
set -euo pipefail
56+
# Use gtimeout (macOS/Homebrew) or timeout (Linux)
57+
TIMEOUT_CMD=$(command -v gtimeout || command -v timeout || echo "")
58+
if [[ -n "$TIMEOUT_CMD" ]]; then
59+
$TIMEOUT_CMD --signal=KILL 600 bash -c 'BASIC_MEMORY_TEST_POSTGRES=1 uv run pytest -p pytest_mock -v --no-cov test-int' || test $? -eq 137
60+
else
61+
echo "⚠️ No timeout command found, running without timeout..."
62+
BASIC_MEMORY_TEST_POSTGRES=1 uv run pytest -p pytest_mock -v --no-cov test-int
63+
fi
5564
5665
# Reset Postgres test database (drops and recreates schema)
5766
# Useful when Alembic migration state gets out of sync during development

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ dependencies = [
2929
"alembic>=1.14.1",
3030
"pillow>=11.1.0",
3131
"pybars3>=0.9.7",
32-
"fastmcp>=2.10.2",
32+
"fastmcp==2.12.3", # Pinned - 2.14.x breaks MCP tools visibility (issue #463)
3333
"pyjwt>=2.10.1",
3434
"python-dotenv>=1.1.0",
3535
"pytest-aio>=1.9.0",

src/basic_memory/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""basic-memory - Local-first knowledge management combining Zettelkasten with knowledge graphs"""
22

33
# Package version - updated by release automation
4-
__version__ = "0.16.2"
4+
__version__ = "0.16.3"
55

66
# API version for FastAPI - independent of package version
77
__api_version__ = "v0"

uv.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)