yams/docs/changelogs/v0.4.md
2025-09-11 11:28:42 -04:00

13 KiB

Changelog Archive: v0.4.x Series

[v0.4.8] - 2025-08-21

Added

  • Shell Wildcard Expansion Support
    • add command now accepts multiple file paths from shell expansion
    • Commands like yams add *.md now work correctly without "arguments were not expected" errors
    • Properly handles shell wildcard expansion (e.g., *.cpp, *.md, *.txt)
  • Dynamic Plugin Loading
    • Implemented PluginLoader class for runtime plugin loading
    • Added automatic plugin discovery from standard directories
    • Support for YAMS_PLUGIN_DIR environment variable
    • Onnx model provider now loads dynamically as a plugin
    • Daemon automatically loads plugins on startup
    • Created comprehensive test suite for plugin loader

Fixed

  • Tag Storage and Filtering
    • Fixed tag filtering in list command not working (--tags option)
    • Tags are now properly parsed as comma-separated values when stored
    • Fixed tag filtering logic to correctly match against stored comma-separated tag values
    • Multiple tags in filter work with OR logic (e.g., --tags "work,important" shows documents with either tag)
  • Daemon Path Resolution
    • Fixed "Added 0 documents" issue when using relative paths with daemon
    • CLI now converts relative paths to absolute paths before sending to daemon
    • Added proper error messages for invalid paths and non-recursive directory attempts
    • Daemon now returns helpful error messages instead of silently returning 0
  • Feature Parity Between CLI and Daemon
    • Added all missing fields to GrepRequest for complete CLI feature parity
    • Added all missing fields to SearchRequest for complete CLI feature parity
    • Updated serialization/deserialization for both request types
    • CLI commands now pass all parameters to daemon requests
    • Ensures consistent behavior whether using daemon or local execution
  • Wildcard Pattern Matching Bug
    • Fixed broken wildcard pattern matching in add and restore commands
    • Replaced regex-based implementation with efficient iterative algorithm
    • Patterns like *.sol, *.cpp, *.js now work correctly
    • Dots and other special characters in patterns are now handled properly
  • Linux Build Errors
    • Fixed missing #include <cstring> in compression_benchmark.cpp for std::strlen
    • Fixed C++ compiler flag -Wnon-virtual-dtor being incorrectly applied to C files
    • Used CMake generator expression $<$<COMPILE_LANGUAGE:CXX>:-Wnon-virtual-dtor> for language-specific flags
    • Fixed missing Rabin chunker header include in ingestion_benchmark.cpp
    • Fixed GCOptions struct initializer warnings by adding progressCallback field
    • Fixed query parser benchmark Result access patterns (use .value() instead of *result)
    • Fixed metadata benchmark Database constructor usage pattern
    • Fixed benchmark API calls to use storeBytes() instead of non-existent addContent()
  • Vector Index Loading
    • Fixed empty error message when vector index file doesn't exist
    • Added proper file existence check before attempting to load
    • Shows debug message instead of warning for missing index file on startup

[v0.4.7] - 2025-08-21

Fixed

  • Release Workflow Build Failures
    • Fixed std::from_chars compilation error on macOS hosted runners (Xcode 15.2)
    • Replaced std::from_chars with portable std::stoull in http_adapter_curl.cpp for parsing Content-Length headers
    • Fixed missing benchmark package in Linux self-hosted validation builds
    • Added proper Conan options (-o build_tests=True -o build_benchmarks=True) to validation build step
    • Ensures compatibility with older macOS standard libraries that lack full C++20 support

[v0.4.6] - 2025-08-21

Changed

  • MCP Server Tool Naming
    • Simplified tool names to match CLI commands for better consistency
    • Tools now use generic names: search, grep, download, get, list, store, add, delete, cat, update, stats

