Commit Graph
2327 Commits
Author SHA1 Message Date
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
Dominik Jain 7a1dcfeeda Auto-generate the tool list in the documentation 2026-03-15 17:26:20 +01:00
Dominik Jain 3690215e72 Delete roadmap
Resolves #1136 [skip ci]
2026-03-15 13:11:57 +01:00
Dr. Dominik Jain 45aa625bb3 Merge pull request #1120 from sachmata/ts-lsp-error
Use $/typescriptVersion notification as TypeScript LSP readiness signal
2026-03-15 13:05:09 +01:00
010ed1015d docs: clarify inheritance of global defaults
Fixes #1155

Co-Authored-By: Dominik Jain <dominik.jain@oraios-ai.de>
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-15 12:59:42 +01:00
Dominik Jain e615c54d80 Improve documentation of HTTP mode and multiple agents in general
Resolves #1118
2026-03-15 12:36:10 +01:00
Dominik Jain d6e325e2a0 Project.get_language_server_manager_or_raise: Fix error message generation
Fixes #1168
2026-03-14 23:00:39 +01:00
TheSmallKiwiandClaude Opus 4.6 97130e7c13 Fix HLSL language server leaving orphaned processes on shutdown
The base _shutdown() calls process.terminate() directly on the subprocess,
which on Windows with shell=True only kills the cmd.exe wrapper, leaving
the shader-language-server binary running as an orphan. Override stop() in
HlslLanguageServer to use psutil to terminate the full process tree before
the standard shutdown.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 20:07:22 -04:00
Vinh Tran 6d6f55308f feat(solidlsp): add Solidity language server support (#1156)
Integrates the Nomic Foundation @nomicfoundation/solidity-language-server
as a new Language.SOLIDITY backend (experimental). Supports .sol files with
go-to-definition, find references, document symbols, hover, and diagnostics.
The server is automatically installed via npm on first use.
2026-03-13 13:14:09 +01:00
Terrance Orletsky 18cee10fa9 Fix PHP symbol retrieval: declare missing Intelephense client capabilities (#1099)
Fix PHP symbol retrieval via Intelephense LSP

* intelephense.py: Add missing client capability declarations for
  documentSymbol (with hierarchical support), references, hover, and
  workspace symbol. Without these, Intelephense does not advertise
  documentSymbolProvider and returns empty results for get_symbols_overview.

Add PHP tests validating hierarchical symbols and LS routing fix

- test_document_symbols_hierarchical_structure: verifies Intelephense
  returns DocumentSymbol[] with class/method hierarchy (not flat
  SymbolInformation[]) when hierarchicalDocumentSymbolSupport is declared

- test_full_symbol_tree_within_file: verifies request_full_symbol_tree
  scoped to sample.php returns Dog/Animal/greet/fetch with Dog containing
  greet as a child (not at root level)

- test_find_symbol_within_php_file: verifies find_symbol with a PHP
  file path (relative_path=) routes to the PHP language server via
  get_language_server() rather than iterating all servers

Peripheral changes:

- symbol.py (LanguageServerSymbolRetriever.find_symbols): When searching
  within a specific file, route to the file-type-appropriate language server
  via get_language_server() instead of querying all servers. This ensures
  PHP files are served by Intelephense and not silently skipped.
2026-03-12 15:19:11 +01:00
StayBlue b3a6045f7e Add Luau language support (#1152) 2026-03-12 11:58:45 +01:00
Dan Rosen 09c007d1e1 Add Lean 4 language support (#1137) 2026-03-12 11:32:31 +01:00
Dr. Dominik Jain f561204840 Merge pull request #1154 from zerone0x/fix/allow-project-creation-without-detected-languages
fix: allow project creation when no LSP-supported languages are detected
2026-03-11 00:40:05 +01:00
zerone0xandClaude 9e9b5edc53 fix: allow project creation when no LSP-supported languages are detected
Previously, ProjectConfig.autogenerate() raised a ValueError when no
recognized source files were found (e.g. empty dir, JetBrains project,
or project with only gitignored files). This prevented users from
creating Serena projects in valid scenarios, especially with the
JetBrains backend where language servers are not used at all.

Now, autogenerate() creates the project with an empty languages list
and logs a warning explaining that symbol tools will be unavailable
for the LSP backend. Users can add languages later via the dashboard
or by editing the project configuration manually.

Fixes #1053

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-10 16:44:27 +01:00
Dominik Jain 3f047f9a66 Fix: Prevent _default_language_server from becoming stale #1151 2026-03-10 12:22:51 +01:00
Dr. Dominik Jain 6ccea87be1 Merge pull request #1140 from cek/feature/configurable-line-ending
feat: Add configurable line_ending setting for file writes
2026-03-09 23:34:45 +01:00
Dominik Jain f51ba805f0 Add comment explaining that JavaScript is supported via the TypeScript LS
Resolves #1141
2026-03-09 23:29:19 +01:00
Dominik Jain 65f5145ab0 Refactoring: Improve dependency structure of LanguageServerSymbolRetriever & CodeEditors
Simplify dependency injections by depending on Project instead of low-level instances
* LanguageServerSymbolRetriever(Project) - contains the instance
* LanguageServerCodeEditor(LanguageServerSymbolRetriever)
* CodeEditor(Project)

Move retrieval methods for LS manager from SerenaAgent to Project, including
the exception-based problem report
2026-03-09 23:20:45 +01:00
Dominik Jain 6bf71ef10b Improve line ending configuration
* Keep unset in project.yml by default (only explicit override)
* Fix member docstrings and member grouping in SerenaConfig
* Fix missing migration in SerenaConfig (ensure setting is saved)
2026-03-09 23:20:45 +01:00
Dr. Dominik Jain 682452dadd Merge pull request #1144 from tamaro-skaljic/fix-path-to-project-yml
Fix path_to_project_yml method to use config instead of removed constant
2026-03-09 17:19:37 +01:00
Tamaro Skaljic aab9ff6556 Fix path_to_project_yml method to use config instead of removed constant 2026-03-09 17:10:36 +01:00
Craig Kolb d6a832b5d9 feat: Add configurable line_ending setting for file writes
Resolves #1139
2026-03-07 22:36:12 -08:00
Martin Dimitrov 1f02cc5f4f Replace sleep-based indexing wait with $/progress tracking
Replace blind sleep() in VueLanguageServer with event-driven $/progress
tracking from the companion TypeScript language server. This makes Vue
file indexing both faster (no unnecessary waiting) and more reliable
(no under-waiting on slow machines).

Changes:
- Add workDoneProgress capability to TS server initialize params
- Track window/workDoneProgress/create and $/progress notifications
  to detect when tsserver finishes async project loading
- Expose public wait_for_indexing()/expect_indexing() API on
  TypeScriptLanguageServer (avoids cross-class private access)
- Wait for indexing completion in TS server's own _start_server(),
  matching the existing Kotlin LS pattern
- Unify indexing timeout as a single class constant (15s Win / 10s Unix)
- Remove experimental/serverStatus handler (not sent by ts-language-server)
2026-03-08 01:11:04 +02:00
Dominik Jain 3569a8145b Re-enable test_find_symbol_references_typescript (may be resolved by #1120) 2026-03-07 23:52:44 +02:00
Martin Dimitrov 00d185d983 Use $/typescriptVersion notification as TypeScript LSP readiness signal 2026-03-07 23:52:44 +02:00
Dr. Dominik Jain 66cbe31045 Merge pull request #1135 from oraios/read_only_memories
Feature: configure read-only memories through regex patterns
2026-03-07 00:41:41 +01:00
Dominik Jain eee2f12a74 Add migration of 'edit_global_memories' setting 2026-03-06 23:52:27 +01:00
Dominik Jain 4dc617ae6b Improve read-only memory handling, introducing MemoriesList 2026-03-06 23:47:10 +01:00
Michael Panchenko 57fc582606 Merge branch 'refs/heads/main' into read_only_memories
# Conflicts:
#	src/serena/config/serena_config.py
#	src/serena/project.py
2026-03-06 23:23:11 +01:00
Dominik Jain 751f4ef906 TestProjectSerenaDataFolder: Wait for project to be fully ready before returning it 2026-03-06 20:46:15 +01:00
Dominik Jain b89522f363 Fix: Deduplication of ignore patterns shuffled patterns, breaking intended semantics
Fixes #1138
2026-03-06 19:34:04 +01:00
Dr. Dominik Jain 9755ba596f Merge pull request #1134 from oraios/project-local-yml
Add support for project.local.yml
2026-03-05 22:39:43 +01:00
Michael Panchenko 60d4cba822 Feature: configure read-only memories through regex patterns 2026-03-05 22:19:42 +01:00
Dominik Jain 45f1dcc3ae Mark TestFSharpLanguageServer.test_go_to_definition with xfail 2026-03-05 21:55:22 +01:00
Dominik Jain f2ded67464 Improve structure of change log 2026-03-05 21:55:22 +01:00
Dominik Jain 5b8c84f883 Update change log to mention new features pertaining to project handling [skip ci] 2026-03-05 21:55:22 +01:00
Dominik Jain d63a2e801e Add template for project.local.yml and copy it when creating a project 2026-03-05 21:55:21 +01:00
Dominik Jain 75cf842180 Add support for project.local.yml 2026-03-05 21:55:21 +01:00
Alberto SimõesandDominik Jain 58efe413e3 Merge pull request #1131 from cx-alberto-simoes/feature/configurable-serena-folder-location
feat: add configurable project_serena_folder_location setting

Add a new `project_serena_folder_location` setting to `serena_config.yml` that allows configuring where the per-project `.serena` data folder (memories, caches) is stored, with `$projectDir` and `$projectFolderName` placeholder support (default: `$projectDir/.serena`, preserving current behavior).

Resolves #1123

Co-authored-by: Dominik Jain <dominik.jain@oraios-ai.de>
2026-03-05 21:09:13 +01:00
Dominik Jain 4353fd34dd Merge pull request #1104 from oraios/query-project-tool
Add QueryProjectTool and ListQueryableProjectsTool
2026-03-05 19:52:24 +01:00
Dominik Jain 8f3a31768e Merge remote-tracking branch 'origin/main' into query-project-tool
Conflicts:
	src/serena/agent.py
	src/serena/project.py
2026-03-05 19:08:10 +01:00
Dominik Jain b9a1ce9c3e Adjust exception wording to improve generality [skip ci] 2026-03-05 19:04:29 +01:00
Dominik Jain b805b58fe3 Pin ruff 2026-03-05 17:05:44 +01:00