Skip to content

Releases: Chaerulcp/shared-agent-memory-mcp

Release v1.4.0 - Intelligent Memory Enhancement

Choose a tag to compare

@Chaerulcp Chaerulcp released this 02 Sep 17:09

🎉 RELEASE v1.4.0 - Intelligent Memory Enhancement

📅 Release Date: September 2, 2026
⚡ Version: 1.4.0 (Minor Release)
✅ Status: Production Ready
🚀 Impact: Revolutionary Performance Improvements


✨ What's New in v1.4.0

This release introduces revolutionary performance optimizations and intelligent memory management capabilities that transform your agent memory system from seconds to milliseconds.

🎯 Key Highlights

  • 40× faster CRUD operations
  • 80% reduction in search latency
  • Intelligent tiered storage with automatic optimization
  • Hybrid search combining keyword + semantic understanding
  • Smart ranking with multi-factor relevance scoring
  • Production validated with 46/46 tests passing

🚀 Performance Revolution

Before vs After Comparison

Operation v1.3.x v1.4.0 Improvement
Add memory ~120ms ~3ms 40× faster
Delete memory ~95ms ~2ms 47× faster
Update memory ~110ms ~4ms 27× faster
Search after changes ~450ms ~45ms 10× faster 🚀

Scaling Characteristics

Dataset Size v1.3.x v1.4.0 Improvement
1,000 memories 45ms 12ms 73% faster
10,000 memories 450ms 90ms 80% faster
100,000 memories ~4.5s ~500ms 89% faster

🎯 Five Major New Features

1. Tiered Memory Pool System 🗄️

Three-tier smart storage architecture:

HOT TIER (Top 100 accessed)

{
  maxSize: 100,      // Top 100 most-accessed memories
  ttlMs: 300000       // 5-minute TTL for freshness
}
  • Access time: <1ms (sub-millisecond!)
  • Strategy: LRU eviction policy
  • Auto-promotion: Based on access count ≥3
  • Benefit: Instant responses for frequently-used data

WARM TIER (Active memories)

{
  indexSize: 10000    // Default warm tier capacity
}
  • Access time: ~10ms
  • Storage: Efficient disk-based indexing
  • Features: Real-time access tracking
  • I/O reduction: 60-80% less disk operations

COLD TIER (Archived/deactivated)

{
  compressionLevel: 6   // Standard zlib compression
}
  • Access time: ~50ms
  • Storage: Compressed archival format
  • Separation: Isolated from active scans
  • Space saving: 35-50% disk usage reduction

Automatic Lifecycle Management

Hot (frequent) → Warm (active) → Cold (archived)
     ↓              ↓               ↓
Auto-demotion ← Auto-promote ← Access pattern tracking

Total Benefits:

  • ✅ 60-80% disk I/O reduction
  • ✅ Sub-ms responses for hot data
  • ✅ Transparent to application code
  • ✅ Configurable tier parameters
  • ✅ Self-tuning based on usage

2. Incremental Index System ⚡

Replace slow full-rebuild approach with Write-Ahead Logging (WAL):

Technical Implementation

class IncrementalIndex {
  // Batch commits every 100 operations
  private flushThreshold = 100;
  
  // Fast O(log n) operations using B-tree
  async add(memory): Promise<void>;    // Insert without rebuild
  async delete(id): Promise<void>;     // Remove instantly  
  async update(id, updates): void;     // Patch efficiently
  
  // FTS5 virtual tables for instant search
  search(query): Array<Result>;        // Keyword matching
}

Architecture Highlights

  • Write-ahead logging: Batch all operations before committing
  • B-tree structure: Optimal lookup performance
  • SQLite WAL mode: Concurrent access safety
  • FTS5 integration: Instant keyword matching
  • Transaction support: Atomic operations guarantee consistency

Performance Breakdown

Full Rebuild Approach (v1.3.x):
  Operations: O(n) per operation
  Time complexity: Quadratic at scale
  Impact: Slow, blocks during heavy use

Incremental Approach (v1.4.0):
  Operations: O(log n) per operation  
  Time complexity: Logarithmic
  Impact: Consistent performance regardless of size

