Add detection and usage of user's custom Maven and Gradle configuration
files to allow JDTLS to respect user-specific build tool settings.
Changes:
- Detect and use ~/.m2/settings.xml for Maven user settings
- Detect and use ~/.gradle for Gradle user home directory
- Set Maven updateSnapshots to false for better performance
This enhancement allows JDTLS to:
- Use custom Maven repositories and mirrors
- Respect proxy and authentication configurations
- Apply user-specific build tool settings
- Improve initialization performance by disabling automatic snapshot updates
The implementation gracefully falls back to None if configuration files
don't exist, maintaining backward compatibility with existing setups.
Added an overview (landing page showing current and available config) and advanced stats windows, controlled by top-right menu
Stats calculation is no longer optional, but we use a trivial token estimator by default
at connection time (e.g. Claude Desktop)
Establish a "name" for the instructions (Serena Instructions Manual) such that the agent
can know whether it has read the instructions and therefore will know whether or not
the tool needs to be called
Implements JuliaLanguageServer with LanguageServer.jl integration.
Includes comprehensive tests and auto-detection of Julia installations.
Checks for LanguageServer.jl on startup and installs via Pkg.add if not found. Only runs once on first use.
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.