- Check if directory exists before calling validate_relative_path
- Return structured JSON error with project_root context when directory not found
- Helps LLMs understand the current working directory context in MCP
Similar to fix in commit 8464f25 for CreateTextFileTool
Previously, when a subdirectory .gitignore file contained patterns starting
with "**/", these patterns were incorrectly applied globally instead of being
scoped to that subdirectory's tree.
For example, if foo/.gitignore contained "**/test.txt", it would incorrectly
ignore test.txt files everywhere in the repository, including at the root
level and in other subdirectories like bar/test.txt.
The bug was in _parse_gitignore_content() where patterns starting with "**/"
were left unchanged (line 228: adjusted_pattern = line), making them global
instead of scoped.
Fixed by ensuring that even "**/pattern" gets the subdirectory prefix:
- Before: "**/test.txt" → "**/test.txt" (global)
- After: "**/test.txt" → "foo/**/test.txt" (scoped to foo/ subtree)
Added comprehensive test cases covering all gitignore pattern scenarios:
- Non-anchored patterns (foo.txt) - already worked correctly
- Anchored patterns (/foo.txt) - already worked correctly
- Double-star patterns (**/foo.txt) - was broken, now fixed
- Anchored double-star (/**/foo.txt) - already worked correctly
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add optional Intelephense license key support via INTELEPHENSE_LICENSE_KEY environment variable
- Add initializationOptions support to Intelephense LSP server
- Pass license key via licenceKey property when environment variable is set
- Update README.md and DOCKER.md documentation with new environment variable
- Fix docstring comment in _get_initialize_params method
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix formatting
---------
Co-authored-by: Claude <noreply@anthropic.com>
Codex can't deal with them, I suspect ChatGPT will also have problems.
This leads to slightly less expressive python code, but it isn't a large problem and is worth
the extension in usability for serena.
* Fix an error that occurred when trying to scan an inaccessible directory
for example, when the directory permissions were set to 700.
* Fix redundant error handling
* Fix format
---------
Co-authored-by: tsukumi <tsukumijima@users.noreply.github.com>
I noticed that models often use `get_symbols_overview` on a directory only to get an error because the tool does not support directories. The issue was that the description and usage instructions for the tool incorrectly mentioned support for directories.
instead of creating new low-level data structures.
This enables uniform handling of required conversions in our
higher-level Serena data structures
Fixes#432
* Add Bundler support for Ruby projects
This change enhances the Solargraph language server implementation to properly support Ruby projects using Bundler with vendor/bundle configurations.
Key improvements:
- Detects Bundler projects by checking for Gemfile existence
- Supports both 'bin/bundle' and 'bundle' commands
- Checks Gemfile.lock for solargraph availability
- Uses 'bundle exec solargraph' when appropriate
- Provides clear error messages for missing solargraph in Bundler projects
- Maintains backward compatibility with non-Bundler projects
Fixes permission issues encountered with rbenv/system-managed Ruby installations
when trying to install gems globally.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add timeout configuration for Solargraph language server
This change adds proper timeout handling to the Solargraph Ruby language server
to address initialization timeout issues, especially in Bundler environments.
Key improvements:
- Set 120-second request timeout for LSP requests and initialization
- Add 60-second server readiness timeout with graceful fallback
- Enhanced logging for timeout scenarios
- Better handling of slow initialization in large projects or Bundler environments
This resolves connection timeout issues where Solargraph takes longer than
the default 30-second MCP timeout to fully initialize and become ready.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* I've enhanced the Ruby language support in SolidLSP to bring it up to par with the Python implementation, as you requested.
Here are the key changes I made:
1. **Enhanced Solargraph Initialization:** I updated the `solargraph.py` language server to use a more reliable event-based mechanism to wait for the server to be ready, similar to `pyright_server.py`. This replaces the previous timeout-based approach, reducing the likelihood of race conditions and improving reliability.
2. **Improved Initialization Parameters:** The initialization request sent to the Solargraph server now includes a comprehensive set of client capabilities, mirroring the Python implementation. This enables more advanced features and is expected to improve the quality and consistency of the server's responses.
These changes make the Ruby language support more robust and feature-rich without altering the existing tests.
* Enhance Ruby language support to match Python implementation
- Add comprehensive Ruby/Rails exclude patterns for better performance
- Implement Rails project detection with automatic configuration
- Enhance error handling for Ruby, Bundler, and Solargraph installation
- Add Ruby version compatibility checks with warnings for old versions
- Improve directory ignoring for Ruby-specific folders
- Add detailed installation instructions for multiple Ruby managers (rbenv, RVM, asdf)
These improvements bring Ruby language server support up to par with Python,
providing better performance, error messages, and project detection.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix Ruff linting error: properly separate string literals
Resolves ISC001 'Implicitly concatenated string literals on one line' by
explicitly separating the f-string and regular string literal in the
error message formatting.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix Black/Ruff formatting conflict: unify error message string
Combines the f-string and literal string into a single unified string to
resolve the conflict between Black formatter and Ruff ISC001 rule.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Optimize initializationOptions: remove redundant settings
Remove duplicate settings that match Solargraph defaults:
- diagnostics: true (default: true)
- completion: true (default: true)
- hover: true (default: true)
- formatting: true (default: false, but user preference)
Keep only essential exclude patterns for performance improvement.
This addresses reviewer feedback about unnecessary option duplication.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Optimize Ruby language server capabilities configuration
Based on reviewer feedback in PR #439, optimize the Ruby language server
implementation by removing redundant LSP client capabilities that duplicate
Solargraph's default behavior. This maintains essential functionality while
reducing initialization complexity.
Key optimizations:
- Removed redundant textDocument capabilities that match Solargraph defaults
- Kept only essential capabilities: workspaceEdit, hierarchicalDocumentSymbolSupport, and symbolKind
- Maintained all existing exclude patterns and error handling improvements
- Preserved Rails project detection and Ruby-specific optimizations
The optimized configuration reduces from ~30 lines of capabilities to a minimal
essential set while maintaining full Ruby language server functionality.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add CHANGELOG entry for Ruby language server enhancements
Document the comprehensive Ruby/Solargraph improvements from PR #439:
- Automatic Rails project detection
- Ruby/Rails-specific exclude patterns for performance
- Enhanced error handling with Ruby manager support
- Improved LSP capability negotiation
- Better installation error messages
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>