Joshua Shanks
f76ed700fa
Fix X11/XCB crash when running MCP server in empty directories ( #278 )
...
Summary
Fixes X11/XCB crash when running serena-mcp-server in directories without source files
Adds headless environment detection to prevent GUI operations in SSH/WSL/Docker environments
Improves error messages to provide clear guidance when no source files are found
Problem
When running serena-mcp-server --context ide-assistant --project /empty/dir in a headless environment (SSH, WSL, Docker), the application would crash with X11/XCB errors:
[xcb] Unknown sequence number while appending request
[xcb] You called XInitThreads, this is not your fault
[xcb] Aborting, sorry about that.
python: ../../src/xcb_io.c:157: append_pending_request: Assertion `\!xcb_xlib_unknown_seq_number' failed.
Root Cause
Empty directories cause ProjectConfig.autogenerate() to raise a ValueError
The exception handler attempts to show a GUI error dialog using tkinter
In headless environments, tkinter crashes with X11/XCB errors
Solution
Headless Detection: Added is_headless_environment() to detect when running without a display
Skip GUI in Headless: Modified show_fatal_exception_safe() to skip GUI attempts in headless environments
Better Error Messages: Improved the error message for empty projects with clear instructions
2025-07-06 23:21:41 +02:00
Michael Panchenko
1c2492c63c
Typo
2025-07-06 22:23:31 +02:00
Michael Panchenko
49679c9318
TF LS: fixed method order execution
...
Previously a method relying on self.logger being set was called before it was set
2025-07-06 22:23:25 +02:00
Michael Panchenko
3981f021c6
Minor simplification of tf LS, formatting
...
Also fixed call to terraform.exe on non-windows platforms
2025-07-06 22:23:21 +02:00
Yen
1df9732390
feature/terraform language server support ( #277 )
...
Adds terraform support
2025-07-06 22:23:18 +02:00
Michael Panchenko
a24dcea427
Formatting, removed unused vars and imports
2025-07-06 22:23:17 +02:00
Michael Panchenko
5102a38fbe
Don't include relative_path in symbol's children dict representation
2025-07-06 22:23:07 +02:00
Michael Panchenko
62741a7abd
Merge pull request #261 from dbernazal/elixir-support
...
Elixir Support
2025-07-06 00:13:27 +02:00
Dominik Jain
5d7c7a3a75
Merge pull request #282 from oraios/refactoring/tools
...
Refactor tools.py into a package with several modules
2025-07-05 19:51:40 +02:00
Dominik Jain
ff57a5b267
Limit tool registry to serena.tools
2025-07-05 19:06:29 +02:00
Dominik Jain
f071edd4ac
Extract module workflow_tools
2025-07-05 18:54:36 +02:00
Dominik Jain
6ba755b43f
Split history tools_base.py to workflow_tools.py - restore name of source-file
2025-07-05 18:50:06 +02:00
Dominik Jain
276078804f
Split history tools_base.py to workflow_tools.py - resolve conflict and keep both files
2025-07-05 18:50:05 +02:00
Dominik Jain
445916b4ff
Split history tools_base.py to workflow_tools.py - rename source-file to git-split-temp
2025-07-05 18:50:05 +02:00
Dominik Jain
40c6436221
Split history tools_base.py to workflow_tools.py - rename file to target-name
2025-07-05 18:50:05 +02:00
Dominik Jain
e8615dd73a
Extract module config_tools
2025-07-05 18:49:13 +02:00
Dominik Jain
b6a3cdcc12
Split history tools_base.py to config_tools.py - restore name of source-file
2025-07-05 18:46:47 +02:00
Dominik Jain
297df1cf09
Split history tools_base.py to config_tools.py - resolve conflict and keep both files
2025-07-05 18:46:46 +02:00
Dominik Jain
b55bfae7b8
Split history tools_base.py to config_tools.py - rename source-file to git-split-temp
2025-07-05 18:46:46 +02:00
Dominik Jain
0e89eb10a6
Split history tools_base.py to config_tools.py - rename file to target-name
2025-07-05 18:46:46 +02:00
Dominik Jain
5a35c45beb
Extract module cmd_tools
2025-07-05 18:45:19 +02:00
Dominik Jain
561b04e464
Split history tools_base.py to cmd_tools.py - restore name of source-file
2025-07-05 18:38:19 +02:00
Dominik Jain
3077c981ed
Split history tools_base.py to cmd_tools.py - resolve conflict and keep both files
2025-07-05 18:38:19 +02:00
Dominik Jain
6d4f701532
Split history tools_base.py to cmd_tools.py - rename source-file to git-split-temp
2025-07-05 18:38:18 +02:00
Dominik Jain
70273dabdf
Split history tools_base.py to cmd_tools.py - rename file to target-name
2025-07-05 18:38:18 +02:00
Dominik Jain
1a6245afa2
Extract module memory_tools
2025-07-05 18:31:45 +02:00
Dominik Jain
87255ff5b7
Split history tools_base.py to memory_tools.py - restore name of source-file
2025-07-05 18:26:13 +02:00
Dominik Jain
9e362be631
Split history tools_base.py to memory_tools.py - resolve conflict and keep both files
2025-07-05 18:26:13 +02:00
Dominik Jain
90c1436b01
Split history tools_base.py to memory_tools.py - rename source-file to git-split-temp
2025-07-05 18:26:12 +02:00
Dominik Jain
3cee60c449
Split history tools_base.py to memory_tools.py - rename file to target-name
2025-07-05 18:26:12 +02:00
Dominik Jain
ee0f31ab5c
Add proper module docstring
2025-07-05 18:24:57 +02:00
Dominik Jain
ad220f839a
Extract module ls_tools for language server-related tools
2025-07-05 18:23:04 +02:00
Dominik Jain
9393da9f67
Split history tools_base.py to ls_tools.py - restore name of source-file
2025-07-05 18:16:19 +02:00
Dominik Jain
1451cbc2f6
Split history tools_base.py to ls_tools.py - resolve conflict and keep both files
2025-07-05 18:16:19 +02:00
Dominik Jain
9fc87c68e5
Split history tools_base.py to ls_tools.py - rename source-file to git-split-temp
2025-07-05 18:16:18 +02:00
Dominik Jain
8962368b12
Split history tools_base.py to ls_tools.py - rename file to target-name
2025-07-05 18:16:18 +02:00
Dominik Jain
ac6bf40310
Extract file_tools module
2025-07-05 18:14:02 +02:00
Dominik Jain
f8232610cb
Update relative import
2025-07-05 18:14:02 +02:00
Dominik Jain
99807802f9
Split history tools_base.py to file_tools.py - restore name of source-file
2025-07-05 17:47:09 +02:00
Dominik Jain
2e18c39d7f
Split history tools_base.py to file_tools.py - resolve conflict and keep both files
2025-07-05 17:47:09 +02:00
Dominik Jain
a0b2121550
Split history tools_base.py to file_tools.py - rename source-file to git-split-temp
2025-07-05 17:47:09 +02:00
Dominik Jain
bccdca332c
Split history tools_base.py to file_tools.py - rename file to target-name
2025-07-05 17:47:08 +02:00
Dominik Jain
0b13db6e6c
Convert tools.py to a package
2025-07-05 17:43:53 +02:00
Dominik Jain
f3645e78a8
Merge branch 'main' of github.com:oraios/serena
2025-07-05 10:30:31 +02:00
Dominik Jain
227bac728a
Fix missing directory creation for config migration
2025-07-05 10:30:24 +02:00
Michael Panchenko
9028a02f8f
GH: add timeouts
2025-07-04 12:49:46 +02:00
Michael Panchenko
e4a3b98e0c
GH: don't run docker build on PRs, disable publish for now
2025-07-03 18:01:03 +02:00
Dominik Jain
198c9415f6
show_fatal_exception_safe: Change logic to definitely print to stderr
2025-07-03 17:28:33 +02:00
Dominik Jain
ebfe72409f
Move show_fatal_exception_safe to new module util.exception
2025-07-03 17:27:31 +02:00
Dominik Jain
80a4caf36a
Use a separate process to call webbrowser open,
...
redirecting output at the OS level to avoid stdout contamination #257
2025-07-03 12:23:56 +02:00