Skip to content

winuse 0.2.2

Choose a tag to compare

@straygizmo straygizmo released this 29 Oct 00:29
· 20 commits to main since this release

winuse 0.2.2 makes window refs stable across calls and reports the frame the user actually sees, so a client can track one window through a session and crop or record exactly it. It also ships the winuse-gate Claude Code plugin in the repository.

Changes

  • Stable win{n} refs. list_windows re-numbered its refs on every call, so a client could not look a window up again by the ref it had been given. A window now keeps its win{n} ref for the whole session: observing the same HWND again (list_windows, get_ui_tree, process_run, ...) returns the ref already handed out, with the stored locator refreshed to the current title. Element refs (u{n}, j{n}, ...) still number up per observation.
  • visible_rect. list_windows, get_element and the window object of get_ui_tree report the DWM extended frame bounds: the frame the user sees, without the invisible resize borders that rect includes. get_ui_tree's window object now also carries pid, rect and state.
  • winuse-gate plugin (plugins/winuse-gate, listed in .claude-plugin/marketplace.json). Hooks that block Claude's turn end once per change, and deny git commit, while UI files changed in the session have no passing winuse assertion, plus the winuse-e2e skill that tells Claude how to verify. Configured per project with .claude/winuse-gate.json. Install with /plugin marketplace add straygizmo/winuse then /plugin install winuse-gate@winuse.

Scenarios recorded with 0.2.1 replay unchanged.

Install

  1. Install the .NET 10 runtime (or SDK).
  2. Unzip winuse-0.2.2-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.1: unzip over the old folder and restart the AI client.

Known issues

Unchanged from 0.2.1: 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