84 Commits (main)
 

Author SHA1 Message Date
Elijah Voigt 878e79733f fix(claudbg-gtu4): sync sessions to DB before querying message counts in TUI
TUI startup was querying message_count from the DB without first calling
ensure_synced, so counts were always 0 if the user hadn't run sessions list
or index previously. Now syncs each session before the SELECT query.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt ddaa772da4 chore: update bean statuses for completed tickets
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
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 41bf6e2a38 chore: mark claudbg-pow4 as completed
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 b710a775fa chore(claudbg-wfoe): mark bean completed
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 8a0ddf8ccd chore(claudbg-wxdt): mark bean completed
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 f6a4bd0535 chore: ticket all TODO.md items and clear the list
Created 7 new beans for untracked TODO items:
- claudbg-wfoe: Ctrl+C quits without confirmation
- claudbg-xokw: accept msgs/messages as filter aliases
- claudbg-vcxz: document filter syntax in help text
- claudbg-pow4: cursor movement in filter/search bar
- claudbg-ysj0: prevent transcript overflow + Ctrl+L redraw
- claudbg-28ao: move db/history files to ~/.claude/claudbg/
- claudbg-wxdt: truncate project path from start in TUI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt f8d666f2ad misc updates 2 months ago
Elijah Voigt 7679cfeb36 chore: update beans to completed after toil session
- claudbg-j9az: fix model column blank in sessions list
- claudbg-vqhj: '/' key focuses filter/search bar
- claudbg-8bs3: color-highlight selected agent row
- claudbg-e49f: Home/End keys for transcript navigation
- claudbg-6m2c: token count filter fields (in:/out:/tokens:)

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 0940c6f523 chore: ticket TODO.md items as beans, remove already-done item
- claudbg-vqhj: '/' key to focus filter/search bar
- claudbg-j9az: bug — model column always blank in sessions list
- claudbg-6m2c: token count filter fields (in:/out:/tokens: with </> ops)
- claudbg-e49f: Home/End keys to jump to top/bottom of transcript
- claudbg-8bs3: color-highlight selected agent row instead of '>' cursor

Removed "project truncates beginning" TODO item — already implemented
in truncate_project() which prepends '…' and keeps the tail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 0bca469701 fix(claudbg-9627): scan up to 20 lines for cwd field in session discovery
The project path was missing for sessions whose first JSONL line has no
cwd field. Fix reads up to 20 non-empty lines to find any entry with cwd
(typically a system-type entry that may not be at line 1).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt f45a0dfd87 feat(claudbg-x45o): sessions list scopes to current project by default
Add --scope=project|user flag to `sessions list` (default: project).
When project scope is active, only sessions whose project_path matches
the current working directory are shown. Use --scope=user to see all.

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 bb50c0c01d chore: convert TODO.md items to beans tickets
Created 10 beans covering all tracked work items:
- claudbg-x45o: sessions list --scope flag (project-scoped by default)
- claudbg-9627: sessions list missing project path bug
- claudbg-zniv: TUI missing project path bug
- claudbg-0yk4: TUI message count always 0
- claudbg-4gtn: Space/PageDown scrolls past transcript end
- claudbg-e4ac: selected agent highlights in agents widget
- claudbg-mfpd: back-navigation from agent to session transcript
- claudbg-u28r: search highlight unreadable in light mode
- claudbg-trk3: Shift+G jump to bottom of transcript
- claudbg-6t38: gg jump to top of transcript

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 9be62abb78 chore(claudbg-g0oh): remove cargo-nextest, use cargo test
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 403762400e feat(claudbg-horp): add --filter flag to sessions/agents list commands
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 277e3a8667 feat(claudbg-4bms): filter query parser with AND/OR and key:value syntax
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 c4646cf0e2 feat(claudbg-d8ht): color-coded transcript label prefixes in CLI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 8d72b0e971 feat(claudbg-37cj): add --[no-]color global flag and NO_COLOR support
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 9c9f61efd1 feat(claudbg-4g3l): add --limit flag to list commands, default 10
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 months ago
Elijah Voigt 970ed0895f feat(claudbg-ltt0): sessions with no subcommand defaults to list
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 3dd463b3ae chore(beans): close completed epics
Mark TUI, session list & dump, and transcription output epics as
completed — all child tasks done.

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