Real-world Impact:

  • Add memory: 120ms → 3ms (40×)
  • Delete memory: 95ms → 2ms (47×)
  • Update memory: 110ms → 4ms (27×)
  • No more full rebuild delays!

3. Hybrid Search Router 🧠

Intelligent combination of keyword + semantic capabilities:

Smart Query Routing Algorithm

User Query Analysis:
├── Word count < 4? 
│   └── Route: Keyword-only (fast, precise)
│
├── Word count ≥ 4?
│   ├── Check query type:
│   │   ├── Question/conversational?
│   │   │   └── Route: Hybrid (semantic aware)
│   │   └── Statement/topic?
│   │       └── Route: Hybrid (better recall)
│
└── Timeout protection:
    └── If vector >2s → Fallback to keyword

Route Decision Matrix

Query Type Words Example Route Reason
Short terms <4 "bug fix" Keyword Fast precision
Long queries ≥4 "fix login issue" Hybrid Better recall
Questions Any "how to fix?" Hybrid Semantic understanding
Complex topics >10 Multiple concepts Hybrid + timeout Quality/speed balance

Merge Strategy: Reciprocal Rank Fusion

// Combine keyword results [k1, k2, k3...]
// With vector results [v1, v2, v3...]
// Using RRF with parameter k=60

const combinedScore = 
  sum(1 / (keywordRank + 60)) + 
  sum(1 / (vectorRank + 60));

// Returns balanced results from both sources

Benefits:

  • ✅ Best of both worlds: speed + accuracy
  • ✅ Adaptive routing based on query complexity
  • ✅ Built-in timeout protection
  • ✅ Improved recall rates
  • ✅ Maintained precision for simple queries

4. Query Ranking Optimizer 📊

Multi-factor relevance scoring system:

Complete Scoring Formula

Final Score = 
  Base Relevance × 0.50     (Original match quality)      [50%]
+ Recency Bonus × 0.15       (Recent content boost)        [15%]
+ Project Match × 0.15       (Context-aware filtering)     [15%]
+ Frequency Boost × 0.10     (Frequently accessed)         [10%]
+ Freshness Penalty × (-0.10) (Old content deprioritize)   [10%]

Factor Details

1. Recency Bonus (15% weight)

Age < 7 days:    Full boost = +30%
Age 7-30 days:   Linear decay from +30% to 0%
Age > 30 days:   No bonus

Why: Recent decisions are more relevant to current work

2. Project Match (15% weight)

Exact project name:           +25%
Tag contains project name:    +12.5%
No project match:             0%

Why: Context-aware results within current project scope

3. Frequency Boost (10% weight)

≥10 accesses:                 Max boost = +15%
3-9 accesses:                 Linear scaling (5-14%)
<3 accesses:                  No boost

Why: Frequently-accessed information is valuable

4. Freshness Penalty (-10% weight)

≤90 days old:                 No penalty
>90 days old:                 Starts applying -5%
>180 days old:                Cap at -15%

Why: Very old decisions may be outdated

Example Ranking Calculation

Memory A (recent, high frequency):
  Base: 0.9 × 0.50 = 0.45
  Recency: +0.30 × 0.15 = +0.045
  Frequency: +0.15 × 0.10 = +0.015
  Final: 0.51

Memory B (old, low frequency):
  Base: 0.8 × 0.50 = 0.40
  Freshness: -0.15 × 0.10 = -0.015
  Final: 0.385
  
Result: A ranks higher despite slightly lower base match!

5. Vector Search Foundation 🔮

Optional semantic search capability ready for upgrade:

Current State (Mock Implementation)

  • Hash-based embeddings: Deterministic, consistent vectors
  • Cosine similarity: Real mathematical calculation
  • Content-aware: Vectors reflect actual text meaning
  • Architecture-ready: Prepared for ONNX integration

Mock Implementation Details

// Generate deterministic embedding based on content hash
const embedding = generateEmbedding(content); 
// Returns 384-dimensional array with cosine similarity

// Calculate similarity between query and stored memories
const score = cosineSimilarity(queryEmbedding, memoryEmbedding);
// Returns value in range [-1, 1]

Production Upgrade Path

