Skip to content

Commit a1efa1a

Browse files
committed
refactor(query): replace redundant provider/model status with spinner verbs
Replace "Calling {provider} ({model})" status message with a deterministic spinner verb selected from SPINNER_VERBS. The verb is chosen via hash of provider_id and model_id, eliminating redundancy with the model/provider info already shown in the footer.
1 parent a4992cf commit a1efa1a

4 files changed

Lines changed: 62 additions & 51 deletions

File tree

src-rust/crates/core/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ pub mod format_utils;
3434
pub mod crypto_utils;
3535
pub mod status_notices;
3636
pub mod auto_mode;
37+
pub mod spinner;
38+
pub use spinner::{SPINNER_VERBS, TURN_COMPLETION_VERBS, sample_spinner_verb, sample_completion_verb};
3739

3840
// Remote session sync and cloud session API (T3-1, T3-2).
3941
pub mod remote_session;
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/// Spinner verbs displayed during processing.
2+
pub const SPINNER_VERBS: &[&str] = &[
3+
"Accomplishing", "Actioning", "Actualizing", "Architecting", "Baking", "Beaming",
4+
"Beboppin'", "Befuddling", "Billowing", "Blanching", "Bloviating", "Boogieing",
5+
"Boondoggling", "Booping", "Bootstrapping", "Brewing", "Bunning", "Burrowing",
6+
"Calculating", "Canoodling", "Caramelizing", "Cascading", "Catapulting", "Cerebrating",
7+
"Channeling", "Choreographing", "Churning", "Clauding", "Coalescing", "Cogitating",
8+
"Combobulating", "Composing", "Computing", "Concocting", "Considering", "Contemplating",
9+
"Cooking", "Crafting", "Creating", "Crunching", "Crystallizing", "Cultivating",
10+
"Deciphering", "Deliberating", "Determining", "Dilly-dallying", "Discombobulating",
11+
"Doing", "Doodling", "Drizzling", "Ebbing", "Effecting", "Elucidating", "Embellishing",
12+
"Enchanting", "Envisioning", "Evaporating", "Fermenting", "Fiddle-faddling", "Finagling",
13+
"Flambéing", "Flibbertigibbeting", "Flowing", "Flummoxing", "Fluttering", "Forging",
14+
"Forming", "Frolicking", "Frosting", "Gallivanting", "Galloping", "Garnishing",
15+
"Generating", "Gesticulating", "Germinating", "Gitifying", "Grooving", "Gusting",
16+
"Harmonizing", "Hashing", "Hatching", "Herding", "Honking", "Hullaballooing",
17+
"Hyperspacing", "Ideating", "Imagining", "Improvising", "Incubating", "Inferring",
18+
"Infusing", "Ionizing", "Jitterbugging", "Julienning", "Kneading", "Leavening",
19+
"Levitating", "Lollygagging", "Manifesting", "Marinating", "Meandering", "Metamorphosing",
20+
"Misting", "Moonwalking", "Moseying", "Mulling", "Mustering", "Musing", "Nebulizing",
21+
"Nesting", "Newspapering", "Noodling", "Nucleating", "Orbiting", "Orchestrating",
22+
"Osmosing", "Perambulating", "Percolating", "Perusing", "Philosophising",
23+
"Photosynthesizing", "Pollinating", "Pondering", "Pontificating", "Pouncing",
24+
"Precipitating", "Prestidigitating", "Processing", "Proofing", "Propagating", "Puttering",
25+
"Puzzling", "Quantumizing", "Razzle-dazzling", "Razzmatazzing", "Recombobulating",
26+
"Reticulating", "Roosting", "Ruminating", "Sautéing", "Scampering", "Schlepping",
27+
"Scurrying", "Seasoning", "Shenaniganing", "Shimmying", "Simmering", "Skedaddling",
28+
"Sketching", "Slithering", "Smooshing", "Sock-hopping", "Spelunking", "Spinning",
29+
"Sprouting", "Stewing", "Sublimating", "Swirling", "Swooping", "Symbioting",
30+
"Synthesizing", "Tempering", "Thinking", "Thundering", "Tinkering", "Tomfoolering",
31+
"Topsy-turvying", "Transfiguring", "Transmuting", "Twisting", "Undulating", "Unfurling",
32+
"Unravelling", "Vibing", "Waddling", "Wandering", "Warping", "Whatchamacalliting",
33+
"Whirlpooling", "Whirring", "Whisking", "Wibbling", "Working", "Wrangling", "Zesting",
34+
"Zigzagging",
35+
];
36+
37+
/// Past-tense verbs shown in the status row after a turn completes.
38+
pub const TURN_COMPLETION_VERBS: &[&str] = &[
39+
"Baked", "Brewed", "Churned", "Cogitated", "Cooked", "Crunched",
40+
"Pondered", "Processed", "Worked",
41+
];
42+
43+
/// Select a random spinner verb.
44+
pub fn sample_spinner_verb(seed: usize) -> &'static str {
45+
SPINNER_VERBS[seed % SPINNER_VERBS.len()]
46+
}
47+
48+
/// Select a random completion verb.
49+
pub fn sample_completion_verb(seed: usize) -> &'static str {
50+
TURN_COMPLETION_VERBS[seed % TURN_COMPLETION_VERBS.len()]
51+
}

