Private
Public Access
0
0
Files
manual_slop/conductor/archive/gui_crash_fixes_20260531/spec.md
T

2.2 KiB

Specification: Fix GUI Crashes in Tool Preset Manager and Discussion Hub

Overview

This track addresses several critical crashes in the immediate-mode GUI (gui_2.py) related to the Tool Preset Manager and the Discussion Hub. These issues include Python exceptions (NameError, IndexError) and underlying ImGui rendering assertion failures (PopID() too many times, Must call EndChild() and not End()!).

Functional Requirements

  • Tool Preset Manager Fixes:
    • Resolve the NameError: name 'current_cat_tools' is not defined when interacting with or modifying tool preset entries (e.g., changing approval from "auto" to "ask").
    • Fix the ImGui scope mismatch (Must call EndChild() and not End()!) in the tp_scroll_2FED8981 child window.
  • Discussion Hub Fixes:
    • Resolve the IndexError: list index out of range in render_discussion_entries that occurs when deleting a discussion entry.
    • Fix the associated ImGui scope mismatches (Calling PopID() too many times!) in the HistoryChild_AB39D74A window and tabs that trigger after the exception occurs.
  • Take Management Fixes:
    • Fix the bug where clicking a Take tab fails to switch the active take and falls back to the original take, causing a 1-frame flicker.

Non-Functional Requirements

  • ImGui Scope Safety: Ensure all ImGui push/pop and begin/end pairs are correctly matched, even when exceptions are raised or lists are modified during rendering. The use of imscope context managers should be verified.
  • Code Style: Fixes must adhere to the 1-space indentation rule for Python code and follow the "ImGui Defer Patterns" described in the code style guides.

Acceptance Criteria

  • Modifying a tool preset (e.g., changing the approval status of ts_cpp tools) does not raise a NameError or crash the application.
  • Deleting a discussion entry removes the entry visually and does not raise an IndexError.
  • Both panels can be interacted with, opened, and closed without triggering ImGui assertion failures.
  • The scripts/check_imgui_scopes.py linter passes without new errors.

Out of Scope

  • Adding new features to the Tool Preset Manager or Discussion Hub.
  • General refactoring of the GUI outside of fixing these specific crash points.