* Skip and warn on malformed project configs at startup
`SerenaConfig.from_config_file` iterates the `projects:` list in
`serena_config.yml` and calls `ProjectConfig.load(path)` with no
exception handling. A single malformed `.serena/project.yml`
(missing required key, bad language string, YAML syntax error,
etc.) raises out of the master loader and aborts MCP server
startup before any client handshake or tool registration. Other
projects in the list — even ones that would load cleanly — become
unreachable.
This matches the failure mode behind #997: the schema-migration
shim closed the *cause*, but the surrounding loader still has no
isolation, so the next class of `project.yml` malformation will
take the server down again.
Wrap the `ProjectConfig.load(path)` call in the master loop with
a narrow try/except that logs a warning and continues, matching
the existing skip-with-warning pattern used a few lines above for
inaccessible paths and missing project.yml files. One bad project
becomes one skipped project, not a server-down event.
A new test under `TestSerenaConfigFromConfigFileRobustness`
registers two projects (one healthy, one with invalid YAML),
asserts that `from_config_file` returns successfully, that only
the healthy project ends up registered, and that a warning naming
the bad path is logged.
---------
Co-authored-by: Michael Panchenko <35432522+MischaPanch@users.noreply.github.com>
The `Install R language server` step started failing on the new
`ubuntu-24.04` runner image (`ubuntu-latest`) because the R `fs`
package falls back to a source build and its `configure` step calls
`pkg-config --exists libuv`, which fails with:
Package libuv was not found in the pkg-config search path.
fatal error: uv.h: No such file or directory
ERROR: configuration failed for package 'fs'
That cascades through `pkgload` -> `roxygen2` -> `languageserver`,
making `test/solidlsp/r/test_r_basic.py` error out at setup with
`RuntimeError: R languageserver package is not installed`.
Verified locally on a clean `ubuntu:24.04` container: `libuv1-dev`
is not preinstalled but is available in the `noble` apt repo
(version `1.48.0-1.1build1`). Installing it makes
`pkg-config --exists libuv` succeed (`pkg-config --modversion libuv`
returns `1.48.0`), which is exactly what the `fs` configure script
needs.
Linux-only via `if: runner.os == 'Linux'` so the step is a no-op
on macOS and Windows runners (libuv is bundled differently there
and `fs` is delivered as a binary).
Refs: #1419
Adding more instructions and stressing them even more. The extension was suggested by claude code, then edited by me. This alone is not enough at the time of writing, the system prompt needs to be overridden for serena to be called consistently
* Fix: Expert deadlock by sending didOpen(mix.exs) before readiness wait
Expert's build pipeline only starts after receiving a textDocument/didOpen
notification. Without it, Serena waited 300 s for $/progress signals that
Expert never emitted, causing a deadlock on every cold start.
* feat: add JSON language server support via vscode-json-languageserver (fixes#1391)
Add support for JSON files using the `vscode-json-languageserver` npm package
from Microsoft. This provides document symbol navigation and hover information
for JSON files.
The implementation follows the existing YAML language server pattern:
- Auto-installs `vscode-json-languageserver` via npm on first use
- Requires Node.js and npm
- Marked as experimental (must be explicitly specified)
Co-Authored-By: Octopus <liyuan851277048@icloud.com>
Co-authored-by: octo-patch <octo-patch@github.com>
Co-authored-by: Michael Panchenko <35432522+MischaPanch@users.noreply.github.com>
Cause: Implementation of text_utils.search_text
Serena's tools use 0-based line numbers, and this information
is now also centrally added to the instructions (manual).
(including web view on Windows)
* Remove heartbeat (browsers no longer allow windows to be closed anyway)
* Prevent parallel requests pertaining to the executions queue
Both measures eliminate parallel requests (which, apparently, can lead
to memory leaks in Chromium-based browsers; no such observations in Firefox).
Fixes#1389
* Keep the replace_content tool enabled
* Instruct the agent to use Serena's editing tools, especially
when editing code that was read through Serena
This is in reaction to Claude Code's editing tool denying edits
without corresponding prior reads
Resolves#1400