notedeck

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

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:
Mcrates/notedeck_dave/src/lib.rs | 3---
Mcrates/notedeck_dave/src/update.rs | 32--------------------------------
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.