Unlike other language servers, metals LS only works properly when the project has been compiled in a particular way. Compiling like this on the fly or in CI is unfeasible, so instead, we expect the user to setup and compile the project correctly when using Serena for scala. Extensive documentation has been added.
Scala tests exist, but we don't run them in CI. They have been executed manually on macOS and Windows, thereby verifying that after following the instructions, Scala support works in Serena.
when the project is activated at startup (ActivateProjectTool not applied)
Peripheral change: Move MemoriesManager into module 'project',
moving the instance into the Project instance, because memories are strictly
associated with the project
Fixes#681
If someone uses spaces in file names /home/nickolaykondratyev/git_repos/nickolay-kondratyev_serena is likely to not work as expected due to argument splitting (hopefully people arent using spaces, but its best practice to quote everything in shell)
Tested through a snapshot test on python. Calling the tool with language servers not supporting renaming will raise an error
Co-authored-by: Don Syme <dsyme@users.noreply.github.com>
* ci: add Nix build verification to pytest workflow
Add a verification step to the CI pipeline that validates the Nix package builds successfully on each run. The step uses 'nix build --no-link' to verify the flake builds without creating artifacts.
This provides early detection of Nix packaging issues with minimal overhead, reusing the existing Nix installation on Linux and macOS runners.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
via [Happy](https://happy.engineering)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
* fix(nix): add setuptools to ruamel-yaml-clib build dependencies
Add pyproject override to ensure ruamel-yaml-clib has setuptools available during build. This fixes Nix build failures where the package requires setuptools but doesn't declare it as a native build input.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
via [Happy](https://happy.engineering)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Happy <yesreply@happy.engineering>
* adds expand_braces function to handle glob patterns
* updates search_files to use it for include/exclude patterns
* allows for flexible file filtering `**/*.{js,ts}` to match ts/js
* feat: add rbenv integration for Ruby LSP server
Add support for rbenv Ruby version management in the Ruby LSP language server.
This allows Serena to respect project-specific .ruby-version files and use
the appropriate Ruby and bundler versions as specified by rbenv.
- Increased CI delay from 10s to 15s for project indexing
- Added retry mechanism when no references found in CI
- Enhanced logging for better CI debugging
- All 3 Swift reference tests now pass locally
The CI environment needs extra time for sourcekit-lsp to fully
index Swift projects and establish cross-file symbol references.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add configurable runtime dependency system for language servers:
- New RuntimeDependencyLoader for loading platform-specific dependencies
- Extended SerenaConfig with language_server_dependencies field
- Updated configuration template with ARM64 examples
- Modified CSharpLanguageServer to use dependency loader
This enables adding platform support (like ARM64) via YAML configuration
without requiring code changes and PRs.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Allow passing LS implementation specific options. Made use of it in csharp and intelephense LS
* Bidirectional mapping from Language to the corresponding LS implementation Use this as key for ls_specifics.
Fix to swift installation in CI authored-by: maksim.r <avalab>