From 6861ce0dca17bccdd1290cabc0c7cf0550a80edd Mon Sep 17 00:00:00 2001 From: Ed_ Date: Sun, 10 May 2026 20:57:11 -0400 Subject: [PATCH] fix(mcp): configure mcp_client allowlist on project switch Previously mcp_client.configure() was only called during ai_client.send() which meant GUI buttons (Slices/Inspect) couldn't access files when project was switched to an external project like gencpp. Now _switch_project reconfigures mcp_client with the new project's root and file_items. --- config.toml | 2 +- manualslop_layout.ini | 42 +++++++++++++++++++++--------------------- src/app_controller.py | 3 +++ src/gui_2.py | 5 ++++- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/config.toml b/config.toml index f4cb4d9..7c80531 100644 --- a/config.toml +++ b/config.toml @@ -23,7 +23,7 @@ separate_tool_calls_panel = false bg_shader_enabled = false crt_filter_enabled = false separate_task_dag = false -separate_usage_analytics = false +separate_usage_analytics = true separate_tier1 = false separate_tier2 = false separate_tier3 = false diff --git a/manualslop_layout.ini b/manualslop_layout.ini index a7cea6e..d54ff18 100644 --- a/manualslop_layout.ini +++ b/manualslop_layout.ini @@ -74,8 +74,8 @@ Collapsed=0 DockId=0xAFC85805,2 [Window][Theme] -Pos=0,32 -Size=253,1408 +Pos=0,28 +Size=870,1882 Collapsed=0 DockId=0x00000005,3 @@ -102,26 +102,26 @@ Collapsed=0 DockId=0x0000000D,0 [Window][Discussion Hub] -Pos=255,32 -Size=1761,1408 +Pos=872,28 +Size=1761,1882 Collapsed=0 DockId=0x00000006,0 [Window][Operations Hub] -Pos=0,32 -Size=253,1408 +Pos=0,28 +Size=870,1882 Collapsed=0 DockId=0x00000005,2 [Window][Files & Media] -Pos=255,32 -Size=1761,1408 +Pos=872,28 +Size=1761,1882 Collapsed=0 DockId=0x00000006,1 [Window][AI Settings] -Pos=0,32 -Size=253,1408 +Pos=0,28 +Size=870,1882 Collapsed=0 DockId=0x00000005,0 @@ -406,8 +406,8 @@ Collapsed=0 DockId=0x00000006,1 [Window][Project Settings] -Pos=0,32 -Size=253,1408 +Pos=0,28 +Size=870,1882 Collapsed=0 DockId=0x00000005,1 @@ -547,9 +547,9 @@ Column 0 Width=280 Column 1 Weight=1.0000 [Table][0x1DA1F4A6,2] -RefScale=29 +RefScale=20 Column 0 Weight=1.0000 -Column 1 Width=543 +Column 1 Width=374 [Table][0x5B562C13,3] RefScale=20 @@ -565,22 +565,22 @@ Column 2 Width=150 Column 3 Width=40 [Table][0x62A953DF,5] -RefScale=29 -Column 0 Width=60 +RefScale=20 +Column 0 Width=41 Column 1 Weight=1.0000 -Column 2 Width=101 -Column 3 Width=133 -Column 4 Width=102 +Column 2 Width=69 +Column 3 Width=91 +Column 4 Width=70 [Docking][Data] DockNode ID=0x00000008 Pos=3125,170 Size=593,1157 Split=Y DockNode ID=0x00000009 Parent=0x00000008 SizeRef=1029,147 Selected=0x0469CA7A DockNode ID=0x0000000A Parent=0x00000008 SizeRef=1029,145 Selected=0xDF822E02 -DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,32 Size=2016,1408 Split=X +DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,28 Size=2633,1882 Split=X DockNode ID=0x00000003 Parent=0xAFC85805 SizeRef=2254,1183 Split=X DockNode ID=0x0000000B Parent=0x00000003 SizeRef=404,1186 Split=X Selected=0xF4139CA2 DockNode ID=0x00000007 Parent=0x0000000B SizeRef=1512,858 Split=X Selected=0x8CA2375C - DockNode ID=0x00000005 Parent=0x00000007 SizeRef=2077,1681 CentralNode=1 Selected=0x418C7449 + DockNode ID=0x00000005 Parent=0x00000007 SizeRef=2077,1681 CentralNode=1 Selected=0x7BD57D6A DockNode ID=0x00000006 Parent=0x00000007 SizeRef=1761,1681 Selected=0x6F2B5B04 DockNode ID=0x0000000E Parent=0x0000000B SizeRef=1777,858 Selected=0x418C7449 DockNode ID=0x0000000D Parent=0x00000003 SizeRef=435,1186 Selected=0x363E93D6 diff --git a/src/app_controller.py b/src/app_controller.py index 3b704b5..cc5c869 100644 --- a/src/app_controller.py +++ b/src/app_controller.py @@ -2347,6 +2347,9 @@ class AppController: self.ai_status = f"failed to load project: {e}" return self._refresh_from_project() + import mcp_client + file_items_as_dicts = [{"path": f.path if hasattr(f, "path") else str(f)} for f in self.files] + mcp_client.configure(file_items_as_dicts, [str(new_root)]) self.ai_status = f"switched to: {Path(path).stem}" def _refresh_from_project(self) -> None: diff --git a/src/gui_2.py b/src/gui_2.py index 3e34af9..f86d595 100644 --- a/src/gui_2.py +++ b/src/gui_2.py @@ -2909,7 +2909,10 @@ class App: self.ui_editing_slices_file = f_item f_path = f_item.path if hasattr(f_item, "path") else str(f_item) self.text_viewer_title = f"Slices: {f_path}" - self.text_viewer_content = f_item.content or "" + try: + self.text_viewer_content = mcp_client.read_file(f_path) + except Exception as e: + self.text_viewer_content = f"Error reading file: {e}" self.text_viewer_type = 'cpp' if f_path.endswith(('.cpp', '.hpp', '.h')) else 'python' if f_path.endswith('.py') else 'text' self.show_text_viewer = True