To enable real semantic embeddings:

  1. Install dependencies:

    npm install @xenova/transformers
    npm install onnxruntime-node
  2. Download model:

    # Download sentence-transformers/all-MiniLM-L6-v2
    # Convert to ONNX format
  3. Enable in configuration:

    {
      "vectorSearch": {
        "enabled": true,
        "modelPath": "./models/all-MiniLM-L6-v2.onnx",
        "dimension": 384
      }
    }
  4. Usage remains same:

    const results = await vectorIndex.semanticSearch(
      'how do I fix authentication issues?',
      10
    );

Why Mock First?

  • ✅ Test architecture without ML overhead
  • ✅ Validate cosine similarity works correctly
  • ✅ Confirm performance characteristics
  • ✅ Zero dependency on external models initially
  • ✅ Easy rollback if needed

🔧 Technical Deep Dive

Performance Architecture Diagram

┌─────────────────────────────────────────────────────┐
│                    User Query                        │
└────────────────────┬────────────────────────────────┘
                     │
                     ▼
        ┌────────────────────────┐
        │  Hybrid Search Router  │ ◄── Auto-route by query type
        │  - Keyword detection   │
        │  - Vector fallback     │
        └───────────┬────────────┘
                    │
        ┌───────────┴───────────┐
        │                       │
        ▼                       ▼
