30 Commits (ddaa772da490806cb585904350c0474229d3ed1f)

Author SHA1 Message Date
Elijah Voigt 8af7089734 feat(claudbg-28ao): move db and tui history into ~/.claude/claudbg/ subdirectory
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt b4c22d905c feat(claudbg-vcxz): document filter syntax in help modal
Add wildcard, AND/OR logic, and date format to the Filter fields section;
widen the help dialog to 40 cols to accommodate the new entries cleanly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 3e5125b90b feat(claudbg-pow4): add cursor movement to filter/search bar input
Add filter_cursor and search_cursor fields to AppState; handle Left/Right
to move cursor, Home/End to jump, cursor-aware Backspace (deletes before
cursor), and cursor-aware character insertion. Render the cursor at the
correct mid-text position. Update help modal to document new bindings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 02e86e5062 feat(claudbg-wfoe): Ctrl+C quits TUI immediately without confirmation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 9abd18ab45 feat(claudbg-wxdt): left-truncate project path in TUI session list
Pass project_max directly to truncate_project instead of project_max+30,
so the function (not ratatui's right-clip) controls truncation — showing
the end of the path (e.g. …/foo/bar) rather than the beginning.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 590e9e209e feat(claudbg-ysj0): prevent transcript overflow and add Ctrl+L redraw
Switch chat-log layout constraint from Min(0) to Fill(1) to ensure the
transcript panel never bleeds into the sub-agents panel. Add Ctrl+L
keybinding (global + transcript screen) that sets needs_clear, causing
terminal.clear() before the next draw to flush rendering artifacts. Update
help modal to document Ctrl+L.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt fd54cebd57 feat(claudbg-xokw): accept 'msgs' as alias for 'messages' in filter fields
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 03caf03a72 feat(claudbg-6m2c): add in/out/tokens filter fields for token-count filtering
Add `in:<N>`, `out:<N>`, and `tokens:<N>` filter fields (with `:`, `>`, `<`
operators) to the TUI filter query language. Populate input_tokens and
output_tokens on SessionListItem from the DB sessions table, wire them into
the SessionRow trait, and update the help modal to document the new fields.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt ae81563983 feat(claudbg-e49f): add Home/End key bindings to jump to top/bottom of transcript
Home jumps to the top (scroll = 0) and End jumps to the bottom, mirroring
the existing gg/G vim-style bindings. Help modal updated to document both.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 52f33202d3 feat(claudbg-8bs3): highlight selected agent row with REVERSED style instead of '>' cursor
Replace the '>' prefix + yellow fg on the selected/viewing agent row with
Modifier::REVERSED applied to the full span, matching ratatui Table highlight
conventions and removing the need for a cursor character.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 1fd9f8c259 feat(claudbg-vqhj): '/' key focuses filter/search bar
Press '/' to immediately focus the filter input on the session-list
screen and the search input on the transcript screen, matching the
less(1) convention. Updates help modal and placeholder hint text.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 7696a5560f fix(claudbg-j9az): populate model from DB in TUI session list
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 0c6ecf1165 feat(claudbg-e4ac): highlight active agent in sidebar when viewing its transcript
When the user is viewing a SubagentTranscript, the corresponding entry
in the sub-agents panel is now highlighted with '>' prefix regardless
of which panel has keyboard focus.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 76870fa306 feat(claudbg-mfpd): Esc/Backspace returns to session transcript from agent transcript
When on SubagentTranscript, Esc or Backspace now goes back to the parent
session's Transcript view (lazy-reloads entries) instead of jumping all
the way to the session list. Transcript → session list path unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt a6a0b9a0db feat(claudbg-6t38,claudbg-trk3): add gg/G vim-style jump navigation in transcript
gg (double-g): jump to top of transcript via pending_g chord detection.
G (Shift+G): jump to bottom of transcript.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt ae337dcf94 fix(claudbg-4gtn): clamp Space/PageDown scroll to end of transcript content
Compute total rendered lines on each page-down keypress and cap the
scroll offset so it cannot scroll past the last line.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 3b209745fc fix(claudbg-0yk4,claudbg-zniv): populate msg count and project path from DB in TUI
Query the DB cache on TUI startup to enrich SessionListItems with
message_count and fallback project_path for sessions whose JSONL
first line lacks a cwd field.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt b7c54dd463 fix(claudbg-u28r): use blue/white search highlight for light mode legibility
Also close claudbg-4g3l, claudbg-ltt0, claudbg-37cj as already implemented.
Fixes pre-existing fmt issues in agents.rs, sessions.rs, filter.rs, and TUI files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 3ba8cf0e07 feat(claudbg-agi7): transcript search panel with highlight and n/N navigation
- Bottom search bar (3 rows, always visible), press 't' to focus
- Case-insensitive match highlighting (yellow bg) across all spans
- Panel title shows current/total match count (e.g. "2/7")
- 'n'/'N' navigate next/previous match, wrapping around
- Enter applies search and returns focus to chat log
- Esc clears search and returns focus to chat log
- Tab cycles ChatLog → SubagentsPanel → SearchInput → ChatLog
- Help modal updated with search keybindings

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt f4f341d133 feat(claudbg-nypt): Space/PageDown page down, Shift+Space/PageUp page up in TUI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 96fc4d948d fix(claudbg-eej6,claudbg-80fb): fix two TUI session/agent transcript bugs
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>
2 months ago
Elijah Voigt 5bc207c455 feat(claudbg-gf58): TUI filter panel with persistent query history
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt e0398fd5bb feat(claudbg-6gx6): TUI c key toggles color globally
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 7f864192e8 fix(tui): populate session list from disk on startup
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>
2 months ago
Elijah Voigt f80185e442 feat(tui): add sub-agents panel to transcript screen
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>
2 months ago
Elijah Voigt 0581431dd7 feat(tui): add transcript screen with stats header and chat log
Renders 4-row stats header (session ID, model, tokens, duration, tools)
above a scrollable chat log (Paragraph::scroll). Thinking blocks filtered,
tool results truncated to 200 chars. Handles scroll, Tab focus toggle,
Esc→back, q→quit dialog. Loads data lazily in event loop.

Closes claudbg-rudq

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 523bf4b89c feat(tui): add quit confirmation dialog and help modal
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>
2 months ago
Elijah Voigt 06b0c7cc57 feat(tui): add session list screen widget
Renders full-screen session list using ratatui Table with REVERSED
selection highlight. Columns: ID, Date, Project (tail-truncated), Model,
Msgs, Agents. Handles Up/k/Down/j nav, Enter→transcript, q/Esc→quit.
Wired into event loop render dispatch.

Closes claudbg-pta8

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 1ddf7fb4fe feat(tui): add terminal setup, event loop, and teardown
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>
2 months ago
Elijah Voigt c3721bc9ef feat(tui): add app state model and screen enum
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>
2 months ago