Commit Graph
3121 Commits
Author SHA1 Message Date
Dr. Dominik Jain ea268a47ee Merge pull request #1703 from oraios/delete-symbol-clean-empty-lines
Add heuristic to remove superfluous empty lines after deleting a symbol
2026-07-17 17:00:43 +02:00
Dominik Jain d0aea5fd06 Update test snapshots following updates to symbol delete logic, improving base Python file
(which contained atypical comments)
2026-07-17 16:58:21 +02:00
Dominik Jain c379c30af4 Add heuristic to remove superfluous empty lines when deleting a symbol #1697 2026-07-17 16:58:21 +02:00
Dominik Jain 736e4f182d Add mcp version change to changelog 2026-07-17 15:51:14 +02:00
Dominik Jain 1940fc6d43 JetBrainsCodeEditor: Use FileProxy to support reading of external files
This adds support for external files to JetBrainsFindDeclarationTool

CodeEditor: Guard use of edited_file_context against use with ext. files
2026-07-17 14:27:47 +02:00
dependabot[bot] 04445da438 Bump mcp from 1.27.0 to 1.28.1 in the uv group across 1 directory
---
updated-dependencies:
- dependency-name: mcp
  dependency-version: 1.28.1
  dependency-type: direct:production
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-17 13:31:00 +02:00
Michael Panchenko ad2fdf1fa6 Merge pull request #1708 from ebarkhordar/fix/search-text-exclusive-end-line
fix(search): do not mark the following line as matched when a match ends at a line break
2026-07-17 10:27:28 +02:00
Ehsan Barkhordar 844535f623 fix(search): do not mark the following line as matched when a match ends at a line break
`search_text` mapped the match's exclusive end index to a line number via
`get_line_from_index`, which resolves an index at a line start to the following
line. A match ending with a newline was therefore attributed one line too many,
and `context_lines_after` was shifted by the same amount.
2026-07-17 07:27:22 +00:00
Dominik Jain c7ee15c016 Fix f-string 2026-07-17 06:05:50 +02:00
Dr. Dominik Jain ceac7c0c67 Merge pull request #1702 from oraios/jb-read-ext-file
JetBrains: External file processing
2026-07-17 05:16:22 +02:00
Dominik Jain 956c0333e2 Merge remote-tracking branch 'origin/main' into jb-read-ext-file
Conflicts:
	CHANGELOG.md
2026-07-17 05:14:36 +02:00
Ehsan e8a550763b fix: normalize line endings in read_file's charset_normalizer fallback (#1706)
FileUtils.read_file has two return paths with different newline semantics.
The primary path, open(file_path, encoding=encoding).read(), uses the default
newline=None and therefore applies universal newlines, so CR never reaches
callers. The charset_normalizer fallback decodes the raw bytes instead
(match.raw.decode(match.encoding)), which performs no newline translation, so
any file that fails to decode with the project's configured encoding re-enters
Serena carrying its CR characters.

Normalize to LF at the fallback's return, matching the primary path.
2026-07-17 05:11:26 +02:00
Dominik Jain f3754c922d Improve documentation of line ending handling 2026-07-17 05:03:52 +02:00
Dominik Jain f3cf5d3f8d JetBrains: Allow external files from dependencies (e.g. "<ext:FileUtil.class|472e0a13>") to be
- read via `ReadFileTool`
  - searched via `SearchForPatternTool`
when using plugin version 2023.3.3+ (yet unreleased)

