Commit Graph
1291 Commits
Author SHA1 Message Date
MischaPanch cdc0d178f8 Remove union type annotations from tools.
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.
2025-08-09 16:15:51 +02:00
MischaPanch 65544d57d4 Make restart_language_server optional 2025-08-09 16:13:43 +02:00
MischaPanch 68cc17fd41 Merge branch 'main' of github.com:oraios/serena 2025-08-09 15:05:28 +02:00
MischaPanch 3a61c999d3 Extended CLI with helper commands for debugging 2025-08-09 15:05:25 +02:00
tsukumiandtsukumi b15f3a6d4a Ignore inaccessible paths (PermissionError) in scanning of directories (#427)
* 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>
2025-08-09 14:23:44 +02:00
MischaPanch 5a1bfa0838 Applied markdownlint, minor typos and fixes in readme [ci skip]
# Conflicts:
#	README.md
2025-08-09 14:19:33 +02:00
Gabriel Terwesten 59b2bccb26 fix: remove incorrect description of supporting directories from get_symbols_overview docs (#452)
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.
2025-08-09 10:56:40 +02:00
Dominik Jain 3a1d14dbf4 Merge pull request #448 from blaugold/fix-gitignore-file-discovery
fix: discover all `.gitignore` files in project
2025-08-08 20:49:10 +02:00
Gabriel Terwesten 532de363c6 Update tests 2025-08-08 19:58:27 +02:00
Gabriel Terwesten cffbb81036 fix: discover all .gitignore files in project
Before this change only `.gitignore` files at the project root and its direct subdirectories where found.
2025-08-08 19:45:40 +02:00
Gabriel Terwesten 315086d68d fix: --log-level option for serena index (#447)
The command was missing a call to `logging.configure` to actually configure logging and make the option have a visible effect.
2025-08-08 19:40:48 +02:00
MischaPanch b8daef9167 Formatting 2025-08-08 14:16:24 +02:00
Dominik Jain f106572b74 Merge pull request #446 from oraios/refactor/symbol-overview-data-structure 2025-08-08 14:11:18 +02:00
Dominik Jain a7cc0f16b5 Make overview calls return the full symbol information
instead of creating new low-level data structures.

This enables uniform handling of required conversions in our
higher-level Serena data structures

Fixes #432
2025-08-08 14:09:43 +02:00
MischaPanch ab4355e27b C# - added handler for _roslyn_projectNeedsRestore, fixes #303 2025-08-08 14:07:27 +02:00
MischaPanch 090a22cf05 Minor improvements in readme and changelog 2025-08-08 14:05:52 +02:00
965ecc58b2 Enhance Solargraph integration: Rails detection, exclude patterns, and error handling (#439)
* 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>
2025-08-08 13:54:35 +02:00
Dominik Jain 79fec25b9c Merge pull request #425 from oraios/subprocess-kwargs
Apply platform-specific default kwargs to subprocess calls
2025-08-08 13:32:24 +02:00
Michael Panchenko fa371d26de Typo in readme 2025-08-08 10:34:05 +02:00
KAWASHIMA Yoshiyuki a0f09f729e Remove duplicate Swift 2025-08-08 16:35:50 +09:00
Dominik Jain 9de7a99822 Update TOC [skip ci] 2025-08-08 01:33:01 +02:00
Michael Panchenko b42f3c8d12 Update README.md, minor [ci skip] 2025-08-08 01:32:34 +02:00
Michael Panchenko 9ae5ee6411 Merge pull request #401 from oraios/update_readme
Update readme
2025-08-08 01:24:50 +02:00
Akira TSURUDA 50d5abc498 feat: Expand Ruby language server test coverage (#438) 2025-08-08 01:24:19 +02:00
Michael Panchenko db1c020ba2 Added demo video 2025-08-08 01:16:59 +02:00
MischaPanch 684f191845 Updated readme, addressed comments 2025-08-08 01:13:32 +02:00
MischaPanch 70e0665d28 Enhanced listing command 2025-08-08 01:07:29 +02:00
Alleo Indong f12547d55a Added dark/light mode theme switcher to dashboard (#435) 2025-08-08 00:40:31 +02:00
Michael Panchenko a99ad802ef Merge pull request #437 from oraios/feat/support-swift 2025-08-08 00:20:27 +02:00
MischaPanch 4fe88b1817 Revert back to custom code for installing swift 2025-08-08 00:00:21 +02:00
MischaPanch 80ff428012 Install xtools explictly after swift install action 2025-08-07 23:33:29 +02:00
MischaPanch b0032ddf9a Install swift with GH action instead of custom code 2025-08-07 22:33:48 +02:00
MischaPanch d41ca01513 Sleep before requesting references, not after start 2025-08-07 22:21:14 +02:00
MischaPanch 6d28c7d722 Minor simplification of sourcekit_lsp.py, added sleeping at startup 2025-08-07 22:06:35 +02:00
MischaPanch 82a4c593ac Merge remote-tracking branch 'origin/main' 2025-08-07 17:37:35 +02:00
MischaPanch 68c5deeb1a Add missing closure-lsp dependency for osx-x64 2025-08-07 17:37:27 +02:00
Dominik Jain 699fd46a72 Merge pull request #433 from oraios/ci/check-formatting
Add formatting check in CI
2025-08-07 14:06:30 +02:00
MischaPanch 5236ffe2b6 Merge branch 'main' into feat/support-swift
# Conflicts:
#	.github/workflows/pytest.yml
#	pyproject.toml
#	src/solidlsp/ls.py
#	src/solidlsp/ls_config.py
2025-08-07 13:57:49 +02:00
Dominik Jain dc5be9fad4 Ignore ruff UP045 2025-08-07 13:41:45 +02:00
Dominik Jain 7912ba4d91 Check formatting in CI 2025-08-07 13:31:34 +02:00
Dominik Jain 523d8fa764 Merge pull request #431 from oraios/ls-handler-stderr-log-level
Add basic log level detection to stderr stream reader
2025-08-07 13:23:37 +02:00
Dominik Jain c1d7701223 Add basic log level detection to stderr stream reader 2025-08-07 12:57:55 +02:00
Dominik Jain 0f49429002 Formatting 2025-08-07 12:56:51 +02:00
jetbrains-junie[bot] e5641de0ff feat(junie): added .junie workflow (#430)
Co-authored-by: jetbrains-junie[bot] <201638009+jetbrains-junie[bot]@users.noreply.github.com>
2025-08-07 12:48:04 +02:00
Dominik Jain eaf863df6d Apply platform-specific default kwargs to subprocess calls
For now, we only set creationflags=CREATE_NO_WINDOW on Windows
2025-08-07 12:15:52 +02:00
johngambleubind b09cbc089d Fix #384: Use safe zip extraction for C# dependencies (#418) 2025-08-07 10:52:01 +02:00
Akira TSURUDAandClaude 2b4d68bea9 Add Bundler support and timeout configuration for Ruby projects (#419)
* 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>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-07 00:05:35 +02:00
Dominik Jain f2d81812c7 Apply formatter 2025-08-06 20:58:14 +02:00
YenandClaude ec1277167b Add comprehensive bash language support (#375)
* feat: Add comprehensive bash language support

Implement BashLanguageServer using bash-language-server (v5.4.0)
- Add automatic Node.js/npm dependency management
- Support .sh and .bash file extensions
- Include cross-platform compatibility (Windows .cmd handling)
- Add comprehensive test infrastructure with realistic bash scripts
- Integrate bash into Language enum and language server factory
- Add bash pytest marker for selective testing
- Include bash_language_server fixture for tests

Features:
* LSP capabilities: text sync, completion, hover, document symbols
* Runtime dependency installation via npm
* Symbol recognition for functions, variables, conditionals
* Proper LSP initialization and error handling
* Test repository with main.sh, utils.sh, and config.sh examples

Files:
+ src/solidlsp/language_servers/bash_language_server.py (new implementation)
+ test/solidlsp/bash/test_bash_basic.py (comprehensive test suite)
+ test/resources/repos/bash/test_repo/ (test scripts)
* src/solidlsp/ls_config.py (add BASH enum and file patterns)
* src/solidlsp/ls.py (integrate bash language server)
* pyproject.toml (add bash pytest marker)
* test/conftest.py (add bash_language_server fixture)

Tests: 2 passed, 7 appropriately skipped
All existing tests continue to pass (288 passed total)

* trigger flow

* feat: enhance bash function detection with hybrid LSP + regex approach

- Upgrade bash-language-server from 5.4.0 to 5.6.0 for better capabilities
- Add hybrid function detection: primary LSP + regex fallback when needed
- Implement _detect_bash_functions() with regex patterns for both syntax types:
  * function name() { } (function keyword syntax)
  * name() { } (regular function syntax)
- Add _find_function_end() with brace matching for accurate function boundaries
- Enhance request_document_symbols() with intelligent fallback logic
- Add comprehensive test suite with 4 new test functions:
  * test_bash_function_detection_hybrid_approach
  * test_bash_function_detection_with_body
  * test_bash_regex_fallback_detection
  * test_bash_function_syntax_patterns
- All tests passing: 6 passed, 7 skipped, 0 failed
- Maintains 100% backward compatibility
- Enables full symbolic operations for bash functions: find_symbol, replace_symbol_body, etc.

* remove trash

* clean: remove debug changes from Python services.py

- Remove 'MODIFIED VIA SYMBOLIC OPERATIONS!' debug comments
- Remove debug print statements added during testing
- Restore original clean docstring and code
- No functional changes to bash language support implementation

* fix: Remove non-bash specific directory ignoring from BashLanguageServer

- Removes is_ignored_dirname override that included generic directories like node_modules, .cache, tmp, temp
- These directories aren't bash-specific and gitignore already handles file exclusion
- Addresses PR feedback: 'that doesn't seem bash related. Note that gitignored files are ignored anyway'

* fix: Restructure bash tests to follow standard patterns and remove pytest.skip

- Replace custom bash_language_server fixture with standard parametrized language_server fixture
- Remove all pytest.skip statements and replace with proper assertions or failures
- Remove tests for non-existent methods (get_symbols_for_document, get_workspace_symbols, etc.)
- Keep only tests that use actual SolidLanguageServer methods like request_document_symbols
- All bash tests now pass successfully
- Addresses PR feedback about test structure and pytest.skip removal

* docs: Add bash language support to README

- Add Bash to the list of directly supported languages
- Note that it requires Node.js and npm for bash-language-server installation
- Addresses PR feedback about missing README extension for bash support

* docs: Add bash language support to CHANGELOG

- Document comprehensive bash language support with bash-language-server integration
- Highlight key features: .sh/.bash extensions, hybrid function detection, automatic dependency management
- Note cross-platform compatibility including Windows support
- Addresses PR feedback about missing CHANGELOG extension for bash support

* refactor: Change regex fallback to always-on hybrid detection for bash functions

- Remove conditional logic that only ran regex when LSP found no functions
- Implement always-on hybrid approach that runs both LSP and regex detection
- Add comprehensive documentation explaining bash-language-server limitations
- Add new _merge_function_detections method to combine results without duplicates
- Addresses reviewer feedback about files with mixed function notation styles

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-06 16:41:04 +02:00
hyuraku 7158aa4870 Adds tests for Ruby language server integration (#416) 2025-08-06 15:21:43 +02:00