commit 8e62f43c4a175bffe1a62b781bc0ad50ec0a13a3
parent d37ae5dbf744b65b4ef4d0b09a102a4f39d38950
Author: William Casarin <jb55@jb55.com>
Date: Thu, 19 Feb 2026 12:30:07 -0800
dave: add notification dot on hamburger menu for pending permissions
Shows a dot using the selection/focus color on the mobile hamburger
icon when a permission request is waiting for user action.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat:
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/crates/notedeck_dave/src/ui/dave.rs b/crates/notedeck_dave/src/ui/dave.rs
@@ -264,7 +264,8 @@ impl<'a> DaveUi<'a> {
let action = if is_compact {
None
} else {
- let result = top_buttons_ui(app_ctx, ui);
+ let has_pending = self.flags.contains(DaveUiFlags::HasPendingPerm);
+ let result = top_buttons_ui(app_ctx, ui, has_pending);
// Render session details inline, to the right of the buttons
if let Some(details) = self.details {
diff --git a/crates/notedeck_dave/src/ui/top_buttons.rs b/crates/notedeck_dave/src/ui/top_buttons.rs
@@ -17,7 +17,11 @@ pub struct TopButtonsResult {
}
/// Render the top buttons UI (profile pic, settings, session list toggle)
-pub fn top_buttons_ui(app_ctx: &mut AppContext, ui: &mut egui::Ui) -> TopButtonsResult {
+pub fn top_buttons_ui(
+ app_ctx: &mut AppContext,
+ ui: &mut egui::Ui,
+ has_pending: bool,
+) -> TopButtonsResult {
let mut action: Option<DaveAction> = None;
let mut rect = ui.available_rect_before_wrap();
rect = rect.translate(egui::vec2(20.0, 20.0));
@@ -31,6 +35,13 @@ pub fn top_buttons_ui(app_ctx: &mut AppContext, ui: &mut egui::Ui) -> TopButtons
.on_hover_text("Show chats")
.on_hover_cursor(egui::CursorIcon::PointingHand);
+ // Draw notification dot when something needs attention
+ if has_pending {
+ let dot_center = rect.right_top() + egui::vec2(-2.0, 6.0);
+ ui.painter()
+ .circle_filled(dot_center, 4.0, ui.visuals().selection.stroke.color);
+ }
+
if r.clicked() {
action = Some(DaveAction::ShowSessionList);
}