Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,19 @@ Notable changes to Desktop Tools, newest first. Each release's GitHub release no

## [Unreleased]

## [0.14.1] - 2026-10-17

### Fixed

- The agent cursor sits directly above the window the agent is using instead of above every window, so a window covering that app covers the cursor too. Input outside any one window, such as on the Dock or the menu bar, still shows it on top.
- The agent window outline and its label stay on the display when the window fills it; they were drawn just outside the window and ran off the screen's edges.
- `desktop_close` on a Finder window is `completed` again instead of `unknown`: Accessibility lists Finder's desktop as a window without an ID, which made every close unverifiable on macOS 27, even after the window was gone.
- `desktop_wait` and `expect` app conditions with `bundle_id` find the app when many apps are running; the app list cut to fit a result could drop it, and a cut list no longer counts as proof that an app quit.
- `desktop_read` with `table: true` finds the column titles of web tables in Safari 27, which reports `<th>` cells as plain cells.
- `desktop_select` in Safari 27 web text no longer crashes the Desktop Tools app, and finds text bounds without the text marker attributes Safari dropped.
- Pasting files with `desktop_insert` into a Finder window on macOS 27 finds the window's folder from its path bar, since Finder no longer reports it otherwise; without the path bar, the refusal says to turn on View > Show Path Bar.
- `desktop_set_value` on a Safari 27 date input is refused before input, with a hint to type the date, instead of `unknown`; it accepts an ISO 8601 date where a date can be set.
- Management failures, such as an unverified `desktop_close`, include the native `cause`, as action failures do.
- The agent cursor sits directly above the window the agent is using instead of above every window, so a window covering that app covers the cursor too. Input outside any one window, such as on the Dock or the menu bar, still shows it on top. ([#133](https://github.com/githubnext/desktop-tools/pull/133))
- The agent window outline and its label stay on the display when the window fills it; they were drawn just outside the window and ran off the screen's edges. ([#133](https://github.com/githubnext/desktop-tools/pull/133))
- `desktop_close` on a Finder window is `completed` again instead of `unknown`: Accessibility lists Finder's desktop as a window without an ID, which made every close unverifiable on macOS 27, even after the window was gone. ([#133](https://github.com/githubnext/desktop-tools/pull/133))
- `desktop_wait` and `expect` app conditions with `bundle_id` find the app when many apps are running; the app list cut to fit a result could drop it, and a cut list no longer counts as proof that an app quit. ([#133](https://github.com/githubnext/desktop-tools/pull/133))
- `desktop_read` with `table: true` finds the column titles of web tables in Safari 27, which reports `<th>` cells as plain cells. ([#133](https://github.com/githubnext/desktop-tools/pull/133))
- `desktop_select` in Safari 27 web text no longer crashes the Desktop Tools app, and finds text bounds without the text marker attributes Safari dropped. ([#133](https://github.com/githubnext/desktop-tools/pull/133))
- Pasting files with `desktop_insert` into a Finder window on macOS 27 finds the window's folder from its path bar, since Finder no longer reports it otherwise; without the path bar, the refusal says to turn on View > Show Path Bar. ([#133](https://github.com/githubnext/desktop-tools/pull/133))
- `desktop_set_value` on a Safari 27 date input is refused before input, with a hint to type the date, instead of `unknown`; it accepts an ISO 8601 date where a date can be set. ([#133](https://github.com/githubnext/desktop-tools/pull/133))
- Management failures, such as an unverified `desktop_close`, include the native `cause`, as action failures do. ([#133](https://github.com/githubnext/desktop-tools/pull/133))

## [0.14.0] - 2026-10-17

Expand Down Expand Up @@ -203,7 +205,8 @@ Notable changes to Desktop Tools, newest first. Each release's GitHub release no

- The first release: a signed, notarized Desktop Tools menu bar app, and the desktop tools served over MCP. ([#28](https://github.com/githubnext/desktop-tools/pull/28), [#29](https://github.com/githubnext/desktop-tools/pull/29), [#12](https://github.com/githubnext/desktop-tools/pull/12))

[Unreleased]: https://github.com/githubnext/desktop-tools/compare/v0.14.0...HEAD
[Unreleased]: https://github.com/githubnext/desktop-tools/compare/v0.14.1...HEAD
[0.14.1]: https://github.com/githubnext/desktop-tools/compare/v0.14.0...v0.14.1
[0.14.0]: https://github.com/githubnext/desktop-tools/compare/v0.13.1...v0.14.0
[0.13.1]: https://github.com/githubnext/desktop-tools/compare/v0.13.0...v0.13.1
[0.13.0]: https://github.com/githubnext/desktop-tools/compare/v0.12.0...v0.13.0
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ You need macOS 15 or later and Node 22 or later. The MCP server runs from this r
Claude Code:

```sh
claude mcp add desktop -- npx -y --package=github:githubnext/desktop-tools#v0.14.0 desktop-tools-mcp
claude mcp add desktop -- npx -y --package=github:githubnext/desktop-tools#v0.14.1 desktop-tools-mcp
```

Codex, in `~/.codex/config.toml`:

```toml
[mcp_servers.desktop]
command = "npx"
args = ["-y", "--package=github:githubnext/desktop-tools#v0.14.0", "desktop-tools-mcp"]
args = ["-y", "--package=github:githubnext/desktop-tools#v0.14.1", "desktop-tools-mcp"]
```

Other MCP clients that start stdio servers from JSON, such as Cursor or Claude Desktop:
Expand All @@ -34,7 +34,7 @@ You need macOS 15 or later and Node 22 or later. The MCP server runs from this r
"mcpServers": {
"desktop": {
"command": "npx",
"args": ["-y", "--package=github:githubnext/desktop-tools#v0.14.0", "desktop-tools-mcp"]
"args": ["-y", "--package=github:githubnext/desktop-tools#v0.14.1", "desktop-tools-mcp"]
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions docs/mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
`desktop-tools-mcp` (`dist/mcp.js`) serves the desktop tools over stdio MCP, with Ace's native-first guidance as its instructions. By default it uses the [Desktop Tools app](app.md)'s signed client and socket in `~/.local/state/desktop-tools`. Run it from this repository with `npx`, pinned to a release tag, or from a checkout with `node`:

```sh
claude mcp add desktop -- npx -y --package=github:githubnext/desktop-tools#v0.14.0 desktop-tools-mcp
claude mcp add desktop -- npx -y --package=github:githubnext/desktop-tools#v0.14.1 desktop-tools-mcp
claude mcp add desktop -- node <path>/dist/mcp.js
```

Expand All @@ -23,7 +23,7 @@ For Codex, in `~/.codex/config.toml`:
```toml
[mcp_servers.desktop]
command = "npx"
args = ["-y", "--package=github:githubnext/desktop-tools#v0.14.0", "desktop-tools-mcp"]
args = ["-y", "--package=github:githubnext/desktop-tools#v0.14.1", "desktop-tools-mcp"]
```

The tool names, descriptions, and argument schemas come from `@githubnext/desktop-tools/tools` (`desktopTools`, `desktopRequest`), which Ace's `desktop_*` tools also use. [Tools](tools.md) lists them. The descriptions don't repeat the rules every tool shares: exact targets, single-use snapshots, background and foreground input, what each outcome means, pausing, `desktop_wait` and `expect`, and the recipes. `desktopToolRules(app)` returns those rules, and the server adds them to its instructions; a host with its own agent guidance should include them too.
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@githubnext/desktop-tools",
"version": "0.14.0",
"version": "0.14.1",
"description": "Signed macOS desktop inspection and input for agents, built on a pinned, patched Peekaboo Bridge",
"license": "MIT",
"type": "module",
Expand Down
Loading