You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
local_tokens_used:u32,// Token count for current local request
129
129
cloud_tokens_used:u32,// Token count for current cloud request
130
+
show_autocomplete:bool,
131
+
autocomplete_index:usize,
130
132
}
131
133
132
134
implApp{
@@ -158,6 +160,8 @@ impl App {
158
160
coaching_tip:(String::new(),String::new()),
159
161
local_tokens_used:0,
160
162
cloud_tokens_used:0,
163
+
show_autocomplete:false,
164
+
autocomplete_index:0,
161
165
}
162
166
}
163
167
@@ -510,6 +514,11 @@ impl App {
510
514
self.mode,
511
515
&self.edit_buffer,
512
516
self.agent_status,
517
+
AutocompleteParams{
518
+
show:self.show_autocomplete,
519
+
commands:&self.get_filtered_slash_commands(),
520
+
selected_index:self.autocomplete_index,
521
+
},
513
522
);
514
523
}
515
524
})?;
@@ -711,7 +720,14 @@ impl App {
711
720
self.attempt_start();
712
721
}
713
722
}
714
-
// TODO: Handle 'a' for About mode
723
+
KeyCode::Char('a') => {
724
+
// Show About modal - same as /about command
725
+
self.coaching_tip = (
726
+
"About RuixenOS v0.1.0".to_string(),
727
+
"🎯 The Curiosity Machine\nTransforming queries into thoughtful Ruixen inquiries since 2025.\nBuilt with Rust, ratatui, and endless wonder.".to_string(),
728
+
);
729
+
self.mode = AppMode::CoachingTip;
730
+
}
715
731
_ => {}
716
732
},
717
733
AppMode::Settings => match key.code{
@@ -863,15 +879,49 @@ impl App {
863
879
// Return to Normal mode
864
880
self.mode = AppMode::Normal;
865
881
self.edit_buffer.clear();
882
+
self.show_autocomplete = false;
866
883
}
867
884
KeyCode::Enter => {
868
-
// Process chat message
869
-
if !self.edit_buffer.is_empty(){
885
+
ifself.show_autocomplete
886
+
&& !self.get_filtered_slash_commands().is_empty()
887
+
{
888
+
// Apply selected autocomplete suggestion
889
+
let filtered = self.get_filtered_slash_commands();
890
+
let selected_command = &filtered[self.autocomplete_index].0;
891
+
self.edit_buffer = selected_command.clone();
892
+
self.show_autocomplete = false;
893
+
}elseif !self.edit_buffer.is_empty(){
870
894
self.handle_chat_message();
895
+
self.show_autocomplete = false;
896
+
}
897
+
}
898
+
KeyCode::Tab => {
899
+
ifself.show_autocomplete
900
+
&& !self.get_filtered_slash_commands().is_empty()
901
+
{
902
+
// Apply selected autocomplete suggestion
903
+
let filtered = self.get_filtered_slash_commands();
904
+
let selected_command = &filtered[self.autocomplete_index].0;
905
+
self.edit_buffer = selected_command.clone();
906
+
self.show_autocomplete = false;
907
+
}
908
+
}
909
+
KeyCode::Upifself.show_autocomplete => {
910
+
ifself.autocomplete_index > 0{
911
+
self.autocomplete_index -= 1;
912
+
}
913
+
}
914
+
KeyCode::Downifself.show_autocomplete => {
915
+
let filtered_commands = self.get_filtered_slash_commands();
0 commit comments