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:
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 {