2.1 KiB
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
- Visual Parity:
- Ensure all panels, layouts, and interactive elements in
gui_2.pymatch the established UX ofgui.py. - Address nuances in UX, such as text panel sizing and font rendering, to ensure a seamless transition for existing users.
- Ensure all panels, layouts, and interactive elements in
- 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.
- Verify that all backend hooks (API metrics, context management, MCP tools, shell execution) work identically in
- Performance Parity:
- Benchmark
gui_2.pyagainstgui.pyfor FPS, frame time, and CPU/memory usage. - Optimize
gui_2.pyto meet or exceed the performance metrics of the original implementation.
- Benchmark
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.pytogui_legacy.pyfor a transition period.
Acceptance Criteria
gui_2.pysuccessfully 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.pyis within +/- 5% ofgui.pymetrics. gui.pyis renamed togui_legacy.py.
Out of Scope
- Introducing new UI features or backend capabilities not present in
gui.py. - Modifying the core
EventEmitterorAiClientlogic (unless required for GUI hook integration).