From f4319b404d36a94ee0a3e3405f31528d55a573da Mon Sep 17 00:00:00 2001 From: iamnbutler Date: Mon, 2 Nov 2026 12:53:41 -0500 Subject: [PATCH 1/2] Release 0.19.0: per-agent cursors, auto-update, Peekaboo stack removed --- CHANGELOG.md | 9 ++++++--- README.md | 2 +- docs/mcp.md | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c33855c..aa125db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,13 +4,15 @@ Notable changes to Desktop Tools, newest first. Each release's GitHub release no ## [Unreleased] +## [0.19.0] - 2026-11-02 + ### Added -- The app updates itself from GitHub Releases. **Update Automatically**, on by default, checks at launch and daily, downloads a newer release, and installs it once agents have been idle for 10 minutes, after the calls already running finish, then relaunches. **Check for Updates…** checks at once and asks before installing. Only a release notarized and signed with Developer ID by the Desktop Tools team, with the app's bundle ID, is installed, so permissions and approved agents are kept. The development app never updates itself. See [Updates](docs/app.md#updates). +- The app updates itself from GitHub Releases. **Update Automatically**, on by default, checks at launch and daily, downloads a newer release, and installs it once agents have been idle for 10 minutes, after the calls already running finish, then relaunches. **Check for Updates…** checks at once and asks before installing. Only a release notarized and signed with Developer ID by the Desktop Tools team, with the app's bundle ID, is installed, so permissions and approved agents are kept. The development app never updates itself. See [Updates](docs/app.md#updates). ([#235](https://github.com/githubnext/desktop-tools/pull/235)) ### Changed -- The agent cursor and window outline are per agent and colored by tool: Claude is orange, Codex blue, and any other agent gets a color fixed by its name. Each agent's arrow carries a name tag, peels off the user's pointer on its first input, travels on a slight arc from where it last acted, and returns to merge with the pointer after a few seconds idle, using motion tuned in the cursor lab. The first move waits at most about half a second, later ones 0.2 to 0.4 seconds by distance. Agents working at once each get their own arrow; agents sharing a window get nested outlines with labels side by side. +- The agent cursor and window outline are per agent and colored by tool: Claude is orange, Codex blue, and any other agent gets a color fixed by its name. Each agent's arrow carries a name tag, peels off the user's pointer on its first input, travels on a slight arc from where it last acted, and returns to merge with the pointer after a few seconds idle, using motion tuned in the cursor lab. The first move waits at most about half a second, later ones 0.2 to 0.4 seconds by distance. Agents working at once each get their own arrow; agents sharing a window get nested outlines with labels side by side. ([#228](https://github.com/githubnext/desktop-tools/pull/228), [#234](https://github.com/githubnext/desktop-tools/pull/234)) ### Removed @@ -313,7 +315,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.18.0...HEAD +[Unreleased]: https://github.com/githubnext/desktop-tools/compare/v0.19.0...HEAD +[0.19.0]: https://github.com/githubnext/desktop-tools/compare/v0.18.0...v0.19.0 [0.18.0]: https://github.com/githubnext/desktop-tools/compare/v0.17.1...v0.18.0 [0.17.1]: https://github.com/githubnext/desktop-tools/compare/v0.17.0...v0.17.1 [0.17.0]: https://github.com/githubnext/desktop-tools/compare/v0.16.1...v0.17.0 diff --git a/README.md b/README.md index cfafe44..79fe006 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ You need macOS 15 or later. The MCP server ships inside the app. } ``` - An `npx` setup, `npx -y --package=github:githubnext/desktop-tools#v0.18.0 desktop-tools-mcp` (Node 22 or later), also works: it hands over to the app's server. One pinned before v0.17.0 is refused with `CLIENT_OUTDATED`, so update its tag. Updating the tag doesn't update the app, which holds the macOS permissions: install the app's release of the same version, since an app from before v0.17.0 has no server to hand over to, and a failed call then names both versions. A background job, such as `claude --bg`, doesn't load nvm from your shell, so give `npx` by its absolute path there. + An `npx` setup, `npx -y --package=github:githubnext/desktop-tools#v0.19.0 desktop-tools-mcp` (Node 22 or later), also works: it hands over to the app's server. One pinned before v0.17.0 is refused with `CLIENT_OUTDATED`, so update its tag. Updating the tag doesn't update the app, which holds the macOS permissions: install the app's release of the same version, since an app from before v0.17.0 has no server to hand over to, and a failed call then names both versions. A background job, such as `claude --bg`, doesn't load nvm from your shell, so give `npx` by its absolute path there. 4. **Verify.** Ask the agent to call `desktop_apps`. It should list the running apps with an `inventory_completeness` of `complete`. If it says the socket is missing, open the app. diff --git a/docs/mcp.md b/docs/mcp.md index 7e2b6bc..1c34435 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -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.18.0 desktop-tools-mcp +claude mcp add desktop -- npx -y --package=github:githubnext/desktop-tools#v0.19.0 desktop-tools-mcp claude mcp add desktop -- node /dist/mcp.js ``` @@ -25,7 +25,7 @@ For Codex, in `~/.codex/config.toml`: ```toml [mcp_servers.desktop] command = "npx" -args = ["-y", "--package=github:githubnext/desktop-tools#v0.18.0", "desktop-tools-mcp"] +args = ["-y", "--package=github:githubnext/desktop-tools#v0.19.0", "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. diff --git a/package-lock.json b/package-lock.json index ade9415..442b103 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@githubnext/desktop-tools", - "version": "0.18.0", + "version": "0.19.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@githubnext/desktop-tools", - "version": "0.18.0", + "version": "0.19.0", "license": "MIT", "os": [ "darwin" diff --git a/package.json b/package.json index 4abc712..aa33c1d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@githubnext/desktop-tools", - "version": "0.18.0", + "version": "0.19.0", "description": "Signed macOS desktop inspection and input for agents, with a pure Swift host and MCP server", "license": "MIT", "type": "module", From 900fc070f58a422ca939bc7965e2461baa040195 Mon Sep 17 00:00:00 2001 From: iamnbutler Date: Mon, 2 Nov 2026 12:53:42 -0500 Subject: [PATCH 2/2] lane: sync release-0.19.0 memory --- .../01M6EGNHQ7F88SS5SRFCE25PAQ-a-copy-of-native2-s-desktopc.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .lane/{memory => attic}/native/sources/callers/updates.swift/01M6EGNHQ7F88SS5SRFCE25PAQ-a-copy-of-native2-s-desktopc.md (100%) diff --git a/.lane/memory/native/sources/callers/updates.swift/01M6EGNHQ7F88SS5SRFCE25PAQ-a-copy-of-native2-s-desktopc.md b/.lane/attic/native/sources/callers/updates.swift/01M6EGNHQ7F88SS5SRFCE25PAQ-a-copy-of-native2-s-desktopc.md similarity index 100% rename from .lane/memory/native/sources/callers/updates.swift/01M6EGNHQ7F88SS5SRFCE25PAQ-a-copy-of-native2-s-desktopc.md rename to .lane/attic/native/sources/callers/updates.swift/01M6EGNHQ7F88SS5SRFCE25PAQ-a-copy-of-native2-s-desktopc.md