7.4 KiB
7.4 KiB
Changelog
All notable changes to YAMS (Yet Another Memory System) will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Archived Changelogs
- v0.7.x archive: docs/changelogs/v0.7.md
- v0.6.x archive: docs/changelogs/v0.6.md
- v0.5.x archive: docs/changelogs/v0.5.md
- v0.4.x archive: docs/changelogs/v0.4.md
- v0.3.x archive: docs/changelogs/v0.3.md
- v0.2.x archive: docs/changelogs/v0.2.md
- v0.1.x archive: docs/changelogs/v0.1.md
[v0.8.0] - Unreleased
Added
- ExternalPluginHost: New plugin host for Python/process-based plugins (RFC-EPH-001)
- Implements
IPluginHostinterface for external plugins running as separate processes - JSON-RPC 2.0 communication over stdio using existing
PluginProcessandJsonRpcClient - Supported plugin types: Python (
.py), Node.js (.js), any executable with JSON-RPC support - Process lifecycle management: spawn, monitor, health checks, graceful shutdown
- Automatic crash recovery with configurable restart policy (max retries, backoff)
- Trust-based security model with persistent trust file
- RPC gateway for calling arbitrary plugin methods (
callRpc) - Plugin statistics tracking (uptime, restart count, health status)
- State change callbacks for monitoring plugin lifecycle events
- Location:
include/yams/daemon/resource/external_plugin_host.h,src/daemon/resource/external_plugin_host.cpp
- Implements
- Auto-init mode: New
yams init --autoflag for containerized/headless environments- Enables vector database with default model (
all-MiniLM-L6-v2) - Enables plugins directory setup
- Generates authentication keys
- Skips S3 configuration (uses local storage)
- Non-interactive: no prompts, uses sensible defaults
- Enables vector database with default model (
- New embedding model option: Added
multi-qa-MiniLM-L6-cos-v1as second model choice- Trained on 215M question-answer pairs for semantic search optimization
- Same dimensions (384) as default model for compatibility
- Replaces
all-mpnet-base-v2(768 dim) in model selection
- Git-based version detection: Build system now auto-detects version from git tags
- Uses most recent semver tag (
v*) as effective version - Falls back to project version only if no tags exist
- Command-line override (
-Dyams-version=X.Y.Z) takes highest priority
- Uses most recent semver tag (
- Commit hash in version output:
yams --versionnow shows short commit hash- Format:
0.7.9 (commit: c16939f) built:2025-11-29T17:30:15Z - Helps identify exact build for bug reports and debugging
- Format:
- Init command tests: New test suite for init command model download functionality
- Tests for valid HuggingFace URLs, model dimensions, naming conventions
- CLI flag acceptance tests (
--auto,--non-interactive,--force)
- Content-type-aware search profiles: New
CorpusProfileenum and auto-detectionCODE: Boosts symbol/path search for source code repositories (60%+ code files)PROSE: Boosts FTS5/vector search for text-heavy corpora (60%+ docs)DOCS: Balanced weights for mixed code/documentationMIXED: Default balanced weights for heterogeneous corporaSearchEngineConfig::detectProfile(): Auto-detects from file extension distributionSearchEngineConfig::forProfile(): Returns preset weights for a profile
Changed
- Embedding model list: Both recommended models now have 384 dimensions
all-MiniLM-L6-v2: Lightweight general-purpose semantic search (default)multi-qa-MiniLM-L6-cos-v1: Optimized for question-answer semantic search
- ServiceManager Decomposition (PBI-088): Extracted focused components from monolithic ServiceManager
- New
ConfigResolver: Static config/env resolution utilities (248 lines) - New
VectorSystemManager: Vector DB and index lifecycle (397 lines) - New
DatabaseManager: Metadata DB, connection pool, KG store lifecycle (254 lines) - New
PluginManager: Plugin host, loader, and interface adoption (515 lines) - ServiceManager accessors now delegate to extracted managers
- New
- Configurable Vector DB Capacity: Vector index
max_elementsnow configurable- Environment variable:
YAMS_VECTOR_MAX_ELEMENTS - Config file:
[vector_database] max_elements - Default: 100,000 (range: 1,000 - 10,000,000)
- Environment variable:
- FTS5 index hygiene (migration v18): Removed unused
content_typecolumn from FTS5 indexcontent_typewas indexed but never queried via FTS MATCH- Content type filtering uses JOIN on
documents.mime_typeinstead - Reduces FTS5 index size and improves indexing performance
- Automatic migration rebuilds index on first database open
Fixed
- Model download mapping: Added
multi-qa-MiniLM-L6-cos-v1to HuggingFace repo mapping- Ensures model download works for new model option
- Version display: Fixed
yams --versionshowing fallback values instead of actual version- Added generated include directory to CLI build to resolve
version_generated.h - Version now correctly shows git tag and commit hash
- Added generated include directory to CLI build to resolve
CLI Improvements
- PowerShell completion: Added
yams completion powershellfor PowerShell auto-complete- Uses
Register-ArgumentCompleterwith dynamic subcommand and option completion - Supports bash, zsh, fish, and PowerShell shells
- Uses
- Consistent
--jsonoutput: Extended JSON output support across commandsyams doctor --json: Machine-readable health check resultsyams delete --json: Deletion results as JSON arrayyams grep --json: Match results with file, line, matchType, confidence
- Actionable error hints: Centralized error hint system (
error_hints.h)- Pattern-based hints for FTS5, embedding, daemon, database errors
- Error code fallback hints for generic error types
- Format:
💡 Hint:with suggested📋 Try:command
- Daemon error messages: Enhanced daemon start/stop failure messages
- Clear hints for common issues (daemon already running, permission denied)
- Suggested recovery commands (
yams daemon stop --force,pkill yams-daemon)
Fixed
-
Plugin interface parsing: Fixed
parseInterfacesFromManifestto handle object-format interfaces- Plugins using
[{"id": "model_provider_v1", "version": 2}]format now parse correctly - Previously only simple string arrays
["interface_name"]were supported - Affects ONNX plugin and other plugins with versioned interface declarations
- Location:
src/daemon/resource/abi_plugin_loader.cpp
- Plugins using
-
Plugin host sharing: Fixed model provider adoption failure
ServiceManager::autoloadPluginsNow()loaded plugins intoabiHost_PluginManager::adoptModelProvider()was querying its own emptypluginHost_- Added
sharedPluginHostoption toPluginManager::Dependenciesfor host sharing PluginManagernow uses shared host from ServiceManager when provided- Location:
include/yams/daemon/components/PluginManager.h,src/daemon/components/PluginManager.cpp
-
VectorIndexManager initialization: Fixed search engine build failure "VectorIndexManager not provided"
VectorSystemManager::initializeOnce()only initialized vector database, not index manager- Added call to
initializeIndexManager()after successful database init - Added call to
loadPersistedIndex()to restore saved index on startup - Location:
src/daemon/components/ServiceManager.cpp