notedeck

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

commit 2531541424c7535792699db72882a8fab72d4332
parent 400e4d31f6e9a3f652b198ac83def0a8df6f87e7
Author: William Casarin <jb55@jb55.com>
Date:   Fri, 20 Feb 2026 15:55:02 -0800

dave: optimistically set remote status after permission response

After the phone sends a permission response, derive_status() would
fall through to remote_status which still held the stale NeedsInput
value from the desktop's last kind-31988 event. This caused a full
relay round-trip delay (phone→relay→desktop→relay→phone) before
auto-steal could move to the next session.

Optimistically set remote_status to Working immediately after
resolving a permission or question response on a remote session,
since the agent will always resume working. The desktop overwrites
with the real status once it processes the response.

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

Diffstat:
Mcrates/notedeck_dave/src/update.rs | 13+++++++++++++
1 file changed, 13 insertions(+), 0 deletions(-)

diff --git a/crates/notedeck_dave/src/update.rs b/crates/notedeck_dave/src/update.rs @@ -236,6 +236,14 @@ pub fn handle_permission_response( is_remote, Some(response), ); + + // Optimistically set remote status to Working so the phone doesn't + // have to wait for the full round-trip (phone→relay→desktop→relay→phone) + // before auto-steal can move on. The desktop will publish the real + // status once it processes the permission response. + if is_remote { + agentic.remote_status = Some(crate::agent_status::AgentStatus::Working); + } } Some(PermissionPublish { @@ -353,6 +361,11 @@ pub fn handle_question_response( is_remote, Some(oneshot_response), ); + + // Optimistically set remote status to Working (same as permission response) + if is_remote { + agentic.remote_status = Some(crate::agent_status::AgentStatus::Working); + } } Some(PermissionPublish {