diff --git a/docs/guide_command_palette.md b/docs/guide_command_palette.md index 41a00905..69b5b0c9 100644 --- a/docs/guide_command_palette.md +++ b/docs/guide_command_palette.md @@ -193,21 +193,49 @@ Query: `"fld"` against titles: ## Built-in Commands -The 11 commands currently shipped in `src/commands.py`: +The 33 commands currently shipped in `src/commands.py` (the source file is the source of truth; this table is regenerated from `@registry.register` decorators and the leading docstring of each function): | ID | Title | Category | Action | |---|---|---|---| -| `reset_session` | Reset Session | AI | Calls `ai_client.reset_session()` and the App's reset handler | -| `clear_discussion` | Clear Discussion | AI | Empties `app.discussion_history` | -| `toggle_diagnostics` | Toggle Diagnostics | View | Toggles `app.show_diagnostics` | -| `add_all_files_to_context` | Add All Files To Context | AI | Calls `app._add_all_files_to_context()` | -| `open_project` | Open Project | Project | Calls `app._show_project_picker()` | -| `save_project` | Save Project | Project | Calls `app._save_project_state()` | -| `trigger_hot_reload` | Hot Reload | Tools | Calls `HotReloader.reload("src.gui_2", app)` | -| `show_documentation` | Show Documentation | Help | Opens the project URL in the browser | -| `switch_to_dark_theme` | Switch To Dark Theme | View | `theme_2.apply("10x Dark")` | -| `switch_to_light_theme` | Switch To Light Theme | View | `theme_2.apply("ImGui Light")` | -| `switch_to_nerv_theme` | Switch To Nerv Theme | View | `theme_2.apply("NERV")` | +| `reset_session` | Reset Session | AI | Calls `ai_client.reset_session()` + clears comms/tool logs + `app._handle_reset_session()` | +| `clear_discussion` | Clear Discussion | AI | Empties `app.discussion_history` | +| `add_all_files_to_context` | Add All Files To Context | AI | Calls `app._add_all_files_to_context()` | +| `generate_md_only` | Generate MD Only | AI | Runs `_do_generate()` and stores `app.last_md` / `app.last_md_path` (no chat send) | +| `open_project` | Open Project | Project | Calls `app._show_project_picker()` | +| `save_project` | Save Project | Project | Calls `app._save_project_state()` | +| `save_all` | Save All | Project | Flushes project + config + calls `app.save_config()` | +| `toggle_text_viewer` | Toggle Text Viewer | View | `_toggle_window(app, "Text Viewer")` | +| `toggle_diagnostics` | Toggle Diagnostics | View | `_toggle_window(app, "Diagnostics")` | +| `toggle_usage_analytics` | Toggle Usage Analytics | View | `_toggle_window(app, "Usage Analytics")` | +| `toggle_context_preview` | Toggle Context Preview | View | `_toggle_window(app, "Context Preview")` | +| `toggle_tier1_strategy` | Toggle Tier 1 Strategy | View | `_toggle_window(app, "Tier 1: Strategy")` | +| `toggle_tier2_tech_lead` | Toggle Tier 2 Tech Lead | View | `_toggle_window(app, "Tier 2: Tech Lead")` | +| `toggle_tier3_workers` | Toggle Tier 3 Workers | View | `_toggle_window(app, "Tier 3: Workers")` | +| `toggle_tier4_qa` | Toggle Tier 4 QA | View | `_toggle_window(app, "Tier 4: QA")` | +| `toggle_external_tools` | Toggle External Tools | View | `_toggle_window(app, "External Tools")` | +| `toggle_shader_editor` | Toggle Shader Editor | View | `_toggle_window(app, "Shader Editor")` | +| `toggle_undo_redo_history` | Toggle Undo/Redo History | View | `_toggle_window(app, "Undo/Redo History")` | +| `toggle_command_palette` | Toggle Command Palette | View | `_toggle_attr(app, "show_command_palette")` | +| `show_all_panels` | Show All Panels | View | Sets every key of `app.show_windows` to `True` | +| `hide_all_panels` | Hide All Panels | View | Sets every key of `app.show_windows` to `False` | +| `reset_layout` | Reset Layout | View | Forces all `show_windows` to `True` and deletes `manualslop_layout.ini` (and the test-artifact copy) so hello_imgui regenerates the dock layout on the next process startup | +| `save_workspace_profile` | Save Workspace Profile | Layout | Opens the save-profile modal | +| `show_workspace_manager` | Show Workspace Manager | Layout | Sets `app.show_windows["Workspace Manager"] = True` | +| `trigger_hot_reload` | Hot Reload | Tools | Calls `HotReloader.reload("src.gui_2", app)` | +| `undo` | Undo | Edit | Calls `app._handle_undo()` | +| `redo` | Redo | Edit | Calls `app._handle_redo()` | +| `switch_to_dark_theme` | Switch To Dark Theme | Theme | `theme_2.apply("10x Dark")` | +| `switch_to_light_theme` | Switch To Light Theme | Theme | `theme_2.apply("ImGui Light")` | +| `switch_to_nerv_theme` | Switch To NERV Theme | Theme | `theme_2.apply("NERV")` | +| `cycle_theme` | Cycle Theme | Theme | Cycles through `["10x Dark", "ImGui Light", "NERV"]` based on `theme_2.get_current_palette()` | +| `show_documentation` | Show Documentation | Help | Opens `https://git.cozyair.dev/ed/manual_slop/` in the default browser | +| `show_command_palette_help` | Show Command Palette Help | Help | Loads `docs/Readme.md` into `app.readme_text` and opens the Text Viewer | + +Notes: +- All command bodies are wrapped in defensive `hasattr` / `try/except` so a missing App attribute or a buggy action never breaks the modal's end_child/end pairing (which would surface as the `IM_ASSERT: Must call EndChild() and not End()!` crash). +- The `cycle_theme` order is hard-coded; a new theme added to `themes/*.toml` will not appear in the cycle without an edit to `cycle_theme`. +- The `_toggle_window(app, "")` calls are case-sensitive against the keys of `app.show_windows` (the per-window visibility dict on the App). +- The category column is editorial — the registry stores no category; the title is what's actually searched in the palette. ### Defensive Action Calls