fix(claudbg-eej6): wrap Handle::block_on with block_in_place in TUI
load_transcript_for_session and load_transcript_for_agent called
Handle::current().block_on() from within the tokio::main async context,
causing a panic on session selection. Wrap with block_in_place() to
signal the scheduler to move other tasks off the thread before blocking.
fix(claudbg-80fb): add #[serde(rename = "sessionId")] to RawEntry.session_id
The JSONL field is camelCase ("sessionId") but serde matched only the
literal field name, so session_id always deserialized as None. This made
AgentRef.session_id default to "", and since any_str.starts_with("") is
always true, load_transcript_for_agent matched the wrong session and
found no agent, leaving sub-agent transcripts permanently empty.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
run_tui() now calls discover_sessions() before entering the event loop,
converts each SessionRef to SessionListItem (sorted most-recent-first),
and assigns to state.sessions. Failures silently yield an empty list.
Fixes claudbg-zi1d
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Splits chat area with a 30-char right panel listing sub-agent runs.
Yellow border highlights the focused pane. Tab cycles focus; j/k
navigates agents when panel focused; Enter drills into sub-agent
transcript. Shows "No sub-agents" when list is empty.
Closes claudbg-9c8r
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Quit dialog: centered 26×5 Clear+Block overlay triggered by q/Q,
confirms with q, dismisses with Esc. Help modal: centered 32×14 overlay
triggered by ?, lists all keyboard shortcuts, dismisses with Esc.
Both modals intercept all input while open. Wired into run.rs dispatch.
Closes claudbg-1e1c
Closes claudbg-1tlk
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements run_tui() with RAII terminal guard (TerminalGuard), panic hook
for safe cleanup, and 50ms poll event loop. Placeholder renderer draws a
bordered box. Wires into stubs.rs replacing the coming-soon stub.
Closes claudbg-ut9q
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Defines Screen, Focus, AppState, SessionListItem with state transition
methods (new, enter_transcript, go_back). Reuses existing RawEntry and
AgentRef types. Includes 11 unit tests.
Closes claudbg-nq36
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>