Compare commits

..

4 Commits

93 changed files with 176 additions and 9 deletions

View File

@@ -17,15 +17,19 @@ This file tracks all major tracks for the project. Each track has its own detail
*Link: [./tracks/ui_theme_overhaul_20260308/](./tracks/ui_theme_overhaul_20260308/)*
*Goal: Modernize UI with Inter/Maple Mono fonts, a professional subtle rounded theme, custom shaders (corners, blur, AA), multi-viewport support, and layout presets.*
3. [ ] **Track: Selectable GUI Text & UX Improvements**
*Link: [./tracks/selectable_ui_text_20260308/](./tracks/selectable_ui_text_20260308/)*
*Goal: Address UI inconveniences by making critical text across the GUI selectable and copyable. Covers discussion history, comms logs, tool outputs, and key metrics.*
---
### C/C++ Language Support
3. [ ] **Track: Tree-Sitter C/C++ MCP Tools**
4. [ ] **Track: Tree-Sitter C/C++ MCP Tools**
*Link: [./tracks/ts_cpp_tree_sitter_20260308/](./tracks/ts_cpp_tree_sitter_20260308/)*
*Goal: Add tree-sitter C and C++ grammars. Extend ASTParser to support C/C++ skeleton and outline extraction. Add MCP tools ts_c_get_skeleton, ts_cpp_get_skeleton, ts_c_get_code_outline, ts_cpp_get_code_outline.*
4. [ ] **Track: Bootstrap gencpp Python Bindings**
5. [ ] **Track: Bootstrap gencpp Python Bindings**
*Link: [./tracks/gencpp_python_bindings_20260308/](./tracks/gencpp_python_bindings_20260308/)*
*Goal: Bootstrap standalone Python project with CFFI bindings for gencpp C library. Provides foundation for richer C++ AST parsing in future (beyond tree-sitter syntax).*
@@ -33,28 +37,36 @@ This file tracks all major tracks for the project. Each track has its own detail
### Path Configuration
5. [ ] **Track: Project-Specific Conductor Directory**
6. [ ] **Track: Project-Specific Conductor Directory**
*Link: [./tracks/project_conductor_dir_20260308/](./tracks/project_conductor_dir_20260308/)*
*Goal: Make conductor directory per-project. Each project TOML can specify custom conductor dir for isolated track/state management.*
6. [ ] **Track: GUI Path Configuration in Context Hub**
7. [ ] **Track: GUI Path Configuration in Context Hub**
*Link: [./tracks/gui_path_config_20260308/](./tracks/gui_path_config_20260308/)*
*Goal: Add path configuration UI to Context Hub. Allow users to view and edit configurable paths directly from the GUI.*
---
### Manual UX Controls
7. [ ] **Track: Saved System Prompt Presets**
8. [ ] **Track: Saved System Prompt Presets**
*Link: [./tracks/saved_presets_20260308/](./tracks/saved_presets_20260308/)*
*Goal: Ability to have saved presets for global and project system prompts. Includes full AI profiles with temperature and top_p settings, managed via a dedicated GUI modal.*
8. [ ] **Track: Saved Tool Presets**
9. [ ] **Track: Saved Tool Presets**
*Link: [./tracks/saved_tool_presets_20260308/](./tracks/saved_tool_presets_20260308/)*
*Goal: Make agent tools have presets. Add flags for tools related to their level of approval (auto, ask). Move tools to ai settings. Put tools in dynamic TOML-defined categories (Python, General, etc.). Tool Presets added to mma agent role options.*
10. [ ] **Track: External Text Editor Integration for Approvals**
*Link: [./tracks/external_editor_integration_20260308/](./tracks/external_editor_integration_20260308/)*
*Goal: Add support to open files modified by agents in external editors (10xNotepad/VSCode) for native diffing and manual editing during the tool approval flow.*
9. [ ] **Track: Manual UX Validation & Review**
---
## Phase 3: Future Horizons
*Initialized: 2026-03-06*
*Updated: 2026-03-08*
1. [ ] **Track: Manual UX Validation & Review**
*Link: [./tracks/manual_ux_validation_20260302/](./tracks/manual_ux_validation_20260302/)*
---
@@ -73,7 +85,6 @@ This file tracks all major tracks for the project. Each track has its own detail
- [x] **Track: MMA Multi-Worker Visualization**
- [x] **Track: Cache Analytics Display**
- [x] **Track: Tool Usage Analytics**
- [x] **Track: Session Insights & Efficiency Scores**
- [x] **Track: Track Progress Visualization**
- [x] **Track: Manual Skeleton Context Injection**
- [x] **Track: On-Demand Definition Lookup**

View File

@@ -0,0 +1,5 @@
# Track external_editor_integration_20260308 Context
- [Specification](./spec.md)
- [Implementation Plan](./plan.md)
- [Metadata](./metadata.json)

View File

@@ -0,0 +1,8 @@
{
"track_id": "external_editor_integration_20260308",
"type": "feature",
"status": "new",
"created_at": "2026-03-08T13:06:00Z",
"updated_at": "2026-03-08T13:06:00Z",
"description": "Add support to open files modified by agents in 10xNotepad or VSCode for diffing and manual editing during the approval flow."
}