This is enabled via JetBrainsFileProxy (which reads the file through the IDE)
2026-07-16 17:04:58 +02:00
Dominik Jain f1486f7d60 Add JetBrainsPluginClient.read_file 2026-07-16 15:30:37 +02:00
Dominik Jain 063f872a01 Remove unused type ignore 2026-07-16 15:30:17 +02:00
Dr. Dominik Jain 1820240e97 Merge pull request #1700 from oraios/prepare-release-1.6.0
Prepare release 1.6.0
2026-07-16 13:59:05 +02:00
Dominik Jain bfcab428d2 Set version to v1.6.1.dev0 2026-07-16 11:03:05 +02:00
Dominik Jain 93b9544ea9 Release v1.6.0 2026-07-16 11:03:04 +02:00
Dominik Jain 41859b5fe1 Add news item for v1.6.0 release 2026-07-16 11:02:58 +02:00
Michael Panchenko 465c5eb627 Merge pull request #1696 from xormania/fix/ci-job-timeout
CI: add timeout-minutes backstop to the pytest matrix job
2026-07-16 10:35:29 +02:00
Ehsan Barkhordar 08bc0615f5 fix(tools): make read_file report the line numbers the editing tools use
read_file determined line indices via Python's splitlines, which breaks on
\f, \v, \x1c-\x1e, \x85, U+2028 and U+2029 in addition to the LSP-compliant
line breaks counted by delete_lines/replace_lines. In a file containing any
of those characters the indices reported by read_file referred to different
physical lines than the editing tools operate on, so an edit made after the
required read_file could silently hit the wrong line.

Use TextUtils.split_lines, as already applied to search_text and
MatchedConsecutiveLines.from_file_contents. Files whose line breaks are all
LSP-compliant are decomposed exactly as before.
2026-07-16 01:31:07 +02:00
AmirF194 cb38f6f82a fix(editing): delete last line of a file without a trailing newline
delete_lines/replace_lines address the position one line past the last line
(line == number of lines, col 0). get_index_from_line_col cannot resolve that
position when the file has no trailing newline (no closing newline to count),
so delete_text_between_positions raised InvalidTextLocationError and the delete
crashed on a very common file shape.

Clamp that past-EOF end position to end-of-file in delete_text_between_positions,
mirroring the guard insert_text_at_position already has. A file with no trailing
newline now deletes its last line identically to one with a trailing newline.

Adds TextUtils unit tests and a CHANGELOG entry.
2026-07-15 20:22:25 +02:00
Dominik Jain 755de59f16 Merge remote-tracking branch 'origin/main' into tool-desc-update 2026-07-15 20:18:26 +02:00
Dominik Jain 08b87bb03d JetBrainsClient: Add version guards for inspections calls 2026-07-15 20:17:56 +02:00
Dominik Jain 1d4c460dad JetBrains: Add version guard for find symbol with wildcard 2026-07-15 20:14:29 +02:00
zerone0xandOpenAI Codex e79f170d30 fix: reject malformed brace globs
Fixes #1690

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-07-15 19:57:56 +02:00
Dr. Dominik Jain c1c1604d69 Merge pull request #1691 from oraios/line-counting
Apply consistent, LSP-compliant line counting
2026-07-15 19:50:36 +02:00
Dominik Jain ba5ade0d4e Add location information when raising InvalidTextLocationError 2026-07-15 19:29:16 +02:00
Dominik Jain c80d76abe9 Fix edge case in insert_text_at_position when inserting in line beyond actual content
(insertion coordinates were not adjusted to true end coordinates)
2026-07-15 19:29:16 +02:00
Dominik Jain d4e99dc003 Improve performance of TextStepper,
stepping line by line instead of character by character,
delegating the scan for line breaks to native string search
(~15-100x speedup for a full pass over typical source files)
2026-07-15 19:00:31 +02:00
Dominik Jain 97c9b8c05d Apply TextUtils, ensuring consistent line numbering
* in search_text
* in MatchedConsecutiveLines.from_file_contents
2026-07-15 19:00:31 +02:00
Dominik Jain 9208a3ae87 Improve line/column computations, adhering to LSP standard
* Add helper class TextStepper to facilitate computations
* Reimplement TextUtils methods based on TextStepper
* Adhere to LSP definition of newlines being defined by either "\n", "\r\n" or "\r" on its own.
  Previously, only "\n" was considered.
