github CursorTouch/Windows-MCP v0.8.9
Release v0.8.9

one hour ago

What's Changed

  • fix: make desktop control optional and idle timeout configurable by @zengfanfan in #458
  • fix: resolve the PowerShell executable against the child's PATH (#411) by @NishilRathod in #459
  • fix(tools): parse FileSystem and MultiSelect boolean flags through as_bool by @Dev-next-gen in #461
  • fix: recover stale desktop input after missed release events by @zengfanfan in #460
  • chore(deps): bump the all-dependencies group with 4 updates by @dependabot[bot] in #462
  • chore(deps): bump platformdirs from 4.12.4 to 4.13.0 in the all-dependencies group by @dependabot[bot] in #463
  • docs: align installation guidance with the current package by @dajiaohuang in #469
  • Add desktop gate policies and deliberate mouse takeover by @zengfanfan in #466
  • fix(scrape): improve Fake-IP DNS diagnostics by @legendteddy in #473
  • chore(deps): bump posthog from 7.67.0 to 7.68.0 in the all-dependencies group by @dependabot[bot] in #468
  • Skip the server's own windows when collecting control handles (Snapshot 15 s -> 0.6 s) by @Saturcolor in #476
  • fix(scrape): honour the document charset when Content-Type declares none by @michealmachine in #477
  • Fix Japanese IME mode events latching desktop control by @Plastic-time in #481
  • chore(deps): bump the all-dependencies group with 3 updates by @dependabot[bot] in #480
  • fix: release SendKeys keys after interrupted chords by @Plastic-time in #485
  • Shortcut: natural punctuation names; MultiSelect: validate points before pressing Ctrl (#483) by @junglin830 in #487
  • Fix visible console window left open by windows-mcp install by @junglin830 in #486
  • Exclude hidden directory contents from recursive listings by @Plastic-time in #491
  • Delete symbolic links and junctions without removing their targets by @Plastic-time in #490
  • fix(filesystem): reject overlapping copy and move paths by @Plastic-time in #489
  • Pass registry key paths literally so wildcard key names don't hit sibling keys by @Plastic-time in #492
  • Bound UI Automation calls with IUIAutomation2 timeouts and stop retrying timed-out windows (refs #383) by @WindriseAI in #497
  • chore(deps): bump the all-dependencies group across 1 directory with 4 updates by @dependabot[bot] in #484
  • chore(deps): bump pillow from 12.3.0 to 13.0.0 by @dependabot[bot] in #499
  • chore(deps): bump opentelemetry-api from 1.45.0 to 1.45.1 by @dependabot[bot] in #501
  • chore(deps): bump certifi from 2026.7.22 to 2026.10.19 by @dependabot[bot] in #500
  • Document the required application ID for toast notifications by @zwk110 in #503
  • Decode schtasks and PowerShell output with the console code page by @mayuriphad in #502
  • Ignore mouse motion that does not move the cursor by @nalikip in #508
  • Report region-filtered UI tree scope in Snapshot responses by @zwk110 in #507
  • Sample snapshot cursor position after desktop and tree collection by @Plastic-time in #509
  • chore(deps): bump the all-dependencies group with 3 updates by @dependabot[bot] in #510
  • chore(deps): bump authlib from 1.8.0 to 1.9.1 by @dependabot[bot] in #512
  • chore(deps): bump dnspython from 2.8.0 to 2.9.0 by @dependabot[bot] in #511
  • fix(filesystem): allow case-only renames in move mode by @jaeminbird in #513
  • fix(filesystem): report symlinks and junctions in info mode by @jaeminbird in #514
  • fix(filesystem): strip the NT path prefix from info-mode link targets by @jaeminbird in #517
  • fix(filesystem): decode BOM-marked UTF-16 and UTF-8 files in read mode by @jaeminbird in #516
  • fix(filesystem): remove read-only files in recursive delete and overwrite by @jaeminbird in #515
  • fix(process): measure CPU usage over a short window and skip the Idle process by @Plastic-time in #521
  • fix(scrape): return non-HTML bodies as fetched instead of running markdownify by @Plastic-time in #522
  • fix(install): make start-server.cmd work from non-ASCII profile paths by @tanishqbaweja in #523
  • fix(config): escape strings in write_config so auth --with-tls saves a loadable config by @tanishqbaweja in #524
  • fix(powershell): escape typographic single quotes in ps_quote by @tanishqbaweja in #525
  • fix(registry): stop list mode hiding PS values, cutting arrays and wrapping lines by @tanishqbaweja in #526
  • fix(filesystem): stop write mode doubling the carriage return in CRLF content by @tanishqbaweja in #537
  • fix(filesystem): let read mode return line ranges from files over 10 MB by @tanishqbaweja in #538
  • fix(config): load config.toml files saved with a UTF-8 BOM by @tanishqbaweja in #541
  • fix(filesystem): stop move mode deleting a directory when a file is moved onto it by @tanishqbaweja in #540
  • fix(scrape): fetch the page off the event loop so Scrape stops freezing the server by @tanishqbaweja in #539
  • fix(filesystem): resolve ~ to the user's home folder instead of a '~' folder on the Desktop by @tanishqbaweja in #543
  • fix(filesystem): hide entries with the Windows hidden attribute in list mode by @tanishqbaweja in #542
  • fix(control): report why the controller is unavailable by @FaberVi in #532
  • fix(cli): stop auth printing 0.0.0.0 and unbracketed IPv6 addresses as the client URL by @tanishqbaweja in #544
  • feat(tree): optionally merge per-glyph Word nodes into line runs by @FaberVi in #534
  • docs(move): state that drag does not work on XAML shell surfaces by @FaberVi in #536
  • fix(control): keep the indicator heartbeat fresh while building layers by @FaberVi in #535
  • feat(snapshot): add save_path to write the screenshot to a PNG file by @FaberVi in #533
  • fix(desktop): list windows in z-order so Snapshot's Depth column is the stacking order by @tanishqbaweja in #549
  • fix(cli): honor WINDOWS_MCP_DEBUG again and let debug mode reach stderr by @tanishqbaweja in #547
  • feat(control): tag the cursor glow with "AI" and mark each AI click by @ShengLin1001 in #553
  • fix(registry): write Binary and MultiString values as arrays by @jaeminbird in #564
  • fix(powershell): decode CLIXML error output from Windows PowerShell by @jaeminbird in #563
  • fix(desktop): walk the other windows in z-order when building the UI tree by @tanishqbaweja in #550
  • fix(snapshot): show the text selection the UI tree walk already records by @tanishqbaweja in #551
  • fix(tools): accept JSON-string arrays for Snapshot/Screenshot display and App window_loc/window_size by @tanishqbaweja in #545
  • fix(desktop): exclude hung processes before Snapshot window metadata queries by @mvanhorn in #568
  • fix(process): let kill mode match a process name given without .exe by @tanishqbaweja in #546
  • fix(registry): read a value whose name contains wildcard characters by @Plastic-time in #570
  • fix(scrape): say "Reached bottom" for a page that does not scroll by @Plastic-time in #575
  • fix(tools): parse Snapshot, Screenshot, Scrape and Process flags strictly by @Plastic-time in #574
  • fix(input): say what Scroll and Click did by @Plastic-time in #573
  • fix(registry): refuse an empty value name instead of deleting the key by @Plastic-time in #571
  • fix(powershell): keep inherited variables whose registry name has another case by @Plastic-time in #572
  • Report rejected cursor positioning as an input tool error by @minhoyooDEV in #576
  • fix(screenshot): wait for a fresh DXGI frame instead of returning a stale one by @cyppe in #560
  • fix(type): clear fields without Ctrl+A and report what the field reads back by @cyppe in #558
  • feat(control): ask before AI starts a new desktop control period by @ShengLin1001 in #552
  • Report a click that a modal dialog swallowed by @Eapp1e in #581
  • fix(app): match the switch target from the window list without a UI tree walk by @1AbdullahButt in #580
  • perf(overlay): premultiply with Pillow channel ops and fade the flash with window opacity by @cyppe in #562
  • fix(screenshot): say windows were not listed instead of 'No windows found' by @cyppe in #559
  • fix(powershell): cap long output and distinguish timeouts by @tumbledseea in #585
  • fix(type): put the caret at the start or end of a multi-line field by @Plastic-time in #591
  • fix(registry): show a value's type and stored form in get mode by @Plastic-time in #590
  • fix(type): put the whole clipboard back after pasting long text by @Plastic-time in #589
  • fix(process): refuse a list limit below 1 by @Plastic-time in #588
  • fix(powershell): return when PowerShell exits, not at pipe EOF by @Plastic-time in #587
  • fix(input): reject Move, Scroll, drag and MultiSelect points outside the desktop by @tanishqbaweja in #593
  • fix(snapshot): clip UI elements to the current virtual screen, not the one at server start by @tanishqbaweja in #592
  • fix(desktop): keep Snapshot and Screenshot working when the virtual desktop query fails by @tanishqbaweja in #594
  • fix(snapshot): show which radio button, tab or list item is selected by @tanishqbaweja in #601
  • fix(filesystem): append to BOM-marked files in their own encoding by @jaeminbird in #602
  • fix(powershell): keep programs the command started when it times out by @Plastic-time in #597
  • feat(powershell): send progress notifications while a command runs by @Mystery01092000 in #605
  • fix(process): list only processes whose name matches the filter by @jaeminbird in #603
  • fix(control): recover the overlay after a missed ack timeout by @MaxWang007 in #606
  • fix(registry): list values with their type and stored form by @Plastic-time in #599
  • fix(screenshot): draw the requested reference grid on clean screenshots (use_annotation=False) by @tanishqbaweja in #600
  • fix(filesystem): do not walk into junctions in recursive list and search by @Plastic-time in #598
  • fix(app): list the windows again before App switch matches a name by @tanishqbaweja in #596
  • feat(control): keep AI control until the agent releases it or the user takes over by @ShengLin1001 in #595
  • fix(uia): fail fast on abandoned worker calls, expose ui_busy in ControlStatus, and bound stalled leases by @Nani-2007-code in #608

New Contributors

Full Changelog: v0.8.8...v0.8.9

Don't miss a new Windows-MCP release

NewReleases is sending notifications on new releases.