View File

@@ -0,0 +1,33 @@
# Implementation Plan: External Text Editor Integration for Approvals
## Phase 1: Configuration & Data Modeling
- [ ] Task: Define the schema for external editor configuration.
- [ ] Update `src/models.py` (or equivalent configuration parsing logic) to include a `text_editors` dictionary and `default_editor` string.
- [ ] Task: Integrate configuration parsing.
- [ ] Update `config.toml` loading to support a `[tools.text_editors]` section mapping names to paths/commands.
- [ ] Update `manual_slop.toml` loading to support a project-level `default_editor` override.
- [ ] Task: Conductor - User Manual Verification 'Phase 1: Configuration & Data Modeling' (Protocol in workflow.md)
## Phase 2: Editor Launch Logic
- [ ] Task: Implement the `ExternalEditorLauncher` utility.
- [ ] Create a new module/class in `src/external_editor.py`.
- [ ] Implement a method to build the command-line arguments for diffing (e.g., handling `--diff` for VSCode or equivalent for 10xNotepad).
- [ ] Implement the `launch_diff(editor_name, original_file_path, modified_file_path)` method using `subprocess.Popen`.
- [ ] Task: Write unit tests for `ExternalEditorLauncher` argument building and configuration resolution.
- [ ] Task: Conductor - User Manual Verification 'Phase 2: Editor Launch Logic' (Protocol in workflow.md)
## Phase 3: UI Integration (Approval Popup)
- [ ] Task: Add the "Open in External Editor" button to the UI.
- [ ] Modify `src/patch_modal.py` (or the equivalent file handling the `ConfirmDialog` UI).
- [ ] Add the button next to "Approve" and "Reject" when the action involves a file modification.
- [ ] Task: Connect the UI button to the launch logic.
- [ ] When the button is clicked, write the agent's proposed changes to a temporary file (if not already done).
- [ ] Call `launch_diff` with the selected editor, the original target file, and the temporary file.
- [ ] Task: Ensure the approval flow correctly reads the (potentially user-modified) temporary file when "Approve" is finally clicked, rather than the original agent output.
- [ ] Task: Conductor - User Manual Verification 'Phase 3: UI Integration' (Protocol in workflow.md)
## Phase 4: Final Polish & Verification
- [ ] Task: Add UI configuration for the default editor in the "Project Settings" and "AI Settings" panels.
- [ ] Task: Run end-to-end simulation tests to verify the flow.
- [ ] Agent proposes a change -> Modal opens -> Click "Open in Editor" -> (Simulate external edit) -> Click Approve -> Verify final file state.
- [ ] Task: Conductor - User Manual Verification 'Phase 4: Final Polish & Verification' (Protocol in workflow.md)

View File

