From 07bff7691a6da4ec9c71ee1876dc82d760bbebf2 Mon Sep 17 00:00:00 2001 From: "Dhanji R. Prasanna" Date: Sun, 18 Jan 2026 18:09:51 +0530 Subject: [PATCH] Make /resume session prompt more compact Output is now a single line: Session number to resume (Enter to cancel): 1 ... resuming scout_88871653e8e5f4f7 [done] - Session ID displayed in cyan - [done] displayed in bold green - [error: ...] displayed in bold red on failure - Added print_inline() to SimpleOutput for inline prompts --- crates/g3-cli/src/interactive.rs | 26 +++++++++++++++----------- crates/g3-cli/src/simple_output.rs | 6 ++++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/crates/g3-cli/src/interactive.rs b/crates/g3-cli/src/interactive.rs index 833dca0..7fc42db 100644 --- a/crates/g3-cli/src/interactive.rs +++ b/crates/g3-cli/src/interactive.rs @@ -554,30 +554,34 @@ async fn handle_command( current_marker )); } - output.print(""); - output.print("Enter session number to resume (or press Enter to cancel):"); + output.print_inline("\nSession number to resume (Enter to cancel): "); // Read user selection - if let Ok(selection) = rl.readline("> ") { + if let Ok(selection) = rl.readline("") { let selection = selection.trim(); if selection.is_empty() { - output.print("Resume cancelled."); + output.print("Cancelled."); } else if let Ok(num) = selection.parse::() { if num >= 1 && num <= sessions.len() { let selected = &sessions[num - 1]; - output.print(&format!( - "🔄 Switching to session: {}", - selected.session_id - )); match agent.switch_to_session(selected) { Ok(true) => { - output.print("✅ Full context restored from session.") + output.print_inline(&format!( + "... resuming \x1b[36m{}\x1b[0m \x1b[1;32m[done]\x1b[0m\n", + selected.session_id + )); } Ok(false) => { - output.print("✅ Session restored from summary.") + output.print_inline(&format!( + "... resuming \x1b[36m{}\x1b[0m (summary) \x1b[1;32m[done]\x1b[0m\n", + selected.session_id + )); } Err(e) => { - output.print(&format!("❌ Error restoring session: {}", e)) + output.print_inline(&format!( + "... resuming \x1b[36m{}\x1b[0m \x1b[1;31m[error: {}]\x1b[0m\n", + selected.session_id, e + )); } } } else { diff --git a/crates/g3-cli/src/simple_output.rs b/crates/g3-cli/src/simple_output.rs index 0c1b1b4..c242a1d 100644 --- a/crates/g3-cli/src/simple_output.rs +++ b/crates/g3-cli/src/simple_output.rs @@ -13,6 +13,12 @@ impl SimpleOutput { println!("{}", message); } + pub fn print_inline(&self, message: &str) { + use std::io::{Write, stdout}; + print!("{}", message); + let _ = stdout().flush(); + } + pub fn print_smart(&self, message: &str) { println!("{}", message); }