Files
claudetools/CHANGELOG.md
Mike Swanson 07816eae46 docs: Add comprehensive project documentation from claude-projects scan
Added:
- PROJECTS_INDEX.md - Master catalog of 7 active projects
- GURURMM_API_ACCESS.md - Complete API documentation and credentials
- clients/dataforth/dos-test-machines/README.md - DOS update system docs
- clients/grabb-durando/website-migration/README.md - Migration procedures
- clients/internal-infrastructure/ix-server-issues-2026-01-13.md - Server issues
- projects/msp-tools/guru-connect/README.md - Remote desktop architecture
- projects/msp-tools/toolkit/README.md - MSP PowerShell tools
- projects/internal/acg-website-2025/README.md - Website rebuild docs
- test_gururmm_api.py - GuruRMM API testing script

Modified:
- credentials.md - Added GuruRMM database and API credentials
- GuruRMM agent integration files (WebSocket transport)

Total: 38,000+ words of comprehensive project documentation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-22 09:58:32 -07:00

340 lines
15 KiB
Markdown

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.19.0] - 2026-01-22
### Added
- **Watcher Performance Optimization**: Skip unchanged files on subsequent launches (#62)
- New `last_index_time` field in configuration tracks last indexing timestamp
- Files with ModTime before `last_index_time` are skipped, avoiding unnecessary embeddings
- Config write throttling (30s) prevents file system overload during active development
- Significantly faster subsequent `grepai watch` launches (~1ms vs ~100ms for unchanged codebases)
- Fully backward compatible: old configs work normally, optimization kicks in after first watch
### Changed
- `Indexer` now accepts `lastIndexTime` parameter for ModTime-based file skipping
- `runInitialScan` returns `IndexStats` to enable conditional config updates
## [0.18.0] - 2026-01-21
### Added
- **Qdrant Vector Store Backend**: New storage backend using Qdrant vector database (#57)
- Support for local Qdrant (Docker) and Qdrant Cloud
- gRPC connection with TLS support
- Automatic collection creation and management
- Docker Compose profile for easy local setup: `docker compose --profile=qdrant up`
- Configuration options: endpoint, port, TLS, API key, collection name
### Fixed
- **Qdrant Backend Improvements**: Various fixes and improvements
- Fixed default port display in `grepai init` prompt (6333 → 6334 for gRPC)
- Added UTF-8 sanitization to prevent indexing errors on files with invalid characters
- Added `qdrant_storage` to default ignore patterns
- Updated CLI help to include qdrant in backend options
- Fixed typo in compose.yaml ("Optionnal" → "Optional")
## [0.17.0] - 2026-01-21
### Added
- **Cursor Rules Support**: `grepai agent-setup` now supports `.cursor/rules` configuration file (#59)
- `.cursor/rules` (Cursor's current standard) takes priority over deprecated `.cursorrules`
- Backwards compatibility maintained for existing `.cursorrules` files
- Both files are configured if present (idempotence handled by marker detection)
## [0.16.1] - 2026-01-18
### Fixed
- **CLI Error Display**: Commands now properly display error messages on stderr (#52, #53)
- Previously errors were silenced by Cobra's `SilenceErrors: true` setting
- Permission errors in `update` command now show user-friendly message with sudo suggestion
## [0.16.0] - 2026-01-16
### Added
- **Background Daemon Mode**: New flags for `grepai watch` to run as a background process
- `grepai watch --background`: Start watcher as a detached daemon
- `grepai watch --status`: Check if background watcher is running (shows PID and log location)
- `grepai watch --stop`: Gracefully stop the background watcher (with 30s timeout)
- `--log-dir`: Override default log directory
- OS-specific default log directories:
- Linux: `~/.local/state/grepai/logs/` (or `$XDG_STATE_HOME`)
- macOS: `~/Library/Logs/grepai/`
- Windows: `%LOCALAPPDATA%\grepai\logs\`
- PID file management with file locking to prevent race conditions
- Automatic stale PID detection and cleanup
- Ready signaling: parent waits for child to fully initialize before returning
- Graceful shutdown with index persistence on SIGINT/SIGTERM
- **New `daemon` package**: Cross-platform process lifecycle management
- Platform-specific implementations for Unix and Windows
- File locking (flock on Unix, LockFileEx on Windows)
- Process detection and signal handling
## [0.15.1] - 2026-01-16
### Added
- **External Gitignore Support**: New `external_gitignore` configuration option to specify a path to an external gitignore file (e.g., `~/.config/git/ignore`) (#50)
- Supports `~` expansion for home directory paths
- External patterns are respected during indexing alongside project-level `.gitignore` files
- If the file doesn't exist, a warning is logged but indexing continues normally
## [0.15.0] - 2026-01-14
### Added
- **C# Language Support for Trace**: Symbol extraction and call graph analysis now supports C# (#48)
- Classes (with inheritance, generics, sealed/abstract/static/partial modifiers)
- Structs (including readonly and ref structs)
- Records (record, record class, record struct)
- Interfaces (including generic interfaces)
- Methods (with all modifiers: public, private, protected, internal, static, virtual, override, abstract, async, etc.)
- Constructors
- Expression-bodied members
- C# keywords added to filter out false positives
- `.cs` added to default traced languages
- Tree-sitter support for precise symbol extraction
## [0.14.0] - 2026-01-12
### Added
- **Java Language Support for Trace**: Symbol extraction and call graph analysis now supports Java (#32)
- Classes (with extends/implements, generics, sealed/non-sealed)
- Inner and nested classes
- Interfaces (including generic interfaces)
- Annotations (`@interface`)
- Enums (top-level and inner, with methods)
- Records (Java 14+)
- Methods with all modifiers (public, protected, private, static, final, abstract, synchronized, native, strictfp)
- Constructors
- Default interface methods (Java 8+)
- Abstract methods
- Java keywords added to filter out false positives
- `.java` added to default traced languages
## [0.13.0] - 2026-01-12
### Added
- **Self-Update Command**: New `grepai update` command for automatic updates (#42)
- `grepai update --check`: Check for available updates without installing
- `grepai update`: Download and install the latest version from GitHub releases
- `grepai update --force`: Force update even if already on latest version
- Automatic platform detection (linux/darwin/windows, amd64/arm64)
- SHA256 checksum verification before installation
- Progress bar during download
- Graceful error handling for network issues, rate limits, and permission errors
### Changed
- **Makefile**: Uses Docker for consistent linting with golangci-lint v1.64.2
## [0.12.0] - 2026-01-12
### Fixed
- **Custom OpenAI Endpoint**: Fixed `embedder.endpoint` config not being used for OpenAI provider (#35)
- Enables Azure OpenAI and Microsoft Foundry support
- Custom endpoints now correctly passed to the OpenAI embedder
### Added
- **Configurable Vector Dimensions**: New `embedder.dimensions` config option (#35)
- Allows specifying vector dimensions per embedding model
- PostgreSQL vector column automatically resizes to match configured dimensions
- Backward compatible: old configs without `dimensions` use sensible defaults per provider
## [0.11.0] - 2026-01-12
### Added
- **Nested `.gitignore` Support**: Each subdirectory can now have its own `.gitignore` file (#40)
- Patterns in nested `.gitignore` files apply only to their directory and subdirectories
- Matches git's native behavior for hierarchical ignore rules
- Example: `src/.gitignore` with `generated/` only ignores `src/generated/`, not `docs/generated/`
### Fixed
- **Directory Pattern Matching**: Patterns with trailing slash (e.g., `build/`) now correctly match the directory itself
- Previously only matched contents inside the directory
- Now triggers `filepath.SkipDir` for better performance on large repositories
- Significantly improves indexing speed when ignoring `node_modules/`, `vendor/`, etc.
## [0.10.0] - 2026-01-11
### Added
- **Compact JSON Output**: New `--compact`/`-c` flag for `grepai search` command (#33)
- Outputs minimal JSON without `content` field for ~80% token savings
- Requires `--json` flag (returns error if used alone)
- Recommended format for AI agents: `grepai search "query" --json --compact`
- All agent setup templates updated to use `--json --compact` by default
## [0.9.0] - 2026-01-11
### Added
- **Claude Code Subagent**: New `--with-subagent` flag for `grepai agent-setup` (#17)
- Creates `.claude/agents/deep-explore.md` for Claude Code
- Provides a specialized exploration agent with grepai search and trace access
- Uses `model: inherit` to match user's current model
- Subagents operate in isolated context, ensuring grepai tools are available during exploration
## [0.8.1] - 2026-01-11
### Documentation
- Simplify Claude Code MCP setup: use `claude mcp add` command instead of manual JSON configuration
## [0.8.0] - 2026-01-11
### Added
- **MCP Server Mode**: New `grepai mcp-serve` command for Model Context Protocol integration (#18)
- Exposes grepai as native MCP tools for AI agents (Claude Code, Cursor, Windsurf, etc.)
- Available tools: `grepai_search`, `grepai_trace_callers`, `grepai_trace_callees`, `grepai_trace_graph`, `grepai_index_status`
- Uses stdio transport for local MCP server communication
- Structured JSON responses by default
- Works automatically in subagents without explicit configuration
## [0.7.2] - 2026-01-11
### Documentation
- **Sidebar Reorganization**: Moved "Search Boost" and "Hybrid Search" from Configuration to Features section
- **Configuration Reference**: Updated full configuration reference with correct field names
- Added missing options: `version`, `watch.debounce_ms`, `trace.mode`, `trace.enabled_languages`, `trace.exclude_patterns`
- Fixed `scanner.ignore``ignore` (root level)
- Fixed `store.postgres.connection_string``dsn`
- Removed `store.gob.path` (handled automatically)
- **Trace Documentation**: Added missing supported languages (C, C++, Zig, Rust) to the languages table
## [0.7.1] - 2026-01-11
### Added
- **Agent Setup Trace Instructions**: Updated `grepai agent-setup` to include trace command documentation (#16)
- Added "Call Graph Tracing" section with `trace callers`, `trace callees`, `trace graph` examples
- All trace examples include `--json` flag for optimal AI agent integration
- Updated workflow to include trace as step 2 for understanding function relationships
## [0.7.0] - 2026-01-10
### Added
- **Extended Language Support for Trace**: Symbol extraction now supports additional languages
- C (`.c`, `.h`) - functions, structs, enums, typedefs
- Zig (`.zig`) - functions, methods (inside structs/enums), inline/export/extern functions, structs, unions, enums, error sets, opaque types, nested types
- Rust (`.rs`) - functions, methods, structs, enums, traits, type aliases
- C++ (`.cpp`, `.hpp`, `.cc`, `.cxx`, `.hxx`) - functions, methods, classes, structs, enums
- **Default ignore patterns** for Zig and Rust build directories: `target`, `.zig-cache`, `zig-out`
## [0.6.0] - 2026-01-10
### Added
- **Search JSON Output**: New `--json`/`-j` flag for `grepai search` command
- Machine-readable JSON output optimized for AI agents
- Excludes internal fields (vector, hash, updated_at) to minimize token usage
- Error handling outputs JSON format when flag is used
- Closes #13
## [0.5.0] - 2026-01-10
### Added
- **Call Graph Tracing**: New `grepai trace` command for code navigation
- `trace callers <symbol>` - find all functions calling a symbol
- `trace callees <symbol>` - find all functions called by a symbol
- `trace graph <symbol>` - build call graph with configurable depth
- Regex-based symbol extraction (fast mode) for Go, JS/TS, Python, PHP
- Tree-sitter integration (precise mode) with build tag `treesitter`
- Separate symbol index stored in `.grepai/symbols.gob`
- JSON output for AI agent integration (`--json` flag)
- Automatic symbol indexing during `grepai watch`
## [0.4.0] - 2026-01-10
### Added
- **LM Studio Provider**: New local embedding provider using LM Studio
- Supports OpenAI-compatible API format
- Configurable endpoint and model selection
- Privacy-first alternative for local embeddings
## [0.3.0] - 2026-01-09
### Added
- **Search Boost**: Configurable score multipliers based on file paths
- Penalize tests, mocks, fixtures, generated files, and docs
- Boost source directories (`/src/`, `/lib/`, `/app/`)
- Language-agnostic patterns, enabled by default
- **Hybrid Search**: Combine vector similarity with text matching
- Uses Reciprocal Rank Fusion (RRF) algorithm
- Configurable k parameter (default: 60)
- Optional, disabled by default
- `GetAllChunks()` method to VectorStore interface for text search
- Dedicated documentation pages for Search Boost and Hybrid Search
- Feature cards on docs homepage
### Changed
- Searcher now accepts full SearchConfig instead of just BoostConfig
## [0.2.0] - 2026-01-09
### Added
- Initial release of grepai
- `grepai init` command for project initialization
- `grepai watch` command for real-time file indexing
- `grepai search` command for semantic code search
- `grepai agent-setup` command for AI agent integration
- Ollama embedding provider (local, privacy-first)
- OpenAI embedding provider
- GOB file storage backend (default)
- PostgreSQL with pgvector storage backend
- Gitignore support
- Binary file detection and exclusion
- Configurable chunk size and overlap
- Debounced file watching
- Cross-platform support (macOS, Linux, Windows)
### Security
- Privacy-first design with local embedding option
- No telemetry or data collection
## [0.1.0] - 2026-01-09
### Added
- Initial public release
[Unreleased]: https://github.com/yoanbernabeu/grepai/compare/v0.19.0...HEAD
[0.19.0]: https://github.com/yoanbernabeu/grepai/compare/v0.18.0...v0.19.0
[0.18.0]: https://github.com/yoanbernabeu/grepai/compare/v0.17.0...v0.18.0
[0.17.0]: https://github.com/yoanbernabeu/grepai/compare/v0.16.1...v0.17.0
[0.16.1]: https://github.com/yoanbernabeu/grepai/compare/v0.16.0...v0.16.1
[0.16.0]: https://github.com/yoanbernabeu/grepai/compare/v0.15.1...v0.16.0
[0.15.1]: https://github.com/yoanbernabeu/grepai/compare/v0.15.0...v0.15.1
[0.15.0]: https://github.com/yoanbernabeu/grepai/compare/v0.14.0...v0.15.0
[0.14.0]: https://github.com/yoanbernabeu/grepai/compare/v0.13.0...v0.14.0
[0.13.0]: https://github.com/yoanbernabeu/grepai/compare/v0.12.0...v0.13.0
[0.12.0]: https://github.com/yoanbernabeu/grepai/compare/v0.11.0...v0.12.0
[0.11.0]: https://github.com/yoanbernabeu/grepai/compare/v0.10.0...v0.11.0
[0.10.0]: https://github.com/yoanbernabeu/grepai/compare/v0.9.0...v0.10.0
[0.9.0]: https://github.com/yoanbernabeu/grepai/compare/v0.8.1...v0.9.0
[0.8.1]: https://github.com/yoanbernabeu/grepai/compare/v0.8.0...v0.8.1
[0.8.0]: https://github.com/yoanbernabeu/grepai/compare/v0.7.2...v0.8.0
[0.7.2]: https://github.com/yoanbernabeu/grepai/compare/v0.7.1...v0.7.2
[0.7.1]: https://github.com/yoanbernabeu/grepai/compare/v0.7.0...v0.7.1
[0.7.0]: https://github.com/yoanbernabeu/grepai/compare/v0.6.0...v0.7.0
[0.6.0]: https://github.com/yoanbernabeu/grepai/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/yoanbernabeu/grepai/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/yoanbernabeu/grepai/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/yoanbernabeu/grepai/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/yoanbernabeu/grepai/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/yoanbernabeu/grepai/releases/tag/v0.1.0