Add stateful pointer input - #340
Open
zengfanfan wants to merge 3 commits into
Open
zengfanfan wants to merge 3 commits into
zengfanfan wants to merge 3 commits into
Conversation
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
zengfanfan
force-pushed
the
codex/stateful-pointer-input
branch
from
October 2, 2026 17:00
22e1e6b to
d477b25
Compare
zengfanfan
force-pushed
the
codex/stateful-pointer-input
branch
from
October 3, 2026 09:45
d477b25 to
281a867
Compare
This branch has not been deployed
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.
Description
Add one consolidated
Pointertool for mouse-button gestures that span multiple MCP calls:The tool supports
down,move,up, andcancel. It tracks at most one held button and automatically attempts release after 30 seconds by default (maximum 120 seconds).cancelreleases only the currently tracked button, if any. The existingClickandMoveinterfaces remain unchanged.This branch is based on current
main, including #445. Pointer holds are recorded in its input ledger, so a physical user takeover can release the held button. The 15-second AI-control lease does not discard a valid Pointer hold; other desktop tools cannot borrow that held input. Each gesture has a unique receipt so a delayed timer or stale call cannot release a later gesture. Timed moves recheck control ownership between steps, and timeout/release failures retain auditable ownership or fail open for physical input. Server shutdown attempts release before stopping desktop control.Motivation
Move(drag=True)handles an atomic drag in one call. Free-form drawing and non-linear selections may require several independently chosen segments while a button remains held; those workflows need explicit cross-call pointer state.Testing
ruff checkandruff format --checkpassed on all 12 changed Python files.tests/test_analytics.py(cannot create a directory inside this environment's read-only worktree) andtests/test_cli_legacy_flags.py(requires Windows scheduled-task registration privileges). This is not an unfiltered full-suite result.pyproject.tomlrequires Python >=3.14. The GitHub CI run for this PR head passed on Python 3.14: 937 passed, 5 warnings.Screenshots
Not applicable; no UI is added.
Related Issues
None.