# 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 documents - `yams repair --optimize`: Vacuum and optimize database (reduced 314MB to 272MB) - `yams repair --all`: Run all repair operations - Dry-run support with `--dry-run` flag for safe preview - Force mode with `--force` to skip confirmations - **Delete Command Enhancements**: - Added `--directory` option 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 values - `config set` - Set configuration values (placeholder) - `config list` - List all configuration settings - `config validate` - Validate configuration file - `config 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_references` table where `ref_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 show` instead of `conan 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-` 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-mime` command 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-` format - Provides clear distinction between releases and development builds ### Technical Details - **Testing Interface**: MCP server now exposes test methods via conditional compilation - `#ifdef YAMS_TESTING` enables test-specific public methods - Replaces hacky `#define private public` approach - 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-only` flag 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/--context` for 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 `--color` option - Supports searching all indexed files or specific paths - **Knowledge Graph Integration in Get Command** - Added `--graph` flag to display related documents - Added `--depth` option (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-numbers` flag - 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_MODE` CMake option for legacy compiler compatibility - Support for GCC 9+, Clang 9+, older MSVC versions - Automatic fallbacks: `boost::span` for `std::span`, `fmt` for `std::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_only` parameter for LLM-friendly file path output (one per line) - Added line context parameters: `line_numbers`, `after_context`, `before_context`, `context` - Added `color` parameter for syntax highlighting control (always, never, auto) - **New grep_documents tool** with full CLI grep parity - Complete regex pattern matching across indexed document contents - Context options: `-A/--after`, `-B/--before`, `-C/--context` for surrounding lines - Pattern options: `ignore_case`, `word`, `invert` for flexible matching - Output modes: `line_numbers`, `with_filename`, `count`, `files_with_matches`, `files_without_match` - Color highlighting and `max_count` limit support - **Knowledge graph integration** in retrieve_document tool - Added `graph` parameter to include related documents in response - Added `depth` parameter (1-5) for graph traversal control - Added `include_content` parameter for full document content in graph responses - Finds documents in same directory, similar extensions, and metadata relationships - **New update_metadata tool** for document metadata management - Update metadata by document `hash` or `name` with automatic resolution - Support for multiple `key=value` metadata pairs in single operation - Verbose output option for detailed update information - **Enhanced list_documents tool** with comprehensive filtering and sorting - File type filtering: `type`, `mime`, `extension`, `binary`, `text` parameters - Time-based filtering: `created_after/before`, `modified_after/before`, `indexed_after/before` - Recent documents filter: `recent` parameter for N most recent files - Sorting control: `sort_by` (name, size, created, modified, indexed) and `sort_order` (asc, desc) - **Enhanced get_stats tool** with file type breakdown analysis - Added `file_types` parameter for detailed file type distribution - Shows file type counts, sizes, top extensions per type, and top MIME types ### 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()` and `isBinaryMimeType()` 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 `-h` flag 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 `--include` and `--exclude` options - 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=ON` to 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)