Changelog Archive: v0.2.x Series¶
[v0.2.9] - 2025-08-14¶
Enhanced Deduplication Reporting - New stats –dedup command for block-level analysis - Shows deduplication ratio, space savings, most duplicated blocks - Validated 32% deduplication on real codebases CI version bump - Fixed CMake export error with spdlog dependency - Resolved CI failures on macOS x64 and Linux x86
[v0.2.8] - 2025-08-14¶
Added¶
- Repair Command: New comprehensive storage maintenance command
yams repair --orphans: Clean orphaned metadata entries (removed 28,101 orphaned entries in testing)yams repair --chunks: Remove orphaned chunk files (freed 38MB from 23,988 orphaned chunks)yams repair --mime: Fix missing MIME types in documentsyams repair --optimize: Vacuum and optimize database (reduced 314MB to 272MB)yams repair --all: Run all repair operations- Dry-run support with
--dry-runflag for safe preview -
Force mode with
--forceto skip confirmations -
Delete Command Enhancements:
- Added
--directoryoption for recursive directory deletion - Improved metadata cleanup when deleting documents
- Added progress indicator for large deletion operations
-
Properly removes both manifest and chunk files
-
Config Command Enhancements:
- Added compression tuning support via configuration
config get- Retrieve configuration valuesconfig set- Set configuration values (placeholder)config list- List all configuration settingsconfig validate- Validate configuration fileconfig export- Export configuration in TOML or JSON format
Fixed¶
- Stats Command:
- Fixed object file counting (was showing 0, now correctly counts chunks)
- Fixed unique document calculation to match total when no duplicates exist
- Added orphaned chunk detection and reporting
- Fixed deduplication stats to only show when duplicates exist
- Properly filters orphaned metadata entries from counts (28,101 orphaned found)
- Added chunk health reporting with progress indicator
-
Fixed verbose mode not being properly tracked
-
Storage Path Issues:
- Fixed duplicate “storage” in path construction bug throughout codebase
- Fixed content_store_impl.cpp manifest and object paths
-
Fixed same issue in delete_command.cpp and repair_command.cpp
-
Chunk Management Crisis:
- Delete command wasn’t properly removing chunks when ref_count reached 0
- Implemented proper chunk cleanup when documents are deleted
- Added reference counting verification in repair command
-
Fixed hash format mismatch between database (64 chars) and filesystem (62 chars + 2 char directory)
-
Database Issues:
- Fixed view vs table issue with
unreferenced_blocks(it’s a VIEW not a table) - Properly clean
block_referencestable whereref_count = 0 - Added database optimization to reclaim space from deleted entries
- Database reduced from 314MB to 272MB after VACUUM
Changed¶
- Stats Output: Improved formatting and information display
- Shows storage overhead calculation
- Displays warnings for orphaned chunks and metadata
- Only shows deduplication info when relevant
- Added database inconsistency warnings
- Better progress indicators for long operations
[v0.2.7] - 2025-08-14¶
Fixed¶
- CI version bump
- Conan flag fix in CI
[v0.2.6] - 2025-08-14¶
Fixed¶
- CI version bump
- Conan flag fix in CI
[v0.2.5] - 2025-08-14¶
Fixed¶
- CI version bump
- Updated git pages site
- Build system improvements
[v0.2.4]¶
Fixed¶
- MCP Server Signal Handling
- Server now responds properly to Ctrl+C (SIGINT) signals
- Replaced std::signal with sigaction to allow interrupting blocking I/O
- Added non-blocking stdin polling with 100ms timeout in StdioTransport
- Server checks external shutdown flag in main loop
- Handles EINTR errors and clears stdin error state properly
-
Added clear startup messages and usage instructions to stderr
-
Dockerfile
-
Dockerfile should build correctly
-
Cross-Compilation Support
- Added explicit Conan profiles for x86_64 and ARM64 architectures
- CI/CD workflows now properly handle cross-compilation with dual profiles
- Fixed zstd assembly symbol errors when cross-compiling on Apple Silicon
- Added zstd/*:build_programs=False option to avoid build issues
- Workflows detect native vs cross-compilation scenarios automatically
Added¶
- MCP Server Documentation
- Comprehensive MCP usage guide at
docs/user_guide/mcp.md(I personally use the CLI)
Technical Details¶
- Signal Handling: Uses sigaction with sa_flags=0 to interrupt blocking system calls
- Non-blocking I/O: Implements poll() on Unix/macOS for stdin availability checking
- Cross-Compilation: Uses Conan’s dual profile system (-pr:b for build, -pr:h for host)
[v0.2.3] - 2025-08-14¶
Fixed¶
- CI version bump
- README updates (removed install instructions with curl, download binary)
- Build system improvements for docker files and release
[v0.2.2] - 2025-08-14¶
Fixed¶
- Docker Build C++20 Configuration
- Added explicit C++20 standard setting in Conan profile
- Fixed “Current cppstd (gnu17) is lower than required C++ standard (20)” error
- Ensures Docker builds use correct C++ standard matching project requirements
- Release Notes Formatting
- Fixed Conan profile output contaminating GitHub release descriptions
- Redirected debug output to stderr to keep release notes clean
- Release pages now display properly formatted markdown
- macOS Cross-Compilation
- Fixed Boost build failures when cross-compiling x86_64 on ARM64 macOS
- Disabled Boost.Locale and Boost.Stacktrace.Backtrace components that fail in cross-compilation
- Enables successful builds on Apple Silicon machines with Rosetta 2
Changed¶
- Docker Build Process
- Switched from CMake presets to direct CMake commands with Conan toolchain
- Added ninja-build to Docker dependencies for faster builds
- More robust build process that doesn’t rely on dynamically generated presets
[v0.2.1] - 2025-08-13¶
Fixed¶
- Build System Standardization: All workflows now use Conan exclusively
- Fixed CMake export errors for spdlog and other dependencies
- Release workflow migrated from plain CMake to Conan-based builds
- Ensures consistent dependency management across CI and release
- Resolves “target requires target that is not in any export set” errors
- Docker Build Issues
- Fixed Conan 2.0 command syntax (
conan profile showinstead ofconan profile show default) - Fixed CMake preset issues by using direct CMake commands with Conan toolchain
- Added ninja-build to Docker dependencies for faster builds
- Improved version handling: uses git tags for releases,
dev-<sha>for development builds - Fixed undefined variable warnings in Dockerfile labels
- Added proper build argument handling for YAMS_VERSION and GITHUB_SHA
- Release Page Formatting
- Fixed Conan profile output contaminating release notes
- Redirected debug output to stderr to keep release notes clean
Changed¶
- MIME Type Detection Default Behavior
- MIME types are now detected automatically during add operations
repair-mimecommand remains available for fixing existing documents- Detection uses FileTypeDetector with both signature and extension methods
- Docker Versioning Strategy
- Tagged releases use semantic version from git tag
- Development builds use
dev-<short-sha>format - Provides clear distinction between releases and development builds
Technical Details¶
- Testing Interface: MCP server now exposes test methods via conditional compilation
#ifdef YAMS_TESTINGenables test-specific public methods- Replaces hacky
#define private publicapproach - Maintains encapsulation while allowing proper unit testing
- Build Workflows: Unified Conan usage with proper profiles and caching
- Conan profile detection with C++20 enforcement
- Package caching for faster builds
- Consistent preset usage (
conan-release) across all platforms
[v0.2.0] - 2025-08-13¶
Added¶
- LLM Ergonomics Enhancements
- Added
--paths-onlyflag to search command for LLM-friendly output (one file path per line) - Enhanced codebase indexing workflows for AI agent integration
- Improved documentation in PROMPT-eng.md with LLM-optimized YAMS patterns
- Support for using YAMS as “memory layer for low context” in AI workflows
- Magic number patterns for
#include,import,function,class, shebang lines, etc. - Automatic programming language detection during recursive directory operations
- Grep Command: Full-featured regex search within indexed file contents
- Standard grep options:
-A/--after,-B/--before,-C/--contextfor context lines - Pattern matching options:
-i(case-insensitive),-w(whole word),-v(invert) - Output options:
-n(line numbers),-H(with filename),-c(count),-l(files with matches) - Color highlighting support with
--coloroption - Supports searching all indexed files or specific paths
- Knowledge Graph Integration in Get Command
- Added
--graphflag to display related documents - Added
--depthoption (1-5) to control graph traversal depth - Shows documents in same directory and with similar extensions
- Displays document relationships and metadata
- Line-Level Search with Context
- Enhanced search command with
-n/--line-numbersflag - Added context options:
-A/--after,-B/--before,-C/--context - Highlights matching lines with color
- Shows surrounding context lines for better understanding
- C++17 Compatibility Mode for broader system support
- New
YAMS_CXX17_MODECMake option for legacy compiler compatibility - Support for GCC 9+, Clang 9+, older MSVC versions
- Automatic fallbacks:
boost::spanforstd::span,fmtforstd::format - Compatible with Ubuntu 20.04 LTS, CentOS 8, older macOS versions
- Comprehensive compatibility documentation and build matrix
- Runtime feature detection with graceful degradation
- Enhanced Build System Flexibility
- Dual-mode compilation: full C++20 for modern systems, C++17 for legacy
- Automatic dependency management with Conan and FetchContent fallbacks
- Compiler-specific optimizations and warning configurations
- Performance-oriented feature selection based on available capabilities
- MCP Server Feature Parity Enhancements (~85% CLI-MCP parity achieved)
- Enhanced search_documents tool with LLM ergonomics optimizations
- Added
paths_onlyparameter for LLM-friendly file path output (one per line) - Added line context parameters:
line_numbers,after_context,before_context,context - Added
colorparameter for syntax highlighting control (always, never, auto)
- Added
- New grep_documents tool with full CLI grep parity
- Complete regex pattern matching across indexed document contents
- Context options:
-A/--after,-B/--before,-C/--contextfor surrounding lines - Pattern options:
ignore_case,word,invertfor flexible matching - Output modes:
line_numbers,with_filename,count,files_with_matches,files_without_match - Color highlighting and
max_countlimit support
- Knowledge graph integration in retrieve_document tool
- Added
graphparameter to include related documents in response - Added
depthparameter (1-5) for graph traversal control - Added
include_contentparameter for full document content in graph responses - Finds documents in same directory, similar extensions, and metadata relationships
- Added
- New update_metadata tool for document metadata management
- Update metadata by document
hashornamewith automatic resolution - Support for multiple
key=valuemetadata pairs in single operation - Verbose output option for detailed update information
- Update metadata by document
- Enhanced list_documents tool with comprehensive filtering and sorting
- File type filtering:
type,mime,extension,binary,textparameters - Time-based filtering:
created_after/before,modified_after/before,indexed_after/before - Recent documents filter:
recentparameter for N most recent files - Sorting control:
sort_by(name, size, created, modified, indexed) andsort_order(asc, desc)
- File type filtering:
- Enhanced get_stats tool with file type breakdown analysis
- Added
file_typesparameter for detailed file type distribution - Shows file type counts, sizes, top extensions per type, and top MIME types
- Added
Enhanced¶
- MCP Tool Documentation comprehensively updated with new schemas and examples
- Added complete JSON schemas for all enhanced tools with parameter descriptions
- Added practical usage examples for each tool capability
- Updated integration documentation for Claude Desktop configuration
- YAMS-first workflow guidance: default to indexing and searching code via YAMS pre-watch; avoid external grep/find/rg for repository queries.
- CLI docs enhanced with pre-watch indexing workflow and YAMS-only search/grep examples.
Technical Details¶
- File type classification system with MIME type analysis using
getFileTypeFromMime()andisBinaryMimeType()helper methods - Knowledge graph traversal leverages document relationships through metadata repository queries
- LLM ergonomics optimizations reduce context usage while maintaining full functionality
- Tool schema definitions follow JSON-RPC standards for seamless MCP integration
Fixed¶
- Indexing Tests: Updated for new API with proper factory function declarations
- Namespace Issues: Fixed forward declarations in document_indexer.h
- CLI11 Conflicts: Resolved
-hflag conflict in grep command by using only--no-filename - Test Suite Stabilization
- Fixed SEGV crash in vector_database_tests (DocumentChunkerTest bounds checking)
- Fixed AddressSanitizer container overflow in detection_tests
- Added thread safety to FixtureManager test infrastructure with proper mutex protection
- Added thread safety to FileTypeDetector for libmagic operations (not thread-safe by default)
- Fixed compilation errors in multiple test files (header includes, error codes, GMock dependencies)
- Fixed EXPECT_NO_THROW macro usage in detection tests
- Recursive Add Pattern Parsing
- Fixed CLI11 comma-separated pattern handling in
--includeand--excludeoptions - Now properly splits patterns like
"*.cpp,*.h,*.md"into individual patterns - Added proper whitespace trimming and empty pattern filtering
- CI/CD Pipeline Improvements
- Fixed Conan options quoting for proper test builds (
"yams/*:build_tests=True") - Added explicit
YAMS_BUILD_TESTS=ONto CMake configuration - Added individual test target builds before running ctest
- Implemented graceful test failure handling (CI continues, reports detailed results)
- Added ASAN relaxation options for CI environment compatibility
- Fixed YAML syntax error in release.yml (Python script indentation)