feat(gui): track VSCode diff process, close it when patch modal closes

- Store _vscode_diff_process after launching external editor
- Add _close_vscode_diff() helper to terminate the process
- Call _close_vscode_diff() when Apply Patch or Reject is clicked
This commit is contained in:
2026-05-07 21:30:23 -04:00
parent a6c569fb69
commit 86fa1dd67d
+11
View File
@@ -2201,8 +2201,10 @@ class App:
imgui.same_line() imgui.same_line()
if imgui.button("Apply Patch"): if imgui.button("Apply Patch"):
self._apply_pending_patch() self._apply_pending_patch()
self._close_vscode_diff()
imgui.same_line() imgui.same_line()
if imgui.button("Reject"): if imgui.button("Reject"):
self._close_vscode_diff()
self._show_patch_modal = False self._show_patch_modal = False
self._pending_patch_text = None self._pending_patch_text = None
self._pending_patch_files = [] self._pending_patch_files = []
@@ -2252,9 +2254,18 @@ class App:
self._patch_error_message = "Failed to launch external editor" self._patch_error_message = "Failed to launch external editor"
else: else:
self._patch_error_message = None self._patch_error_message = None
self._vscode_diff_process = result
except Exception as e: except Exception as e:
self._patch_error_message = str(e) self._patch_error_message = str(e)
def _close_vscode_diff(self) -> None:
if hasattr(self, '_vscode_diff_process') and self._vscode_diff_process:
try:
self._vscode_diff_process.terminate()
except Exception:
pass
self._vscode_diff_process = None
def request_patch_from_tier4(self, error: str, file_context: str) -> None: def request_patch_from_tier4(self, error: str, file_context: str) -> None:
try: try:
from src import ai_client from src import ai_client