Commit Graph
2382 Commits
Author SHA1 Message Date
Dominik Jain a7af5c1f8a Improve security documentation 2026-03-29 14:13:08 +02:00
Dominik Jain b00ae292ac Change default listen address of MCP server in HTTP mode to localhost
The previous default 0.0.0.0 was a potential security hazard
2026-03-29 12:11:40 +02:00
Dr. Dominik Jain 926640f463 Merge pull request #1228 from oraios/prepare_find_implementation_tool
Prepare find implementation tool
2026-03-28 14:27:12 +01:00
AndreyPolovodov 4d0c80496b Merge pull request #1237 from AndreyPolovodov/fix/time-based-cache-save-during-indexing
Problem
Saving cache every 10 files causes extremely slow indexing on large projects because save_all_caches() is an expensive operation. On a large project it gets triggered thousands of times during indexing, making the whole process take hours instead of minutes.

Fix
Switch from a file-count-based trigger (every 10 files) to a time-based trigger (every 30 seconds). This keeps cache saves infrequent enough to not hurt performance, while still preserving progress regularly in case indexing is interrupted.
2026-03-28 14:18:55 +01:00
Dominik Jain d2d8e5d2a3 VueTypeScriptServer: Fix incorrect ignore behaviour
.vue files were incorrectly ignored because the source filename matcher of the
language (TS) was used
2026-03-28 01:14:05 +01:00
Dominik Jain 28bf726f53 Fix coordinates in TestDartLanguageServer.test_request_defining_symbol_variable 2026-03-28 01:14:05 +01:00
Dominik Jain 971941d5c6 Fix TestRubyLanguageServerSymbols.test_request_defining_symbol_method_call: Incorrect line/col 2026-03-28 00:31:01 +01:00
Dominik Jain a6884e0bef SymbolLocationRequest: Restore ignore behaviour 2026-03-28 00:31:00 +01:00
Michael PanchenkoandDominik Jain 08fb88a742 LS: support definition and implementation endpoints
Factorized out commonalities between references, definition and implementation endpoints