Fixed

  • Added proper lifetime management for io_uring operations to prevent accessing freed memory
  • Implemented operation tracking and cancellation to ensure clean shutdown
  • Storage Backend Improvements
    • Fixed FilesystemBackend sharding to use hash-based approach for consistent key distribution
    • Replaced key-prefix sharding with SHA256 hash-based sharding to avoid path conflicts
  • Chunking Deduplication
    • Fixed RabinChunker deduplication by resetting window state at chunk boundaries
    • Ensures identical data patterns produce identical chunks for proper deduplication
  • Code Improvements
    • Added automatic configuration correction for invalid chunking configs (when min > max)
    • Enhanced preprocessText() to trim leading/trailing whitespace
    • Improved paragraph boundary detection to point after "\n\n" markers
  • CI/CD
    • Fixed release workflow by changing preset from conan-validation to conan-release

Known Issues

  • Temporarily Disabled Tests (to be fixed in v0.5.0)
    • VectorIndexManager: removeVector, index persistence, HNSW operations not implemented
    • ModelManagement: Registry initialization issues in test environment
    • OnnxRuntime: Tests timeout waiting for non-existent model files
    • All disabled tests are marked with TODO(v0.5.0) comments for tracking

[v0.4.5] - 2025-08-21

Fixed

  • MCP Server
    • Added mutex protection to StdioTransport for thread-safe I/O operations
    • Fixed potential JSON response interleaving when multiple clients connect
    • Prevents "Expected ',' or ']' after array element" errors in concurrent scenarios
    • Fixed missing includes for file operations
  • Test Failures
    • Fixed FilesystemBackend::list() key reconstruction from sharded paths
    • Fixed ManifestManager statistics by moving static counters to member variables
    • Fixed file type detection consistency in CommandIntegrationTest
  • Detection Module
    • Ensured FileSignature creation uses consistent methods for isBinary and fileType
    • Fixed mismatch between FileSignature fields and classification methods

[v0.4.4] - 2025-08-21

CI version bump

[v0.4.3] - 2025-08-20

Fixed

  • Build System
    • Updated GTest from 1.14.0 to 1.15.0 for Conan 2.0 compatibility
  • Homebrew Formula
    • Fixed documentation URL in Homebrew formula to point to correct repository

Known Issues

  • Daemon may crash when processing certain stats requests (investigation ongoing)

[v0.4.2] - 2025-08-20

Added

  • Linux Package Support
    • Added AppImage support for universal Linux distribution
    • Integrated package building into GitHub release workflow

Fixed

  • Linux Build Compilation
    • Fixed C++ template name lookup issues in message_serializer.cpp for GCC 13
    • Added namespace qualification to 31 deserialize calls for proper template resolution
    • Fixed missing <utility> header in async_socket.h and connection_pool.h for std::exchange
    • Fixed missing <netinet/in.h> header in async_socket.cpp for IPPROTO_TCP constant
  • Position-Independent Code (-fPIC) Linker Errors
    • Fixed shared library linking errors by enabling PIC for all static libraries in dependency chain
    • Added POSITION_INDEPENDENT_CODE ON property to 11 static libraries
    • Resolved yams_onnx_plugin.so build failure on Linux x86_64
  • Missing Symbol Linker Errors
    • Fixed undefined reference to HybridFuzzySearch by linking yams_metadata to yams::search
    • Resolved circular dependency issues in library linking order
  • CLI Output Cleanup
    • Changed TextExtractorFactory initialization logging from info to debug level
    • Removed spurious log messages from normal CLI output
  • Homebrew Formula
    • Fixed documentation URL in Homebrew formula to point to correct repository

[v0.4.1] - 2025-08-20

Added

  • Smart Text Extraction by Default
    • CLI commands now extract text from PDFs, HTML, and other supported formats by default
    • cat command: Shows readable text instead of binary data for PDFs and HTML files
    • get command: Auto-detects output destination - extracts text for terminal, raw for files
    • --raw flag added to both commands for accessing original content when needed
    • --extract flag for get command to force text extraction even when piping

Changed

  • MCP Server Text Extraction
    • Now uses TextExtractorFactory for all supported file types (not just HTML)
    • PDF text extraction works correctly in MCP tools
    • Consistent text extraction behavior across CLI and MCP interfaces

