diff --git a/.beans/claudbg-1e1c--tui-quit-confirmation-dialog.md b/.beans/claudbg-1e1c--tui-quit-confirmation-dialog.md index e626a51..93c191b 100644 --- a/.beans/claudbg-1e1c--tui-quit-confirmation-dialog.md +++ b/.beans/claudbg-1e1c--tui-quit-confirmation-dialog.md @@ -1,11 +1,11 @@ --- # claudbg-1e1c title: 'TUI: quit confirmation dialog' -status: in-progress +status: completed type: task priority: normal created_at: 2026-03-30T04:47:46Z -updated_at: 2026-03-30T16:50:26Z +updated_at: 2026-03-30T16:53:43Z parent: claudbg-i6l2 blocked_by: - claudbg-ut9q @@ -46,3 +46,5 @@ Centered overlay on top of the current screen (using `ratatui::widgets::Clear` t ## Blocked by - event loop (claudbg-ut9q) + +## Summary of Changes\n\nCreated src/tui/modals/quit_dialog.rs with render_quit_dialog() (26×5 centered overlay) and handle_quit_dialog_event() (q/Q→quit, Esc→dismiss). Updated session_list.rs q handler to set show_quit_dialog=true. Wired into run.rs. 147 tests pass. diff --git a/.beans/claudbg-1tlk--tui-help-modal-listing-all-keyboard-shortcuts.md b/.beans/claudbg-1tlk--tui-help-modal-listing-all-keyboard-shortcuts.md index b1cda2a..98974a7 100644 --- a/.beans/claudbg-1tlk--tui-help-modal-listing-all-keyboard-shortcuts.md +++ b/.beans/claudbg-1tlk--tui-help-modal-listing-all-keyboard-shortcuts.md @@ -1,11 +1,11 @@ --- # claudbg-1tlk title: 'TUI: help modal listing all keyboard shortcuts' -status: in-progress +status: completed type: task priority: normal created_at: 2026-03-30T04:48:38Z -updated_at: 2026-03-30T16:50:26Z +updated_at: 2026-03-30T16:53:43Z parent: claudbg-i6l2 blocked_by: - claudbg-ut9q @@ -53,3 +53,5 @@ Press `Escape` to close. ## Blocked by - event loop (claudbg-ut9q) + +## Summary of Changes\n\nCreated src/tui/modals/help_modal.rs with render_help_modal() (32×14 centered Clear+Block overlay, static shortcuts list) and handle_help_modal_event() (Esc dismisses, all keys consumed). Wired into run.rs render and event dispatch. diff --git a/.beans/claudbg-8vpb--transcription-output-improvements.md b/.beans/claudbg-8vpb--transcription-output-improvements.md index b3bc531..94bca24 100644 --- a/.beans/claudbg-8vpb--transcription-output-improvements.md +++ b/.beans/claudbg-8vpb--transcription-output-improvements.md @@ -1,10 +1,11 @@ --- # claudbg-8vpb title: Transcription output improvements -status: todo +status: completed type: epic +priority: normal created_at: 2026-03-30T04:43:30Z -updated_at: 2026-03-30T04:43:30Z +updated_at: 2026-03-30T17:02:41Z --- Groups bugs in `sessions transcribe` and `agents transcribe` output: tools display format, duration miscalculation, tool result visibility defaults, and tool input truncation. diff --git a/.beans/claudbg-9c8r--tui-sub-agents-panel-in-transcript-view.md b/.beans/claudbg-9c8r--tui-sub-agents-panel-in-transcript-view.md index 356df0f..bfe13bb 100644 --- a/.beans/claudbg-9c8r--tui-sub-agents-panel-in-transcript-view.md +++ b/.beans/claudbg-9c8r--tui-sub-agents-panel-in-transcript-view.md @@ -1,11 +1,11 @@ --- # claudbg-9c8r title: 'TUI: sub-agents panel in transcript view' -status: in-progress +status: completed type: feature priority: normal created_at: 2026-03-30T04:47:15Z -updated_at: 2026-03-30T16:59:55Z +updated_at: 2026-03-30T17:02:14Z parent: claudbg-i6l2 blocked_by: - claudbg-rudq @@ -42,3 +42,5 @@ The panel is ~25% of the frame width (or a fixed ~30 chars). - transcript screen (claudbg-rudq) - agent discovery fix (claudbg-33n0) + +## Summary of Changes\n\nModified render_transcript() to split chat area horizontally (Min(0) + Length(30)). Sub-agents panel shows agent list with yellow border/selection highlight when focused. Tab toggles focus. j/k navigates sub-agents when panel focused. Enter navigates to SubagentTranscript. Panel shows 'No sub-agents' when empty. 184 tests pass. diff --git a/.beans/claudbg-i6l2--tui-interactive-session-browser.md b/.beans/claudbg-i6l2--tui-interactive-session-browser.md index fa2c739..c35a5f7 100644 --- a/.beans/claudbg-i6l2--tui-interactive-session-browser.md +++ b/.beans/claudbg-i6l2--tui-interactive-session-browser.md @@ -1,10 +1,11 @@ --- # claudbg-i6l2 title: 'TUI: interactive session browser' -status: todo +status: completed type: epic +priority: normal created_at: 2026-03-30T04:44:52Z -updated_at: 2026-03-30T04:44:52Z +updated_at: 2026-03-30T17:02:35Z --- Implement a full terminal UI using Ratatui for browsing Claude Code sessions. @@ -39,3 +40,5 @@ Sorted most-recent-first. **Non-goals for this milestone** - Live refresh / follow mode (future feature) - Color themes / configuration + +## Summary of Changes\n\nFull TUI implementation completed across 8 sub-tasks:\n- ratatui + crossterm deps added\n- AppState/Screen/Focus model with navigation methods\n- Terminal setup, RAII guard, panic hook, 50ms event loop\n- Session list screen (Table widget, j/k nav)\n- Transcript screen (stats header + scrollable chat log)\n- Sub-agents panel (30-char right split, Tab focus, Enter drill-in)\n- Quit confirmation dialog (q→confirm, Esc→cancel)\n- Help modal (? → shortcuts overlay) diff --git a/.beans/claudbg-nq36--tui-app-state-model-and-screen-enum.md b/.beans/claudbg-nq36--tui-app-state-model-and-screen-enum.md index f5bdb94..1ca9f8b 100644 --- a/.beans/claudbg-nq36--tui-app-state-model-and-screen-enum.md +++ b/.beans/claudbg-nq36--tui-app-state-model-and-screen-enum.md @@ -1,11 +1,11 @@ --- # claudbg-nq36 title: 'TUI: app state model and screen enum' -status: in-progress +status: completed type: task priority: normal created_at: 2026-03-30T04:45:19Z -updated_at: 2026-03-30T16:37:25Z +updated_at: 2026-03-30T16:40:31Z parent: claudbg-i6l2 blocked_by: - claudbg-78xt @@ -54,3 +54,5 @@ pub struct AppState { ## Blocked by - ratatui dependency task (claudbg-78xt) + +## Summary of Changes\n\nCreated src/tui/mod.rs and src/tui/state.rs with Screen enum, Focus enum, AppState struct, SessionListItem, and AgentRef types. Added state transition methods: new(), enter_transcript(), enter_subagent_transcript(), go_back(). Reuses existing RawEntry and AgentRef types. 11 unit tests all pass. Wired into lib.rs via pub mod tui. diff --git a/.beans/claudbg-pta8--tui-session-list-screen-widget.md b/.beans/claudbg-pta8--tui-session-list-screen-widget.md index 562a5fb..31015ae 100644 --- a/.beans/claudbg-pta8--tui-session-list-screen-widget.md +++ b/.beans/claudbg-pta8--tui-session-list-screen-widget.md @@ -1,11 +1,11 @@ --- # claudbg-pta8 title: 'TUI: session list screen widget' -status: in-progress +status: completed type: feature priority: normal created_at: 2026-03-30T04:45:53Z -updated_at: 2026-03-30T16:47:21Z +updated_at: 2026-03-30T16:50:08Z parent: claudbg-i6l2 blocked_by: - claudbg-nq36 @@ -38,3 +38,5 @@ Render the full-screen session list as the TUI's home screen. - app state model (claudbg-nq36) - agent discovery fix (claudbg-33n0) — for accurate agent counts + +## Summary of Changes\n\nCreated src/tui/screens/session_list.rs with render_session_list() (ratatui Table with REVERSED highlight, truncated project paths) and handle_session_list_event() (Up/k/Down/j navigation, Enter→transcript, q/Esc→quit, ?→help). 18 unit tests. Wired into run.rs render dispatch and event delegation. 134 total tests pass. diff --git a/.beans/claudbg-rudq--tui-transcript-screen-chat-log-and-stats-header.md b/.beans/claudbg-rudq--tui-transcript-screen-chat-log-and-stats-header.md index b466426..6a68085 100644 --- a/.beans/claudbg-rudq--tui-transcript-screen-chat-log-and-stats-header.md +++ b/.beans/claudbg-rudq--tui-transcript-screen-chat-log-and-stats-header.md @@ -1,11 +1,11 @@ --- # claudbg-rudq title: 'TUI: transcript screen — chat log and stats header' -status: in-progress +status: completed type: feature priority: normal created_at: 2026-03-30T04:46:56Z -updated_at: 2026-03-30T16:53:51Z +updated_at: 2026-03-30T16:59:42Z parent: claudbg-i6l2 blocked_by: - claudbg-ut9q @@ -44,3 +44,5 @@ Load `RawEntry` list from raw JSONL via `read_session_file` when entering transc ## Blocked by - app state (claudbg-nq36), event loop (claudbg-ut9q) + +## Summary of Changes\n\nCreated src/tui/screens/transcript.rs with render_transcript() (4-row stats header + scrollable chat log via Paragraph::scroll) and handle_transcript_event() (Up/k/Down/j/Left/h/Right/l scroll, Tab focus toggle, Esc→back, q→quit dialog). Data loaded lazily via maybe_load_transcript() in run.rs event loop. Thinking blocks skipped, tool results truncated to 200 chars. Subagents populated for future panel. 37 new tests, 184 total passing. diff --git a/.beans/claudbg-tci9--session-list-dump-improvements.md b/.beans/claudbg-tci9--session-list-dump-improvements.md index 03e6f7b..7c93dec 100644 --- a/.beans/claudbg-tci9--session-list-dump-improvements.md +++ b/.beans/claudbg-tci9--session-list-dump-improvements.md @@ -1,10 +1,11 @@ --- # claudbg-tci9 title: Session list & dump improvements -status: todo +status: completed type: epic +priority: normal created_at: 2026-03-30T04:34:16Z -updated_at: 2026-03-30T04:34:16Z +updated_at: 2026-03-30T17:02:41Z --- Groups bugs and improvements to the `sessions list` and `sessions dump` commands: table overflow, JSON output format, --include help text, duplicate row collapsing, and sub-agent count. diff --git a/.beans/claudbg-ut9q--tui-terminal-setup-event-loop-and-teardown.md b/.beans/claudbg-ut9q--tui-terminal-setup-event-loop-and-teardown.md index 86a5767..49d26af 100644 --- a/.beans/claudbg-ut9q--tui-terminal-setup-event-loop-and-teardown.md +++ b/.beans/claudbg-ut9q--tui-terminal-setup-event-loop-and-teardown.md @@ -1,11 +1,11 @@ --- # claudbg-ut9q title: 'TUI: terminal setup, event loop, and teardown' -status: in-progress +status: completed type: task priority: normal created_at: 2026-03-30T04:45:32Z -updated_at: 2026-03-30T16:42:32Z +updated_at: 2026-03-30T16:47:13Z parent: claudbg-i6l2 blocked_by: - claudbg-nq36 @@ -36,3 +36,5 @@ Replaces the stub in `src/commands/stubs.rs` (the `Tui` command handler). The `t ## Blocked by - ratatui deps (claudbg-78xt), app state (claudbg-nq36) + +## Summary of Changes\n\nCreated src/tui/run.rs with TerminalGuard (RAII cleanup), install_panic_hook, run_tui() event loop at 50ms poll. Placeholder render draws a bordered box. Handles q/Esc to quit. Added should_quit field to AppState. Wired into stubs.rs replacing the coming-soon stub. cargo check and clippy pass clean.