chore(conductor): Add new track 'Selectable GUI Text & UX Improvements'

This commit is contained in:
2026-03-08 13:31:05 -04:00
parent 66338b3ba0
commit 87c9953b2e
5 changed files with 87 additions and 8 deletions

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).