Private
Public Access
0
0

feat(hot-reload): Complete deep OOP gutting of gui_2.py and perfect 1-space refactor

This commit is contained in:
2026-05-16 04:36:00 -04:00
parent 4e153fb436
commit 430754c1e5
6 changed files with 219 additions and 382 deletions
+4 -178
View File
@@ -630,30 +630,20 @@ class App:
f.write(data)
# ---------------------------------------------------------------- helpers
def _render_text_viewer(self, label: str, content: str, text_type: str = 'text', force_open: bool = False) -> None:
render_text_viewer(self, label, content, text_type, force_open)
def _render_heavy_text(self, label: str, content: str, id_suffix: str = "") -> None:
render_heavy_text(self, label, content, id_suffix)
# ---------------------------------------------------------------- gui
def _render_thinking_trace(self, segments: list[dict], entry_index: int, is_standalone: bool = False) -> None:
render_thinking_trace(self, segments, entry_index, is_standalone)
def _render_selectable_label(self, label: str, value: str, width: float = 0.0, multiline: bool = False, height: float = 0.0, color: Optional[imgui.ImVec4] = None) -> None:
render_selectable_label(self, label, value, width, multiline, height, color)
def _render_save_preset_modal(self) -> None:
render_save_preset_modal(self)
def _gui_func(self) -> None:
io = imgui.get_io()
if io.key_ctrl and io.key_alt and io.keys_down[ord('R')]:
self._trigger_hot_reload()
self._render_custom_title_bar()
self._render_shader_live_editor()
self._render_history_window()
render_custom_title_bar(self)
render_shader_live_editor(self)
render_history_window(self)
pushed_prior_tint = False
# Render background shader
@@ -670,7 +660,7 @@ class App:
pushed_prior_tint = True
try:
self._render_main_interface()
render_main_interface(self)
except Exception as e:
sys.stderr.write(f"ERROR in _gui_func: {e}\n")
traceback.print_exc()
@@ -683,8 +673,6 @@ class App:
if self.perf_profiling_enabled: self.perf_monitor.end_component("_gui_func")
return
def _render_main_interface(self) -> None:
render_main_interface(self)
def _render_window_if_open(self, name: str, render_func: Callable[[], None], flag_condition: bool = True) -> None:
"""Helper to render a window only if its toggle is active."""
@@ -693,8 +681,6 @@ class App:
self.show_windows[name] = bool(opened)
if exp: render_func()
def _render_custom_title_bar(self) -> None:
render_custom_title_bar(self)
def _show_menus(self) -> None:
"""
@@ -799,8 +785,6 @@ class App:
imgui.pop_style_color()
imgui.pop_style_color()
def _render_history_window(self) -> None:
render_history_window(self)
def _handle_history_logic(self) -> None:
"""
@@ -861,38 +845,20 @@ class App:
traceback.print_exc(file=sys.stderr)
sys.stderr.flush()
def _render_theme_panel(self) -> None:
render_theme_panel(self)
def _render_shader_live_editor(self) -> None:
render_shader_live_editor(self)
#region: Diangostics & Analytics
def _render_usage_analytics_panel(self) -> None:
render_usage_analytics_panel(self)
def _render_cache_panel(self) -> None:
render_cache_panel(self)
def _render_diagnostics_panel(self) -> None:
render_diagnostics_panel(self)
def _render_tool_analytics_panel(self) -> None:
render_tool_analytics_panel(self)
def _render_token_budget_panel(self) -> None:
render_token_budget_panel(self)
def _render_session_insights_panel(self) -> None:
render_session_insights_panel(self)
#endregion: Diangostics & Analytics
#region: Logging
def _render_log_management(self) -> None:
render_log_management(self)
def cb_load_prior_log(self, path: Optional[str] = None) -> None:
if path is None:
@@ -906,20 +872,10 @@ class App:
#region: Project Management
def _render_project_settings_hub(self) -> None:
render_project_settings_hub(self)
def _render_projects_panel(self) -> None:
render_projects_panel(self)
def _render_paths_panel(self) -> None:
render_paths_panel(self)
def _render_path_field(label: str, attr: str, key: str, tooltip: str):
render_path_field(self, label, attr, key, tooltip)
def _render_external_tools_panel(self) -> None:
render_external_tools_panel(self)
def _set_external_editor_default(self, editor_name: str) -> None:
from src import models
@@ -960,66 +916,28 @@ class App:
#region: AI Settings
def _render_ai_settings_hub(self) -> None:
render_ai_settings_hub(self)
def _render_rag_panel(self) -> None:
render_rag_panel(self)
def _render_system_prompts_panel(self) -> None:
render_system_prompts_panel(self)
def _render_agent_tools_panel(self) -> None:
render_agent_tools_panel(self)
def _render_preset_manager_content(self, is_embedded: bool = False) -> None:
render_preset_manager_content(self, is_embedded)
def _render_preset_manager_window(self, is_embedded: bool = False) -> None:
render_preset_manager_window(self, is_embedded)
def _render_tool_preset_manager_content(self, is_embedded: bool = False) -> None:
render_tool_preset_manager_content(self, is_embedded)
def _render_tool_preset_manager_window(self, is_embedded: bool = False) -> None:
render_tool_preset_manager_window(self, is_embedded)
def _render_persona_editor_window(self, is_embedded: bool = False) -> None:
render_persona_editor_window(self, is_embedded)
def _render_provider_panel(self) -> None:
render_provider_panel(self)
def _render_persona_selector_panel(self) -> None:
render_persona_selector_panel(self)
#endregion: AI Settings
#region: Context Management
def _render_files_and_media(self) -> None:
render_files_and_media(self)
def _render_files_panel(self, height_override: float = 0) -> None:
render_files_panel(self, height_override)
def _render_screenshots_panel(self, height_override: float = 0) -> None:
render_screenshots_panel(self, height_override)
def _render_context_composition_panel(self) -> None:
render_context_composition_panel(self)
def _render_ast_inspector_modal(self) -> None:
render_ast_inspector_modal(self)
def _render_add_context_files_modal(self) -> None:
render_add_context_files_modal(self)
def _render_save_workspace_profile_modal(self) -> None:
render_save_workspace_profile_modal(self)
def _render_context_presets_panel(self) -> None:
render_context_presets_panel(self)
def _populate_auto_slices(self, f_item: models.FileItem) -> None:
"""
@@ -1055,17 +973,9 @@ class App:
slice_data['comment'] = name
f_item.custom_slices.append(slice_data)
def _render_context_screenshots(self) -> None:
render_context_screenshots(self)
def _render_context_batch_actions(self, total_lines: int, total_ast: int) -> None:
render_context_batch_actions(self, total_lines, total_ast)
def _render_context_files_table(self) -> None:
render_context_files_table(self)
def _render_context_presets(self) -> None:
render_context_presets(self)
def _update_context_file_stats(self) -> tuple[int, int]:
if not hasattr(self, '_file_stats_cache'): self._file_stats_cache = {}
@@ -1101,79 +1011,35 @@ class App:
#region: Discussions
def _render_discussion_hub(self) -> None:
render_discussion_hub(self)
def _render_discussion_entries(self) -> None:
render_discussion_entries(self)
def _render_discussion_entry(self, entry: dict, index: int) -> None:
render_discussion_entry(self, entry, index)
def _render_discussion_entry_controls(self) -> None:
render_discussion_entry_controls(self)
def _render_discussion_entry_read_mode(self, entry: dict, index: int) -> None:
render_discussion_entry_read_mode(self, entry, index)
def _render_discussion_metadata(self) -> None:
render_discussion_metadata(self)
def _render_discussion_panel(self) -> None:
render_discussion_panel(self)
def _render_discussion_roles(self) -> None:
render_discussion_roles(self)
def _render_discussion_selector(self) -> None:
render_discussion_selector(self)
def _render_discussion_tab(self) -> None:
render_discussion_tab(self)
def _render_takes_panel(self) -> None:
render_takes_panel(self)
def _render_prior_session_view(self) -> None:
render_prior_session_view(self)
def _render_thinking_indicator(self) -> None:
render_thinking_indicator(self)
def _render_message_panel(self) -> None:
render_message_panel(self)
def _render_synthesis_panel(self) -> None:
render_synthesis_panel(self)
def _render_snapshot_tab(self) -> None:
render_snapshot_tab(self)
def _render_response_panel(self) -> None:
render_response_panel(self)
#endregion: Discussions
#region: Operations Monitor
def _render_operations_hub(self) -> None:
render_operations_hub(self)
def _render_tool_calls_panel(self) -> None:
render_tool_calls_panel(self)
def _render_comms_history_panel(self) -> None:
render_comms_history_panel(self)
#endregion: Operations Monitor
#region: Misc Tools
def _render_text_viewer_window(self) -> None:
render_text_viewer_window(self)
def _render_base_prompt_diff_modal(self) -> None:
render_base_prompt_diff_modal(self)
def _close_vscode_diff(self) -> None:
if hasattr(self, '_vscode_diff_process') and self._vscode_diff_process:
@@ -1183,8 +1049,6 @@ class App:
pass
self._vscode_diff_process = None
def _render_patch_modal(self) -> None:
render_patch_modal(self)
def _apply_pending_patch(self) -> None:
if not self._pending_patch_text:
@@ -1230,18 +1094,12 @@ class App:
except Exception as e:
self._patch_error_message = str(e)
def _render_external_editor_panel(self) -> None:
render_external_editor_panel(self)
def _render_approve_script_modal(self) -> None:
render_approve_script_modal(self)
#endregion: Misc Tools
#region: Sanity Tests
def _render_markdown_test(self) -> None:
render_markdown_test(self)
#endregion: Sanity Tests
@@ -1269,53 +1127,21 @@ class App:
self.active_tickets = new_tickets
self._push_mma_state_update()
def _render_ticket_queue(self) -> None:
render_ticket_queue(self)
def _render_task_dag_panel(self) -> None: # 4. Task DAG Visualizer
render_task_dag_panel(self)
def _render_beads_tab(self) -> None:
render_beads_tab(self)
def _render_mma_dashboard(self) -> None:
render_mma_dashboard(self)
def _render_mma_focus_selector(self) -> None:
render_mma_focus_selector(self)
def _render_mma_modals(self) -> None:
render_mma_modals(self)
def _render_mma_track_summary(self) -> None:
render_mma_track_summary(self)
def _render_mma_epic_planner(self) -> None:
render_mma_epic_planner(self)
def _render_mma_conductor_setup(self) -> None:
render_mma_conductor_setup(self)
def _render_mma_track_browser(self) -> None:
render_mma_track_browser(self)
def _render_mma_global_controls(self) -> None:
render_mma_global_controls(self)
def _render_mma_usage_section(self) -> None:
render_mma_usage_section(self)
def _render_mma_ticket_editor(self) -> None:
render_mma_ticket_editor(self)
def _render_mma_agent_streams(self) -> None:
render_mma_agent_streams(self)
def _render_tier_stream_panel(self, tier_key: str, stream_key: str | None) -> None:
render_tier_stream_panel(self, tier_key, stream_key)
def _render_track_proposal_modal(self) -> None:
render_track_proposal_modal(self)
def request_patch_from_tier4(self, error: str, file_context: str) -> None:
try: