Skip to content

Commit 933c769

Browse files
committed
reverts spinner to old implementation
1 parent 27777c6 commit 933c769

File tree

3 files changed

+67
-81
lines changed

3 files changed

+67
-81
lines changed

crates/chat-cli/src/cli/chat/custom_spinner.rs

Lines changed: 0 additions & 67 deletions
This file was deleted.

crates/chat-cli/src/cli/chat/mod.rs

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1+
use spinners::{
2+
Spinner,
3+
Spinners,
4+
};
5+
16
use crate::theme::StyledText;
27
use crate::util::ui::should_send_structured_message;
38
pub mod cli;
49
mod consts;
510
pub mod context;
611
mod conversation;
7-
mod custom_spinner;
812
mod input_source;
913
mod message;
1014
mod parse;
@@ -83,7 +87,6 @@ use crossterm::{
8387
style,
8488
terminal,
8589
};
86-
use custom_spinner::Spinners;
8790
use eyre::{
8891
Report,
8992
Result,
@@ -576,7 +579,7 @@ pub struct ChatSession {
576579
input_source: InputSource,
577580
/// Width of the terminal, required for [ParseState].
578581
terminal_width_provider: fn() -> Option<usize>,
579-
spinner: Option<Spinners>,
582+
spinner: Option<Spinner>,
580583
/// [ConversationState].
581584
conversation: ConversationState,
582585
/// Tool uses requested by the model that are actively being handled.
@@ -829,6 +832,11 @@ impl ChatSession {
829832

830833
if self.spinner.is_some() {
831834
drop(self.spinner.take());
835+
queue!(
836+
self.stderr,
837+
terminal::Clear(terminal::ClearType::CurrentLine),
838+
cursor::MoveToColumn(0),
839+
)?;
832840
}
833841

834842
let (context, report, display_err_message) = match err {
@@ -1138,6 +1146,10 @@ impl ChatSession {
11381146

11391147
impl Drop for ChatSession {
11401148
fn drop(&mut self) {
1149+
if let Some(spinner) = &mut self.spinner {
1150+
spinner.stop();
1151+
}
1152+
11411153
execute!(
11421154
self.stderr,
11431155
cursor::MoveToColumn(0),
@@ -1435,7 +1447,7 @@ impl ChatSession {
14351447
.await?;
14361448

14371449
if self.interactive {
1438-
self.spinner = Some(Spinners::new("Creating summary...".to_string()));
1450+
self.spinner = Some(Spinner::new(Spinners::Dots, "Creating summary...".to_string()));
14391451
}
14401452

14411453
let mut response = match self
@@ -1548,6 +1560,11 @@ impl ChatSession {
15481560

15491561
if self.spinner.is_some() {
15501562
drop(self.spinner.take());
1563+
queue!(
1564+
self.stderr,
1565+
terminal::Clear(terminal::ClearType::CurrentLine),
1566+
cursor::MoveToColumn(0),
1567+
)?;
15511568
}
15521569

15531570
self.conversation
@@ -1718,10 +1735,10 @@ impl ChatSession {
17181735

17191736
if self.interactive {
17201737
execute!(self.stderr, cursor::Hide, style::Print("\n"))?;
1721-
self.spinner = Some(Spinners::new(format!(
1722-
"Generating agent config for '{}'...",
1723-
agent_name
1724-
)));
1738+
self.spinner = Some(Spinner::new(
1739+
Spinners::Dots,
1740+
format!("Generating agent config for '{}'...", agent_name),
1741+
));
17251742
}
17261743

17271744
let mut response = match self
@@ -1783,6 +1800,11 @@ impl ChatSession {
17831800

17841801
if self.spinner.is_some() {
17851802
drop(self.spinner.take());
1803+
queue!(
1804+
self.stderr,
1805+
terminal::Clear(terminal::ClearType::CurrentLine),
1806+
cursor::MoveToColumn(0),
1807+
)?;
17861808
}
17871809
// Parse and validate the initial generated config
17881810
let initial_agent_config = match serde_json::from_str::<Agent>(&agent_config_json) {
@@ -2174,7 +2196,7 @@ impl ChatSession {
21742196
queue!(self.stderr, cursor::Hide)?;
21752197

21762198
if self.interactive {
2177-
self.spinner = Some(Spinners::new("Thinking...".to_owned()));
2199+
self.spinner = Some(Spinner::new(Spinners::Dots, "Thinking...".to_owned()));
21782200
}
21792201

21802202
Ok(ChatState::HandleResponseStream(conv_state))
@@ -2601,7 +2623,7 @@ impl ChatSession {
26012623
execute!(self.stderr, cursor::Hide)?;
26022624
execute!(self.stderr, style::Print("\n"), StyledText::reset_attributes())?;
26032625
if self.interactive {
2604-
self.spinner = Some(Spinners::new("Thinking...".to_string()));
2626+
self.spinner = Some(Spinner::new(Spinners::Dots, "Thinking...".to_string()));
26052627
}
26062628

26072629
self.send_chat_telemetry(os, TelemetryResult::Succeeded, None, None, None, false)
@@ -2657,6 +2679,11 @@ impl ChatSession {
26572679

26582680
if self.spinner.is_some() {
26592681
drop(self.spinner.take());
2682+
queue!(
2683+
self.stderr,
2684+
terminal::Clear(terminal::ClearType::CurrentLine),
2685+
cursor::MoveToColumn(0),
2686+
)?;
26602687
}
26612688

26622689
loop {
@@ -2699,6 +2726,11 @@ impl ChatSession {
26992726
parser::ResponseEvent::ToolUse(tool_use) => {
27002727
if self.spinner.is_some() {
27012728
drop(self.spinner.take());
2729+
queue!(
2730+
self.stderr,
2731+
terminal::Clear(terminal::ClearType::CurrentLine),
2732+
cursor::MoveToColumn(0),
2733+
)?;
27022734
}
27032735
tool_uses.push(tool_use);
27042736
tool_name_being_recvd = None;
@@ -2748,7 +2780,7 @@ impl ChatSession {
27482780
);
27492781

27502782
execute!(self.stderr, cursor::Hide)?;
2751-
self.spinner = Some(Spinners::new("Dividing up the work...".to_string()));
2783+
self.spinner = Some(Spinner::new(Spinners::Dots, "Dividing up the work...".to_string()));
27522784

27532785
// For stream timeouts, we'll tell the model to try and split its response into
27542786
// smaller chunks.
@@ -2940,7 +2972,7 @@ impl ChatSession {
29402972
if tool_name_being_recvd.is_some() {
29412973
queue!(self.stderr, cursor::Hide)?;
29422974
if self.interactive {
2943-
self.spinner = Some(Spinners::new("Thinking...".to_string()));
2975+
self.spinner = Some(Spinner::new(Spinners::Dots, "Thinking...".to_string()));
29442976
}
29452977
}
29462978

@@ -3263,7 +3295,7 @@ impl ChatSession {
32633295
}
32643296

32653297
if self.interactive {
3266-
self.spinner = Some(Spinners::new("Thinking...".to_owned()));
3298+
self.spinner = Some(Spinner::new(Spinners::Dots, "Thinking...".to_owned()));
32673299
}
32683300

32693301
Ok(ChatState::HandleResponseStream(
@@ -3708,7 +3740,7 @@ where
37083740
Fut: std::future::Future<Output = Result<T, E>>,
37093741
{
37103742
queue!(output, cursor::Hide,).ok();
3711-
let spinner = Spinners::new(spinner_text.to_owned());
3743+
let spinner = Spinner::new(Spinners::Dots, spinner_text.to_owned());
37123744

37133745
let result = f().await;
37143746

poem.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
3+
On highways wide, the cars roam free,
4+
Rubber tires on asphalt sea,
5+
Through cities bright and countryside.
6+
7+
The engine purrs with gentle might,
8+
Through traffic jams and open flight,
9+
While cars provide their own sweet ride.
10+
11+
On racing tracks, the engines scream,
12+
Speed demons chasing victory's dream.
13+
14+
Freedom found in every mile,
15+
Journey's end brings traveler's smile,
16+
Adventure calls on every trip.
17+
18+
From vintage classics, proud and old,
19+
To modern marvels, sleek and bold,
20+
Each machine tells its own sweet tale,
21+
Of adventures without fail.

0 commit comments

Comments
 (0)