Skip to content

winuse 0.2.3

Choose a tag to compare

@straygizmo straygizmo released this 29 Oct 22:40
· 17 commits to main since this release

winuse 0.2.3 closes the ten usability issues filed against 0.2.2 (#9 to #18): modal dialogs and fresh frames in screenshots, an honest window_close, a title regex that survives SPA re-titling, and new tools for waiting, the clipboard, window-relative input and filtered UI trees.

Changes

  • Dialogs and stale frames in screenshots (#10, #11). A window is now copied from the screen whenever it or a dialog it owns is in the foreground, so Office save prompts and WebView2 overlays are in the picture and Chromium windows no longer hand out a PrintWindow frame that predates the last input. screenshot takes method (auto / screen / print) and settle_ms, and reports which method was used. get_ui_tree reads once more after a short wait when a dialog that just opened has no content yet.
  • window_close tells the truth (#16). It waits for the window to go away (timeout_ms, default 2 s) and returns closed: false with reason: "still_open" plus the foreground window (the save prompt) when the window is still there.
  • Title regex after wait_for (#9). A title that matches nothing is retried for 1.5 s before No window matches; the error and the wait_for description point at the win{n} ref as the reliable handle.
  • Primary monitor by default (#18). screenshot {target: "screen"} captures the primary monitor at origin (0,0); the former whole-desktop image is target: "virtual"; monitor: <index> picks one, and screen captures report monitors with rect, work area and primary flag.
  • sleep {ms} and wait_for {condition: "time"} (#12).
  • Clipboard tools (#13). clipboard_get, clipboard_set, clipboard_set_image (image file under the allowed roots, put on the clipboard as CF_DIB plus PNG), paste_text and paste_image (set the clipboard, press ctrl+v, restore the previous text).
  • Window-relative input (#14, #15). click, hover, scroll and drag take window: the window is activated first and x/y are relative to its rect, so a pixel of a window screenshot can be passed as is. type_text and press_keys take window too: the window is activated before the input and the call fails when it cannot take the foreground; the result reports where the input went.
  • Filtered, compact UI trees (#17). get_ui_tree takes control_type (comma-separated), name (regex), compact and max_nodes; matching nodes are hoisted, compact drops null / default fields and packs rect as x,y,w,h, and a truncated result reports omitted_nodes.

Scenarios recorded with 0.2.2 replay unchanged. The only behaviour change for existing clients is screenshot {target: "screen"}, which is now the primary monitor instead of the whole virtual screen.

Install

  1. Install the .NET 10 runtime (or SDK).
  2. Unzip winuse-0.2.3-win-x64.zip into a folder.
  3. Register with Claude Code: claude mcp add winuse -- <folder>\winuse.exe --mcp
  4. Set JEV_API_KEY, or CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN, as user environment variables, then run winuse doctor.

Upgrading from 0.2.2: unzip over the old folder and restart the AI client.

Known issues

Unchanged from 0.2.2: get_table does not read Swing tables yet; a JRE without the Java side of the bridge cannot be read; type_text with Japanese text can be garbled under the Japanese IME (intermittent).

Full changelog: CHANGELOG.md