Co-authored-by: Dominik Jain <dominik.jain@oraios-ai.de>
2026-03-28 00:31:00 +01:00
Michael Panchenko fe6aca4de5 pinned regex to be python 3.14 compatible 2026-03-27 16:56:08 +01:00
Michael Panchenko 9f1b71a120 Merge pull request #1169 from oraios/update-all-yaml-comments
Force-update all comments in .yml files when resaving
2026-03-27 15:49:40 +01:00
Michael Panchenko 256041fa10 Merge pull request #1205 from zerone0x/fix/dashboard-show-experimental-langs-1177
fix: allow adding experimental languages from dashboard
2026-03-27 15:49:08 +01:00
Michael Panchenko 67576cd128 Merge pull request #1227 from oraios/security/pinning_and_checksum_verification
Security enhancement: pinned all runtime deps, verify checksums
2026-03-27 13:58:28 +01:00
Michael Panchenko f00a992e5d Security enhancement: pinned all runtime deps, verify checksums
Extended documentation of ls_specific_settings and of our security approach
2026-03-27 13:00:09 +01:00
Michael Panchenko f94e956339 Merge pull request #1226 from oraios/ty_support
Ty support
2026-03-27 12:14:07 +01:00
Michael Panchenko 43885f6d79 Exclude test resources from formating 2026-03-27 10:03:06 +01:00
Michael Panchenko 34ed5523c8 Add TY support for python, mark LS that support implementation request 2026-03-27 10:03:05 +01:00
Michael Panchenko b5545b82b9 Gitignore 2026-03-27 10:03:05 +01:00
dependabot[bot] 52a42232ca Bump requests from 2.32.5 to 2.33.0 in the uv group across 1 directory (#1225)
Bumps the uv group with 1 update in the / directory: [requests](https://github.com/psf/requests).


Updates `requests` from 2.32.5 to 2.33.0
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.5...v2.33.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.33.0
  dependency-type: direct:production
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 09:53:04 +01:00
Michael PanchenkoandDominik Jain c6250aeeab Improved retrieval tool responses (#1190)
* Improved symbol retrieval tool responses

1. FindSymbol (LS and JB) now has max_matches. Both tools now perform grouping like other symbol retrieval tools
2. When a result exceeds max_answer_chars, the caller may pass a shortened message. This is used in references and overview tools

* Progressive shortening for tool results that exceed max_answer_chars

Change _limit_length to accept an optional list of closures instead of
a single shortened_result string. Each closure produces a progressively
shorter version of the result, tried in order until one fits. The last
closure is assumed to always fit and is used unconditionally.

* Extended grouper

More flexible grouping logic was needed to achieve the above results. Grouper also no longer
mutates the input (using deepcopy)

---------

Co-authored-by: Dominik Jain <dominik.jain@oraios-ai.de>
2026-03-27 08:34:21 +01:00
Lin Yang 483538a293 Use deterministic workspace dir for EclipseJDTLS to enable cache reuse (#1214)
* Use deterministic workspace dir for EclipseJDTLS to enable cache reuse

Replace uuid.uuid4().hex with a hash of the project path for the JDTLS
workspace directory. This allows the workspace cache (project index,
shared index, configuration) to be reused across server restarts instead
of rebuilding from scratch each time.

The random UUID was inherited from microsoft/multilspy (a research/testing
library where ephemeral workspaces made sense), but for Serena's use case
— long-lived projects with repeated restarts — deterministic workspace
paths significantly reduce startup time, especially for large Java projects.

* Fix import sort order for ruff lint
2026-03-26 11:33:27 +01:00
Michael Panchenko 8c62b0d991 Merge pull request #1213 from oraios/dependabot/uv/uv-ad53704374
Bump the uv group across 1 directory with 2 updates
2026-03-24 10:46:37 +01:00
dependabot[bot] 6d72a594e3 Bump the uv group across 1 directory with 2 updates
Bumps the uv group with 2 updates in the / directory: [urllib3](https://github.com/urllib3/urllib3) and [cryptography](https://github.com/pyca/cryptography).


Updates `urllib3` from 2.5.0 to 2.6.3
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.5.0...2.6.3)

Updates `cryptography` from 46.0.3 to 46.0.5
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.3...46.0.5)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.6.3
  dependency-type: direct:production
  dependency-group: uv
- dependency-name: cryptography
  dependency-version: 46.0.5
  dependency-type: direct:production
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 09:42:28 +00:00
Michael Panchenko 1707bb43d1 Merge pull request #1212 from oraios/broken-uvx 2026-03-24 10:40:09 +01:00
Michael Panchenko 37d700e39c Skip ansible tests on Windows due to incompatibility of ansible ls there 2026-03-23 23:42:02 +01:00
Dominik Jain 24d646b50b Upgrade mcp to 1.26 2026-03-23 21:17:20 +01:00
Michael Panchenko d15887a145 Pin dependencies to versions that work across Python 3.11 to 3.14 2026-03-23 21:11:23 +01:00
Michael Panchenko 0bbd9e375e Reformat (minor, after replacing black with ruff)
Black dependency created a dependabot warning and couldn't be bumped since it collided with pathspec dependencies. Since ruff can also format, black is not needed. But we now have these small format changes, mostly in test files
2026-03-23 21:10:41 +01:00
Michael Panchenko 45cd8ca12e Pinned all dependencies, removed black, addressed dependabot warnings 2026-03-23 21:10:41 +01:00
Michael Panchenko 091b2245e3 Kotlin LS: remove unused _java_home field from DependencyProvider 2026-03-23 18:17:15 +01:00
b898677b1c feat: add ignored_memory_patterns config option for regex-based memory exclusion (#1145)
Co-authored-by: Bokai Yang <22804145+YouJianFengXue@users.noreply.github.com>
Co-authored-by: Michael Panchenko <35432522+MischaPanch@users.noreply.github.com>
2026-03-23 18:12:30 +01:00
code4lala bf92f3cb49 feat: Support project-level ls_specific_settings (#1192) 2026-03-23 18:03:57 +01:00
VoidChecksumandVoidChecksum d39d168523 fix: detect rust-analyzer from PATH without rustup (#1173)
* fix: check PATH for rust-analyzer before common locations, with functionality validation

Fixes #800 - rust-analyzer fails if rustup is not installed even when
rust-analyzer exists in PATH (e.g. NixOS, distro packages).

Changes:
- Move PATH check (shutil.which) before common location fallbacks
- Add _is_rust_analyzer_functional() to validate PATH-found binaries
  by running --version, catching broken rustup proxy symlinks
- Add tests for Nix PATH detection and broken proxy skip scenarios

* fix: make test_skip_broken_rustup_proxy_in_path work on Windows

The test used hardcoded Unix paths (/usr/bin/rust-analyzer) and
os.path.expanduser("~/.cargo/bin/rust-analyzer") which doesn't
include the .exe extension. On Windows, the production code builds
common paths using pathlib with "rust-analyzer.exe", so the mock
paths never matched, causing RuntimeError instead of finding the
cargo fallback.

Use platform-appropriate paths: on Windows, use .exe extension and
pathlib.Path.home() to match how the production code constructs paths.

---------

Co-authored-by: VoidChecksum <Admin@CyberNord>
2026-03-23 18:01:31 +01:00
Michael Panchenko 2ccd396d74 Merge pull request #1188 from habaneraa/main
Fix: Handle Non-Standard SymbolKind Values from Language Servers
2026-03-23 15:05:22 +01:00
Michael Panchenko 9509320083 Format 2026-03-23 14:36:34 +01:00
Michael Panchenko 6734e5d03c Merge branch 'main' into habaneraa/main 2026-03-23 14:34:49 +01:00
Michael Panchenko 958b4ffd95 Disabled F# tests in CI, mentioned bugs in readme 2026-03-23 14:33:48 +01:00
Michael Panchenko efb895e2b3 Minor typing issue 2026-03-23 11:09:16 +01:00
Michael Panchenko 01bbf7254e Removed duplicated SymbolKind definition
Adjusted comment in autogenerated code, which from now on will be maintained manually
2026-03-23 11:07:53 +01:00
Michael Panchenko f834571d41 Merge pull request #1195 from Asher-/fix/agent-shutdown-lifecycle
Fix agent shutdown lifecycle: no-op shutdown, orphaned LS processes, missing MCP cleanup
2026-03-23 10:23:26 +01:00
Michael Panchenko 793af0a470 Merge pull request #1197 from Asher-/fix/ls-copy-paste-bugs
Fix copy-paste bugs in language server init params
2026-03-23 10:20:42 +01:00
Michael Panchenko 7ed2862b08 Merge pull request #1198 from Asher-/fix/shell-command-safety
Use shlex.quote for shell argument escaping on POSIX
2026-03-23 10:18:28 +01:00
Michael Panchenko b1a8db35f1 Merge pull request #1202 from Asher-/fix/cosmetic-error-messages
Fix copy-paste error messages in log strings
2026-03-23 10:12:00 +01:00
Michael Panchenko b9ae3b9a12 Merge pull request #1204 from Asher-/fix/dashboard-root-redirect
Redirect root URL to /dashboard/
2026-03-23 10:04:55 +01:00
Asher Haig 7978d42c4b Redirect root URL to /dashboard/
Navigating to localhost:24282 returned a 404 because no route handled
the root path. Added a redirect from / to /dashboard/.

Fixes #1194.
2026-03-21 23:24:06 -04:00
Asher Haig 239f480cbb Use shlex.quote for shell argument escaping on POSIX
quote_arg() only wrapped arguments containing spaces in double quotes.
Shell metacharacters ($, backtick, ;, |, &, etc.) were left unescaped.

On POSIX, use shlex.quote() which single-quotes to prevent all shell
interpretation. Retain original Windows behavior since cmd.exe does not
interpret single-quoted strings.
2026-03-21 23:21:16 -04:00
Asher Haig 57e720bc79 Fix copy-paste bugs in language server init params
1. clangd + ccls: workspace folder name was literal "$name" placeholder
   instead of os.path.basename(repository_absolute_path).

2. Erlang: rootUri used f"file://{path}" instead of
   pathlib.Path(...).as_uri(), producing malformed URIs on Windows.

3. F#: symbolKind valueSet used range(1, 26) (1-25) instead of
   range(1, 27) (1-26), missing TypeParameter.
2026-03-21 23:20:54 -04:00
asher 48025c7ddf Fix agent shutdown lifecycle: no-op shutdown, orphaned LS processes, missing MCP cleanup
Three related bugs preventing proper cleanup of language server processes:

1. SerenaAgent.shutdown() checked `hasattr(self, "_is_initialized")` but that
   attribute was never set, making shutdown always return early (no-op).
   Replace with `hasattr(self, "_active_project")` which is set early in
   __init__ and correctly guards against __del__ on partial construction.

2. _activate_project() replaced self._active_project without shutting down
   the previous project first, orphaning its language server processes.
   Now calls old_project.shutdown() before switching.

3. MCP server_lifespan() logged "shutting down" but never called
   agent.shutdown(), so language servers were orphaned on MCP server exit.
   Now calls agent.shutdown() in a try/finally block.
2026-03-21 23:20:30 -04:00
zerone0x d5fb835871 fix(dashboard): include experimental languages in UI
Fixes #1177
2026-03-22 03:39:52 +01:00
Asher Haig 55f3253ab7 Fix copy-paste error messages in log strings
1. agent.py: f-string had literal 'f' before variable, producing
   "Find the current log file here: f/Users/..." instead of the path.

2. ls.py: delete_text_between_positions logged "insert_text_at_position
   called before Language Server started" — wrong method name.
2026-03-21 21:37:16 -04:00