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>
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
* 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)
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)
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>
When multiple MCP servers start within the same second, they derive the
same log filename from datetime_tag() (second-level precision only).
Both then open the file with mode='w', causing one server's logs to be
truncated and all subsequent output to be interleaved.
Appending os.getpid() to the filename guarantees uniqueness across
concurrent processes regardless of timing.