Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# CHANGELOG

## v0.18.3 (2026-02-12)

### Bug Fixes

- Use global `--header` flag for Tigris consistency on all rclone transactions
([`7fcf587`](https://github.com/basicmachines-co/basic-memory/commit/7fcf587))
- `--header-download` / `--header-upload` only apply to GET/PUT requests, missing S3
ListObjectsV2 calls that bisync issues first. Non-US users saw stale edge-cached metadata.
- `--header` applies to ALL HTTP transactions (list, download, upload), fixing bisync for
users outside the Tigris origin region.

## v0.18.2 (2026-02-11)

### Bug Fixes
Expand Down
4 changes: 2 additions & 2 deletions server.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
"url": "https://github.com/basicmachines-co/basic-memory.git",
"source": "github"
},
"version": "0.18.2",
"version": "0.18.3",
"packages": [
{
"registryType": "pypi",
"identifier": "basic-memory",
"version": "0.18.2",
"version": "0.18.3",
"runtimeHint": "uvx",
"runtimeArguments": [
{"type": "positional", "value": "basic-memory"},
Expand Down
2 changes: 1 addition & 1 deletion src/basic_memory/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""basic-memory - Local-first knowledge management combining Zettelkasten with knowledge graphs"""

# Package version - updated by release automation
__version__ = "0.18.2"
__version__ = "0.18.3"

# API version for FastAPI - independent of package version
__api_version__ = "v0"
8 changes: 4 additions & 4 deletions src/basic_memory/cli/commands/cloud/rclone_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@
MIN_RCLONE_VERSION_EMPTY_DIRS = (1, 64, 0)

# Tigris edge caching returns stale data for users outside the origin region (iad).
# These headers bypass edge cache and force reads/writes against the origin.
# --header is rclone's global flag that applies to ALL HTTP transactions (list, download,
# upload). This is critical because bisync starts with S3 ListObjectsV2, which is neither
# a download nor upload — so --header-download/--header-upload would miss list requests.
# See: https://www.tigrisdata.com/docs/objects/consistency/
TIGRIS_CONSISTENCY_HEADERS = [
"--header-download",
"X-Tigris-Consistent: true",
"--header-upload",
"--header",
"X-Tigris-Consistent: true",
]

Expand Down
17 changes: 8 additions & 9 deletions tests/test_rclone_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,14 @@ def __call__(self, cmd: list[str], **kwargs):


def _assert_has_consistency_headers(cmd: list[str]) -> None:
"""Assert the rclone command includes Tigris consistency headers."""
assert "--header-download" in cmd
assert "X-Tigris-Consistent: true" in cmd
assert "--header-upload" in cmd
# Verify upload header value follows --header-upload
upload_idx = cmd.index("--header-upload")
assert cmd[upload_idx + 1] == "X-Tigris-Consistent: true"
download_idx = cmd.index("--header-download")
assert cmd[download_idx + 1] == "X-Tigris-Consistent: true"
"""Assert the rclone command includes Tigris consistency headers.

Uses --header (global flag) so the header applies to ALL HTTP transactions,
including S3 list requests that bisync issues before any download/upload.
"""
assert "--header" in cmd
header_idx = cmd.index("--header")
assert cmd[header_idx + 1] == "X-Tigris-Consistent: true"


def _write_filter_file(tmp_path: Path) -> Path:
Expand Down
Loading