You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
claudbg/.beans/claudbg-i6l2--tui-interacti...

45 lines
2.1 KiB
Markdown

---
# claudbg-i6l2
title: 'TUI: interactive session browser'
status: completed
type: epic
priority: normal
created_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.
## Design
**Navigation model:** drill-down (not split-pane)
- Screen 1: full-screen session list → Enter opens transcript
- Screen 2: full-screen transcript with embedded sub-agents panel → Tab cycles panes, Escape returns to list
- Screen 3: sub-agent transcript (same layout as Screen 2, Escape returns to parent transcript)
**Session list screen**
Columns: short ID, datetime, project (truncated tail), model, message count, sub-agent count.
Sorted most-recent-first.
**Transcript screen**
- Header: session ID, model, tokens (in/out/cache), tool call summary, duration
- Scrollable chat log: user messages, assistant text, tool use blocks (truncated), tool results (truncated)
- Long lines truncated with horizontal scroll
- Sub-agents panel (Tab to focus): list of sub-agent runs for this session; Enter navigates to sub-agent transcript
- Thinking blocks hidden by default
**Keyboard bindings**
- `Up`/`Down`/`k`/`j` — navigate within pane
- `Left`/`Right`/`h`/`l` — horizontal scroll in transcript
- `Tab` — cycle focus between panes
- `Enter` — drill into selection
- `Escape` — go back
- `q`/`Q` — quit confirmation dialog (q=confirm, Esc=cancel)
- `?` — help modal listing all shortcuts (Esc to close)
**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)