Skip to content

v0.8.0 - a shippable release, and the evidence for it

Choose a tag to compare

@Ask-812 Ask-812 released this 25 Aug 19:27
· 19 commits to master since this release

The release that makes every improvement since April actually reachable.

pip install oswright has been serving 0.3.1 since April, which cannot
start: it pins mcp[cli]>=1.0, and mcp 2.x removed mcp.server.fastmcp, so a
fresh install resolves to a version the server cannot import. It also pulled
EasyOCR (and PyTorch) on every platform and named the wrong package for Windows
OCR. Those were fixed in v0.4.0 and never shipped.

Verified before publishing, in a clean virtual environment: the wheel installs,
resolves mcp 1.29.1, pulls no PyTorch on Windows, and the console script starts
an MCP server exposing 43 working tools.

What changed since 0.3.1

Perception was rebuilt around one measurement: the median observation
changes 0.012% of the screen's pixels. Re-reading everything does far more work
than the change warrants.

  • Incremental screen model that rescans only what moved
  • Compositor dirty rectangles via hand-written DXGI Desktop Duplication
    bindings: 0.14 ms to establish "nothing changed", against ~33 ms to capture
    a frame and discover it
  • Resolution cascade: memory, then incremental OCR, then the accessibility
    tree, then the application's own text buffer, then a full read
  • Screen atlas that recognises previously-seen screens and verifies by pixels
    rather than by re-reading text
  • Settle detection that waits as long as the interface takes, not a fixed sleep

Measured end to end: latency per step 212 ms to 33 ms, tokens per observation
~2,764 to ~49, post-action wait 300 ms to 61.5 ms.

Evidence, not adjectives

Task success is graded against each application's own state -- UI Automation, or
the window title -- never against OCR, across Calculator, File Explorer, Chrome
and VS Code. Across four configurations accuracy is identical and token cost
falls 23x.

Against Windows-MCP on the same tasks, graded the same way: 19/20 against
their 20/20, at 832 tokens against their 14,053.
Cheaper, and slightly less
reliable. Both numbers are in the README, because I built the harness and
reporting only the flattering half would be worthless.

docs/ENGINEERING_LOG.md records the reasoning, including 28 things that went
wrong.