TUI: Add session resume picker (--resume) and quick resume (--continue) (#3135)
Adds a TUI resume flow with an interactive picker and quick resume. - CLI: - --resume / -r: open picker to resume a prior session - --continue / -l: resume the most recent session (no picker) - Behavior on resume: initial history is replayed, welcome banner hidden, and the first redraw is suppressed to avoid flicker. - Implementation: - New tui/src/resume_picker.rs (paginated listing via RolloutRecorder::list_conversations) - App::run accepts ResumeSelection; resumes from disk when requested - ChatWidget refactor with ChatWidgetInit and new_from_existing; replays initial messages - Tests: cover picker sorting/preview extraction and resumed-history rendering. - Docs: getting-started updated with flags and picker usage. https://github.com/user-attachments/assets/1bb6469b-e5d1-42f6-bec6-b1ae6debda3b
This commit is contained in:
@@ -13,6 +13,30 @@ pub struct Cli {
|
||||
#[arg(long = "image", short = 'i', value_name = "FILE", value_delimiter = ',', num_args = 1..)]
|
||||
pub images: Vec<PathBuf>,
|
||||
|
||||
/// Open an interactive picker to resume a previous session recorded on disk
|
||||
/// instead of starting a new one.
|
||||
///
|
||||
/// Notes:
|
||||
/// - Mutually exclusive with `--continue`.
|
||||
/// - The picker displays recent sessions and a preview of the first real user
|
||||
/// message to help you select the right one.
|
||||
#[arg(long = "resume", default_value_t = false, conflicts_with = "continue")]
|
||||
pub resume: bool,
|
||||
|
||||
/// Continue the most recent conversation without showing the picker.
|
||||
///
|
||||
/// Notes:
|
||||
/// - Mutually exclusive with `--resume`.
|
||||
/// - If no recorded sessions are found, this behaves like starting fresh.
|
||||
/// - Equivalent to picking the newest item in the resume picker.
|
||||
#[arg(
|
||||
id = "continue",
|
||||
long = "continue",
|
||||
default_value_t = false,
|
||||
conflicts_with = "resume"
|
||||
)]
|
||||
pub r#continue: bool,
|
||||
|
||||
/// Model the agent should use.
|
||||
#[arg(long, short = 'm')]
|
||||
pub model: Option<String>,
|
||||
|
||||
Reference in New Issue
Block a user