Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 19:10
· 97 commits to main since this release
v0.2.0
f02a970

Security

  • Bump lopdf to 0.42 (RUSTSEC-2026-0187 nesting-depth DoS). Already on the 0.42 API in ragfs-extract.
  • Bump pyo3 and pyo3-async-runtimes to 0.29 (RUSTSEC-2026-0176 / RUSTSEC-2026-0177).
  • Replace unmaintained daemonize with nix (fork + setsid, stdio redirect, pid file) for ragfs mount without --foreground. rustix 1.x does not expose fork outside its unstable runtime feature.

Changed

  • Background ragfs mount still writes a PID file to $XDG_RUNTIME_DIR/ragfs/<hash>.pid (fallback ~/.cache/ragfs/run/) and logs to ~/.cache/ragfs/logs/<hash>.log. Unmount remains fusermount -u <mountpoint>.
  • Documented actual code chunking (pattern matching) and removed unused tree-sitter dependency
  • FUSE .help now covers .ops/, .safety/, .semantic/ and product limits
  • FUSE .config includes api_version and states it is mount wiring, not user TOML

Added

  • Directory-scoped vector search: persist relative dir_path on chunks and filter with ragfs query --scope <dir> (exact directory or subdirectory; IVF-PQ ANN is unchanged)
  • Lance chunks schema v2 migration: existing indexes gain dir_path / dir_depth / path_components on open (sidecar ragfs-schema.json); --force is not a schema upgrade
  • FUSE mount2 runs on a dedicated OS thread so callbacks can block_on without panicking
  • Best-effort IVF-PQ ANN index on vector when a Lance table has at least 256 rows (cosine-trained; incrementally refreshed after large appends; L2/Dot and failed builds stay exact)
  • Office text extraction for .docx, .xlsx, .pptx, and .odt (ZIP+XML; not binary .doc)
  • Python bindings: New ragfs-python crate with PyO3 bindings
    • RAGFSIndex class for indexing and querying
    • RAGFSStore for direct vector store access
    • Async support via pyo3-async-runtimes
    • Framework adapters for LangChain, LlamaIndex, Haystack
    • Build with maturin build
  • FUSE capabilities exposed to Python (Propose-Review-Apply pattern for AI agents):
    • RagfsSafetyManager: Soft delete, trash, history, undo operations
    • RagfsSemanticManager: AI-powered file organization, similar/duplicate detection
    • RagfsOpsManager: Structured file operations with JSON feedback
    • OrganizeStrategy, OrganizeRequest, SemanticPlan, PlanAction types
  • LlamaIndex FUSE-aware integration:
    • RagfsSafeVectorStore: VectorStore with safety layer integration
    • RagfsOrganizer: Semantic organizer with Propose-Review-Apply workflow
  • Haystack FUSE-aware integration:
    • RagfsSafeDocumentStore: DocumentStore with soft delete and undo
    • RagfsOrganizer: Haystack component for AI-powered file organization
  • MCP Server with complete FUSE capabilities (18 tools):
    • Safety Layer: ragfs_delete_to_trash, ragfs_list_trash, ragfs_restore_from_trash, ragfs_get_history, ragfs_undo
    • Semantic Operations: ragfs_find_duplicates, ragfs_analyze_cleanup
    • Approval Workflow: ragfs_propose_organization, ragfs_propose_cleanup, ragfs_list_pending_plans, ragfs_get_plan, ragfs_approve_plan, ragfs_reject_plan
    • Batch Operations: ragfs_batch_operations
  • CI/CD Python support:
    • Python tests for all integrations (3.10-3.13)
    • Pre-release validation workflow
    • Python release workflow for PyPI publishing
  • Security hardening:
    • SECURITY.md with vulnerability reporting guidelines
    • deny.toml for cargo-deny license and advisory checks
  • VectorStore iteration: New methods for bulk operations
    • get_all_chunks(): Returns all chunks in the store
    • get_all_files(): Returns all file records in the store
  • BlipCaptioner: BLIP-based image captioning using Candle ML
    • Auto-download from HuggingFace Hub (Salesforce/blip-image-captioning-base)
    • Image preprocessing with CLIP normalization
    • Autoregressive caption generation
    • Requires vision feature flag
  • Semantic organization: AI-powered file management features
    • find_duplicates(): Detect similar files using embedding cosine similarity
    • suggest_organization(): AI-powered folder structure suggestions
    • Configurable similarity thresholds
  • Daemonization: ragfs mount now properly forks to background when run without --foreground
    • PID file stored in $XDG_RUNTIME_DIR/ragfs/ or ~/.cache/ragfs/run/
    • Logs written to ~/.cache/ragfs/logs/
    • Graceful unmount via fusermount -u <mountpoint>
  • TOML configuration: Load settings from ~/.config/ragfs/config.toml
    • ragfs config show - Display current configuration
    • ragfs config init - Generate sample config file
    • ragfs config path - Show config file location
    • --config global flag to specify custom config path
  • PDF image extraction: Extract embedded images from PDFs using lopdf
    • Supports JPEG (DCTDecode), PNG (FlateDecode), JPEG2000 (JPXDecode)
    • CMYK to RGB conversion
    • Memory limits: 100 images max, 50MB total, 50px minimum dimension
  • Virtual .ragfs/.help file: Usage documentation accessible via FUSE mount
  • NoopEmbedder: Testing embedder available without Candle dependency
  • MemoryStore: In-memory vector store available without LanceDB dependency
  • Atomic batch rollback: Batch operations with atomic: true now automatically roll back on failure
    • All successful operations are undone if any operation fails
    • Rollback details included in batch result (rollback_performed, rollback_details)
  • Mkdir and Symlink operations: New operation types in OpsManager
    • mkdir: Create directories via .ops/ interface
    • symlink: Create symbolic links (Unix-only)
  • Semantic plan persistence: Plans are saved to disk and survive restarts
    • Plans stored in ~/.local/share/ragfs/plans/{index_hash}/
    • Automatic cleanup of expired plans (configurable retention)
  • Semantic plan execution: Approved plans are now executed automatically
    • Actions run sequentially via OpsManager
    • Each action generates an undo_id for manual reversal if needed
    • Plan status reflects execution result (Completed/Failed)

Changed

  • BREAKING: Feature flags restructured for optional ML backends
    • candle feature (default): Enables CandleEmbedder in ragfs-embed
    • lancedb feature (default): Enables LanceStore in ragfs-store
    • vision feature: Enables BlipCaptioner for image captioning
    • full feature: Enables all optional features
    • Build profiles: cargo build (default), --features full, --no-default-features (minimal)