From 4dc1eb12832bcb08373dc9c0243d074d864475a3 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Mon, 1 Jun 2026 18:32:37 -0400 Subject: [PATCH] chore(conductor): Add new track 'selectable_thinking_monologs_20260601' --- conductor/tracks.md | 5 +++++ .../index.md | 5 +++++ .../metadata.json | 8 ++++++++ .../plan.md | 18 ++++++++++++++++++ .../spec.md | 19 +++++++++++++++++++ 5 files changed, 55 insertions(+) create mode 100644 conductor/tracks/selectable_thinking_monologs_20260601/index.md create mode 100644 conductor/tracks/selectable_thinking_monologs_20260601/metadata.json create mode 100644 conductor/tracks/selectable_thinking_monologs_20260601/plan.md create mode 100644 conductor/tracks/selectable_thinking_monologs_20260601/spec.md diff --git a/conductor/tracks.md b/conductor/tracks.md index 648b6861..1518a3ce 100644 --- a/conductor/tracks.md +++ b/conductor/tracks.md @@ -275,3 +275,8 @@ This file tracks all major tracks for the project. Each track has its own detail - [x] **Track: Fix `keys_down` AttributeError in ImGui IO** *Link: [./tracks/fix_imgui_keys_down_20260601/](./tracks/fix_imgui_keys_down_20260601/)* + +--- + +- [ ] **Track: Selectable Thinking Monologs** +*Link: [./tracks/selectable_thinking_monologs_20260601/](./tracks/selectable_thinking_monologs_20260601/)* diff --git a/conductor/tracks/selectable_thinking_monologs_20260601/index.md b/conductor/tracks/selectable_thinking_monologs_20260601/index.md new file mode 100644 index 00000000..bba81b12 --- /dev/null +++ b/conductor/tracks/selectable_thinking_monologs_20260601/index.md @@ -0,0 +1,5 @@ +# Track selectable_thinking_monologs_20260601 Context + +- [Specification](./spec.md) +- [Implementation Plan](./plan.md) +- [Metadata](./metadata.json) \ No newline at end of file diff --git a/conductor/tracks/selectable_thinking_monologs_20260601/metadata.json b/conductor/tracks/selectable_thinking_monologs_20260601/metadata.json new file mode 100644 index 00000000..53c145bf --- /dev/null +++ b/conductor/tracks/selectable_thinking_monologs_20260601/metadata.json @@ -0,0 +1,8 @@ +{ + "track_id": "selectable_thinking_monologs_20260601", + "type": "feature", + "status": "new", + "created_at": "2026-06-01T00:00:00Z", + "updated_at": "2026-06-01T00:00:00Z", + "description": "Selectable Thinking Monologs" +} \ No newline at end of file diff --git a/conductor/tracks/selectable_thinking_monologs_20260601/plan.md b/conductor/tracks/selectable_thinking_monologs_20260601/plan.md new file mode 100644 index 00000000..4c32dfa2 --- /dev/null +++ b/conductor/tracks/selectable_thinking_monologs_20260601/plan.md @@ -0,0 +1,18 @@ +# Implementation Plan: Selectable Thinking Monologs + +## Phase 1: UI Implementation +- [ ] Task: Update `render_thinking_trace` signature + - [ ] Modify `def render_thinking_trace(app: App, segments: list[dict], entry_index: int, is_standalone: bool = False)` to accept the parent `entry: dict`. + - [ ] Update all calls to `render_thinking_trace` in `src/gui_2.py` (e.g., in `render_discussion_entry` and `render_comms_history_panel`) to pass the appropriate `entry` object. For standalone traces where an entry dictionary might not exist, pass a dummy dict to hold the state. +- [ ] Task: Implement the UI Toggle + - [ ] Inside `render_thinking_trace`, below or next to the `imgui.collapsing_header`, add an `imgui.button` that toggles `entry.get("thinking_read_mode", True)`. +- [ ] Task: Implement Conditional Rendering + - [ ] If `thinking_read_mode` is `True` (Read mode), use `markdown_helper.render(content)` or `imgui.text_wrapped` for a clean reading view. + - [ ] If `thinking_read_mode` is `False` (Pure mode), use `render_selectable_label(app, f"think_text_...", content, multiline=True, height=-1)` to make the text selectable and copyable. + +## Phase 2: Verification +- [ ] Task: Verification + - [ ] Verify that thinking traces in the Discussion Hub can be toggled between Pure and Read modes. + - [ ] Verify that text can be selected and copied via Ctrl+C in Pure mode. + - [ ] Verify that the change does not crash other areas rendering thinking traces (like Comms History). +- [ ] Task: Conductor - User Manual Verification 'Phase 2: Verification' (Protocol in workflow.md) \ No newline at end of file diff --git a/conductor/tracks/selectable_thinking_monologs_20260601/spec.md b/conductor/tracks/selectable_thinking_monologs_20260601/spec.md new file mode 100644 index 00000000..992b7b6d --- /dev/null +++ b/conductor/tracks/selectable_thinking_monologs_20260601/spec.md @@ -0,0 +1,19 @@ +# Specification: Selectable Thinking Monologs + +## 1. Overview +The user currently cannot easily select and copy text from the "agent thinking" monologues (the `` traces) displayed in the Discussion Hub. These traces are rendered using unselectable `imgui.text()` calls. The goal is to make these monologues interactable by introducing a UI toggle, similar to the existing `[Edit]`/`[Read]` toggle for regular discussion entries. + +## 2. Functional Requirements +* **Mode Toggle:** Introduce a toggle button (e.g., `[Pure]` / `[Read]`) within or adjacent to the "Monologue" collapsible header. +* **"Read" Mode (Default):** Retains the current visual rendering (potentially enhanced with `markdown_helper` if formatting exists, or just standard text wrapping) optimized for reading. +* **"Pure" Mode:** Renders the thinking trace content using the `render_selectable_label` pattern, allowing standard OS-level text selection and copying (Ctrl+C). It should remain read-only. +* **State Persistence:** The toggle state (`thinking_read_mode`) should ideally be stored within the specific discussion `entry` dictionary to survive UI frame updates, similar to the main entry's `read_mode`. + +## 3. Non-Functional Requirements +* **Performance:** Switching modes should be instantaneous and not block the render loop. +* **Consistency:** The toggle UI and text selection behavior must perfectly match the established patterns used for main discussion entries and system logs. + +## 4. Acceptance Criteria +* The user can expand a "Monologue" section, click a `[Pure]` button, and highlight/copy the raw text of the thinking trace. +* Clicking `[Read]` restores the optimized reading view. +* The visual layout of the Monologue header remains clean and aligned with the surrounding discussion entries. \ No newline at end of file