Release / / with v2.0.0
Serena v2.1.0
Combine code navigation and editing operations in a Python REPL call.
Share
Before you upgrade to v2.1.0
3 to fixCustom tool clients must obtain the Serena session from `initial_instructions` and pass `session` to session-dependent tools such as `activate_project` and `serena_repl`; v2.0.0 called this parameter `session_id`.
For v2 distributions, follow GPL-3.0-or-later for the Serena application and combined package. SolidLSP remains MIT; earlier releases and commits retain MIT licensing.
Read the evidence
Untrusted projects no longer follow symlinks during traversal; explicit paths outside the root are rejected. Configure `trusted_project_path_patterns` with an intended project root to enable trusted-project link handling.
Untrusted projects use Serena's managed TypeScript installation instead of project-local TypeScript. Explicit symbol/diagnostic requests reject outside-root symlink targets; discovery skips symlinks in untrusted projects.
Read the evidence
Select `julia_fatou` to use the automatically installed Fatou server as an alternative to LanguageServer.jl; `uv`/`uvx` must be on PATH.
Read the evidence
Erlang analysis now uses ELP instead of archived erlang_ls; Serena downloads the pinned release. Erlang/OTP is required; function names remain `name#arity`.
Codex supports plan-mode enforcement hooks; add `serena-hooks reset` to `PostToolUse` for Serena tools to clear reminders. Shell-based reads/searches now count for Claude Code, CodeBuddy and ZCode reminders.
Read the evidence
An unset `web_dashboard_open_on_launch` shows a welcome pane for choosing startup behavior; automatic opening continues until configured. Untrusted projects are marked beside the active project name.
Read the evidence
Missing or empty `auth_secret` is replaced with a generated, persisted UUID for communication between Serena components; existing secrets are preserved.
Read the evidence
Set `terminate_bloop_on_stop: true` to stop Bloop daemons after Metals shuts down; it defaults to false because another Metals client may share the daemon.
Read the evidence
Java settings can control Maven/Gradle import and autobuild; `java.custom_jre_path` selects an external Java executable. TypeScript disables automatic type acquisition; VTS preserves explicit settings.
Read the evidence
Installed Python adapters can register external language servers through `serena.language_servers`; install the adapter and explicitly select its ID in `project.yml`.
Read the evidence
What changed in v2.1.0
The new REPL interface executes Python through `serena_repl`, with separate API inclusion settings. v2 also changes licensing and project trust behavior; session-dependent tools now require an explicit `session` parameter.
Also: Add Astro and VB.NET analysis, native TypeScript 7, ZCode and DSH integrations; restore Claude Desktop chat and HTTP logs.
Serena v2.0.0–v2.1.0 via uv; Python 3.11–3.14. REPL tool is marked beta; language-specific runtimes apply. Application and combined package are GPL-3.0-or-later.
New things you can do
Combine code navigation, editing and other Serena operations in Python through one REPL tool.
Navigate Astro components and find references across Astro and TypeScript or JavaScript files.
Read the evidence
Navigate symbols in VB.NET and mixed VB.NET/C# solutions.
Analyze TypeScript code with the native TypeScript 7 language server.
Analyze PHP code with the Devsense PHP language server.
Read the evidence
Analyze Lua code with EmmyLua Analyzer instead of the default Lua backend.
Download language-server runtime dependencies before using Serena in a restricted-network environment.
Read the evidence
Remove a project from Serena's registered project list by name or path.
Read the evidence
Connect ZCode to Serena through its dedicated context and client hooks.
Read the evidence
Integrate DeepSeek Harness sessions with Serena activation, reminders and cleanup hooks.
Read the evidence
Fixed and improved
Claude Desktop chat mode works again after the session-parameter rename; MCP-registry installs generate the correct launch command and can auto-activate projects.
Read the evidence
Parallel project registrations no longer overwrite one another. `project health-check` now fails when reference lookup raises; `project index` writes UTF-8 logs for non-ASCII paths.
Read the evidence
Dashboard and file logs keep updating with SSE or streamable HTTP.
Read the evidence
The macOS tray manager no longer crashes when refreshing its menu.
Read the evidence
File edits use atomic saves; `replace_lines` applies one edit rather than deleting first. Invalid search regexes now raise errors, and single-project `read_only` applies to the base tool set.
Read the evidence
Stale preview occurrence IDs are rejected. Unmatched optional `$!N` groups expand to empty text; undefined groups raise an error. Literal replacements preserve `$!N` verbatim; newline-ending previews show the correct range.
Read the evidence
Memory saves are atomic. Moves check both source and destination permissions; renames propagate references only into writable memories in tool contexts.
Read the evidence
TypeScript cross-file queries wait for newly opened projects and report tsserver crashes instead of empty references. Clojure queries refresh after external edits; same-named callers are no longer dropped as imports.
Read the evidence
Startup triggers Angular project loading before waiting. Extra workspace folders are supported; references combine Angular template usages and TypeScript callers, and TypeScript diagnostics use the companion server.
Read the evidence
Angular, Vue and Svelte JSX/TSX symbol ranges no longer truncate multiline expressions; Svelte JSX/TSX edits stay synchronized.
Read the evidence
sbt 2 projects can start their build server; cross-file queries wait for Metals work using configurable indexing timeouts instead of a fixed five seconds.
Read the evidence
Kotlin servers retain executable archive permissions and isolate concurrent indexes. C# discovers new files in loaded projects, respects ignored projects, and finds tuple-typed fields/properties by their real names.
Read the evidence
Intelephense `maxMemory` now limits the Node heap and `maxFileSize` sets `intelephense.files.maxSize`.
Read the evidence
Dart waits for initial indexing; macOS Solidity diagnostics use an isolated state directory. AL activation supports both extension executable layouts; GDScript body replacement preserves the separating blank line.
Read the evidence
Concurrent sessions serialize configured IDE launches and wait for the plugin server before proceeding.
Read the evidence
Failed workspace-scan probes no longer permanently suppress scanning and retries for the rest of the session.
Read the evidence
Seeded by @iluxav with Codex, from the release's public sources. Each change links to its evidence.