Repository navigation
winuse 0.2.7 makes select_item and set_checked answer for themselves: both read the result back and say what reached the app, and a single_action switch stops them from acting twice for callers that must not resend an unconfirmed action. The winuse-gate plugin gains the winuse-operator subagent, which drives the app for Claude Code's main conversation so UI trees and screenshots stay out of its context.
Changes
select_itemreads the selection back. The result reportsitem(the label that was matched and acted on),selected(what the container reports afterwards),method(mouse,selection,dom),actions(how many inputs reached the app) andoutcome.donemeans the read-back named the item. A read-back that names another item is an error quoting what is selected, so a success result always means the item is selected.outcome: "unknown"withnotemeans the container exposes no way to read its selection (no UIA Selection / Value pattern or SelectionItem state, no Java AccessibleSelection). The read-back is retried for about half a second for apps that update asynchronously.- UIA combo boxes are committed with a click. Selecting a popup item through the SelectionItem pattern and collapsing the popup leaves Win32 and Qt combo boxes on their old value, which earlier versions reported as success.
select_itemnow clicks the item in the open popup, the way a user commits it, with the pattern path as the fallback; lists, tabs and trees keep the pattern first and the click as the fallback. select_itemsingle_action. Withsingle_action: truethe tool stops after the first path that delivered an input instead of trying the other one when the read-back disagrees; the mismatch error then says that no other method was tried. A mismatch error always names the paths delivered (2 actions delivered: mouse, selection).set_checkedreads the state back. The result reportsmethod(toggle,selection_item,action,dom),toggles(0 when the control already had the state),checked(the state read back) andoutcome. A toggle now gets about half a second to take before the next one is sent, so an asynchronously updating control is no longer toggled three times in a row; the default still sends up to 3 and then fails naming the toggles delivered and the state seen.single_action: truesends at most one toggle and reportsoutcome: "unknown"withnotewhen the state still differs, instead of toggling again or failing.- winuse-gate plugin 0.2.0: the
winuse-operatorsubagent. The main Claude Code conversation hands it the window and the goal; it reads trees and screenshots, drives the app and runs the assertions in its own context, and returns a short text report. Its passing assertions count for the gate (the hooks fire inside the subagent with the parent session id). Thewinuse-e2eskill now delegates the driving to it. Update the plugin with/plugin update winuse-gate@winuse.
Scenarios recorded with 0.2.6 replay unchanged. Behaviour changes for existing clients: select_item on a UIA combo box clicks the popup item instead of selecting it through the pattern, and a selection the app refused is now an error instead of a success; set_checked returns an object instead of a bare success, and takes up to about half a second longer when a toggle does not take at once.
Install
- Install the .NET 10 runtime (or SDK).
- Unzip
winuse-0.2.7-win-x64.zipinto a folder. - Register with Claude Code:
claude mcp add winuse -- <folder>\winuse.exe --mcp - Set
JEV_API_KEY, orCLOUDFLARE_ACCOUNT_IDandCLOUDFLARE_API_TOKEN, as user environment variables, then runwinuse doctor.
Upgrading: unzip over the previous folder; no settings change.
Known issues
- The combo box read-back and
single_actionare verified against Win32 controls and the Swing test fixture, not yet on the Qt app that reported them. - The operator subagent is Claude Code only; other MCP clients keep calling the tools directly.
Full changelog: CHANGELOG.md