Repository navigation
fix: name the unmatched menu title and its siblings - #15
Merged
Merged
Conversation
A menu command whose title had no literal match refused with "The literal menu path is unavailable without opening ancestor menus", which blamed lazy menus when the title simply differed (githubnext/ace#427: "Save" for TextEdit's "Save…"). The refusal now names the component, its level, and up to 30 sibling titles (300 characters) already read, and suggests a lone sibling that only adds a trailing ellipsis. The ambiguous refusal also names the component. Matching, budgets, roles and refusal kind are unchanged. Why: native/patches/peekaboo-menu.patch | Menu titles match exact UTF-16; the refusal may suggest a near title but resolution must never accept one.
iamnbutler
added a commit
to githubnext/ace
that referenced
this pull request
Oct 15, 2026
) * fix(channel): pin desktop-tools with clearer menu and key refusals Moves desktop-tools from 20cb1b5 to 034a695: - githubnext/desktop-tools#15: a menu path with no match names the missing title, its level and the titles at that level, and suggests "Save…" for "Save". - githubnext/desktop-tools#14: a key with no focused receiver says why, and points to the menu. desktop_menu's description now says titles match exactly, ellipses included. The docs point to Settings → Computer use for permissions. Found in the desktop tools study, D1 and D2 (#427). * chore: confirm package.json notes after the desktop-tools pin bump
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.
In the Ace desktop tools study (githubnext/ace#427, scenario D1),
desktop_menuwith["File", "Save"]in TextEdit was refused with "The literal menu path is unavailable without opening ancestor menus." The item is "Save…", so the title just didn't match; the message blamed lazy menus instead. The agent recovered only by listing menus.resolve()inpeekaboo-menu.patchnow refuses an unmatched title with the component, its level, and the sibling titles it already read (in order, at most 30 and 300 characters, empty titles skipped). When exactly one sibling is the requested title plus a trailing "…" or "...", it names it:The ambiguous refusal keeps its wording and adds the component:
The literal menu path is ambiguous: 2 items titled "Close" under "File" (level 2 of 2).Matching is still exact UTF-16 and never accepts the suggestion. Budgets, roles, uniqueness and the
invalidRequestpre-dispatch refusal are unchanged. The patches README now says titles match exactly, including ellipses.Verification
node dist/build.js --out … --scratch …with a fresh scratch builds.PeekabooAutomationKitswift test --filter Menu(35 XCTest, 71 swift-testing) andPeekabooCoreswift test --filter PeekabooBridgeTests(55 + 115) all pass. No test covers the AX menu-command traversal, so the message text was checked with a throwaway script over the new function.