@@ -0,0 +1,34 @@
# Specification: External Text Editor Integration for Approvals
## Overview
This feature adds the ability to open files modified by AI agents in external text editors (such as VSCode or 10xNotepad) directly from the tool approval popup. This allows users to leverage their preferred editor's native diffing and editing capabilities before confirming an agent's changes.
## Functional Requirements
- **Editor Configuration:**
- **Global Paths:** `config.toml` will store a mapping of editor names to their executable paths (with common defaults for VSCode and 10xNotepad).
- **Global Default:** `config.toml` will define a global default editor to use.
- **Project Override:** `manual_slop.toml` will allow setting a project-specific default editor, overriding the global default.
- **Approval Popup Integration:**
- Add an "Open in External Editor" button to the tool execution confirmation modal (specifically for file modification tools like `write_file`, `replace`, etc.).
- **Native Diff Viewing:**
- When the button is clicked, the application will attempt to launch the configured external editor in a diff view mode (if supported by the editor's CLI arguments).
- This will likely require saving the agent's proposed changes to a temporary file to compare against the original file.
- **Approval Workflow:**
- The user reviews and optionally modifies the changes in the external editor.
- The user must save their changes in the external editor.
- The user must then return to the Manual Slop GUI and click the standard "Approve" (or "Run") button on the popup to proceed with the execution. (The application must ensure it reads the *potentially modified* temporary file if the user edited it, or otherwise handle the updated state correctly before applying).
## Non-Functional Requirements
- **Extensibility:** The configuration should easily allow adding new editors and their specific CLI diff arguments in the future.
- **Robustness:** Gracefully handle cases where the configured editor path is invalid or the editor fails to launch.
## Acceptance Criteria
- [ ] Users can define multiple text editor paths in `config.toml`.
- [ ] Users can set a default editor globally and override it per-project.
- [ ] The approval popup for file modifications includes an "Open in External Editor" button.
- [ ] Clicking the button launches the selected editor, showing a diff between the original file and the proposed changes (where supported).
- [ ] Users can modify the proposed changes in the external editor, save them, and then approve the changes in the GUI to apply the modified version.
## Out of Scope
- Automatically detecting when the external editor closes to trigger auto-approval.
- Complex three-way merge resolution within Manual Slop itself (relying entirely on the external tool for merge conflict resolution if it arises).

View File

@@ -0,0 +1,5 @@
# Track selectable_ui_text_20260308 Context
- [Specification](./spec.md)
- [Implementation Plan](./plan.md)
- [Metadata](./metadata.json)

View File

@@ -0,0 +1,8 @@
{
"track_id": "selectable_ui_text_20260308",
"type": "feature",
"status": "new",
"created_at": "2026-03-08T13:31:00Z",
"updated_at": "2026-03-08T13:31:00Z",
"description": "Fix ui inconvenicnes. Much of the text a user would want to select isn't selectable in the comms log. Go through all text used throughout the gui and identify what should be selectable so the user may have the convience of being able to copy the text to clipboard."
}

View File

@@ -0,0 +1,30 @@
# Implementation Plan: Selectable GUI Text & UX Improvements
## Phase 1: Research & Core Widget Wrapping
- [ ] Task: Audit `gui_2.py` for all `imgui.text()` and `imgui.text_wrapped()` calls in target areas.
- [ ] Identify the exact locations in `_render_discussion_panel`, `_render_comms_history_panel`, and `_render_ai_settings_panel`.
- [ ] Task: Implement a helper function/component for "Selectable Label".
- [ ] This helper should wrap `imgui.input_text` with `InputTextFlags_.read_only` and proper styling to mimic a standard label.
- [ ] Task: Conductor - User Manual Verification 'Phase 1: Research & Core Widget' (Protocol in workflow.md)
## Phase 2: Discussion History & Comms Log
- [ ] Task: Apply selectable text to Discussion History.
- [ ] Update `_render_discussion_panel` to use the new selectable widget for AI and User message content.
- [ ] Ensure multiline support works correctly for long messages.
- [ ] Task: Apply selectable text to Comms Log payloads.
- [ ] Update `_render_comms_history_panel` to make request and response JSON payloads selectable.
- [ ] Task: Write visual regression tests using `live_gui` to ensure selection works and styling is consistent.
- [ ] Task: Conductor - User Manual Verification 'Phase 2: Discussion & Comms' (Protocol in workflow.md)
## Phase 3: Tool Logs & AI Settings
- [ ] Task: Apply selectable text to Tool execution logs.
- [ ] Make generated PowerShell scripts and execution output selectable in the Operations/Tooling panels.
- [ ] Task: Apply selectable text to AI Settings metrics.
- [ ] Make token usage, cost estimates, and model configuration values (like model names) selectable.
- [ ] Task: Final end-to-end verification of all copy-paste scenarios.
- [ ] Task: Conductor - User Manual Verification 'Phase 3: Tool Logs & AI Settings' (Protocol in workflow.md)
## Phase 4: Final Polish
- [ ] Task: Refine styling of read-only input fields (remove borders/backgrounds where appropriate).
- [ ] Task: Verify keyboard shortcuts (Ctrl+C) work across all updated areas.
- [ ] Task: Conductor - User Manual Verification 'Phase 4: Final Polish' (Protocol in workflow.md)

View File

@@ -0,0 +1,33 @@
# Specification: Selectable GUI Text & UX Improvements
## Overview
This track aims to address UI inconveniences by making critical text across the GUI selectable and copyable. This includes discussion history, communication logs, tool outputs, and key metrics. The goal is to provide a standard "Copy to Clipboard" capability via OS-native selection and shortcuts (Ctrl+C).
## Functional Requirements
- **Selectable Text Areas:**
- **Discussion History:** All messages (User and AI) must be selectable.
- **Comms Log Payloads:** Raw request and response payloads must be selectable.
- **Tool Logs & Scripts:** AI-generated scripts and the output of tool executions must be selectable.
- **AI Settings:** Token usage metrics and other key configuration values must be selectable.
- **Implementation Strategy:**
- Use `imgui.input_text` with `imgui.InputTextFlags_.read_only` and `imgui.InputTextFlags_.multiline` for large text blocks (e.g., payloads, scripts, discussion content).
- Use read-only `imgui.input_text` (single-line) for smaller metrics and labels that need to be copyable.
- Ensure styling (background, borders) is adjusted so these read-only fields look consistent with the existing UI and don't appear as "editable" inputs.
- **Interaction:**
- Support standard OS-level text selection (click and drag).
- Support standard "Copy" via context menu (right-click) and keyboard shortcut (Ctrl+C).
## Non-Functional Requirements
- **Performance:** Ensure that wrapping labels in read-only input fields doesn't negatively impact GUI frame rates, especially in large logs.
- **Visual Consistency:** Maintain the "high-density" aesthetic. Read-only input fields should not have distracting focus rings or background colors unless they are being actively interacted with.
## Acceptance Criteria
- [ ] Users can select and copy text from any message in the Discussion History.
- [ ] Users can select and copy raw JSON payloads from the Comms Log.
- [ ] Users can select and copy generated PowerShell scripts from the Tool Logs.
- [ ] Users can select and copy token usage numbers from the AI Settings panel.
- [ ] Ctrl+C correctly copies the selected text to the clipboard.
## Out of Scope
- Implementing a custom text editor within the GUI.
- Adding "Copy" buttons to every single label (prioritizing selection over buttons).