Files
manual_slop/conductor/archive/gui2_parity_20260224/spec.md

2.1 KiB

Specification: GUI 2.0 Feature Parity and Migration

Overview

The project is transitioning from gui.py (Dear PyGui-based) to gui_2.py (ImGui Bundle-based) to leverage advanced multi-viewport and docking features not natively supported by Dear PyGui. This track focuses on achieving full visual, functional, and performance parity between the two implementations, ultimately enabling the decommissioning of the original gui.py.

Functional Requirements

  1. Visual Parity:
    • Ensure all panels, layouts, and interactive elements in gui_2.py match the established UX of gui.py.
    • Address nuances in UX, such as text panel sizing and font rendering, to ensure a seamless transition for existing users.
  2. Functional Parity:
    • Verify that all backend hooks (API metrics, context management, MCP tools, shell execution) work identically in gui_2.py.
    • Ensure all interactive controls (buttons, inputs, dropdowns) trigger the correct application state changes.
  3. Performance Parity:
    • Benchmark gui_2.py against gui.py for FPS, frame time, and CPU/memory usage.
    • Optimize gui_2.py to meet or exceed the performance metrics of the original implementation.

Non-Functional Requirements

  • Multi-Viewport Stability: Ensure the ImGui-bundle implementation is stable across multiple windows and docking configurations.
  • Deprecation Workflow: Establish a clear path for renaming gui.py to gui_legacy.py for a transition period.

Acceptance Criteria

  • gui_2.py successfully passes the full suite of GUI automated verification tests (e.g., test_gui2_events.py, test_gui2_layout.py).
  • A side-by-side audit confirms visual and functional parity for all core Hub panels.
  • Performance benchmarks show gui_2.py is within +/- 5% of gui.py metrics.
  • gui.py is renamed to gui_legacy.py.

Out of Scope

  • Introducing new UI features or backend capabilities not present in gui.py.
  • Modifying the core EventEmitter or AiClient logic (unless required for GUI hook integration).