Commit Graph
2846 Commits
Author SHA1 Message Date
d3454bc39e Dashboard: UI polish (typography, palette, modal cleanup)
- Switch UI font to Inter, keep monospace only for code/logs/paths/
  identifiers (loaded via Google Fonts; system fallbacks)
- Refine the light/dark palette with softer borders, clearer text
  hierarchy, and a more nuanced shadow/elevation system; introduce
  --bg-elevated, --border-strong, --shadow-elevated tokens; retain the
  orange accent
- Introduce a consistent spacing scale (--space-1..6) and apply it across
  sections, modals, and controls
- Extract shared modal CSS classes (.modal-info, .modal-hint,
  .modal-prompt, .modal-field, .modal-input, .modal-select,
  .modal-textarea, .modal-actions, .btn-secondary) and strip duplicated
  inline styles from all seven modals; add an accent-colored focus ring
  for inputs/textareas and a subtle backdrop blur
- Replace the native <select> in Add Language with a filterable combobox:
  type to filter, keyboard navigation (Up/Down/Enter/Esc), substring
  highlight, click-outside to close; the typed value is validated against
  the available languages list before submission
- Update CHANGELOG accordingly

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Dominik Jain <dominik.jain@oraios-ai.de>
2026-05-12 16:52:13 +02:00
Dominik Jain 2e05602895 Add news item for v1.3.0 release 2026-05-12 15:34:45 +02:00
Dominik Jain 81a036de50 Fix Serena's own project.yml (remove clojure) 2026-05-12 01:37:20 +02:00
Dominik Jain ccc80e7253 Improve release mechanism (two stages: draft release + publish to PyPi upon conversion) 2026-05-11 22:18:47 +02:00
Dominik Jain 557337fdaa Set version to v1.3.1.dev0 2026-05-11 20:31:28 +02:00
Dominik Jain 4521a5373f Release v1.3.0 2026-05-11 20:31:28 +02:00
Dominik Jain 6974a24b24 Fix test 2026-05-11 20:31:08 +02:00
Dominik Jain a1d874b29e Fix MCP server lifecycle issue
In HTTP/SSE mode, a client disconnection triggered a partial agent shutdown
(project deactivation, dashboard manager & GUI viewer shutdown)
2026-05-11 19:42:03 +02:00
Dominik Jain 65474d3d3b bump_version: Create new dev version after creation of a release version 2026-05-11 19:14:18 +02:00
Dr. Dominik Jain da5783a670 Merge pull request #1466 from oraios/lsp-transport
Refactor LanguageServerProcess, separating the communication interface from the concrete implementation
2026-05-11 16:29:54 +02:00
Dominik Jain e23dd667b0 Clean up: Minor improvements in logging/docstrings 2026-05-11 16:27:56 +02:00
Dominik Jain 499eb2c5b0 Improvements in SolidLanguageServer creation/lifecycle management
* Add method _create_language_server_interface to allow different
  interfaces to be used in subclasses (creates StdioLanguageServer
  by default)
