- 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>
* 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
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.
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.
* 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