Fixed

  • PDF Text Extraction in MCP
    • Fixed issue where PDF files returned empty content in MCP tools
    • MCP server now properly extracts text from PDFs using PDFium
    • Added missing HtmlTextExtractor to build system
  • Compilation Issues
    • Fixed missing HtmlTextExtractor in CMakeLists.txt
    • Fixed ErrorCode enum references in HTML text extractor
    • Fixed regex_replace lambda usage for C++ standard compliance
  • IPC Response variant construction
  • GitHub Actions release workflow: wrap embedded multi-line Python f-string code in bash here-docs and pass JSON file path via argv in the benchmarks block to avoid shell syntax errors on runners.

[v0.4.0] - 2025-08-20

Added

  • Universal Content Handler System
    • New IContentHandler interface supporting all file types with metadata extraction
    • ContentHandlerRegistry with thread-safe handler management
    • TextContentHandler adapter wrapping existing PlainTextExtractor
    • PdfContentHandler wrapper for existing PdfExtractor
    • BinaryContentHandler as universal fallback for unknown file types
    • Updated DocumentIndexer to use new ContentHandlerRegistry system
    • Maintained backward compatibility with legacy TextExtractor system
  • High-Performance Daemon Architecture
    • New yams-daemon background service for persistent resource management
    • Unix domain socket IPC with zero-copy transfers for large payloads
    • Automatic daemon lifecycle management with configurable policies
    • yams daemon start/stop/status/restart command suite
    • Auto-start on first command if daemon enabled in config
    • Shared EmbeddingGenerator across all operations eliminates model loading overhead
    • VectorIndexManager cached in daemon memory
  • Robust Downloader Module
    • New download module with libcurl adapter, repo-local staging
    • SHA-256 integrity verification and rate limiting
    • Atomic finalize into CAS (store-only by default)
    • New yams download command returning JSON {hash, stored_path, size_bytes}
    • Progress output (human/json) with no user-path writes unless export requested
  • Configuration v2 Architecture
    • New [daemon] section for service configuration
    • [daemon.models] for model lifecycle management
    • [daemon.lifecycle] for auto-start and shutdown policies
    • [daemon.ipc] for communication tuning
    • Backward compatible with direct mode (no daemon)
  • Enhanced Search Capabilities
    • --literal-text flag for search and grep commands
    • Treats query patterns as literal text instead of regex/operators
    • Works across all search engines (fuzzy, hybrid, metadata, vector)
    • Example: yams search "call(" --literal-text safely searches for parentheses

Changed

  • Performance Architecture
    • All CLI commands can leverage shared daemon resources
    • Shared result renderer system across CLI and daemon
    • Deferred initialization eliminates startup overhead
  • MCP Integration Improvements
    • Removed HTTP transport support, now stdio-only for cleaner local integration
    • Improved EmbeddingGenerator lifecycle with lazy loading
    • Better resource management with on-demand initialization

Fixed

  • Daemon Integration Issues
    • Eliminated "Failed to preload model" warnings
    • Fixed daemon configuration defaults for missing config sections
    • Daemon now gracefully handles missing [daemon] sections in config files
  • Configuration System
    • ConfigMigrator properly handles v1 to v2 migrations without breaking existing configs
  • MCP Schema Compliance
    • Fixed "Expected object, received null" error in tool definitions
    • Removed empty properties: {} fields from tools with no parameters
    • MCP server now loads correctly without schema validation errors
  • Search Engine Robustness
    • Special characters in search queries no longer break FTS5
    • Automatic sanitization prevents syntax errors from ()[]{}*" characters
    • All search paths (fuzzy, hybrid, metadata) handle special characters safely
    • Raw query strings flow through pipeline unchanged until FTS5 level
  • Critical Compilation Errors
    • Fixed ChunkingStrategy enum reference mismatch in document chunker (FixedSize → FIXED_SIZE)
    • Fixed constructor initialization order in VectorIndexOptimizer to match member declaration order
    • Fixed compression level configuration in RecoveryManager (now uses level 3 per performance benchmarks)
  • Code Quality Issues
    • Fixed hundreds of uninitialized variable errors identified by cppcheck analysis
    • Eliminated critical errors in recovery_manager.cpp, error_handler.cpp, and metadata_api.cpp
    • Added proper RAII initialization patterns across vector and compression components
  • Build System Stability
    • All modules now compile successfully without errors
    • Fixed warning configurations that were breaking dependency builds
    • Improved cross-platform compilation compatibility