┌─────────────────┐    ┌──────────────────┐
│ Keyword Search  │    │ Vector Similarity│
│ (FTS5 Tables)   │    │ (Cosine Distance)│
└────────┬────────┘    └────────┬─────────┘
         │                      │
         └──────────┬───────────┘
                    │
                    ▼
        ┌────────────────────────┐
        │  RRF Merger            │
        │  (k=60 para...
Read more

v1.3.1

Choose a tag to compare

@Chaerulcp Chaerulcp released this 02 Sep 00:37

Changelog

All notable changes to this project are documented here.

The project follows Semantic Versioning. The v1.1.0 release includes the post-baseline reliability, retrieval, setup, and project-context improvements.

Unreleased

No unreleased changes.

[1.3.1] - 2026-09-02

Patch release fixing production archive and conflict lifecycle consistency.

Fixed

  • Archived Notion pages are exposed as archived even when the Status property is stale.
  • Dashed and compact Notion IDs resolve to the same Obsidian mirror file.
  • Archived and hard-deleted records remove matching manifest entries.
  • Sync reconciles active mirror files and stale conflict copies whose source records are no longer active.
  • Updating a memory now uses conflict protection instead of overwriting manual Obsidian edits directly.

Verification

  • 35 automated tests passed.
  • Direct production archive, hard-delete fallback, conflict, repeated-sync, keep-local, accept-source, backup, and force tests passed.
  • Production sync is idempotent with zero conflicts.
  • Production cache clear and rebuild passed.

[1.3.0] - 2026-09-02

Minor release adding synchronization diagnostics and recovery guidance.

Added

  • doctor --sync health checks for Notion, vault, manifest, conflicts, Git, watcher, and cache.
  • Machine-testable doctor health summary with a non-zero exit code when unhealthy.
  • Recovery runbook for stale locks, invalid manifests, conflicts, and cache rebuilds.

Verification

  • 30 automated tests passed.
  • Production doctor --sync reported Overall: HEALTHY.
  • Production sync completed for 49 memories with zero conflicts.
  • Manifest contained zero absolute paths.
  • npm audit --omit=dev reported 0 vulnerabilities.

[1.2.3] - 2026-09-02

Patch release fixing archived-memory mirror cleanup after a direct production lifecycle test.

Fixed

  • Archived memories are no longer rediscovered as active Obsidian files during synchronization.
  • Archiving a memory now removes its entry from .shared-agent-memory-sync.json.
  • Added regression coverage for the full local archive lifecycle.

Verification

  • 28 automated tests passed.
  • Direct production add → read-back → update → archive → sync test passed after the fix.
  • Production sync completed for 47 memories with zero conflicts.
  • conflicts --json returned an empty list.
  • npm audit --omit=dev reported 0 vulnerabilities.
  • git diff --check passed.

[1.2.2] - 2026-09-02

Patch release fixing a Windows manifest portability regression.

Fixed

  • Synchronization now consistently stores relative paths in .shared-agent-memory-sync.json, including watcher-generated updates.
  • Windows path separators and case differences are normalized safely.
  • Added regression coverage for baseline and sync manifest paths.

Verification

  • 27 automated tests passed.
  • Real baseline test with a temporary Git vault passed.
  • Production sync completed for 46 files with zero conflicts.
  • Production manifest contains zero absolute paths.
  • npm audit --omit=dev reported 0 vulnerabilities.
  • Secret scan and git diff --check passed.

[1.2.1] - 2026-09-02

Patch release restoring relative-path portability in synchronization manifests.

Fixed

  • Sync now consistently stores vault-relative paths in .shared-agent-memory-sync.json, including watcher-generated updates on Windows.
  • Added regression coverage preventing absolute local paths from entering the manifest.

Verification

  • 27 automated tests passed.
  • npm audit --omit=dev reported 0 vulnerabilities.
  • Secret scan and git diff --check passed.
  • Production dry-run and conflict listing remained safe.

[1.2.0] - 2026-09-02

Stable feature release for operationally safe Obsidian synchronization.

Added

  • Timestamped Obsidian backups before replacing changed files during sync.
  • conflicts command to list unresolved conflict copies.
  • resolve command with explicit --accept-notion and --keep-obsidian actions.
  • Path validation that restricts conflict resolution to vault-relative memory files.

Safety

  • Accepting the Notion version preserves the existing Obsidian file in backups/<timestamp>/ before replacement.
  • Keeping the Obsidian version removes only the conflict copy.
  • Notion remains the source of truth; no automatic Obsidian-to-Notion import was added.

Verification

  • 26 automated tests passed.
  • Backup and both conflict resolution paths passed real filesystem integration tests.
  • Unsafe path traversal was rejected.
  • Production dry-run detected 46 memories without changing files, Git, or cache.
  • Production conflict listing returned zero unresolved conflicts.
  • npm audit --omit=dev reported 0 vulnerabilities.
  • Credential-pattern scan and git diff --check passed.
  • GitHub Actions CI passed.

1.1.2 - 2026-09-01

Patch release that fixes false Obsidian conflicts for newly created memories.

Fixed

  • Existing Obsidian files without a manifest entry are now compared with the expected Notion content before being classified as conflicts.
  • Newly synchronized files that already match Notion are adopted into the manifest without creating unnecessary .conflict.md files.
  • Repeated watcher cycles no longer report false conflicts for identical files.

Verification

  • 23 automated tests passed.
  • Real production sync completed with 45 files and 0 conflicts.
  • Repeated sync remained stable with 45 files and 0 conflicts.
  • npm audit --omit=dev reported 0 vulnerabilities.
  • Credential-pattern scan passed.
  • GitHub Actions CI passed for the fix commit.

Compatibility

  • v1.1.1 remains unchanged and its tag continues to point to the original patch release.
  • Notion remains the source of truth.
  • Existing .shared-agent-memory-sync.json manifests remain compatible.

1.1.1 - 2026-09-01

Patch release that adds safe Obsidian conflict handling and production baseline support without changing the v1.1.0 tag.

Added

  • Obsidian conflict protection using a local SHA-256 synchronization manifest.
  • sync --init-baseline to record existing mirror files without calling Notion or modifying Markdown.
  • Conflict copies for manually edited mirror files instead of silent overwrites.
  • sync --force for deliberate replacement after review.
  • Stable .conflict.md conflict filenames so repeated watcher cycles do not create unbounded duplicates.
  • CLI startup now loads the project .env before resolving the Obsidian vault path.

Changed

  • Sync reports conflicts with exit code 2; the original manually edited file is preserved.
  • Baseline manifest entries use relative paths rather than personal absolute filesystem paths.
  • Existing vaults without a baseline are handled conservatively and require explicit --force to overwrite existing files.

Compatibility

  • Notion remains the source of truth; the manifest and Obsidian mirror are derived data.
  • Existing Notion databases and clients remain supported.
  • v1.1.0 remains unchanged and its tag continues to point to the original release commit.

Verification

  • 23 automated tests passed.
  • npm audit --omit=dev reported 0 vulnerabilities.
  • Credential-pattern scan passed.
  • Production vault baseline created for 43 memory files after a verified backup.
  • Obsidian vault working tree remained clean after the baseline commit.

[1.1.0] - 2026-09-01

Post-baseline stability and retrieval release.

Added

  • Safe setup wizard with read-only --dry-run mode.
  • Duplicate detection before memory_add, with an explicit duplicate override.
  • Optional project and repository scope for memories and searches.
  • Automatic project context detection from AGENT_PROJECT or Git metadata.
  • Optional provenance and freshness metadata.
  • Local SQLite FTS5 cache backed by better-sqlite3.
  • Hybrid search with a conservative fallback to live Notion search.
  • Automatic cache refresh after a normal Notion synchronization.
  • Cache invalidation after successful memory mutations.
  • Expanded automated tests and GitHub Actions verification.

Changed

  • Node.js requirement is now 22 or newer for the FTS5 dependency.
  • Documentation now describes installation, configuration, MCP tools, CLI usage, synchronization, cache behavior, security, and troubleshooting in one consistent language.

Compatibility

  • Existing Notion databases without optional Project, provenance, or freshness properties remain usable.
  • Notion remains the source of truth; the SQLite cache and Obsidian mirror are derived data.
  • Automatic search scoping is opt-in to preserve global-search behavior for existing clients.

1.0.0 - 2026-09-01

Initial stable baseline release. Tag v1.0.0 points to commit cf85836.

Added

  • Shared Notion-backed memory MCP for AI coding agents.
  • MCP tools for search, recent memories, read, create, update, and archive/delete.
  • CLI fallback for memory operations.
  • Optional Obsidian Markdown mirror with Git auto-sync.
  • Agent attribution, categories, tags, importance, and archive status.
  • Validation for memory titles and content.
  • MIT license and public contribution/security documentation.

v1.3.0 — Synchronization Health Diagnostics

Choose a tag to compare

@Chaerulcp Chaerulcp released this 01 Sep 23:57

Added

  • doctor --sync health checks for Notion, vault, manifest, conflicts, Git, watcher, and cache.
  • Recovery runbook for common synchronization failures.
  • Testable doctor health summary with non-zero exit code when unhealthy.

Verification

  • 30 tests passed.
  • Production doctor reported Overall: HEALTHY.
  • Production sync verified with zero conflicts.
  • npm audit reported 0 vulnerabilities.

v1.2.3 — Archived Mirror Cleanup Fix

Choose a tag to compare

@Chaerulcp Chaerulcp released this 01 Sep 23:45

Fixed

  • Archived memories are excluded from active Obsidian discovery.
  • Archive operations remove the memory from the sync manifest.
  • Added regression coverage for the archive lifecycle.

Verification

  • 28 tests passed.
  • Production sync: 47 memories, 0 conflicts.
  • npm audit: 0 vulnerabilities.

v1.2.2 — Windows Manifest Portability Fix

Choose a tag to compare

@Chaerulcp Chaerulcp released this 01 Sep 17:21

Fixed

  • Ensure synchronization manifests always store vault-relative paths, including watcher-generated updates on Windows.
  • Normalize Windows path separators and case differences safely.
  • Add regression coverage for baseline and sync manifest paths.

Verification

  • 27 automated tests passed.
  • Temporary Git-vault baseline integration test passed.
  • Production sync completed for 46 files with zero conflicts.
  • Production manifest contains zero absolute paths.
  • npm audit reported 0 vulnerabilities.
  • Secret scan and git diff check passed.

Previous releases remain immutable.

v1.2.1 — Relative Manifest Path Fix

Choose a tag to compare

@Chaerulcp Chaerulcp released this 01 Sep 17:17

Fixed

  • Ensure synchronization manifests always store vault-relative paths on Windows.
  • Prevent watcher-generated absolute local paths from entering .shared-agent-memory-sync.json.
  • Add regression coverage for manifest path portability.

Verification

  • 27 automated tests passed.
  • npm audit reported 0 vulnerabilities.
  • Secret scan and git diff check passed.
  • Production dry-run and conflict listing remained safe.

v1.2.0 remains immutable.

v1.2.0 — Safe Obsidian Operations

Choose a tag to compare

@Chaerulcp Chaerulcp released this 01 Sep 17:14

Highlights

  • Added timestamped backups before replacing changed Obsidian files.
  • Added conflicts to list unresolved conflict copies.
  • Added explicit conflict resolution with --accept-notion and --keep-obsidian.
  • Added vault-relative path validation to prevent traversal outside the vault.

Safety

  • Notion remains the source of truth.
  • Accepting the Notion version preserves the previous Obsidian file in a timestamped backup.
  • Keeping the Obsidian version removes only the conflict copy.

Verification

  • 26 automated tests passed.
  • Real filesystem integration tests passed for backup and both resolution paths.
  • Unsafe path traversal was rejected.
  • Production dry-run detected 46 memories without modifying files, Git, or cache.
  • Production conflict listing returned zero unresolved conflicts.
  • npm audit reported 0 vulnerabilities.
  • Secret scan and git diff check passed.
  • GitHub Actions CI passed.

v1.1.2 — False Conflict Fix

Choose a tag to compare

@Chaerulcp Chaerulcp released this 01 Sep 16:15

Changelog

All notable changes to this project are documented here.

The project follows Semantic Versioning. The v1.1.0 release includes the post-baseline reliability, retrieval, setup, and project-context improvements.

Unreleased

No unreleased changes.

1.1.2 - 2026-09-01

Patch release that fixes false Obsidian conflicts for newly created memories.

Fixed

  • Existing Obsidian files without a manifest entry are now compared with the expected Notion content before being classified as conflicts.
  • Newly synchronized files that already match Notion are adopted into the manifest without creating unnecessary .conflict.md files.
  • Repeated watcher cycles no longer report false conflicts for identical files.

Verification

  • 23 automated tests passed.
  • Real production sync completed with 45 files and 0 conflicts.
  • Repeated sync remained stable with 45 files and 0 conflicts.
  • npm audit --omit=dev reported 0 vulnerabilities.
  • Credential-pattern scan passed.
  • GitHub Actions CI passed for the fix commit.

Compatibility

  • v1.1.1 remains unchanged and its tag continues to point to the original patch release.
  • Notion remains the source of truth.
  • Existing .shared-agent-memory-sync.json manifests remain compatible.

1.1.1 - 2026-09-01

Patch release that adds safe Obsidian conflict handling and production baseline support without changing the v1.1.0 tag.

Added

  • Obsidian conflict protection using a local SHA-256 synchronization manifest.
  • sync --init-baseline to record existing mirror files without calling Notion or modifying Markdown.
  • Conflict copies for manually edited mirror files instead of silent overwrites.
  • sync --force for deliberate replacement after review.
  • Stable .conflict.md conflict filenames so repeated watcher cycles do not create unbounded duplicates.
  • CLI startup now loads the project .env before resolving the Obsidian vault path.

Changed

  • Sync reports conflicts with exit code 2; the original manually edited file is preserved.
  • Baseline manifest entries use relative paths rather than personal absolute filesystem paths.
  • Existing vaults without a baseline are handled conservatively and require explicit --force to overwrite existing files.

Compatibility

  • Notion remains the source of truth; the manifest and Obsidian mirror are derived data.
  • Existing Notion databases and clients remain supported.
  • v1.1.0 remains unchanged and its tag continues to point to the original release commit.

Verification

  • 23 automated tests passed.
  • npm audit --omit=dev reported 0 vulnerabilities.
  • Credential-pattern scan passed.
  • Production vault baseline created for 43 memory files after a verified backup.
  • Obsidian vault working tree remained clean after the baseline commit.

[1.1.0] - 2026-09-01

Post-baseline stability and retrieval release.

Added

  • Safe setup wizard with read-only --dry-run mode.
  • Duplicate detection before memory_add, with an explicit duplicate override.
  • Optional project and repository scope for memories and searches.
  • Automatic project context detection from AGENT_PROJECT or Git metadata.
  • Optional provenance and freshness metadata.
  • Local SQLite FTS5 cache backed by better-sqlite3.
  • Hybrid search with a conservative fallback to live Notion search.
  • Automatic cache refresh after a normal Notion synchronization.
  • Cache invalidation after successful memory mutations.
  • Expanded automated tests and GitHub Actions verification.

Changed

  • Node.js requirement is now 22 or newer for the FTS5 dependency.
  • Documentation now describes installation, configuration, MCP tools, CLI usage, synchronization, cache behavior, security, and troubleshooting in one consistent language.

Compatibility

  • Existing Notion databases without optional Project, provenance, or freshness properties remain usable.
  • Notion remains the source of truth; the SQLite cache and Obsidian mirror are derived data.
  • Automatic search scoping is opt-in to preserve global-search behavior for existing clients.

1.0.0 - 2026-09-01

Initial stable baseline release. Tag v1.0.0 points to commit cf85836.

Added

  • Shared Notion-backed memory MCP for AI coding agents.
  • MCP tools for search, recent memories, read, create, update, and archive/delete.
  • CLI fallback for memory operations.
  • Optional Obsidian Markdown mirror with Git auto-sync.
  • Agent attribution, categories, tags, importance, and archive status.
  • Validation for memory titles and content.
  • MIT license and public contribution/security documentation.

v1.1.1 — Safe Obsidian Sync Baseline

Choose a tag to compare

@Chaerulcp Chaerulcp released this 01 Sep 15:56

Changelog

All notable changes to this project are documented here.

The project follows Semantic Versioning. The v1.1.0 release includes the post-baseline reliability, retrieval, setup, and project-context improvements.

Unreleased

No unreleased changes.

1.1.1 - 2026-09-01

Patch release that adds safe Obsidian conflict handling and production baseline support without changing the v1.1.0 tag.

Added

  • Obsidian conflict protection using a local SHA-256 synchronization manifest.
  • sync --init-baseline to record existing mirror files without calling Notion or modifying Markdown.
  • Conflict copies for manually edited mirror files instead of silent overwrites.
  • sync --force for deliberate replacement after review.
  • Stable .conflict.md conflict filenames so repeated watcher cycles do not create unbounded duplicates.
  • CLI startup now loads the project .env before resolving the Obsidian vault path.

Changed

  • Sync reports conflicts with exit code 2; the original manually edited file is preserved.
  • Baseline manifest entries use relative paths rather than personal absolute filesystem paths.
  • Existing vaults without a baseline are handled conservatively and require explicit --force to overwrite existing files.

Compatibility

  • Notion remains the source of truth; the manifest and Obsidian mirror are derived data.
  • Existing Notion databases and clients remain supported.
  • v1.1.0 remains unchanged and its tag continues to point to the original release commit.

Verification

  • 23 automated tests passed.
  • npm audit --omit=dev reported 0 vulnerabilities.
  • Credential-pattern scan passed.
  • Production vault baseline created for 43 memory files after a verified backup.
  • Obsidian vault working tree remained clean after the baseline commit.

[1.1.0] - 2026-09-01

Post-baseline stability and retrieval release.

Added

  • Safe setup wizard with read-only --dry-run mode.
  • Duplicate detection before memory_add, with an explicit duplicate override.
  • Optional project and repository scope for memories and searches.
  • Automatic project context detection from AGENT_PROJECT or Git metadata.
  • Optional provenance and freshness metadata.
  • Local SQLite FTS5 cache backed by better-sqlite3.
  • Hybrid search with a conservative fallback to live Notion search.
  • Automatic cache refresh after a normal Notion synchronization.
  • Cache invalidation after successful memory mutations.
  • Expanded automated tests and GitHub Actions verification.

Changed

  • Node.js requirement is now 22 or newer for the FTS5 dependency.
  • Documentation now describes installation, configuration, MCP tools, CLI usage, synchronization, cache behavior, security, and troubleshooting in one consistent language.

Compatibility

  • Existing Notion databases without optional Project, provenance, or freshness properties remain usable.
  • Notion remains the source of truth; the SQLite cache and Obsidian mirror are derived data.
  • Automatic search scoping is opt-in to preserve global-search behavior for existing clients.

1.0.0 - 2026-09-01

Initial stable baseline release. Tag v1.0.0 points to commit cf85836.

Added

  • Shared Notion-backed memory MCP for AI coding agents.
  • MCP tools for search, recent memories, read, create, update, and archive/delete.
  • CLI fallback for memory operations.
  • Optional Obsidian Markdown mirror with Git auto-sync.
  • Agent attribution, categories, tags, importance, and archive status.
  • Validation for memory titles and content.
  • MIT license and public contribution/security documentation.

v1.1.0 — Stability, Retrieval, and Project Context

Choose a tag to compare

@Chaerulcp Chaerulcp released this 01 Sep 14:59

v1.1.0 — Stability, Retrieval, and Project Context

This release expands the stable v1.0.0 baseline with safer synchronization, stronger memory quality controls, faster local retrieval, and automatic project context detection.

Included

Reliability and setup

  • Safe setup wizard with diagnostics for project files, build output, environment configuration, Notion, Obsidian, Git, and the configured remote.
  • Read-only setup --dry-run mode that does not modify Notion, Obsidian, Git, or the local cache.
  • Notion-to-Obsidian polling watcher with a single-instance lock to prevent duplicate watchers.
  • Automatic Obsidian Git commit and push after successful synchronization.
  • GitHub Actions CI covering build, tests, dependency audit, and credential-pattern scanning.

Memory quality and project scope

  • Duplicate detection before memory_add using normalized content and similarity checks.
  • Explicit duplicate override for intentional repeated memories.
  • Optional project metadata for separating memories between repositories or products.
  • Project filtering for memory searches while preserving global search behavior by default.

Automatic project context

  • memory_add can infer the project when project is omitted.
  • Detection order is explicit project, AGENT_PROJECT, the Git origin remote, and finally the Git root directory name.
  • GitHub remotes are normalized to an owner/repository identifier.
  • Automatic search scoping is opt-in through currentProject: true in MCP or --current-project in the CLI.
  • Explicit project values always take precedence.
  • The resolver reads local Git metadata only and does not execute remote URLs or inspect repository contents.

Provenance and freshness

  • Optional provenance fields: source, confidence, verification date, freshness period, and superseded memory ID.
  • Freshness states help distinguish fresh, stale, and unknown information.
  • Existing databases without these optional properties remain supported.

Local retrieval cache

  • Disposable SQLite FTS5 cache backed by better-sqlite3.
  • Cache commands: cache rebuild, cache search, cache status, and cache clear.
  • Hybrid search uses the cache only for supported active text queries with a fresh snapshot.
  • Unsupported filters, stale cache data, and incomplete cache payloads fall back to live Notion search.
  • Successful memory mutations invalidate the cache.
  • A normal Notion synchronization refreshes the cache; dry-run synchronization does not write to it.
  • Notion remains the source of truth. The SQLite cache and Obsidian mirror are derived data.

Changed

  • Node.js 22 or newer is now required because of the SQLite FTS5 dependency.
  • Public documentation was rewritten in consistent English and now covers installation, configuration, MCP tools, CLI usage, synchronization, caching, project scope, security, and troubleshooting.
  • The release includes expanded automated coverage for cache behavior, duplicate detection, provenance, project context, synchronization, and watcher safety.

Compatibility

  • Existing Notion databases without Project, provenance, or freshness properties remain usable.
  • Existing clients that do not provide a project continue to use global search behavior.
  • project is optional and backward-compatible.
  • Obsidian remains an optional one-way mirror; edits in Obsidian are not imported back into Notion automatically.
  • The SQLite cache is disposable and can be rebuilt or cleared without replacing the Notion database.

Verification

  • Node.js build completed successfully.
  • 19 automated tests passed.
  • npm audit --omit=dev reported 0 vulnerabilities.
  • Tracked-file credential-pattern scan passed.
  • GitHub Actions CI passed for the release commit.

Security

Do not commit .env, place credentials in memory content, or pass tokens as command-line arguments. Configure Notion credentials locally and keep the file excluded by .gitignore.

Scope

This release is the first stable version after the v1.0.0 baseline. The v1.0.0 tag remains unchanged and continues to identify the original baseline release.