Update assistant panel message header, model switcher

This commit is contained in:
Nate Butler 2023-12-19 11:58:20 -05:00
parent a1085184a1
commit d8eea949ef

View File

@ -53,7 +53,11 @@ use std::{
time::{Duration, Instant},
};
use theme::ThemeSettings;
use ui::{prelude::*, Tab, TabBar, Tooltip};
use ui::{
prelude::*,
utils::{DateTimeType, FormatDistance},
ButtonLike, Tab, TabBar, Tooltip,
};
use util::{paths::CONVERSATIONS_DIR, post_inc, ResultExt, TryFutureExt};
use uuid::Uuid;
use workspace::{
@ -1126,13 +1130,13 @@ impl Render for AssistantPanel {
.border()
.border_color(gpui::red())
} else {
let header = ui::TabBar::new("assistant_header")
let header = TabBar::new("assistant_header")
.start_child(
h_stack().gap_1().child(Self::render_hamburger_button(cx)), // .children(title),
)
.children(self.active_editor().map(|editor| {
h_stack()
.h(rems(ui::Tab::HEIGHT_IN_REMS))
.h(rems(Tab::HEIGHT_IN_REMS))
.flex_1()
.px_2()
.child(Label::new(editor.read(cx).title(cx)).into_element())
@ -2278,6 +2282,14 @@ impl ConversationEditor {
}
Role::System => Label::new("System").color(Color::Warning),
})
.tooltip(|cx| {
Tooltip::with_meta(
"Toggle message role",
None,
"Available roles: You (User), Assistant, System",
cx,
)
})
.on_click({
let conversation = conversation.clone();
move |_, cx| {
@ -2292,10 +2304,23 @@ impl ConversationEditor {
h_stack()
.id(("message_header", message_id.0))
.border()
.border_color(gpui::red())
.h_12()
.gap_1()
.p_1()
.debug_bg_cyan()
.child(sender)
.child(Label::new(message.sent_at.format("%I:%M%P").to_string()))
// TODO: Only show this if the message if the message has been sent
.child(
Label::new(
FormatDistance::from_now(DateTimeType::Local(
message.sent_at,
))
.hide_prefix(true)
.add_suffix(true)
.to_string(),
)
.color(Color::Muted),
)
.children(
if let MessageStatus::Error(error) = message.status.clone() {
Some(
@ -2456,6 +2481,7 @@ impl ConversationEditor {
"current_model",
self.conversation.read(cx).model.short_name(),
)
.style(ButtonStyle::Filled)
.tooltip(move |cx| Tooltip::text("Change Model", cx))
.on_click(cx.listener(|this, _, cx| this.cycle_model(cx)))
}
@ -2469,12 +2495,7 @@ impl ConversationEditor {
} else {
Color::Default
};
Some(
div()
.border()
.border_color(gpui::red())
.child(Label::new(remaining_tokens.to_string()).color(remaining_tokens_color)),
)
Some(Label::new(remaining_tokens.to_string()).color(remaining_tokens_color))
}
}