Repository navigation
Add atomic native drags - #85
Merged
Merged
Conversation
iamnbutler
marked this pull request as ready for review
October 5, 2026 13:47
This was referenced Oct 17, 2026
3 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
desktop_drag: one bounded, straight-line press/move/release between distinct normalized screenshot points in the observed window, with left or right button. It reuses capture coordinates, single-use snapshots, native gesture ownership/release cleanup, and pi's unsafe-tool outcomes. The request preserves the snapshot's original focus evidence so it matches the complete capture-owned receipt; receipt validation remains strict.Part of githubnext/desktop-tools#2 and githubnext/ace2#8. No button remains held across calls, and gestures cannot cross windows.
Validation:
2531311999293133809e845a47522ebcb090a4d2is unchanged by final sourcebf930584700306ec379036c320dd1c61be4f6db9, which adds only reviewed tool/documentation guidance and passed types/lint again.native_scale: 2) and native 960×632 capture coordinates with Ace's resized 1600×1053 image were exercised.bf930584: a freshly moved window refused its prior observation with a specific stale/bounds diagnostic and no receiver change. Cancelling only after an actual mouse-down returned unknown and delivered exactly one release; all native calls drained and the prior scroll positions remained unchanged. Evidence:drag-current-FkQMdRin the immutableace-pointer-remaining-fixture.5mF516directory.hosted-model-YHsStfunder the freshace-pointer-hosted-fixture.CPa0ARfixture.Accepted delivery does not prove a drop: an inactive custom view ignored an earlier delivered gesture. After explicit focus and fresh inspection, separate left/right cases worked. The tool tells the model to verify the effect and explicitly focus then inspect again before deciding on another action; it adds no automatic foreground fallback or blind replay. A Move window setup changed its bounds and truthfully returned unknown after final identity validation, so its successful effect was preserved without replaying it.
Multi-display behavior, another physical machine, and crash-during-gesture recovery remain unverified. Pixels-only observations do not authorize pointer input.
Built in Ace
Git/GitHub, source-diff review, static checks, signed builds, and signature verification ran in dedicated Ace terminals. Native checks use Ace's signed bridge and actual receiver callbacks; the hosted check uses the real channel/workspace route and provider.
Codex external file tools edited source and prepared/read temporary validation artifacts because Ace lacks a file-editing surface (#22) and external-harness integration (#9). Codex computer-use launched the disposable fixture because a native application-launch tool is still pending in githubnext/ace2#8, and read-only observation checked fixture visibility and the desktop lock. No input success is inferred from those observations or compilation.