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-zi1d--tui-session-l...

2.0 KiB

title status type priority created_at updated_at parent
TUI session list shows no sessions — state.sessions never populated on startup completed bug high 2026-03-30T17:05:02Z 2026-03-30T21:02:18Z claudbg-i6l2

Problem

The TUI session list is always empty. run_tui() in src/tui/run.rs creates AppState::new() (which has sessions: Vec::new()) and enters the event loop without ever loading sessions from disk.

Root cause

discover_sessions() in src/parser/discovery.rs is never called from the TUI startup path. The session list screen renders from state.sessions which stays empty forever.

Fix

Before entering the event loop in run_tui(), call discover_sessions() and convert each SessionRef into a SessionListItem, then populate state.sessions.

SessionRef → SessionListItem mapping

  • short_id = first 8 chars of session_id
  • full_id = session_id
  • date = modified_at.format("%Y-%m-%d %H:%M:%S")
  • project = project_path.unwrap_or_default()
  • model = "" (leave empty — would require parsing JSONL)
  • msg_count = 0 (leave as 0 for now)
  • agent_count = call discover_agents_for_session(&session_ref.file_path).map(|v| v.len()).unwrap_or(0)

Sort by modified_at descending (most recent first).

Error handling

If discover_sessions() fails, start with an empty list (don't crash). Log the error to stderr before entering the alternate screen, or silently ignore.

Relevant files

  • src/tui/run.rsrun_tui() function, add session loading before the event loop
  • src/parser/discovery.rsdiscover_sessions() and discover_agents_for_session()
  • src/tui/state.rsSessionListItem struct

Summary of Changes\n\nIn run_tui(), before the event loop: call discover_sessions() (silently empty on error), sort by modified_at descending, map each SessionRef to SessionListItem (short_id=8 chars, full_id, date=formatted timestamp, project=cwd, model/msg_count=empty/0, agent_count from discover_agents_for_session). Assign to state.sessions.