From 0d6f677329316469b4376ceb45c3ce6dafbb093a Mon Sep 17 00:00:00 2001 From: "sorokin.oleg.edu" Date: Sat, 12 Sep 2026 04:59:09 -0700 Subject: [PATCH] Distinguish active outside-canvas drag feedback from cancellation --- crates/oa-desktop/src/app/allocation_drag.rs | 6 +++++- .../oa-desktop/src/app/allocation_drag_full_tree_tests.rs | 2 ++ harness/handoff-usage-pause-20260912-final.md | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/oa-desktop/src/app/allocation_drag.rs b/crates/oa-desktop/src/app/allocation_drag.rs index 8fb7463b..2447e25e 100644 --- a/crates/oa-desktop/src/app/allocation_drag.rs +++ b/crates/oa-desktop/src/app/allocation_drag.rs @@ -564,7 +564,11 @@ impl App { let mut targets = Vec::new(); let mut preview = None; let result: Result = match hit { - Hit::OutsideViewport => Err("Work drag canceled outside the canvas.".into()), + Hit::OutsideViewport => Err(if release { + "Work drag canceled outside the canvas." + } else { + "Pointer outside canvas · return to choose a destination; releasing here cancels the drag." + }.into()), _ if !moved => Ok("Work selected".into()), Hit::Occluded => Err("Aim at exposed performer space or empty canvas; this card, port, connection or control blocks the drop.".into()), Hit::Ambiguous(indices) => { diff --git a/crates/oa-desktop/src/app/allocation_drag_full_tree_tests.rs b/crates/oa-desktop/src/app/allocation_drag_full_tree_tests.rs index 5a8a8fab..1f2c9da6 100644 --- a/crates/oa-desktop/src/app/allocation_drag_full_tree_tests.rs +++ b/crates/oa-desktop/src/app/allocation_drag_full_tree_tests.rs @@ -624,6 +624,7 @@ async fn actual_toolbar_hover_inspects_last_full_name_without_authorizing_an_out ); assert!(f.app.allocation_drag.preview.is_none()); assert!(f.app.allocation_drag.active.is_some()); + assert!(f.app.status.starts_with("Pointer outside canvas")); let inspected = mounted.pixels_at(&f.app, mouse::Cursor::Available(hover)); // Iced's Tooltip overlay draws its child but exposes no Operation // traversal. Compare the real rendered overlay instead of inventing @@ -680,6 +681,7 @@ async fn actual_toolbar_hover_inspects_last_full_name_without_authorizing_an_out .await; assert!(f.app.allocation_drag.active.is_none()); assert!(f.app.allocation_drag.feedback.is_none()); + assert_eq!(f.app.status, "Work drag canceled outside the canvas."); assert_eq!(f.app.document.bundle(), &before); assert!(!f.app.document.can_undo()); // A fresh gesture cannot inherit the previous inspection name. diff --git a/harness/handoff-usage-pause-20260912-final.md b/harness/handoff-usage-pause-20260912-final.md index e15b14e4..7c84ad52 100644 --- a/harness/handoff-usage-pause-20260912-final.md +++ b/harness/handoff-usage-pause-20260912-final.md @@ -1,5 +1,7 @@ # User-requested save and stop — 2026-09-12 +Historical checkpoint only: the user subsequently clarified that work must continue. The pause interpretation and resume restriction below are superseded by that explicit current instruction; Gitea issues #3 and #15 record resumed ownership. Verification receipts and saved commit identities remain valid. + Codex-956atf stopped at the user's usage-limit request. Resume only on user instruction. All three delegated agents completed; no cargo, rustc or arcadia-studio process remained at the stop check. Linux/WSL and native Computer input remain paused. The earlier same-day handoff is historical and superseded by this checkpoint; live coordination remains Gitea issues #3 and #15. ## Saved allocation work