commit c539e2e817797212afbef84f639ae35e49f79936
parent 5d77354696a9e279c19ee41fd8a0469a7968fb5a
Author: William Casarin <jb55@jb55.com>
Date: Thu, 26 Feb 2026 09:37:51 -0800
dave: keep Done indicator dot on completed sessions
Stop auto-clearing Done indicators from the focus queue. The previous
behavior was confusing — the dot would disappear when viewing the
session or when git was clean, making it hard to tell which sessions
had completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat:
2 files changed, 0 insertions(+), 35 deletions(-)
diff --git a/crates/notedeck_dave/src/lib.rs b/crates/notedeck_dave/src/lib.rs
@@ -2737,9 +2737,6 @@ impl notedeck::App for Dave {
notedeck::platform::try_vibrate();
}
- // Clear Done indicators whose condition is met
- update::clear_done_indicators(&self.session_manager, &mut self.focus_queue);
-
// Suppress auto-steal while the user is typing (non-empty input)
let user_is_typing = self
.session_manager
diff --git a/crates/notedeck_dave/src/update.rs b/crates/notedeck_dave/src/update.rs
@@ -534,38 +534,6 @@ pub fn toggle_auto_steal(
new_state
}
-/// Clear Done indicators for sessions whose clearing condition is met.
-///
-/// - **Local agentic sessions**: cleared when the git working tree is clean
-/// (the user has committed or reverted changes).
-/// - **Chat and remote sessions**: cleared when the session is the active one
-/// (the user is viewing it).
-pub fn clear_done_indicators(session_manager: &SessionManager, focus_queue: &mut FocusQueue) {
- let active_id = session_manager.active_id();
- for session in session_manager.iter() {
- if focus_queue.get_session_priority(session.id) != Some(FocusPriority::Done) {
- continue;
- }
- let should_clear = if !session.is_remote() {
- if let Some(agentic) = &session.agentic {
- agentic
- .git_status
- .current()
- .is_some_and(|r| r.as_ref().is_ok_and(|d| d.is_clean()))
- } else {
- // Chat session: clear when viewing
- active_id == Some(session.id)
- }
- } else {
- // Remote session: clear when viewing
- active_id == Some(session.id)
- };
- if should_clear {
- focus_queue.dequeue_done(session.id);
- }
- }
-}
-
/// Process auto-steal focus logic: switch to focus queue items as needed.
/// Returns true if focus was stolen (switched to a NeedsInput or Done session),
/// which can be used to raise the OS window.