src-rust/crates/query/src/lib.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,8 @@ const MAX_TOKENS_RECOVERY_MSG: &str =
689689
you were doing. Pick up mid-thought if that is where the cut happened. \
690690
Break remaining work into smaller pieces.";
691691

692+
// Spinner verbs are imported from claurst_core::spinner
693+
692694
/// Run the agentic query loop.
693695
///
694696
/// This sends the conversation to the API, handles tool calls in a loop, and
@@ -1055,9 +1057,12 @@ pub async fn run_query_loop(
10551057
if let Some(provider) = provider {
10561058
debug!(provider = %provider_id_str, model = %model_id_str, "Dispatching to non-Anthropic provider");
10571059

1058-
// Notify TUI that we're calling the provider
1060+
// Notify TUI that we're calling the provider using a random spinner verb
10591061
if let Some(ref tx) = event_tx {
1060-
let _ = tx.send(QueryEvent::Status(format!("Calling {} ({})…", provider.name(), model_id_str)));
1062+
use claurst_core::sample_spinner_verb;
1063+
let seed = (provider_id_str.len() ^ model_id_str.len()) as usize;
1064+
let verb = sample_spinner_verb(seed);
1065+
let _ = tx.send(QueryEvent::Status(format!("✳ {}…", verb)));
10611066
}
10621067

10631068
// Build ProviderRequest from the already-assembled request data.

src-rust/crates/tui/src/app.rs

Lines changed: 2 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ use crate::{agents_view::{AgentInfo, AgentStatus, AgentsMenuState, AgentsRoute},
2727
use claurst_core::config::{Config, Settings, Theme};
2828
use claurst_core::cost::CostTracker;
2929
use claurst_core::file_history::FileHistory;
30+
use claurst_core::{sample_completion_verb, sample_spinner_verb};
3031
use claurst_core::keybindings::{
3132
KeyContext, KeybindingResolver, KeybindingResult, ParsedKeystroke, UserKeybindings,
3233
};
@@ -1084,55 +1085,7 @@ pub struct App {
10841085
pub exit_key_sequence_start: Option<char>,
10851086
}
10861087

1087-
const SPINNER_VERBS: &[&str] = &[
1088-
"Accomplishing", "Actioning", "Actualizing", "Architecting", "Baking", "Beaming",
1089-
"Beboppin'", "Befuddling", "Billowing", "Blanching", "Bloviating", "Boogieing",
1090-
"Boondoggling", "Booping", "Bootstrapping", "Brewing", "Bunning", "Burrowing",
1091-
"Calculating", "Canoodling", "Caramelizing", "Cascading", "Catapulting", "Cerebrating",
1092-
"Channeling", "Choreographing", "Churning", "Clauding", "Coalescing", "Cogitating",
1093-
"Combobulating", "Composing", "Computing", "Concocting", "Considering", "Contemplating",
1094-
"Cooking", "Crafting", "Creating", "Crunching", "Crystallizing", "Cultivating",
1095-
"Deciphering", "Deliberating", "Determining", "Dilly-dallying", "Discombobulating",
1096-
"Doing", "Doodling", "Drizzling", "Ebbing", "Effecting", "Elucidating", "Embellishing",
1097-
"Enchanting", "Envisioning", "Evaporating", "Fermenting", "Fiddle-faddling", "Finagling",
1098-
"Flambéing", "Flibbertigibbeting", "Flowing", "Flummoxing", "Fluttering", "Forging",
1099-
"Forming", "Frolicking", "Frosting", "Gallivanting", "Galloping", "Garnishing",
1100-
"Generating", "Gesticulating", "Germinating", "Gitifying", "Grooving", "Gusting",
1101-
"Harmonizing", "Hashing", "Hatching", "Herding", "Honking", "Hullaballooing",
1102-
"Hyperspacing", "Ideating", "Imagining", "Improvising", "Incubating", "Inferring",
1103-
"Infusing", "Ionizing", "Jitterbugging", "Julienning", "Kneading", "Leavening",
1104-
"Levitating", "Lollygagging", "Manifesting", "Marinating", "Meandering", "Metamorphosing",
1105-
"Misting", "Moonwalking", "Moseying", "Mulling", "Mustering", "Musing", "Nebulizing",
1106-
"Nesting", "Newspapering", "Noodling", "Nucleating", "Orbiting", "Orchestrating",
1107-
"Osmosing", "Perambulating", "Percolating", "Perusing", "Philosophising",
1108-
"Photosynthesizing", "Pollinating", "Pondering", "Pontificating", "Pouncing",
1109-
"Precipitating", "Prestidigitating", "Processing", "Proofing", "Propagating", "Puttering",
1110-
"Puzzling", "Quantumizing", "Razzle-dazzling", "Razzmatazzing", "Recombobulating",
1111-
"Reticulating", "Roosting", "Ruminating", "Sautéing", "Scampering", "Schlepping",
1112-
"Scurrying", "Seasoning", "Shenaniganing", "Shimmying", "Simmering", "Skedaddling",
1113-
"Sketching", "Slithering", "Smooshing", "Sock-hopping", "Spelunking", "Spinning",
1114-
"Sprouting", "Stewing", "Sublimating", "Swirling", "Swooping", "Symbioting",
1115-
"Synthesizing", "Tempering", "Thinking", "Thundering", "Tinkering", "Tomfoolering",
1116-
"Topsy-turvying", "Transfiguring", "Transmuting", "Twisting", "Undulating", "Unfurling",
1117-
"Unravelling", "Vibing", "Waddling", "Wandering", "Warping", "Whatchamacalliting",
1118-
"Whirlpooling", "Whirring", "Whisking", "Wibbling", "Working", "Wrangling", "Zesting",
1119-
"Zigzagging",
1120-
];
1121-
1122-
fn sample_spinner_verb(seed: usize) -> &'static str {
1123-
SPINNER_VERBS[seed % SPINNER_VERBS.len()]
1124-
}
1125-
1126-
/// Past-tense verbs shown in the status row after a turn completes.
1127-
/// Mirrors `TURN_COMPLETION_VERBS` from `src/constants/turnCompletionVerbs.ts`.
1128-
const TURN_COMPLETION_VERBS: &[&str] = &[
1129-
"Baked", "Brewed", "Churned", "Cogitated", "Cooked", "Crunched",
1130-
"Pondered", "Processed", "Worked",
1131-
];
1132-
1133-
fn sample_completion_verb(seed: usize) -> &'static str {
1134-
TURN_COMPLETION_VERBS[seed % TURN_COMPLETION_VERBS.len()]
1135-
}
1088+
// Spinner verbs are now imported from claurst_core::spinner
11361089

11371090
/// Format a duration in milliseconds to a human-readable string.
11381091
///

0 commit comments

Comments
 (0)