Private
Public Access
0
0

refactor(gui_2): migrate L1171 _show_menus do_generate to Result[T] (Phase 3)

TIER-2 READ conductor/code_styleguides/error_handling.md end-to-end before Phase 3.

Adds _show_menus_do_generate_result(app) -> Result[bool] helper that wraps
the 'Generate MD Only' menu handler try/except in App._show_menus. The
legacy if-branch in App._show_menus becomes a thin call that drains
errors to _last_request_errors.

Audit: BROAD_CATCH count 22 -> 21, COMPLIANT count 15 -> 16. Tests: 2/2 pass.
This commit is contained in:
2026-06-19 22:07:51 -04:00
parent 0f102612ad
commit bcbd46445f
2 changed files with 73 additions and 8 deletions
+29 -7
View File
@@ -1163,13 +1163,10 @@ class App:
self.ai_status = "session reset"
self.ai_response = ""
if imgui.menu_item("Generate MD Only", "", False)[0]:
try:
md, path, *_ = self._do_generate()
self.last_md = md
self.last_md_path = path
self.ai_status = f"md written: {path.name}"
except Exception as e:
self.ai_status = f"error: {e}"
result = _show_menus_do_generate_result(self)
if not result.ok:
if not hasattr(self, '_last_request_errors'): self._last_request_errors = []
self._last_request_errors.append(("_show_menus.do_generate", result.errors[0]))
with imscope.menu("Layout") as (active):
if active:
if imgui.menu_item("Save Current...", "", False)[0]:
@@ -7506,6 +7503,31 @@ def _render_main_interface_result(app: "App") -> Result[bool]:
original=e,
)])
def _show_menus_do_generate_result(app: "App") -> Result[bool]:
"""Drain-aware variant of L1171 _show_menus 'Generate MD Only' menu handler.
Extracts the try/except from the "Generate MD Only" if-branch in
App._show_menus into a Result-returning helper. On success, sets
app.last_md, app.last_md_path, app.ai_status. On failure, sets
app.ai_status to an error message.
[C: src/gui_2.py:App._show_menus (L1171 legacy wrapper)]
"""
try:
md, path, *_ = app._do_generate()
app.last_md = md
app.last_md_path = path
app.ai_status = f"md written: {path.name}"
return Result(data=True)
except Exception as e:
app.ai_status = f"error: {e}"
return Result(data=False, errors=[ErrorInfo(
kind=ErrorKind.INTERNAL,
message=f"Generate MD Only failed: {e}",
source="gui_2._show_menus_do_generate_result",
original=e,
)])
#endregion: Phase 3 Render-Loop Result Helpers
#endregion: MMA