Commit Graph
2369 Commits
Author SHA1 Message Date
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
habaneraa 4f0863dec5 fix: Update SymbolKind handling to use Enum _missing_ method 2026-03-19 19:02:52 +08:00
habaneraa c51887dc2f Fix: Enhance SymbolKind handling for non-standard values 2026-03-19 18:19:49 +08:00
Dr. Dominik Jain 0c915bd18d Merge pull request #1183 from diegobonato/fix/handle-oserror-in-project-path-validation
Handle OSError when validating registered project paths on startup
2026-03-17 13:50:25 +01:00
Diego BonatoandClaude Opus 4.6 e45b90e64e Handle OSError when validating registered project paths on startup
When a registered project path points to a stale or unreachable
filesystem (e.g. a disconnected SSHFS mount), `path.exists()` raises
`OSError: [Errno 5] Input/output error` instead of returning False.
This uncaught exception crashes the entire MCP server on startup,
making all Serena tools unavailable.

Wrap the `path.exists()` call in a try/except OSError so that
inaccessible paths are gracefully skipped with a warning, matching
the existing behavior for non-existent paths.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 11:52:34 +01:00
Dominik Jain 6a16b5b9e9 ProjectConfig: Improve handling of overridden keys when saving
* Save only non-overridden keys to project.yml
* Save only overriden keys to project.local.yml
2026-03-17 03:45:50 +01:00
Dominik Jain e357323051 Fix: Ensure that local overrides from project.local.yml are never written to project.yml
Previously, only project.yml resave due to incomplete config accounted for this,
but dynamic language changes triggered via the dashboard (which triggered a save
to update the language list) did not.

Since ProjectConfig can always contain local overrides,
* we handle configuration updates by explicitly updating on disk only the
  keys known to have been changed
* we explicitly represent the presence of local overrides, such that
  inadmissible save operations are detectable.
2026-03-17 01:37:57 +01:00
Dominik Jain b659f915f0 Fix: project.local.yml entries were not applied in ProjectConfig.load 2026-03-16 23:04:55 +01:00
Sergey Belov ff1b9057c0 Add limited Ansible language server support (#1170)
References and definition not working yet. Since ansible resolves same files as yaml LS, we will need to add disambiguation later.

Work in progress, improvements on the language server itself are being worked on, ansible support in Serena will be extended accordingly in the future.
2026-03-16 22:40:58 +01:00
Mikha Davids 70edc0d1cc fix: add meta property to flake.nix (#1167) 2026-03-16 10:01:27 +01:00
Dominik Jain 22394cfad8 Dashboard log view style improvements
* Fix container not fully resizing to fit page
* Increase font size from 12px to 14px
2026-03-16 00:54:41 +01:00
Dr. Dominik Jain ae93a40a84 Merge pull request #1164 from TheSmallKiwi/fix/hlsl-language-server-shutdown
Fix HLSL language server leaving orphaned processes on shutdown
2026-03-15 18:18:05 +01:00