Repository navigation
feat(desktop): consume native desktop tools from githubnext/desktop-tools - #213
Merged
Merged
Conversation
This was referenced Oct 8, 2026
iamnbutler
marked this pull request as ready for review
October 8, 2026 15:12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ace now gets its native desktop tools from the standalone public package githubnext/desktop-tools. The package is pinned to one immutable commit,
8efe67f, in the rootdesktopcatalog. This implements the extraction proposed in #188 (tracked by #8).What moved to the package (unchanged apart from neutral names):
@githubnext/desktop-tools/protocol, with no imports so the hosted Worker bundle still buildsWhat stays in Ace:
unknownrecord and unsafe/sequential replaylibAceProject.dylibbuilt fromapps/desktop/native/project.swiftapps/host/src/desktop.tsbecomes a thin wrapper. It passes Ace's explicit client and socket paths and forwards onlytext,image,outcomeandisError, so hosted links and pi rows don't change size.Native identity is unchanged:
desktop-tools-clientis staged asace-desktop-clientand signed with the same<app-id>.desktop-clientidentifier.~/.peekabooand~/Library/Application Support/Peekaboo/clipboard-paste-transaction.lock.New behavior: the runtime advertises the host capability
dev.githubnext.desktop-tools.protocol.1(a compatibility epoch). Before sending any request, the client refuses hosts that don't advertise it, returningrefusedfor actions.Small wording changes: model-facing error text now says "native desktop client" where it said "Ace native client". The missing-client error now names the path instead of mentioning
ACE_DESKTOP_CLIENT;docs/desktop-tools.mdstill documents that variable.Validation
Ran:
bun typesandbun run cipass, and Ace CI is green.wrangler deploy --dry-runofservices/channelbundles the protocol export.8efe67fis green: a Linux check thatdist/matches source plus a portable import, and an unsigned macOS native build with a second build into the same output.9a1288a1, port 4731, appdev.ace.desktop.dev, team 8S43JJMN6B):libDesktopTools.dylib(sha2567e299e105bf84a03…) andlibAceProject.dylib(8c8ad8e7f2034dcb…).ace-desktop-client(21b86767bc8bf202…) is signed asdev.ace.desktop.dev.9a1288a1.desktop-client.anthropic/claude-haiku-4-5run through that host, channelextraction-smoke(worker PID 12034):desktop_appsanddesktop_windowsreturned an owned fixture app's inventory.desktop_inspectreported that capture is unavailable because the macOS GUI session is locked.desktop_activatecame backrefused, withdispatch_state: none, from the signed client's lock check before any Bridge mutation, so no mutation receipt exists.tool.startevents, all from worker 12034, and none from 15298.refused.dev.githubnext.desktop-tools.reference), from plain Node consumers:refused.githubnext/desktop-tools#8efe67f:Pending live input validation:
Built in Ace
Implementation, builds, and GitHub writes ran in Ace, including creation of the public package repository. Coordination and read-only source and evidence reviews used Codex because its harness is not yet available inside Ace (#9).