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>
340 lines
15 KiB
Markdown
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
|