* Add util method TextUtils.split_lines, allowing usages of Python's splitlines to be replaced
2026-07-15 19:00:31 +02:00
Dr. Dominik Jain 8e90d923fb Merge pull request #1685 from oraios/async-project-config-autogen
Use asynchronous project language determination to speed up MCP startup
2026-07-15 18:47:19 +02:00
xormania 04d328c748 CI: add timeout-minutes backstop to the pytest matrix job
The cpu matrix job had no timeout-minutes, so a hung job runs until
GitHub's default 6-hour limit. This is not hypothetical: on run
29064865197 (2026-07-10), the native (ubuntu-latest) job hung and ran
from 02:36:34 to 08:36:50 before GitHub cancelled it at exactly the
6-hour cap, blocking the PR's status the whole time and burning a
runner for 6 hours.

Healthy runs are far below the new limit: across the 8 most recent
successful runs of this workflow, the slowest job was 16 minutes
(niche on ubuntu-latest), with catch-all on windows-latest typically
11-14 minutes. 60 minutes leaves ~4x headroom for cache-cold runs
(language-server downloads, npm installs) while cutting the worst-case
hang from 6 hours to 1.

Part of the timeout-hardening discussed in #1695.
2026-07-14 23:15:06 -04:00
Dr. Dominik Jain 1e63867224 Merge pull request #1692 from oraios/refactor-ls-interface-creation
Clean up LanguageServerInterface creation
2026-07-14 22:30:20 +02:00
Dominik Jain 29575785eb Clean up LanguageServerInterface creation 2026-07-14 21:15:23 +02:00
Dr. Dominik Jain 68a2db1ba0 Merge pull request #1693 from oraios/refactor-dep-provider-module
Refactor: dependency provider module
2026-07-14 21:06:25 +02:00
Dominik Jain 58477ffd64 Move dependency providers to separate module 2026-07-14 20:12:42 +02:00
Dominik Jain cb1a690419 Split history src/solidlsp/ls.py to src/solidlsp/dependency_provider.py - restore name of source-file 2026-07-14 20:08:59 +02:00
Dominik Jain 7550a009ff Split history src/solidlsp/ls.py to src/solidlsp/dependency_provider.py - resolve conflict and keep both files 2026-07-14 20:08:59 +02:00
Dominik Jain f200eef452 Split history src/solidlsp/ls.py to src/solidlsp/dependency_provider.py - rename source-file to git-split-temp 2026-07-14 20:08:58 +02:00
Dominik Jain 3d3739f6bd Split history src/solidlsp/ls.py to src/solidlsp/dependency_provider.py - rename file to target-name 2026-07-14 20:08:58 +02:00
Dominik Jain 4189e8acdb Use asynchronous project language determination to speed up MCP startup
When auto-generating a Serena project configuration at startup, compute the languages
in a background thread and update them later to avoid delays of the MCP server startup.
Where completeness of the language list matters (i.e. language server initialisation),
a corresponding event is awaited to ensure completeness.
2026-07-14 14:33:37 +02:00
Dominik Jain 286a624a6a Improve dependency provider usage instructions 2026-07-14 11:05:51 +02:00
Michael Panchenko c6029c6fb2 Minor fix in docs claude-desktop -> desktop-app 2026-07-14 10:41:43 +02:00
Michael Panchenko 30c84f15e6 Pyright: bump timeout for waiting for initial analysis from 5s to 60s. 2026-07-14 10:38:25 +02:00
Dominik Jain 98966c6a59 Remove incorrect DTOs for JetBrains /runInspectionsOnFile call 2026-07-13 22:39:03 +02:00
Dominik Jain a3de03b556 Fix: jet_brains_run_inspections returned incorrectly transformed data
The tool incorrectly applied the pythonification, even though it returns data
not only in values but also in keys
2026-07-13 22:30:55 +02:00
weiconghe 9825316c23 feat: add QML language support via Qt's qmlls (#1635) 2026-07-13 13:54:23 +02:00