notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit 977e9bb08f64439a798c1177ba2572587095c5d0
parent 8a85cf83fbd9ef21cc239bb92eb0150c82943f2b
Author: William Casarin <jb55@jb55.com>
Date:   Wed, 28 Jan 2026 19:04:58 -0800

dave: move compaction status to chat area with spinner

Show the compaction status at the bottom of the chat messages with a
spinner animation, matching Claude Code's UX of showing status after
the user's message rather than in the input box.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Diffstat:
Mcrates/notedeck_dave/src/ui/dave.rs | 25+++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/crates/notedeck_dave/src/ui/dave.rs b/crates/notedeck_dave/src/ui/dave.rs @@ -295,6 +295,23 @@ impl<'a> DaveUi<'a> { }; } + // Show status line at the bottom of chat when compacting + if self.is_compacting { + ui.horizontal(|ui| { + ui.add(egui::Spinner::new().size(14.0)); + ui.label( + egui::RichText::new("compacting...") + .color(ui.visuals().weak_text_color()) + .italics(), + ); + ui.label( + egui::RichText::new("(press esc to interrupt)") + .color(ui.visuals().weak_text_color()) + .small(), + ); + }); + } + response } @@ -740,14 +757,6 @@ impl<'a> DaveUi<'a> { dave_response = DaveResponse::send(); } - // Show compaction indicator when compacting - if self.is_compacting { - super::badge::StatusBadge::new("COMPACTING...") - .variant(super::badge::BadgeVariant::Warning) - .show(ui) - .on_hover_text("Conversation is being compacted to save tokens"); - } - // Show plan mode indicator with optional keybind hint when Ctrl is held let ctrl_held = ui.input(|i| i.modifiers.ctrl); let mut badge =