fix: replace time.Sleep with context-aware sleeps in doPressKey and doDragMouse #146
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.
Summary
doPressKeyusedtime.Sleepfor the key hold duration, blocking without respecting context cancellation while holdinginputMudoDragMouseusedtime.Sleepfor the optional pre-drag delay, same problemChanges
sleepWithContexthelper that usesselectwithtime.NewTimerandctx.Done()doSleepto use the shared helpertime.SleepindoPressKeywithsleepWithContext; on cancellation, best-effort release held keys using a background contexttime.SleepindoDragMousewithsleepWithContext; on cancellation, best-effort release mouse button and modifier keystime.Sleepcalls incomputer.goTest plan
go build ./...andgo vet ./...passgo test ./cmd/api/api/...passesMade with Cursor
Note
Medium Risk
Touches low-level input simulation and cleanup behavior; cancellation paths now run
xdotoolreleases viacontext.Background(), which could change how interrupted requests leave system input state.Overview
Makes input-related delays context-aware to avoid blocking while
inputMuis held (notably duringBatchComputerAction).Replaces
time.SleepindoPressKeykey-hold anddoDragMousepre-drag delay with a sharedsleepWithContexthelper, and refactorsdoSleepto use it as well. On cancellation, both key-hold and drag delay now perform best-effort cleanup (releasing keys and/or mouse button) viacontext.Background()before returning an error.Written by Cursor Bugbot for commit 90ff857. This will update automatically on new commits. Configure here.