* Fix method order, moving creation methods back to the top
* Set server_started flag to False upon stop
* Inline method _start_server_process
2026-05-11 11:47:48 +02:00
Dominik Jain 5c140d9276 Refactoring: Move process termination utility functions to subprocess_util 2026-05-11 11:30:05 +02:00
Michael Panchenko 2f34cc7a44 Changelog [ci skip] 2026-05-11 11:07:25 +02:00
Данилов Роман fb9c822178 feat: add BSL (1C:Enterprise) language server support (#1430)
Required bumping of java to 21 in CI
2026-05-11 10:09:51 +02:00
Dominik Jain 4e78a963b9 Consolidate stdio LS termination logic
Apply the process tree signalling functionality that was already implemented
in StdioLanguageServer (previously LanguageServerProcess) but not used.

Remove the process tree termination from the HLSL language server accordingly.
2026-05-11 09:52:53 +02:00
Dominik Jain 89d786f799 SolidLanguageServer: Rename method start_server to start_server_context for clarity and apply it in conftest 2026-05-11 09:52:53 +02:00
Dominik Jain 424cd34582 Move subprocess-specific shutdown code from SolidLanguageServer to StdioLanguageServer 2026-05-11 09:52:53 +02:00
Dominik Jain d48bfd242f Refactor LanguageServerProcess, separating the communication interface from the concrete implementation
* Rename LanguageServerProcess to LanguageServerInterface (now abstract),
   - dropping stdio-specific methods
   - cleaning up documentation, etc.
* Move stdio-specific implementation to StdioLanguageServer
2026-05-11 09:50:26 +02:00
ChasLui 737ef76723 Typo 2026-05-10 14:48:25 +02:00
Vitalijs Kuprins 249f6b07f9 Add Ada / SPARK language support via AdaCore Ada Language Server (#1461)
Introduces Language.ADA backed by AdaCore's Ada Language Server (ALS),
the standard LSP-compliant server for Ada — and SPARK, since both share
the .ads/.adb file extensions and ALS distinguishes SPARK by source-level
pragmas/aspects rather than by file type.

ALS is auto-downloaded from AdaCore's GitHub releases (linux-x64/arm64,
darwin-x64/arm64, win32-x64) using the LanguageServerDependencyProviderSinglePath
pattern, with SHA256 verification per-platform. Users can override the
downloaded binary by setting ls_specific_settings.ada.ls_path to a
pre-installed ada_language_server (e.g. from Alire, GNAT Studio, or the
VS Code Ada extension).

Test repo is a minimal multi-file GNAT project (default.gpr, helper.ads,
helper.adb, main.adb). Tests modelled on test_php_basic.py: ls_running,
find_definition (within/across), find_references (within/across),
find_symbol, document_symbols, hierarchical document symbols,
bare-symbol-name sanity check.
2026-05-09 17:49:12 +02:00
Michael Panchenko ab98ea6762 Reminder hook now also counts and fires on usages of serena's non-symbolic tools 2026-05-08 12:08:26 +02:00
Michael Panchenko a4092ca276 SearchForPattern: validate relative_path before search 2026-05-08 11:14:35 +02:00
dependabot[bot] 66a6c508f8 Bump python-multipart in the uv group across 1 directory
Bumps the uv group with 1 update in the / directory: [python-multipart](https://github.com/Kludex/python-multipart).


Updates `python-multipart` from 0.0.26 to 0.0.27
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-version: 0.0.27
  dependency-type: direct:production
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 11:07:05 +02:00
Michael Panchenko 077dba4d21 Clojure LSP: improve module resolution by parsing source path providers 2026-05-08 01:40:17 +02:00
Michael Panchenko 42b5500efc Fix missing version in JDTLS workspace hash 2026-05-08 00:29:22 +02:00
Michael Panchenko 6882f2e1f0 CI: use a different zig install action 2026-05-06 19:52:47 +02:00
0e3f665976 Cpp extensions (#1451)
* Add more cpp extensions

* Allow FilenameMatcher to be case insensitive
---------

Co-authored-by: Darin Morrison <darinmorrison@gmail.com>
Co-authored-by: silvanshade <silvanshade@users.noreply.github.com>
Co-authored-by: MischaPanch
2026-05-06 19:04:36 +02:00
Dominik Jain b28f705fee Exclude new LSP tools in JetBrains mode 2026-05-05 17:59:43 +02:00
Michael Panchenko 626e370a89 Merge pull request #1447 from oraios/hook_extension
Hook extension
2026-05-05 17:35:39 +02:00
Michael Panchenko 9f4e29c8b0 Changelog, readme, project.yml - minor changes 2026-05-05 17:31:15 +02:00
Michael Panchenko 53d5e6e898 Merge branch 'main' into hook_extension
# Conflicts:
#	src/solidlsp/ls_config.py
2026-05-05 17:24:30 +02:00
a-simeshin ba6170bab1 feat(jdtls): surface Lombok-generated methods in document symbols, bump jdtls version (#1434)
* feat(jdtls): surface Lombok-generated methods in document symbols

JDTLS' DocumentSymbolHandler filtered out every SourceMethod where
JDTUtils.isGenerated() was true, so Lombok-synthesised methods (getX/setX,
builder(), equals/hashCode/toString, withX, fluent accessors, ...) never
reached the LSP client. As a result Serena's symbol-aware tools — find_symbol,
get_symbols_overview, replace_symbol_body, insert_before_symbol,
insert_after_symbol — could not see, address or edit any Lombok-generated
member; only search_for_pattern / replace_content (text-based) worked.

Upstream introduced an opt-in preference java.symbols.includeGeneratedCode
in eclipse-jdtls/eclipse.jdt.ls#3706 (merged 2026-02-24) and surfaced it
through redhat-developer/vscode-java#4335. First vscode-java release with
the new JDTLS build is v1.53.0 (2026-02-26). Serena was pinned to v1.42.0-561,
well before the fix existed.

Changes:
- New ls_specific_settings.java.lombok_show_generated setting (default true);
  forwarded to JDTLS as java.symbols.includeGeneratedCode in initialize
  params. Older servers ignore the unknown preference key silently.
- Bump bundled vscode-java DEFAULT 1.42.0-561 -> 1.54.0-923 (brings JRE
  21.0.10, Lombok 1.18.39 and Equinox launcher 1.7.100). INITIAL stays at
  1.42.0-561, so per the per-version install-dir convention from #1438 the
  new build lands in vscode-java-1.54.0-923/ while legacy vscode-java/
  caches and any explicit vscode_java_version: '1.42.0-561' override keep
  working.
- New VsixResourcePaths dataclass + INITIAL/DEFAULT_VSCODE_JAVA_PATHS pin
  the JRE / Lombok / launcher filenames *inside* the VSIX. Without this,
  bumping the archive would break users on legacy 1.42.0-561 because
  resource paths inside the archive change between releases. Resolution
  mirrors SHA pinning: known versions get their pinned paths; any other
  version raises SolidLSPException with a pointer to upstream-jdtls mode
  (which derives paths dynamically and needs no pinning).
- Drop dead 'static/vscode-java/...' placeholder in initialize params; the
  real runtimes[] is overwritten below from runtime_dependency_paths
  .jre_home_path, which is correct in both default-VSIX and upstream-jdtls
  modes.
- Test fixtures: Lombok provided dep in test_repo/pom.xml plus
  LombokModel / FluentLombokModel / DefaultGreeter covering @Data, @Builder
  (toBuilder=true), @With, @Delegate, @AllArgsConstructor, @NoArgsConstructor
  and @Accessors(fluent=true). Regression test in test_java_basic.py
  asserts every generated-method shape lands in document symbols.

Closes #1432
2026-05-05 15:06:04 +02:00
3122384822 feat: Add Angular, HTML, and SCSS / Sass language servers (#1439)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Pavlo Basanets <Pavlo_Basanets@epam.com>
2026-05-05 14:33:51 +02:00
Michael Panchenko e643e91cd7 Merge pull request #1418 from meirLixen/feature/cross-package-typescript-references
Add cross-package reference support via additional_workspace_folders
2026-05-04 20:17:03 +02:00
Michael Panchenko 4bd60f18d4 Tests: removed csharp tests relying on mocks 2026-05-04 19:39:58 +02:00
Michael Panchenko 6eb3587dcc Hooks: adjust output to work for codex, extended docs 2026-05-04 17:51:21 +02:00
Michael Panchenko 4b0865c33b Hooks: improve heuristics for code file detection 2026-05-04 17:51:21 +02:00
Michael Panchenko 8b858d1cab FilenameMatcher: fix in new method string_contains_relevant_filename 2026-05-04 17:48:51 +02:00
Andrew Newell ce3a67b42c fix: search subdirectories for mix.exs to prevent Expert deadlock in monorepos (#1444) 2026-05-04 16:40:38 +02:00
Michael Panchenko d2651bc1a6 Merge branch 'main' into hook_extension
# Conflicts:
#	CHANGELOG.md
2026-05-04 14:54:44 +02:00
Michael Panchenko 2c03fe3318 Docs, minor 2026-05-04 14:30:40 +02:00
Michael Panchenko 64e604630e Merge branch 'main' into feature/cross-package-typescript-references
# Conflicts:
#	CHANGELOG.md
#	src/solidlsp/ls.py
2026-05-04 14:26:20 +02:00
Michael Panchenko f0c1568e71 LS: improved handling of additional workspace folders
Previously, a field was set outside init and generally a bunch of related code was unnecessary and poorly named.
2026-05-04 14:22:21 +02:00
meir lixenbrg 862af5b42c Add documentation for additional_workspace_folders
- Add 'Additional Workspace Folders' section to project configuration docs
- Add cross-reference note to TypeScript LS settings section
- Include configuration example and usage notes
2026-05-04 14:22:20 +02:00
meir lixenbrgandClaude Opus 4.6 34575f9898 Add support for additional_workspace_folders, currently only for TS
The TypeScript language server was initialized with a single workspace folder,
so tsserver could not discover references across sibling packages in a monorepo.

This adds an `additional_workspace_folders` setting in
`ls_specific_settings` that accepts a list of directory paths.
Each folder is registered as an LSP workspace folder during initialization,
and a representative .ts file is opened from each to trigger tsserver project
loading. This enables `find_referencing_symbols` and `request_references` to
return results from across package boundaries.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-04 14:22:20 +02:00
Michael PanchenkoandClaude Opus 4.7 024d31ba22 fix(lsp): omit optional Content-Type header from outgoing messages (#1442)
Per the LSP spec, Content-Type is optional and defaults to
application/vscode-jsonrpc; charset=utf-8 (the exact value we were
sending). Spec-compliant servers behave identically with or without it.

In practice some servers have stricter parsers. Notably, Godot's
GDScript LSP (LSPeer::handle_data in
modules/gdscript/language_server/gdscript_language_protocol.cpp)
extracts the body length via header.substr(16).to_int() and silently
drops messages that contain any header beyond Content-Length.

Sending only Content-Length is interoperable across the spec-compliant
servers we use today and unblocks Godot's LSP. Also tightens the type
signature of create_message from tuple[bytes, bytes, bytes] to
tuple[bytes, bytes] now that there is no Content-Type element.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 11:43:04 +02:00
Sam CarsonandMichael Panchenko 16d1a30397 hooks: extend auto-approve to Claude Code's auto permission mode (#1445)
* hooks: extend auto-approve to Claude Code's auto permission mode

Closes #1386

---------

Co-authored-by: Michael Panchenko <35432522+MischaPanch@users.noreply.github.com>
2026-05-04 11:27:09 +02:00
Dr. Dominik Jain c5a27ed9ec Merge pull request #1438 from oraios/fix_downloaded_dependency_versioning
Fix downloaded dependency versioning
2026-05-02 20:56:45 +02:00
Dominik Jain 3a0afadf47 Improve project creation/config docs 2026-05-02 20:53:20 +02:00